Documentation ¶
Overview ¶
Package mlkem768 implements the IND-CCA2 secure key encapsulation mechanism ML-KEM-768 as defined in FIPS203.
Index ¶
- Constants
- func GenerateKeyPair(rand io.Reader) (*PublicKey, *PrivateKey, error)
- func NewKeyFromSeed(seed []byte) (*PublicKey, *PrivateKey)
- func Scheme() kem.Scheme
- type PrivateKey
- func (sk *PrivateKey) DecapsulateTo(ss, ct []byte)
- func (sk *PrivateKey) Equal(other kem.PrivateKey) bool
- func (sk *PrivateKey) MarshalBinary() ([]byte, error)
- func (sk *PrivateKey) Pack(buf []byte)
- func (sk *PrivateKey) Public() kem.PublicKey
- func (sk *PrivateKey) Scheme() kem.Scheme
- func (sk *PrivateKey) Unpack(buf []byte) error
- type PublicKey
Constants ¶
const ( // Size of seed for NewKeyFromSeed KeySeedSize = cpapke.KeySeedSize + 32 // Size of seed for EncapsulateTo. EncapsulationSeedSize = 32 SharedKeySize = 32 // Size of the encapsulated shared key. CiphertextSize = cpapke.CiphertextSize // Size of a packed public key. PublicKeySize = cpapke.PublicKeySize // Size of a packed private key. PrivateKeySize = cpapke.PrivateKeySize + cpapke.PublicKeySize + 64 )
Variables ¶
This section is empty.
Functions ¶
func GenerateKeyPair ¶
func GenerateKeyPair(rand io.Reader) (*PublicKey, *PrivateKey, error)
GenerateKeyPair generates public and private keys using entropy from rand. If rand is nil, crypto/rand.Reader will be used.
func NewKeyFromSeed ¶
func NewKeyFromSeed(seed []byte) (*PublicKey, *PrivateKey)
NewKeyFromSeed derives a public/private keypair deterministically from the given seed.
Panics if seed is not of length KeySeedSize.
Types ¶
type PrivateKey ¶
type PrivateKey struct {
// contains filtered or unexported fields
}
Type of a ML-KEM-768 private key
func (*PrivateKey) DecapsulateTo ¶
func (sk *PrivateKey) DecapsulateTo(ss, ct []byte)
DecapsulateTo computes the shared key which is encapsulated in ct for the private key.
Panics if ct or ss are not of length CiphertextSize and SharedKeySize respectively.
func (*PrivateKey) Equal ¶
func (sk *PrivateKey) Equal(other kem.PrivateKey) bool
func (*PrivateKey) MarshalBinary ¶
func (sk *PrivateKey) MarshalBinary() ([]byte, error)
func (*PrivateKey) Pack ¶
func (sk *PrivateKey) Pack(buf []byte)
Packs sk to buf.
Panics if buf is not of size PrivateKeySize.
func (*PrivateKey) Public ¶
func (sk *PrivateKey) Public() kem.PublicKey
func (*PrivateKey) Scheme ¶
func (sk *PrivateKey) Scheme() kem.Scheme
func (*PrivateKey) Unpack ¶
func (sk *PrivateKey) Unpack(buf []byte) error
Unpacks sk from buf.
Panics if buf is not of size PrivateKeySize.
Returns an error if buf is not of size PrivateKeySize, or private key doesn't pass the ML-KEM decapsulation key check.
type PublicKey ¶
type PublicKey struct {
// contains filtered or unexported fields
}
Type of a ML-KEM-768 public key
func (*PublicKey) EncapsulateTo ¶
EncapsulateTo generates a shared key and ciphertext that contains it for the public key using randomness from seed and writes the shared key to ss and ciphertext to ct.
Panics if ss, ct or seed are not of length SharedKeySize, CiphertextSize and EncapsulationSeedSize respectively.
seed may be nil, in which case crypto/rand.Reader is used to generate one.