cryptography/public_key/
ntru_hps509.rs1const N: usize = 509;
17const LOGQ: usize = 11;
18const Q: u32 = 1 << LOGQ;
19const Q_MASK: u16 = (Q as u16).wrapping_sub(1);
20const WEIGHT: usize = (Q as usize) / 8 - 2; const PRFKEYBYTES: usize = 32;
23const SHAREDKEYBYTES: usize = 32;
24
25const SAMPLE_IID_BYTES: usize = N - 1; const SAMPLE_FT_BYTES: usize = (30 * (N - 1) + 7) / 8; const SAMPLE_FG_BYTES: usize = SAMPLE_IID_BYTES + SAMPLE_FT_BYTES; const SAMPLE_RM_BYTES: usize = SAMPLE_IID_BYTES + SAMPLE_FT_BYTES; const PACK_DEG: usize = N - 1; const PACK_TRINARY_BYTES: usize = (PACK_DEG + 4) / 5; const OWCPA_MSGBYTES: usize = 2 * PACK_TRINARY_BYTES; const OWCPA_PUBLICKEYBYTES: usize = (LOGQ * PACK_DEG + 7) / 8; const OWCPA_SECRETKEYBYTES: usize = 2 * PACK_TRINARY_BYTES + OWCPA_PUBLICKEYBYTES; const OWCPA_BYTES: usize = (LOGQ * PACK_DEG + 7) / 8; pub const PUBLIC_KEY_BYTES: usize = OWCPA_PUBLICKEYBYTES; pub const PRIVATE_KEY_BYTES: usize = OWCPA_SECRETKEYBYTES + PRFKEYBYTES; pub const CIPHERTEXT_BYTES: usize = OWCPA_BYTES; pub const SHARED_SECRET_BYTES: usize = SHAREDKEYBYTES; struct Hps509Variant;
50
51impl crate::public_key::ntru_pqc_shared::NtruVariant<N, LOGQ> for Hps509Variant {
52 const Q_MASK: u16 = Q_MASK;
53 const WEIGHT: usize = WEIGHT;
54 const SAMPLE_FG_BYTES: usize = SAMPLE_FG_BYTES;
55 const SAMPLE_RM_BYTES: usize = SAMPLE_RM_BYTES;
56 const PACK_TRINARY_BYTES: usize = PACK_TRINARY_BYTES;
57 const OWCPA_PUBLICKEYBYTES: usize = OWCPA_PUBLICKEYBYTES;
58 const OWCPA_SECRETKEYBYTES: usize = OWCPA_SECRETKEYBYTES;
59 const OWCPA_BYTES: usize = OWCPA_BYTES;
60 const OWCPA_MSGBYTES: usize = OWCPA_MSGBYTES;
61
62 fn poly_sq_tobytes(r: &mut [u8], a: &[u16; N]) {
67 crate::public_key::ntru_pqc_shared::poly_sq_tobytes_logq11::<N>(r, a);
68 }
69
70 fn poly_sq_frombytes(r: &mut [u16; N], a: &[u8]) {
71 crate::public_key::ntru_pqc_shared::poly_sq_frombytes_logq11::<N>(r, a);
72 }
73}
74
75crate::public_key::ntru_pqc_shared::define_pqc_kem! {
78 namespace = NtruHps509,
79 public_key = NtruHps509PublicKey,
80 private_key = NtruHps509PrivateKey,
81 ciphertext = NtruHps509Ciphertext,
82 shared_secret = NtruHps509SharedSecret,
83 variant = Hps509Variant,
84 kat_path = "../../kat/ntruhps509.rsp",
85}