Documentation
¶
Overview ¶
Package kem implements the Key Encapsulation Mechanism for kMOSAIC.
Index ¶
- Constants
- func Decapsulate(sk *kmosaic.MOSAICSecretKey, pk *kmosaic.MOSAICPublicKey, ...) ([]byte, error)
- func Decrypt(sk *kmosaic.MOSAICSecretKey, pk *kmosaic.MOSAICPublicKey, ...) ([]byte, error)
- func DeserializeCiphertext(data []byte) (*kmosaic.MOSAICCiphertext, error)
- func DeserializeEncryptedMessage(data []byte) (*kmosaic.EncryptedMessage, error)
- func DeserializePublicKey(data []byte) (*kmosaic.MOSAICPublicKey, error)
- func DeserializeSecretKey(data []byte) (*kmosaic.MOSAICSecretKey, error)
- func Encapsulate(pk *kmosaic.MOSAICPublicKey) (*kmosaic.EncapsulationResult, error)
- func EncapsulateDeterministic(pk *kmosaic.MOSAICPublicKey, ephemeralSecret []byte) (*kmosaic.EncapsulationResult, error)
- func Encrypt(pk *kmosaic.MOSAICPublicKey, plaintext []byte) (*kmosaic.EncryptedMessage, error)
- func GenerateKeyPair(level kmosaic.SecurityLevel) (*kmosaic.MOSAICKeyPair, error)
- func GenerateKeyPairFromSeed(params kmosaic.MOSAICParams, seed []byte) (*kmosaic.MOSAICKeyPair, error)
- func SerializeCiphertext(ct *kmosaic.MOSAICCiphertext) []byte
- func SerializeEncryptedMessage(em *kmosaic.EncryptedMessage) []byte
- func SerializePublicKey(pk *kmosaic.MOSAICPublicKey) []byte
- func SerializeSecretKey(sk *kmosaic.MOSAICSecretKey) []byte
Constants ¶
const ( DomainSLSS = "kmosaic-kem-slss-v1" DomainTDD = "kmosaic-kem-tdd-v1" DomainEGRW = "kmosaic-kem-egrw-v1" DomainEncKey = "kmosaic-enc-key-v1" DomainNonce = "kmosaic-nonce-v1" DomainImplicitReject = "kmosaic-kem-reject-v1" )
Variables ¶
This section is empty.
Functions ¶
func Decapsulate ¶
func Decapsulate(sk *kmosaic.MOSAICSecretKey, pk *kmosaic.MOSAICPublicKey, ct *kmosaic.MOSAICCiphertext) ([]byte, error)
Decapsulate recovers the shared secret from a ciphertext.
func Decrypt ¶
func Decrypt(sk *kmosaic.MOSAICSecretKey, pk *kmosaic.MOSAICPublicKey, em *kmosaic.EncryptedMessage) ([]byte, error)
Decrypt decrypts an encrypted message.
func DeserializeCiphertext ¶ added in v1.0.1
func DeserializeCiphertext(data []byte) (*kmosaic.MOSAICCiphertext, error)
DeserializeCiphertext deserializes bytes to a ciphertext. Format: [c1_len:4][c1_data][c2_len:4][c2_data][c3_len:4][c3_data][proof_data] Note: proof has no length prefix - it's everything remaining in buffer
func DeserializeEncryptedMessage ¶ added in v1.0.1
func DeserializeEncryptedMessage(data []byte) (*kmosaic.EncryptedMessage, error)
DeserializeEncryptedMessage deserializes bytes to an encrypted message. Format: [kemCt_len:4][kemCt_data][aes_encrypted_data] Note: nonce is not stored - it will be derived from shared secret during decryption
func DeserializePublicKey ¶ added in v1.0.1
func DeserializePublicKey(data []byte) (*kmosaic.MOSAICPublicKey, error)
DeserializePublicKey deserializes bytes to a public key. Format: [level_len:4][level_string][slss_len:4][slss_data][tdd_len:4][tdd_data][egrw_len:4][egrw_data][binding:32]
func DeserializeSecretKey ¶ added in v1.0.1
func DeserializeSecretKey(data []byte) (*kmosaic.MOSAICSecretKey, error)
DeserializeSecretKey deserializes bytes to a secret key.
func Encapsulate ¶
func Encapsulate(pk *kmosaic.MOSAICPublicKey) (*kmosaic.EncapsulationResult, error)
Encapsulate generates a shared secret and ciphertext.
func EncapsulateDeterministic ¶
func EncapsulateDeterministic(pk *kmosaic.MOSAICPublicKey, ephemeralSecret []byte) (*kmosaic.EncapsulationResult, error)
EncapsulateDeterministic performs deterministic encapsulation.
func Encrypt ¶
func Encrypt(pk *kmosaic.MOSAICPublicKey, plaintext []byte) (*kmosaic.EncryptedMessage, error)
Encrypt encrypts a message using KEM+DEM.
func GenerateKeyPair ¶
func GenerateKeyPair(level kmosaic.SecurityLevel) (*kmosaic.MOSAICKeyPair, error)
GenerateKeyPair generates a kMOSAIC key pair.
func GenerateKeyPairFromSeed ¶
func GenerateKeyPairFromSeed(params kmosaic.MOSAICParams, seed []byte) (*kmosaic.MOSAICKeyPair, error)
GenerateKeyPairFromSeed generates a deterministic key pair from seed.
func SerializeCiphertext ¶
func SerializeCiphertext(ct *kmosaic.MOSAICCiphertext) []byte
SerializeCiphertext serializes a ciphertext. Format: [c1_len:4][c1_data][c2_len:4][c2_data][c3_len:4][c3_data][proof_data] Note: proof has no length prefix - it extends to end of buffer
func SerializeEncryptedMessage ¶ added in v1.0.1
func SerializeEncryptedMessage(em *kmosaic.EncryptedMessage) []byte
SerializeEncryptedMessage serializes an encrypted message. Format: [kemCt_len:4][kemCt_data][aes_encrypted_data] Note: nonce is not stored - it's derived from shared secret during decryption
func SerializePublicKey ¶
func SerializePublicKey(pk *kmosaic.MOSAICPublicKey) []byte
SerializePublicKey serializes a public key. Format: [level_len:4][level_string][slss_len:4][slss_data][tdd_len:4][tdd_data][egrw_len:4][egrw_data][binding:32]
func SerializeSecretKey ¶ added in v1.0.1
func SerializeSecretKey(sk *kmosaic.MOSAICSecretKey) []byte
SerializeSecretKey serializes a secret key.
Types ¶
This section is empty.