pub const SEED_BYTES: usize = 32;
pub const SALT_BYTES: usize = 16;
pub const SHARED_KEY_BYTES: usize = 32;
mod sealed {
pub trait Sealed {}
}
pub trait HqcParams: sealed::Sealed {
const N: usize;
const N1: usize;
const N2: usize;
const K: usize;
const OMEGA: usize;
const OMEGA_R: usize;
const DELTA: usize;
const MULTIPLICITY: usize;
const N_WORDS: usize;
const PK_BYTES: usize;
const CT_BYTES: usize;
const SK_BYTES: usize;
}
#[derive(Copy, Clone, Debug)]
pub struct Hqc128;
#[derive(Copy, Clone, Debug)]
pub struct Hqc192;
#[derive(Copy, Clone, Debug)]
pub struct Hqc256;
impl sealed::Sealed for Hqc128 {}
impl sealed::Sealed for Hqc192 {}
impl sealed::Sealed for Hqc256 {}
impl HqcParams for Hqc128 {
const N: usize = 17_669;
const N1: usize = 46;
const N2: usize = 384; const K: usize = 16;
const OMEGA: usize = 66;
const OMEGA_R: usize = 75;
const DELTA: usize = 15;
const MULTIPLICITY: usize = 3;
const N_WORDS: usize = (17_669 + 63) / 64; const PK_BYTES: usize = 32 + (17_669 + 7) / 8; const CT_BYTES: usize = (17_669 + 7) / 8 + (46 * 384 + 7) / 8 + 16; const SK_BYTES: usize = 32;
}
impl HqcParams for Hqc192 {
const N: usize = 35_851;
const N1: usize = 56;
const N2: usize = 640; const K: usize = 24;
const OMEGA: usize = 100;
const OMEGA_R: usize = 114;
const DELTA: usize = 16;
const MULTIPLICITY: usize = 5;
const N_WORDS: usize = (35_851 + 63) / 64; const PK_BYTES: usize = 32 + (35_851 + 7) / 8; const CT_BYTES: usize = (35_851 + 7) / 8 + (56 * 640 + 7) / 8 + 16; const SK_BYTES: usize = 32;
}
impl HqcParams for Hqc256 {
const N: usize = 57_637;
const N1: usize = 90;
const N2: usize = 640; const K: usize = 32;
const OMEGA: usize = 131;
const OMEGA_R: usize = 149;
const DELTA: usize = 29;
const MULTIPLICITY: usize = 5;
const N_WORDS: usize = (57_637 + 63) / 64; const PK_BYTES: usize = 32 + (57_637 + 7) / 8; const CT_BYTES: usize = (57_637 + 7) / 8 + (90 * 640 + 7) / 8 + 16; const SK_BYTES: usize = 32;
}
const _: () = {
assert!(Hqc128::PK_BYTES == 2_241);
assert!(Hqc128::CT_BYTES == 4_433);
assert!(Hqc128::N_WORDS == 277);
assert!(Hqc192::PK_BYTES == 4_514);
assert!(Hqc192::CT_BYTES == 8_978);
assert!(Hqc192::N_WORDS == 561);
assert!(Hqc256::PK_BYTES == 7_237);
assert!(Hqc256::CT_BYTES == 14_421);
assert!(Hqc256::N_WORDS == 901);
};