mldsa87

package
v0.0.0-...-d663552 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 25, 2024 License: BSD-3-Clause Imports: 8 Imported by: 0

Documentation

Overview

mldsa87 implements NIST signature scheme ML-DSA-87 as defined in FIPS204.

Index

Constants

View Source
const (
	// Size of seed for NewKeyFromSeed
	SeedSize = common.SeedSize

	// Size of a packed PublicKey
	PublicKeySize = internal.PublicKeySize

	// Size of a packed PrivateKey
	PrivateKeySize = internal.PrivateKeySize

	// Size of a signature
	SignatureSize = internal.SignatureSize
)

Variables

This section is empty.

Functions

func GenerateKey

func GenerateKey(rand io.Reader) (*PublicKey, *PrivateKey, error)

GenerateKey generates a public/private key pair using entropy from rand. If rand is nil, crypto/rand.Reader will be used.

func NewKeyFromSeed

func NewKeyFromSeed(seed *[SeedSize]byte) (*PublicKey, *PrivateKey)

NewKeyFromSeed derives a public/private key pair using the given seed.

func Scheme

func Scheme() sign.Scheme

Scheme returns a generic signature interface for ML-DSA-87.

func SignTo

func SignTo(sk *PrivateKey, msg, ctx []byte, randomized bool, sig []byte) error

SignTo signs the given message and writes the signature into signature. It will panic if signature is not of length at least SignatureSize.

ctx is the optional context string. Errors if ctx is larger than 255 bytes. A nil context string is equivalent to an empty context string.

func Verify

func Verify(pk *PublicKey, msg, ctx, sig []byte) bool

Verify checks whether the given signature by pk on msg is valid.

ctx is the optional context string. Fails if ctx is larger than 255 bytes. A nil context string is equivalent to an empty context string.

Types

type PrivateKey

type PrivateKey internal.PrivateKey

PrivateKey is the type of ML-DSA-87 private key

func (*PrivateKey) Bytes

func (sk *PrivateKey) Bytes() []byte

Packs the private key.

func (*PrivateKey) Equal

func (sk *PrivateKey) Equal(other crypto.PrivateKey) bool

Equal returns whether the two private keys equal.

func (*PrivateKey) MarshalBinary

func (sk *PrivateKey) MarshalBinary() ([]byte, error)

Packs the private key.

func (*PrivateKey) Pack

func (sk *PrivateKey) Pack(buf *[PrivateKeySize]byte)

Packs the private key into buf.

func (*PrivateKey) Public

func (sk *PrivateKey) Public() crypto.PublicKey

Computes the public key corresponding to this private key.

Returns a *PublicKey. The type crypto.PublicKey is used to make PrivateKey implement the crypto.Signer interface.

func (*PrivateKey) Scheme

func (sk *PrivateKey) Scheme() sign.Scheme

func (*PrivateKey) Sign

func (sk *PrivateKey) Sign(rand io.Reader, msg []byte, opts crypto.SignerOpts) (
	sig []byte, err error)

Sign signs the given message.

opts.HashFunc() must return zero, which can be achieved by passing crypto.Hash(0) for opts. rand is ignored. Will only return an error if opts.HashFunc() is non-zero.

This function is used to make PrivateKey implement the crypto.Signer interface. The package-level SignTo function might be more convenient to use.

func (*PrivateKey) UnmarshalBinary

func (sk *PrivateKey) UnmarshalBinary(data []byte) error

Unpacks the private key from data.

func (*PrivateKey) Unpack

func (sk *PrivateKey) Unpack(buf *[PrivateKeySize]byte)

Sets sk to the private key encoded in buf.

type PublicKey

type PublicKey internal.PublicKey

PublicKey is the type of ML-DSA-87 public key

func (*PublicKey) Bytes

func (pk *PublicKey) Bytes() []byte

Packs the public key.

func (*PublicKey) Equal

func (pk *PublicKey) Equal(other crypto.PublicKey) bool

Equal returns whether the two public keys equal.

func (*PublicKey) MarshalBinary

func (pk *PublicKey) MarshalBinary() ([]byte, error)

Packs the public key.

func (*PublicKey) Pack

func (pk *PublicKey) Pack(buf *[PublicKeySize]byte)

Packs the public key into buf.

func (*PublicKey) Scheme

func (sk *PublicKey) Scheme() sign.Scheme

func (*PublicKey) UnmarshalBinary

func (pk *PublicKey) UnmarshalBinary(data []byte) error

Unpacks the public key from data.

func (*PublicKey) Unpack

func (pk *PublicKey) Unpack(buf *[PublicKeySize]byte)

Sets pk to the public key encoded in buf.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL