ntrust_native/
params.rs

1//! Global parameters of an NTRU implementation
2
3#[cfg(feature = "ntruhps2048509")]
4pub const NTRU_N: usize = 509;
5#[cfg(feature = "ntruhps2048677")]
6pub const NTRU_N: usize = 677;
7#[cfg(any(feature = "ntruhps2048509", feature = "ntruhps2048677"))]
8pub const NTRU_LOGQ: usize = 11;
9#[cfg(feature = "ntruhps4096821")]
10pub const NTRU_N: usize = 821;
11#[cfg(feature = "ntruhps4096821")]
12pub const NTRU_LOGQ: usize = 12;
13#[cfg(feature = "ntruhrss")]
14pub const NTRU_N: usize = 701;
15#[cfg(feature = "ntruhrss")]
16pub const NTRU_LOGQ: usize = 13;
17
18pub const NTRU_Q: usize = 1 << NTRU_LOGQ;
19
20pub const NTRU_WEIGHT: usize = NTRU_Q / 8 - 2;
21
22pub const NTRU_SAMPLE_IID_BYTES: usize = NTRU_N - 1;
23
24pub const NTRU_SAMPLE_FT_BYTES: usize = (30 * (NTRU_N - 1) + 7) / 8;
25
26#[cfg(feature = "ntruhps")]
27pub const NTRU_SAMPLE_FG_BYTES: usize = NTRU_SAMPLE_IID_BYTES + NTRU_SAMPLE_FT_BYTES;
28#[cfg(feature = "ntruhrss")]
29pub const NTRU_SAMPLE_FG_BYTES: usize = 2 * NTRU_SAMPLE_IID_BYTES;
30
31#[cfg(feature = "ntruhps")]
32pub const NTRU_SAMPLE_RM_BYTES: usize = NTRU_SAMPLE_IID_BYTES + NTRU_SAMPLE_FT_BYTES;
33#[cfg(feature = "ntruhrss")]
34pub const NTRU_SAMPLE_RM_BYTES: usize = 2 * NTRU_SAMPLE_IID_BYTES;
35
36pub const NTRU_PRFKEYBYTES: usize = 32;
37pub const NTRU_SHAREDKEYBYTES: usize = 32;
38
39pub const NTRU_PACK_DEG: usize = NTRU_N - 1;
40pub const NTRU_PACK_TRINARY_BYTES: usize = (NTRU_PACK_DEG + 4) / 5;
41
42pub const NTRU_OWCPA_MSGBYTES: usize = 2 * NTRU_PACK_TRINARY_BYTES;
43pub const NTRU_OWCPA_BYTES: usize = (NTRU_LOGQ * NTRU_PACK_DEG + 7) / 8;
44pub const NTRU_CIPHERTEXTBYTES: usize = NTRU_OWCPA_BYTES;
45
46pub const NTRU_OWCPA_SECRETKEYBYTES: usize =
47    2 * NTRU_PACK_TRINARY_BYTES + NTRU_OWCPA_PUBLICKEYBYTES;
48pub const NTRU_OWCPA_PUBLICKEYBYTES: usize = (NTRU_LOGQ * NTRU_PACK_DEG + 7) / 8;