ML_KEM_SEED_BYTES
static __owur int genkey(const uint8_t seed[ML_KEM_SEED_BYTES],
if (key == NULL || key->d == NULL || len != ML_KEM_SEED_BYTES)
|| seedlen != ML_KEM_SEED_BYTES)
uint8_t seed[ML_KEM_SEED_BYTES];
CONSTTIME_SECRET(seed, ML_KEM_SEED_BYTES);
CONSTTIME_DECLASSIFY(seed, ML_KEM_SEED_BYTES);
#if ML_KEM_SEED_BYTES != ML_KEM_SHARED_SECRET_BYTES + ML_KEM_RANDOM_BYTES
static __owur int hash_g(uint8_t out[ML_KEM_SEED_BYTES], const uint8_t *in, size_t len,
&& single_keccak(out, ML_KEM_SEED_BYTES, in, len, mdctx);
|| (p8fmt->seed_length > 0 && p8fmt->seed_length != ML_KEM_SEED_BYTES)
pos += ML_KEM_SEED_BYTES;
ML_KEM_SEED_BYTES, key)) {
int len = ML_KEM_SEED_BYTES;
|| (p8fmt->seed_length > 0 && p8fmt->seed_length != ML_KEM_SEED_BYTES)
|| !ossl_ml_kem_encode_seed(pos, ML_KEM_SEED_BYTES, key)) {
pos += ML_KEM_SEED_BYTES;
uint8_t seed[ML_KEM_SEED_BYTES], *prvenc = NULL, *pubenc = NULL;
seedlen = ML_KEM_SEED_BYTES;
if (memcmp(seed + ML_KEM_SEED_BYTES - zlen,
if (seedlen != 0 && seedlen != ML_KEM_SEED_BYTES) {
uint8_t seed[ML_KEM_SEED_BYTES];
uint8_t seedbuf[ML_KEM_SEED_BYTES];
p->return_size = ML_KEM_SEED_BYTES;
size_t len = ML_KEM_SEED_BYTES;
&& len == ML_KEM_SEED_BYTES)
if (seed != NULL && !ossl_ml_kem_set_seed(seed, ML_KEM_SEED_BYTES, key))
OPENSSL_cleanse(seed, ML_KEM_SEED_BYTES);
OPENSSL_cleanse(gctx->seed, ML_KEM_SEED_BYTES);
"ML-KEM-512", ML_KEM_SEED_BYTES, sizeof(ml_kem_512_pubkey) },
"ML-KEM-768", ML_KEM_SEED_BYTES, sizeof(ml_kem_768_pubkey) },
"ML-KEM-1024", ML_KEM_SEED_BYTES, sizeof(ml_kem_1024_pubkey) },