38 cx_err_t error = CX_INTERNAL_ERROR;
41 if ((pk == NULL) || (sk == NULL)) {
42 error = CX_INVALID_PARAMETER;
47 error = CX_INVALID_PARAMETER_VALUE;
55 explicit_bzero(coins,
sizeof(coins));
67 cx_err_t error = CX_INTERNAL_ERROR;
70 if ((ct == NULL) || (ss == NULL) || (pk == NULL)) {
71 error = CX_INVALID_PARAMETER;
76 error = CX_INVALID_PARAMETER_VALUE;
84 explicit_bzero(coins,
sizeof(coins));
96 cx_err_t error = CX_INTERNAL_ERROR;
106 const uint8_t *pk = NULL;
109 if ((ss == NULL) || (ct == NULL) || (sk == NULL)) {
110 error = CX_INVALID_PARAMETER;
115 error = CX_INVALID_PARAMETER_VALUE;
122 error = CX_INVALID_PARAMETER;
126 if ((sk_len < p->sk_bytes) || (ct_len < p->ct_bytes)) {
127 error = CX_INVALID_PARAMETER_SIZE;
132 error = CX_INVALID_PARAMETER_SIZE;
161 explicit_bzero(buf,
sizeof(buf));
162 explicit_bzero(kr,
sizeof(kr));
163 explicit_bzero(&u,
sizeof(u));
cx_err_t MLKEM_crypto_kem_enc(uint8_t *ct, size_t ct_len, uint8_t *ss, size_t ss_len, const uint8_t *pk, size_t pk_len, MLKEM_param_t param)
ML-KEM encapsulation.
cx_err_t MLKEM_crypto_kem_keypair(uint8_t *pk, size_t pk_len, uint8_t *sk, size_t sk_len, MLKEM_param_t param)
Generates an ML-KEM key pair.
cx_err_t MLKEM_crypto_kem_dec(uint8_t *ss, size_t ss_len, const uint8_t *ct, size_t ct_len, const uint8_t *sk, size_t sk_len, MLKEM_param_t param)
ML-KEM decapsulation.
cx_err_t MLKEM_INDCPA_enc(uint8_t *c, size_t c_len, const uint8_t *m, size_t m_len, const uint8_t *pk, size_t pk_len, const uint8_t coins[2 *MLKEM_SYMBYTES], const MLKEM_param_info_t *p)
cx_err_t MLKEM_INDCPA_dec(uint8_t *m, size_t m_len, const uint8_t *c, size_t c_len, const uint8_t *sk, size_t sk_len, const MLKEM_param_info_t *p)
cx_err_t MLKEM_crypto_kem_enc_derand(uint8_t *ct, size_t ct_len, uint8_t *ss, size_t ss_len, const uint8_t *pk, size_t pk_len, const uint8_t coins[2 *MLKEM_SYMBYTES], MLKEM_param_t param)
Deterministic ML-KEM encapsulation.
cx_err_t MLKEM_crypto_kem_keypair_derand(uint8_t *pk, size_t pk_len, uint8_t *sk, size_t sk_len, const uint8_t coins[2 *MLKEM_SYMBYTES], MLKEM_param_t param)
Deterministic ML-KEM key pair generation.
Internal ML-KEM deterministic routines (not part of the public API).
void MLKEM_UTIL_hash_j(uint8_t *out, const uint8_t *in, size_t inlen)
void MLKEM_UTIL_ct_cmov(uint8_t *dst, const uint8_t *src, size_t len, uint8_t b)
void MLKEM_UTIL_hash_g(uint8_t *out, const uint8_t *in, size_t in_len)
Computes the G hash function (SHA3-512) as defined in FIPS 203.
uint8_t cx_constant_time_eq(const uint8_t *buf1, uint8_t *buf2, size_t len)
#define MLKEM1024_CIPHERTEXTBYTES
enum MLKEM_param_e MLKEM_param_t
ML-KEM parameter set selector.
const MLKEM_param_info_t MLKEM_PARAM[MLKEM_NUM_PARAM_SETS]
Lookup table of ML-KEM parameter sets indexed by MLKEM_param_t.
Random Number Generation.
ML-KEM parameter set descriptor holding all derived sizes.