dryoc/
constants.rs

1#![allow(missing_docs)]
2
3const fn min(a: usize, b: usize) -> usize {
4    [a, b][(a > b) as usize]
5}
6const fn max(a: usize, b: usize) -> usize {
7    [a, b][(a < b) as usize]
8}
9
10const SODIUM_SIZE_MAX: usize = min(usize::MAX, u64::MAX as usize);
11
12pub const CRYPTO_SCALARMULT_CURVE25519_BYTES: usize = 32;
13pub const CRYPTO_SCALARMULT_CURVE25519_SCALARBYTES: usize = 32;
14
15pub const CRYPTO_SCALARMULT_BYTES: usize = CRYPTO_SCALARMULT_CURVE25519_BYTES;
16pub const CRYPTO_SCALARMULT_SCALARBYTES: usize = CRYPTO_SCALARMULT_CURVE25519_SCALARBYTES;
17
18const CRYPTO_BOX_CURVE25519XSALSA20POLY1305_PUBLICKEYBYTES: usize = 32;
19const CRYPTO_BOX_CURVE25519XSALSA20POLY1305_SECRETKEYBYTES: usize = 32;
20const CRYPTO_BOX_CURVE25519XSALSA20POLY1305_MACBYTES: usize = 16;
21const CRYPTO_BOX_CURVE25519XSALSA20POLY1305_NONCEBYTES: usize = 24;
22const CRYPTO_BOX_CURVE25519XSALSA20POLY1305_SEEDBYTES: usize = 32;
23const CRYPTO_BOX_CURVE25519XSALSA20POLY1305_BEFORENMBYTES: usize = 32;
24
25const CRYPTO_STREAM_XSALSA20_MESSAGEBYTES_MAX: usize = SODIUM_SIZE_MAX;
26
27pub const CRYPTO_BOX_PUBLICKEYBYTES: usize = CRYPTO_BOX_CURVE25519XSALSA20POLY1305_PUBLICKEYBYTES;
28pub const CRYPTO_BOX_SECRETKEYBYTES: usize = CRYPTO_BOX_CURVE25519XSALSA20POLY1305_SECRETKEYBYTES;
29pub const CRYPTO_BOX_MACBYTES: usize = CRYPTO_BOX_CURVE25519XSALSA20POLY1305_MACBYTES;
30pub const CRYPTO_BOX_NONCEBYTES: usize = CRYPTO_BOX_CURVE25519XSALSA20POLY1305_NONCEBYTES;
31pub const CRYPTO_BOX_SEEDBYTES: usize = CRYPTO_BOX_CURVE25519XSALSA20POLY1305_SEEDBYTES;
32pub const CRYPTO_BOX_BEFORENMBYTES: usize = CRYPTO_BOX_CURVE25519XSALSA20POLY1305_BEFORENMBYTES;
33pub const CRYPTO_BOX_SEALBYTES: usize = CRYPTO_BOX_PUBLICKEYBYTES + CRYPTO_BOX_MACBYTES;
34pub const CRYPTO_BOX_MESSAGEBYTES_MAX: usize =
35    CRYPTO_STREAM_XSALSA20_MESSAGEBYTES_MAX - CRYPTO_BOX_CURVE25519XSALSA20POLY1305_MACBYTES;
36
37pub const CRYPTO_SECRETBOX_XSALSA20POLY1305_KEYBYTES: usize = 32;
38pub const CRYPTO_SECRETBOX_XSALSA20POLY1305_NONCEBYTES: usize = 24;
39pub const CRYPTO_SECRETBOX_XSALSA20POLY1305_MACBYTES: usize = 16;
40pub const CRYPTO_SECRETBOX_XSALSA20POLY1305_MESSAGEBYTES_MAX: usize = SODIUM_SIZE_MAX;
41
42pub const CRYPTO_SECRETBOX_KEYBYTES: usize = CRYPTO_SECRETBOX_XSALSA20POLY1305_KEYBYTES;
43pub const CRYPTO_SECRETBOX_NONCEBYTES: usize = CRYPTO_SECRETBOX_XSALSA20POLY1305_NONCEBYTES;
44pub const CRYPTO_SECRETBOX_MACBYTES: usize = CRYPTO_SECRETBOX_XSALSA20POLY1305_MACBYTES;
45pub const CRYPTO_SECRETBOX_PRIMITIVE: &str = "xsalsa20poly1305";
46pub const CRYPTO_SECRETBOX_MESSAGEBYTES_MAX: usize =
47    CRYPTO_SECRETBOX_XSALSA20POLY1305_MESSAGEBYTES_MAX;
48
49pub const CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES: usize = 32;
50pub const CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES: usize = 24;
51pub const CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES: usize = 16;
52pub const CRYPTO_AEAD_CHACHA20POLY1305_IETF_MESSAGEBYTES_MAX: usize =
53    (64u64 * ((1u64 << 32) - 1u64)) as usize;
54
55pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES: usize =
56    CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES;
57pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES: usize =
58    CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES;
59pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_INONCEBYTES: usize = 8;
60pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_COUNTERBYTES: usize = 4;
61pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES: usize =
62    1 + CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES;
63pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX: usize = min(
64    SODIUM_SIZE_MAX - CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES,
65    (64u64 * ((1u64 << 32) - 2u64)) as usize,
66);
67
68pub const CRYPTO_STREAM_CHACHA20_IETF_KEYBYTES: usize = 32;
69pub const CRYPTO_STREAM_CHACHA20_IETF_NONCEBYTES: usize = 12;
70
71pub const CRYPTO_CORE_HCHACHA20_INPUTBYTES: usize = 16;
72pub const CRYPTO_CORE_HCHACHA20_OUTPUTBYTES: usize = 32;
73pub const CRYPTO_CORE_HCHACHA20_KEYBYTES: usize = 32;
74
75pub const CRYPTO_CORE_HSALSA20_OUTPUTBYTES: usize = 32;
76pub const CRYPTO_CORE_HSALSA20_INPUTBYTES: usize = 16;
77pub const CRYPTO_CORE_HSALSA20_KEYBYTES: usize = 32;
78pub const CRYPTO_CORE_HSALSA20_CONSTBYTES: usize = 16;
79
80pub const CRYPTO_SECRETSTREAM_PADBYTES: usize = 8;
81
82pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_MESSAGE: u8 = 0x00;
83pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH: u8 = 0x01;
84pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY: u8 = 0x02;
85pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL: u8 =
86    CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH
87        | CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY;
88
89pub const CRYPTO_GENERICHASH_BLAKE2B_BYTES_MIN: usize = 16;
90pub const CRYPTO_GENERICHASH_BLAKE2B_BYTES_MAX: usize = 64;
91pub const CRYPTO_GENERICHASH_BLAKE2B_BYTES: usize = 32;
92pub const CRYPTO_GENERICHASH_BLAKE2B_KEYBYTES_MIN: usize = 16;
93pub const CRYPTO_GENERICHASH_BLAKE2B_KEYBYTES_MAX: usize = 64;
94pub const CRYPTO_GENERICHASH_BLAKE2B_KEYBYTES: usize = 32;
95pub const CRYPTO_GENERICHASH_BLAKE2B_SALTBYTES: usize = 16;
96pub const CRYPTO_GENERICHASH_BLAKE2B_PERSONALBYTES: usize = 16;
97
98pub const CRYPTO_GENERICHASH_BYTES: usize = CRYPTO_GENERICHASH_BLAKE2B_BYTES;
99pub const CRYPTO_GENERICHASH_KEYBYTES: usize = CRYPTO_GENERICHASH_BLAKE2B_KEYBYTES;
100pub const CRYPTO_GENERICHASH_BYTES_MIN: usize = CRYPTO_GENERICHASH_BLAKE2B_BYTES_MIN;
101pub const CRYPTO_GENERICHASH_BYTES_MAX: usize = CRYPTO_GENERICHASH_BLAKE2B_BYTES_MAX;
102pub const CRYPTO_GENERICHASH_KEYBYTES_MIN: usize = CRYPTO_GENERICHASH_BLAKE2B_KEYBYTES_MIN;
103pub const CRYPTO_GENERICHASH_KEYBYTES_MAX: usize = CRYPTO_GENERICHASH_BLAKE2B_KEYBYTES_MAX;
104
105pub const CRYPTO_ONETIMEAUTH_POLY1305_BYTES: usize = 16;
106pub const CRYPTO_ONETIMEAUTH_POLY1305_KEYBYTES: usize = 32;
107
108pub const CRYPTO_ONETIMEAUTH_BYTES: usize = CRYPTO_ONETIMEAUTH_POLY1305_BYTES;
109pub const CRYPTO_ONETIMEAUTH_KEYBYTES: usize = CRYPTO_ONETIMEAUTH_POLY1305_KEYBYTES;
110
111pub const CRYPTO_AUTH_HMACSHA512256_BYTES: usize = 32;
112pub const CRYPTO_AUTH_HMACSHA512256_KEYBYTES: usize = 32;
113
114pub const CRYPTO_AUTH_BYTES: usize = CRYPTO_AUTH_HMACSHA512256_BYTES;
115pub const CRYPTO_AUTH_KEYBYTES: usize = CRYPTO_AUTH_HMACSHA512256_KEYBYTES;
116
117pub const CRYPTO_HASH_SHA512_BYTES: usize = 64;
118
119pub const CRYPTO_KDF_BLAKE2B_KEYBYTES: usize = 32;
120pub const CRYPTO_KDF_BLAKE2B_CONTEXTBYTES: usize = 8;
121pub const CRYPTO_KDF_BLAKE2B_BYTES_MIN: usize = 16;
122pub const CRYPTO_KDF_BLAKE2B_BYTES_MAX: usize = 64;
123
124pub const CRYPTO_KDF_KEYBYTES: usize = CRYPTO_KDF_BLAKE2B_KEYBYTES;
125pub const CRYPTO_KDF_CONTEXTBYTES: usize = CRYPTO_KDF_BLAKE2B_CONTEXTBYTES;
126
127pub const CRYPTO_KX_PUBLICKEYBYTES: usize = 32;
128pub const CRYPTO_KX_SECRETKEYBYTES: usize = 32;
129pub const CRYPTO_KX_SEEDBYTES: usize = 32;
130pub const CRYPTO_KX_SESSIONKEYBYTES: usize = 32;
131
132pub const CRYPTO_SIGN_ED25519_PUBLICKEYBYTES: usize = 32;
133pub const CRYPTO_SIGN_ED25519_SECRETKEYBYTES: usize = 32 + 32;
134pub const CRYPTO_SIGN_ED25519_BYTES: usize = 64;
135pub const CRYPTO_SIGN_ED25519_SEEDBYTES: usize = 32;
136pub const CRYPTO_SIGN_ED25519_MESSAGEBYTES_MAX: usize = SODIUM_SIZE_MAX - CRYPTO_SIGN_ED25519_BYTES;
137pub const CRYPTO_CORE_ED25519_BYTES: usize = 32;
138
139pub const CRYPTO_SIGN_BYTES: usize = CRYPTO_SIGN_ED25519_BYTES;
140pub const CRYPTO_SIGN_SEEDBYTES: usize = CRYPTO_SIGN_ED25519_SEEDBYTES;
141pub const CRYPTO_SIGN_PUBLICKEYBYTES: usize = CRYPTO_SIGN_ED25519_PUBLICKEYBYTES;
142pub const CRYPTO_SIGN_SECRETKEYBYTES: usize = CRYPTO_SIGN_ED25519_SECRETKEYBYTES;
143pub const CRYPTO_SIGN_MESSAGEBYTES_MAX: usize = CRYPTO_SIGN_ED25519_MESSAGEBYTES_MAX;
144
145pub const CRYPTO_SHORTHASH_SIPHASH24_BYTES: usize = 8;
146pub const CRYPTO_SHORTHASH_SIPHASH24_KEYBYTES: usize = 16;
147
148pub const CRYPTO_SHORTHASH_BYTES: usize = CRYPTO_SHORTHASH_SIPHASH24_BYTES;
149pub const CRYPTO_SHORTHASH_KEYBYTES: usize = CRYPTO_SHORTHASH_SIPHASH24_KEYBYTES;
150
151pub const CRYPTO_PWHASH_ARGON2I_ALG_ARGON2I13: usize = 1;
152pub const CRYPTO_PWHASH_ARGON2I_BYTES_MAX: usize = min(SODIUM_SIZE_MAX, 4294967295);
153pub const CRYPTO_PWHASH_ARGON2I_BYTES_MIN: usize = 16;
154pub const CRYPTO_PWHASH_ARGON2I_MEMLIMIT_INTERACTIVE: usize = 33554432;
155pub const CRYPTO_PWHASH_ARGON2I_MEMLIMIT_MAX: usize = max(
156    min(SODIUM_SIZE_MAX, 4398046510080),
157    max(
158        min(SODIUM_SIZE_MAX, 2147483648),
159        min(SODIUM_SIZE_MAX, 32768),
160    ),
161);
162pub const CRYPTO_PWHASH_ARGON2I_MEMLIMIT_MIN: usize = 8192;
163pub const CRYPTO_PWHASH_ARGON2I_MEMLIMIT_MODERATE: usize = 134217728;
164pub const CRYPTO_PWHASH_ARGON2I_MEMLIMIT_SENSITIVE: usize = 536870912;
165pub const CRYPTO_PWHASH_ARGON2I_OPSLIMIT_INTERACTIVE: u64 = 4;
166pub const CRYPTO_PWHASH_ARGON2I_OPSLIMIT_MAX: u64 = 4294967295;
167pub const CRYPTO_PWHASH_ARGON2I_OPSLIMIT_MIN: u64 = 3;
168pub const CRYPTO_PWHASH_ARGON2I_OPSLIMIT_MODERATE: u64 = 6;
169pub const CRYPTO_PWHASH_ARGON2I_OPSLIMIT_SENSITIVE: u64 = 8;
170pub const CRYPTO_PWHASH_ARGON2I_PASSWD_MAX: usize = 4294967295;
171pub const CRYPTO_PWHASH_ARGON2I_PASSWD_MIN: usize = 0;
172pub const CRYPTO_PWHASH_ARGON2I_SALTBYTES_MAX: usize = 0xFFFFFFFF;
173pub const CRYPTO_PWHASH_ARGON2I_SALTBYTES_MIN: usize = 8;
174pub const CRYPTO_PWHASH_ARGON2I_SALTBYTES: usize = 16;
175pub const CRYPTO_PWHASH_ARGON2I_STRBYTES: usize = 128;
176pub const CRYPTO_PWHASH_ARGON2I_STRPREFIX: &str = "$argon2i$";
177
178pub const CRYPTO_PWHASH_ARGON2ID_ALG_ARGON2ID13: usize = 2;
179pub const CRYPTO_PWHASH_ARGON2ID_BYTES_MAX: usize = min(SODIUM_SIZE_MAX, 4294967295);
180pub const CRYPTO_PWHASH_ARGON2ID_BYTES_MIN: usize = 16;
181pub const CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_INTERACTIVE: usize = 67108864;
182pub const CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_MIN: usize = 8192;
183pub const CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_MAX: usize = max(
184    min(SODIUM_SIZE_MAX, 4398046510080),
185    max(
186        min(SODIUM_SIZE_MAX, 2147483648),
187        min(SODIUM_SIZE_MAX, 32768),
188    ),
189);
190pub const CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_MODERATE: usize = 268435456;
191pub const CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_SENSITIVE: usize = 1073741824;
192pub const CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_INTERACTIVE: u64 = 2;
193pub const CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_MAX: u64 = 4294967295;
194pub const CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_MIN: u64 = 1;
195pub const CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_MODERATE: u64 = 3;
196pub const CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_SENSITIVE: u64 = 4;
197pub const CRYPTO_PWHASH_ARGON2ID_PASSWD_MAX: usize = 4294967295;
198pub const CRYPTO_PWHASH_ARGON2ID_PASSWD_MIN: usize = 0;
199pub const CRYPTO_PWHASH_ARGON2ID_SALTBYTES_MAX: usize = 0xFFFFFFFF;
200pub const CRYPTO_PWHASH_ARGON2ID_SALTBYTES_MIN: usize = 8;
201pub const CRYPTO_PWHASH_ARGON2ID_SALTBYTES: usize = 16;
202pub const CRYPTO_PWHASH_ARGON2ID_STRBYTES: usize = 128;
203pub const CRYPTO_PWHASH_ARGON2ID_STRPREFIX: &str = "$argon2id$";
204
205pub const CRYPTO_PWHASH_ALG_ARGON2I13: usize = CRYPTO_PWHASH_ARGON2I_ALG_ARGON2I13;
206pub const CRYPTO_PWHASH_ALG_ARGON2ID13: usize = CRYPTO_PWHASH_ARGON2ID_ALG_ARGON2ID13;
207pub const CRYPTO_PWHASH_ALG_DEFAULT: usize = CRYPTO_PWHASH_ALG_ARGON2ID13;
208pub const CRYPTO_PWHASH_BYTES_MAX: usize = CRYPTO_PWHASH_ARGON2ID_BYTES_MAX;
209pub const CRYPTO_PWHASH_BYTES_MIN: usize = CRYPTO_PWHASH_ARGON2ID_BYTES_MIN;
210pub const CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE: usize = CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_INTERACTIVE;
211pub const CRYPTO_PWHASH_MEMLIMIT_MAX: usize = CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_MAX;
212pub const CRYPTO_PWHASH_MEMLIMIT_MIN: usize = CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_MIN;
213pub const CRYPTO_PWHASH_MEMLIMIT_MODERATE: usize = CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_MODERATE;
214pub const CRYPTO_PWHASH_MEMLIMIT_SENSITIVE: usize = CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_SENSITIVE;
215pub const CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE: u64 = CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_INTERACTIVE;
216pub const CRYPTO_PWHASH_OPSLIMIT_MAX: u64 = CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_MAX;
217pub const CRYPTO_PWHASH_OPSLIMIT_MIN: u64 = CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_MIN;
218pub const CRYPTO_PWHASH_OPSLIMIT_MODERATE: u64 = CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_MODERATE;
219pub const CRYPTO_PWHASH_OPSLIMIT_SENSITIVE: u64 = CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_SENSITIVE;
220pub const CRYPTO_PWHASH_PASSWD_MAX: usize = CRYPTO_PWHASH_ARGON2ID_PASSWD_MAX;
221pub const CRYPTO_PWHASH_PASSWD_MIN: usize = CRYPTO_PWHASH_ARGON2ID_PASSWD_MIN;
222pub const CRYPTO_PWHASH_SALTBYTES_MAX: usize = CRYPTO_PWHASH_ARGON2ID_SALTBYTES_MAX;
223pub const CRYPTO_PWHASH_SALTBYTES_MIN: usize = CRYPTO_PWHASH_ARGON2ID_SALTBYTES_MIN;
224pub const CRYPTO_PWHASH_SALTBYTES: usize = CRYPTO_PWHASH_ARGON2ID_SALTBYTES;
225pub const CRYPTO_PWHASH_STRBYTES: usize = CRYPTO_PWHASH_ARGON2ID_STRBYTES;
226pub const CRYPTO_PWHASH_STRPREFIX: &str = CRYPTO_PWHASH_ARGON2ID_STRPREFIX;