pub const ML_KEM_N: usize = 256;
pub const ML_KEM_Q: u16 = 3329;
pub struct MlKem512Params {
pub n: usize,
pub q: u16,
pub k: usize,
pub eta1: u8,
pub eta2: u8,
pub du: usize,
pub dv: usize,
pub public_key_size: usize,
pub secret_key_size: usize,
pub ciphertext_size: usize,
pub shared_secret_size: usize,
}
pub const ML_KEM_512: MlKem512Params = MlKem512Params {
n: ML_KEM_N,
q: ML_KEM_Q,
k: 2,
eta1: 3,
eta2: 2,
du: 10,
dv: 4,
public_key_size: 800,
secret_key_size: 1632,
ciphertext_size: 768,
shared_secret_size: 32,
};
pub struct MlKem768Params {
pub n: usize,
pub q: u16,
pub k: usize,
pub eta1: u8,
pub eta2: u8,
pub du: usize,
pub dv: usize,
pub public_key_size: usize,
pub secret_key_size: usize,
pub ciphertext_size: usize,
pub shared_secret_size: usize,
}
pub const ML_KEM_768: MlKem768Params = MlKem768Params {
n: ML_KEM_N,
q: ML_KEM_Q,
k: 3,
eta1: 2,
eta2: 2,
du: 10,
dv: 4,
public_key_size: 1184,
secret_key_size: 2400,
ciphertext_size: 1088,
shared_secret_size: 32,
};
pub struct MlKem1024Params {
pub n: usize,
pub q: u16,
pub k: usize,
pub eta1: u8,
pub eta2: u8,
pub du: usize,
pub dv: usize,
pub public_key_size: usize,
pub secret_key_size: usize,
pub ciphertext_size: usize,
pub shared_secret_size: usize,
}
pub const ML_KEM_1024: MlKem1024Params = MlKem1024Params {
n: ML_KEM_N,
q: ML_KEM_Q,
k: 4,
eta1: 2,
eta2: 2,
du: 11,
dv: 5,
public_key_size: 1568,
secret_key_size: 3168,
ciphertext_size: 1568,
shared_secret_size: 32,
};