dcrypt_params/pqc/
mceliece.rs

1//! Constants for Classic McEliece key encapsulation mechanism
2
3/// Structure containing McEliece-348864 parameters
4pub struct McEliece348864Params {
5    /// Code length
6    pub n: usize,
7
8    /// Code dimension
9    pub k: usize,
10
11    /// Error correction capability
12    pub t: usize,
13
14    /// Public key size in bytes
15    pub public_key_size: usize,
16
17    /// Secret key size in bytes
18    pub secret_key_size: usize,
19
20    /// Ciphertext size in bytes
21    pub ciphertext_size: usize,
22
23    /// Shared secret size in bytes
24    pub shared_secret_size: usize,
25}
26
27/// McEliece-348864 parameters (NIST security level 1)
28pub const MCELIECE_348864: McEliece348864Params = McEliece348864Params {
29    n: 3488,
30    k: 2720,
31    t: 64,
32    public_key_size: 261120,
33    secret_key_size: 6492,
34    ciphertext_size: 128,
35    shared_secret_size: 32,
36};
37
38/// Structure containing McEliece-460896 parameters
39pub struct McEliece460896Params {
40    /// Code length
41    pub n: usize,
42
43    /// Code dimension
44    pub k: usize,
45
46    /// Error correction capability
47    pub t: usize,
48
49    /// Public key size in bytes
50    pub public_key_size: usize,
51
52    /// Secret key size in bytes
53    pub secret_key_size: usize,
54
55    /// Ciphertext size in bytes
56    pub ciphertext_size: usize,
57
58    /// Shared secret size in bytes
59    pub shared_secret_size: usize,
60}
61
62/// McEliece-460896 parameters (NIST security level 3)
63pub const MCELIECE_460896: McEliece460896Params = McEliece460896Params {
64    n: 4608,
65    k: 3360,
66    t: 96,
67    public_key_size: 524160,
68    secret_key_size: 13608,
69    ciphertext_size: 188,
70    shared_secret_size: 32,
71};
72
73/// Structure containing McEliece-6960119 parameters
74pub struct McEliece6960119Params {
75    /// Code length
76    pub n: usize,
77
78    /// Code dimension
79    pub k: usize,
80
81    /// Error correction capability
82    pub t: usize,
83
84    /// Public key size in bytes
85    pub public_key_size: usize,
86
87    /// Secret key size in bytes
88    pub secret_key_size: usize,
89
90    /// Ciphertext size in bytes
91    pub ciphertext_size: usize,
92
93    /// Shared secret size in bytes
94    pub shared_secret_size: usize,
95}
96
97/// McEliece-6960119 parameters (NIST security level 5)
98pub const MCELIECE_6960119: McEliece6960119Params = McEliece6960119Params {
99    n: 6960,
100    k: 5413,
101    t: 119,
102    public_key_size: 1047319,
103    secret_key_size: 13932,
104    ciphertext_size: 240,
105    shared_secret_size: 32,
106};