dcrypt_params/pqc/
ntru.rs

1//! Constants for NTRU key encapsulation mechanism
2
3/// NTRU-HPS parameter set
4pub struct NtruHpsParams {
5    /// Polynomial degree
6    pub n: usize,
7
8    /// Modulus
9    pub q: u16,
10
11    /// Padding parameter
12    pub p: u16,
13
14    /// Weight of private key
15    pub d: usize,
16
17    /// Public key size in bytes
18    pub public_key_size: usize,
19
20    /// Secret key size in bytes
21    pub secret_key_size: usize,
22
23    /// Ciphertext size in bytes
24    pub ciphertext_size: usize,
25
26    /// Shared secret size in bytes
27    pub shared_secret_size: usize,
28}
29
30/// NTRU-HPS-2048-509 parameters
31pub const NTRU_HPS_2048_509: NtruHpsParams = NtruHpsParams {
32    n: 509,
33    q: 2048,
34    p: 3,
35    d: 254,
36    public_key_size: 699,
37    secret_key_size: 935,
38    ciphertext_size: 699,
39    shared_secret_size: 32,
40};
41
42/// NTRU-HPS-2048-677 parameters
43pub const NTRU_HPS_2048_677: NtruHpsParams = NtruHpsParams {
44    n: 677,
45    q: 2048,
46    p: 3,
47    d: 254,
48    public_key_size: 930,
49    secret_key_size: 1234,
50    ciphertext_size: 930,
51    shared_secret_size: 32,
52};
53
54/// NTRU-HPS-4096-821 parameters
55pub const NTRU_HPS_4096_821: NtruHpsParams = NtruHpsParams {
56    n: 821,
57    q: 4096,
58    p: 3,
59    d: 254,
60    public_key_size: 1230,
61    secret_key_size: 1590,
62    ciphertext_size: 1230,
63    shared_secret_size: 32,
64};
65
66/// NTRU-HRSS parameter set
67pub struct NtruHrssParams {
68    /// Polynomial degree
69    pub n: usize,
70
71    /// Modulus
72    pub q: u16,
73
74    /// Padding parameter
75    pub p: u16,
76
77    /// Public key size in bytes
78    pub public_key_size: usize,
79
80    /// Secret key size in bytes
81    pub secret_key_size: usize,
82
83    /// Ciphertext size in bytes
84    pub ciphertext_size: usize,
85
86    /// Shared secret size in bytes
87    pub shared_secret_size: usize,
88}
89
90/// NTRU-HRSS-701 parameters
91pub const NTRU_HRSS_701: NtruHrssParams = NtruHrssParams {
92    n: 701,
93    q: 8192,
94    p: 3,
95    public_key_size: 1138,
96    secret_key_size: 1450,
97    ciphertext_size: 1138,
98    shared_secret_size: 32,
99};