1#![allow(missing_docs)]
2
3const fn min(a: usize, b: usize) -> usize {
4 [a, b][(a > b) as usize]
5}
6const fn min_usize_u64(a: usize, b: u64) -> usize {
7 if (a as u64) < b { a } else { 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 =
41 CRYPTO_STREAM_XSALSA20_MESSAGEBYTES_MAX - CRYPTO_SECRETBOX_XSALSA20POLY1305_MACBYTES;
42
43pub const CRYPTO_SECRETBOX_KEYBYTES: usize = CRYPTO_SECRETBOX_XSALSA20POLY1305_KEYBYTES;
44pub const CRYPTO_SECRETBOX_NONCEBYTES: usize = CRYPTO_SECRETBOX_XSALSA20POLY1305_NONCEBYTES;
45pub const CRYPTO_SECRETBOX_MACBYTES: usize = CRYPTO_SECRETBOX_XSALSA20POLY1305_MACBYTES;
46pub const CRYPTO_SECRETBOX_PRIMITIVE: &str = "xsalsa20poly1305";
47pub const CRYPTO_SECRETBOX_MESSAGEBYTES_MAX: usize =
48 CRYPTO_SECRETBOX_XSALSA20POLY1305_MESSAGEBYTES_MAX;
49
50pub const CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES: usize = 32;
51pub const CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES: usize = 0;
52pub const CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES: usize = 12;
53pub const CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES: usize = 16;
54pub const CRYPTO_AEAD_CHACHA20POLY1305_IETF_MESSAGEBYTES_MAX: usize = min_usize_u64(
55 SODIUM_SIZE_MAX - CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES,
56 64u64 * ((1u64 << 32) - 1u64),
57);
58
59pub const CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES: usize = 32;
60pub const CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NSECBYTES: usize = 0;
61pub const CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES: usize = 24;
62pub const CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES: usize = 16;
63pub const CRYPTO_AEAD_XCHACHA20POLY1305_IETF_MESSAGEBYTES_MAX: usize =
67 SODIUM_SIZE_MAX - CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES;
68
69pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES: usize =
70 CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES;
71pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES: usize =
72 CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES;
73pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_INONCEBYTES: usize = 8;
74pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_COUNTERBYTES: usize = 4;
75pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES: usize =
76 1 + CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES;
77pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX: usize = min_usize_u64(
78 SODIUM_SIZE_MAX - CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES,
79 64u64 * ((1u64 << 32) - 2u64),
80);
81
82pub const CRYPTO_STREAM_CHACHA20_IETF_KEYBYTES: usize = 32;
83pub const CRYPTO_STREAM_CHACHA20_IETF_NONCEBYTES: usize = 12;
84
85pub const CRYPTO_CORE_HCHACHA20_INPUTBYTES: usize = 16;
86pub const CRYPTO_CORE_HCHACHA20_OUTPUTBYTES: usize = 32;
87pub const CRYPTO_CORE_HCHACHA20_KEYBYTES: usize = 32;
88
89pub const CRYPTO_CORE_HSALSA20_OUTPUTBYTES: usize = 32;
90pub const CRYPTO_CORE_HSALSA20_INPUTBYTES: usize = 16;
91pub const CRYPTO_CORE_HSALSA20_KEYBYTES: usize = 32;
92pub const CRYPTO_CORE_HSALSA20_CONSTBYTES: usize = 16;
93
94pub const CRYPTO_SECRETSTREAM_PADBYTES: usize = 8;
95
96pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_MESSAGE: u8 = 0x00;
97pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH: u8 = 0x01;
98pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY: u8 = 0x02;
99pub const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL: u8 =
100 CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH
101 | CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY;
102
103pub const CRYPTO_GENERICHASH_BLAKE2B_BYTES_MIN: usize = 16;
104pub const CRYPTO_GENERICHASH_BLAKE2B_BYTES_MAX: usize = 64;
105pub const CRYPTO_GENERICHASH_BLAKE2B_BYTES: usize = 32;
106pub const CRYPTO_GENERICHASH_BLAKE2B_KEYBYTES_MIN: usize = 16;
107pub const CRYPTO_GENERICHASH_BLAKE2B_KEYBYTES_MAX: usize = 64;
108pub const CRYPTO_GENERICHASH_BLAKE2B_KEYBYTES: usize = 32;
109pub const CRYPTO_GENERICHASH_BLAKE2B_SALTBYTES: usize = 16;
110pub const CRYPTO_GENERICHASH_BLAKE2B_PERSONALBYTES: usize = 16;
111
112pub const CRYPTO_GENERICHASH_BYTES: usize = CRYPTO_GENERICHASH_BLAKE2B_BYTES;
113pub const CRYPTO_GENERICHASH_KEYBYTES: usize = CRYPTO_GENERICHASH_BLAKE2B_KEYBYTES;
114pub const CRYPTO_GENERICHASH_BYTES_MIN: usize = CRYPTO_GENERICHASH_BLAKE2B_BYTES_MIN;
115pub const CRYPTO_GENERICHASH_BYTES_MAX: usize = CRYPTO_GENERICHASH_BLAKE2B_BYTES_MAX;
116pub const CRYPTO_GENERICHASH_KEYBYTES_MIN: usize = CRYPTO_GENERICHASH_BLAKE2B_KEYBYTES_MIN;
117pub const CRYPTO_GENERICHASH_KEYBYTES_MAX: usize = CRYPTO_GENERICHASH_BLAKE2B_KEYBYTES_MAX;
118
119pub const CRYPTO_ONETIMEAUTH_POLY1305_BYTES: usize = 16;
120pub const CRYPTO_ONETIMEAUTH_POLY1305_KEYBYTES: usize = 32;
121
122pub const CRYPTO_ONETIMEAUTH_BYTES: usize = CRYPTO_ONETIMEAUTH_POLY1305_BYTES;
123pub const CRYPTO_ONETIMEAUTH_KEYBYTES: usize = CRYPTO_ONETIMEAUTH_POLY1305_KEYBYTES;
124
125pub const CRYPTO_AUTH_HMACSHA512256_BYTES: usize = 32;
126pub const CRYPTO_AUTH_HMACSHA512256_KEYBYTES: usize = 32;
127
128pub const CRYPTO_AUTH_HMACSHA256_BYTES: usize = 32;
129pub const CRYPTO_AUTH_HMACSHA256_KEYBYTES: usize = 32;
130pub const CRYPTO_AUTH_HMACSHA512_BYTES: usize = 64;
131pub const CRYPTO_AUTH_HMACSHA512_KEYBYTES: usize = 32;
132
133pub const CRYPTO_AUTH_BYTES: usize = CRYPTO_AUTH_HMACSHA512256_BYTES;
134pub const CRYPTO_AUTH_KEYBYTES: usize = CRYPTO_AUTH_HMACSHA512256_KEYBYTES;
135
136pub const CRYPTO_HASH_SHA256_BYTES: usize = 32;
137pub const CRYPTO_HASH_SHA512_BYTES: usize = 64;
138pub const CRYPTO_HASH_SHA3256_BYTES: usize = 32;
139pub const CRYPTO_HASH_SHA3512_BYTES: usize = 64;
140pub const CRYPTO_HASH_BYTES: usize = CRYPTO_HASH_SHA512_BYTES;
141pub const CRYPTO_HASH_PRIMITIVE: &str = "sha512";
142
143pub const CRYPTO_KEM_MLKEM768_PUBLICKEYBYTES: usize = 1184;
144pub const CRYPTO_KEM_MLKEM768_SECRETKEYBYTES: usize = 2400;
145pub const CRYPTO_KEM_MLKEM768_CIPHERTEXTBYTES: usize = 1088;
146pub const CRYPTO_KEM_MLKEM768_SHAREDSECRETBYTES: usize = 32;
147pub const CRYPTO_KEM_MLKEM768_SEEDBYTES: usize = 64;
148pub const CRYPTO_KEM_MLKEM768_ENCSEEDBYTES: usize = 32;
151
152pub const CRYPTO_KEM_XWING_PUBLICKEYBYTES: usize = 1216;
153pub const CRYPTO_KEM_XWING_SECRETKEYBYTES: usize = 32;
154pub const CRYPTO_KEM_XWING_CIPHERTEXTBYTES: usize = 1120;
155pub const CRYPTO_KEM_XWING_SHAREDSECRETBYTES: usize = 32;
156pub const CRYPTO_KEM_XWING_SEEDBYTES: usize = 32;
157pub const CRYPTO_KEM_XWING_ENCSEEDBYTES: usize = 64;
160
161pub const CRYPTO_KEM_PUBLICKEYBYTES: usize = CRYPTO_KEM_XWING_PUBLICKEYBYTES;
162pub const CRYPTO_KEM_SECRETKEYBYTES: usize = CRYPTO_KEM_XWING_SECRETKEYBYTES;
163pub const CRYPTO_KEM_CIPHERTEXTBYTES: usize = CRYPTO_KEM_XWING_CIPHERTEXTBYTES;
164pub const CRYPTO_KEM_SHAREDSECRETBYTES: usize = CRYPTO_KEM_XWING_SHAREDSECRETBYTES;
165pub const CRYPTO_KEM_SEEDBYTES: usize = CRYPTO_KEM_XWING_SEEDBYTES;
166pub const CRYPTO_KEM_PRIMITIVE: &str = "xwing";
167
168pub const CRYPTO_XOF_SHAKE128_BLOCKBYTES: usize = 168;
169pub const CRYPTO_XOF_SHAKE128_DOMAIN_STANDARD: u8 = 0x1f;
170pub const CRYPTO_XOF_SHAKE256_BLOCKBYTES: usize = 136;
171pub const CRYPTO_XOF_SHAKE256_DOMAIN_STANDARD: u8 = 0x1f;
172pub const CRYPTO_XOF_TURBOSHAKE128_BLOCKBYTES: usize = 168;
173pub const CRYPTO_XOF_TURBOSHAKE128_DOMAIN_STANDARD: u8 = 0x1f;
174pub const CRYPTO_XOF_TURBOSHAKE256_BLOCKBYTES: usize = 136;
175pub const CRYPTO_XOF_TURBOSHAKE256_DOMAIN_STANDARD: u8 = 0x1f;
176
177pub const CRYPTO_KDF_BLAKE2B_KEYBYTES: usize = 32;
178pub const CRYPTO_KDF_BLAKE2B_CONTEXTBYTES: usize = 8;
179pub const CRYPTO_KDF_BLAKE2B_BYTES_MIN: usize = 16;
180pub const CRYPTO_KDF_BLAKE2B_BYTES_MAX: usize = 64;
181
182pub const CRYPTO_KDF_HKDF_SHA256_KEYBYTES: usize = CRYPTO_AUTH_HMACSHA256_BYTES;
183pub const CRYPTO_KDF_HKDF_SHA256_BYTES_MIN: usize = 0;
184pub const CRYPTO_KDF_HKDF_SHA256_BYTES_MAX: usize = 255 * CRYPTO_AUTH_HMACSHA256_BYTES;
185pub const CRYPTO_KDF_HKDF_SHA512_KEYBYTES: usize = CRYPTO_AUTH_HMACSHA512_BYTES;
186pub const CRYPTO_KDF_HKDF_SHA512_BYTES_MIN: usize = 0;
187pub const CRYPTO_KDF_HKDF_SHA512_BYTES_MAX: usize = 255 * CRYPTO_AUTH_HMACSHA512_BYTES;
188
189pub const CRYPTO_KDF_KEYBYTES: usize = CRYPTO_KDF_BLAKE2B_KEYBYTES;
190pub const CRYPTO_KDF_CONTEXTBYTES: usize = CRYPTO_KDF_BLAKE2B_CONTEXTBYTES;
191
192pub const CRYPTO_KX_PUBLICKEYBYTES: usize = 32;
193pub const CRYPTO_KX_SECRETKEYBYTES: usize = 32;
194pub const CRYPTO_KX_SEEDBYTES: usize = 32;
195pub const CRYPTO_KX_SESSIONKEYBYTES: usize = 32;
196
197pub const CRYPTO_SIGN_ED25519_PUBLICKEYBYTES: usize = 32;
198pub const CRYPTO_SIGN_ED25519_SECRETKEYBYTES: usize = 32 + 32;
199pub const CRYPTO_SIGN_ED25519_BYTES: usize = 64;
200pub const CRYPTO_SIGN_ED25519_SEEDBYTES: usize = 32;
201pub const CRYPTO_SIGN_ED25519_MESSAGEBYTES_MAX: usize = SODIUM_SIZE_MAX - CRYPTO_SIGN_ED25519_BYTES;
202pub const CRYPTO_CORE_ED25519_BYTES: usize = 32;
203
204pub const CRYPTO_SIGN_BYTES: usize = CRYPTO_SIGN_ED25519_BYTES;
205pub const CRYPTO_SIGN_SEEDBYTES: usize = CRYPTO_SIGN_ED25519_SEEDBYTES;
206pub const CRYPTO_SIGN_PUBLICKEYBYTES: usize = CRYPTO_SIGN_ED25519_PUBLICKEYBYTES;
207pub const CRYPTO_SIGN_SECRETKEYBYTES: usize = CRYPTO_SIGN_ED25519_SECRETKEYBYTES;
208pub const CRYPTO_SIGN_MESSAGEBYTES_MAX: usize = CRYPTO_SIGN_ED25519_MESSAGEBYTES_MAX;
209
210pub const CRYPTO_SHORTHASH_SIPHASH24_BYTES: usize = 8;
211pub const CRYPTO_SHORTHASH_SIPHASH24_KEYBYTES: usize = 16;
212
213pub const CRYPTO_SHORTHASH_BYTES: usize = CRYPTO_SHORTHASH_SIPHASH24_BYTES;
214pub const CRYPTO_SHORTHASH_KEYBYTES: usize = CRYPTO_SHORTHASH_SIPHASH24_KEYBYTES;
215
216pub const CRYPTO_PWHASH_ARGON2I_ALG_ARGON2I13: usize = 1;
217pub const CRYPTO_PWHASH_ARGON2I_BYTES_MAX: usize = min(SODIUM_SIZE_MAX, 4294967295);
218pub const CRYPTO_PWHASH_ARGON2I_BYTES_MIN: usize = 16;
219pub const CRYPTO_PWHASH_ARGON2I_MEMLIMIT_INTERACTIVE: usize = 33554432;
220pub const CRYPTO_PWHASH_ARGON2I_MEMLIMIT_MAX: usize = if usize::BITS >= 64 {
221 4_398_046_510_080u64 as usize
222} else if usize::BITS >= 32 {
223 2_147_483_648u64 as usize
224} else {
225 32_768
226};
227pub const CRYPTO_PWHASH_ARGON2I_MEMLIMIT_MIN: usize = 8192;
228pub const CRYPTO_PWHASH_ARGON2I_MEMLIMIT_MODERATE: usize = 134217728;
229pub const CRYPTO_PWHASH_ARGON2I_MEMLIMIT_SENSITIVE: usize = 536870912;
230pub const CRYPTO_PWHASH_ARGON2I_OPSLIMIT_INTERACTIVE: u64 = 4;
231pub const CRYPTO_PWHASH_ARGON2I_OPSLIMIT_MAX: u64 = 4294967295;
232pub const CRYPTO_PWHASH_ARGON2I_OPSLIMIT_MIN: u64 = 3;
233pub const CRYPTO_PWHASH_ARGON2I_OPSLIMIT_MODERATE: u64 = 6;
234pub const CRYPTO_PWHASH_ARGON2I_OPSLIMIT_SENSITIVE: u64 = 8;
235pub const CRYPTO_PWHASH_ARGON2I_PASSWD_MAX: usize = 4294967295;
236pub const CRYPTO_PWHASH_ARGON2I_PASSWD_MIN: usize = 0;
237pub const CRYPTO_PWHASH_ARGON2I_SALTBYTES_MAX: usize = 0xFFFFFFFF;
238pub const CRYPTO_PWHASH_ARGON2I_SALTBYTES_MIN: usize = 8;
239pub const CRYPTO_PWHASH_ARGON2I_SALTBYTES: usize = 16;
240pub const CRYPTO_PWHASH_ARGON2I_STRBYTES: usize = 128;
241pub const CRYPTO_PWHASH_ARGON2I_STRPREFIX: &str = "$argon2i$";
242
243pub const CRYPTO_PWHASH_ARGON2ID_ALG_ARGON2ID13: usize = 2;
244pub const CRYPTO_PWHASH_ARGON2ID_BYTES_MAX: usize = min(SODIUM_SIZE_MAX, 4294967295);
245pub const CRYPTO_PWHASH_ARGON2ID_BYTES_MIN: usize = 16;
246pub const CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_INTERACTIVE: usize = 67108864;
247pub const CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_MIN: usize = 8192;
248pub const CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_MAX: usize = if usize::BITS >= 64 {
249 4_398_046_510_080u64 as usize
250} else if usize::BITS >= 32 {
251 2_147_483_648u64 as usize
252} else {
253 32_768
254};
255pub const CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_MODERATE: usize = 268435456;
256pub const CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_SENSITIVE: usize = 1073741824;
257pub const CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_INTERACTIVE: u64 = 2;
258pub const CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_MAX: u64 = 4294967295;
259pub const CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_MIN: u64 = 1;
260pub const CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_MODERATE: u64 = 3;
261pub const CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_SENSITIVE: u64 = 4;
262pub const CRYPTO_PWHASH_ARGON2ID_PASSWD_MAX: usize = 4294967295;
263pub const CRYPTO_PWHASH_ARGON2ID_PASSWD_MIN: usize = 0;
264pub const CRYPTO_PWHASH_ARGON2ID_SALTBYTES_MAX: usize = 0xFFFFFFFF;
265pub const CRYPTO_PWHASH_ARGON2ID_SALTBYTES_MIN: usize = 8;
266pub const CRYPTO_PWHASH_ARGON2ID_SALTBYTES: usize = 16;
267pub const CRYPTO_PWHASH_ARGON2ID_STRBYTES: usize = 128;
268pub const CRYPTO_PWHASH_ARGON2ID_STRPREFIX: &str = "$argon2id$";
269
270pub const CRYPTO_PWHASH_ALG_ARGON2I13: usize = CRYPTO_PWHASH_ARGON2I_ALG_ARGON2I13;
271pub const CRYPTO_PWHASH_ALG_ARGON2ID13: usize = CRYPTO_PWHASH_ARGON2ID_ALG_ARGON2ID13;
272pub const CRYPTO_PWHASH_ALG_DEFAULT: usize = CRYPTO_PWHASH_ALG_ARGON2ID13;
273pub const CRYPTO_PWHASH_BYTES_MAX: usize = CRYPTO_PWHASH_ARGON2ID_BYTES_MAX;
274pub const CRYPTO_PWHASH_BYTES_MIN: usize = CRYPTO_PWHASH_ARGON2ID_BYTES_MIN;
275pub const CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE: usize = CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_INTERACTIVE;
276pub const CRYPTO_PWHASH_MEMLIMIT_MAX: usize = CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_MAX;
277pub const CRYPTO_PWHASH_MEMLIMIT_MIN: usize = CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_MIN;
278pub const CRYPTO_PWHASH_MEMLIMIT_MODERATE: usize = CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_MODERATE;
279pub const CRYPTO_PWHASH_MEMLIMIT_SENSITIVE: usize = CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_SENSITIVE;
280pub const CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE: u64 = CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_INTERACTIVE;
281pub const CRYPTO_PWHASH_OPSLIMIT_MAX: u64 = CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_MAX;
282pub const CRYPTO_PWHASH_OPSLIMIT_MIN: u64 = CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_MIN;
283pub const CRYPTO_PWHASH_OPSLIMIT_MODERATE: u64 = CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_MODERATE;
284pub const CRYPTO_PWHASH_OPSLIMIT_SENSITIVE: u64 = CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_SENSITIVE;
285pub const CRYPTO_PWHASH_PASSWD_MAX: usize = CRYPTO_PWHASH_ARGON2ID_PASSWD_MAX;
286pub const CRYPTO_PWHASH_PASSWD_MIN: usize = CRYPTO_PWHASH_ARGON2ID_PASSWD_MIN;
287pub const CRYPTO_PWHASH_SALTBYTES_MAX: usize = CRYPTO_PWHASH_ARGON2ID_SALTBYTES_MAX;
288pub const CRYPTO_PWHASH_SALTBYTES_MIN: usize = CRYPTO_PWHASH_ARGON2ID_SALTBYTES_MIN;
289pub const CRYPTO_PWHASH_SALTBYTES: usize = CRYPTO_PWHASH_ARGON2ID_SALTBYTES;
290pub const CRYPTO_PWHASH_STRBYTES: usize = CRYPTO_PWHASH_ARGON2ID_STRBYTES;
291pub const CRYPTO_PWHASH_STRPREFIX: &str = CRYPTO_PWHASH_ARGON2ID_STRPREFIX;
292
293#[cfg(target_pointer_width = "32")]
294const _: () = {
295 assert!(CRYPTO_PWHASH_ARGON2I_MEMLIMIT_MAX == 2_147_483_648usize);
296 assert!(CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_MAX == 2_147_483_648usize);
297 assert!(CRYPTO_PWHASH_MEMLIMIT_MAX == 2_147_483_648usize);
298};
299
300#[cfg(test)]
301mod tests {
302
303 #[cfg(target_pointer_width = "32")]
304 #[test]
305 fn argon2_memory_limits_match_32_bit_libsodium_maximum() {
306 assert_eq!(
307 super::CRYPTO_PWHASH_ARGON2I_MEMLIMIT_MAX,
308 2_147_483_648usize
309 );
310 assert_eq!(
311 super::CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_MAX,
312 2_147_483_648usize
313 );
314 assert_eq!(super::CRYPTO_PWHASH_MEMLIMIT_MAX, 2_147_483_648usize);
315 }
316 #[cfg(dryoc_native_tests)]
322 #[test]
323 fn test_libsodium_constants() {
324 use core::ffi::CStr;
325
326 use libsodium_sys::*;
327
328 use super::*;
329
330 crate::native_test_util::init();
331
332 macro_rules! check_numeric {
335 ($($ours:ident == $theirs:ident),* $(,)?) => {$(
336 assert_eq!($ours as u64, unsafe { $theirs() } as u64, stringify!($ours));
337 )*};
338 }
339
340 macro_rules! check_str {
343 ($($ours:ident == $theirs:ident),* $(,)?) => {$(
344 let theirs = unsafe { CStr::from_ptr($theirs()) };
345 assert_eq!($ours.as_bytes(), theirs.to_bytes(), stringify!($ours));
346 )*};
347 }
348
349 check_numeric!(
350 CRYPTO_SCALARMULT_CURVE25519_BYTES == crypto_scalarmult_curve25519_bytes,
351 CRYPTO_SCALARMULT_CURVE25519_SCALARBYTES == crypto_scalarmult_curve25519_scalarbytes,
352 CRYPTO_SCALARMULT_BYTES == crypto_scalarmult_bytes,
353 CRYPTO_SCALARMULT_SCALARBYTES == crypto_scalarmult_scalarbytes,
354 CRYPTO_BOX_PUBLICKEYBYTES == crypto_box_publickeybytes,
355 CRYPTO_BOX_SECRETKEYBYTES == crypto_box_secretkeybytes,
356 CRYPTO_BOX_MACBYTES == crypto_box_macbytes,
357 CRYPTO_BOX_NONCEBYTES == crypto_box_noncebytes,
358 CRYPTO_BOX_SEEDBYTES == crypto_box_seedbytes,
359 CRYPTO_BOX_BEFORENMBYTES == crypto_box_beforenmbytes,
360 CRYPTO_BOX_SEALBYTES == crypto_box_sealbytes,
361 CRYPTO_BOX_MESSAGEBYTES_MAX == crypto_box_messagebytes_max,
362 CRYPTO_SECRETBOX_XSALSA20POLY1305_KEYBYTES
363 == crypto_secretbox_xsalsa20poly1305_keybytes,
364 CRYPTO_SECRETBOX_XSALSA20POLY1305_NONCEBYTES
365 == crypto_secretbox_xsalsa20poly1305_noncebytes,
366 CRYPTO_SECRETBOX_XSALSA20POLY1305_MACBYTES
367 == crypto_secretbox_xsalsa20poly1305_macbytes,
368 CRYPTO_SECRETBOX_XSALSA20POLY1305_MESSAGEBYTES_MAX
369 == crypto_secretbox_xsalsa20poly1305_messagebytes_max,
370 CRYPTO_SECRETBOX_KEYBYTES == crypto_secretbox_keybytes,
371 CRYPTO_SECRETBOX_NONCEBYTES == crypto_secretbox_noncebytes,
372 CRYPTO_SECRETBOX_MACBYTES == crypto_secretbox_macbytes,
373 CRYPTO_SECRETBOX_MESSAGEBYTES_MAX == crypto_secretbox_messagebytes_max,
374 CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES
375 == crypto_aead_chacha20poly1305_ietf_keybytes,
376 CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES
377 == crypto_aead_chacha20poly1305_ietf_nsecbytes,
378 CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES
379 == crypto_aead_chacha20poly1305_ietf_npubbytes,
380 CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES == crypto_aead_chacha20poly1305_ietf_abytes,
381 CRYPTO_AEAD_CHACHA20POLY1305_IETF_MESSAGEBYTES_MAX
382 == crypto_aead_chacha20poly1305_ietf_messagebytes_max,
383 CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES
384 == crypto_aead_xchacha20poly1305_ietf_keybytes,
385 CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NSECBYTES
386 == crypto_aead_xchacha20poly1305_ietf_nsecbytes,
387 CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES
388 == crypto_aead_xchacha20poly1305_ietf_npubbytes,
389 CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES == crypto_aead_xchacha20poly1305_ietf_abytes,
390 CRYPTO_AEAD_XCHACHA20POLY1305_IETF_MESSAGEBYTES_MAX
391 == crypto_aead_xchacha20poly1305_ietf_messagebytes_max,
392 CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES
393 == crypto_secretstream_xchacha20poly1305_keybytes,
394 CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES
395 == crypto_secretstream_xchacha20poly1305_headerbytes,
396 CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES
397 == crypto_secretstream_xchacha20poly1305_abytes,
398 CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX
399 == crypto_secretstream_xchacha20poly1305_messagebytes_max,
400 CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_MESSAGE
401 == crypto_secretstream_xchacha20poly1305_tag_message,
402 CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH
403 == crypto_secretstream_xchacha20poly1305_tag_push,
404 CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY
405 == crypto_secretstream_xchacha20poly1305_tag_rekey,
406 CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL
407 == crypto_secretstream_xchacha20poly1305_tag_final,
408 CRYPTO_STREAM_CHACHA20_IETF_KEYBYTES == crypto_stream_chacha20_ietf_keybytes,
409 CRYPTO_STREAM_CHACHA20_IETF_NONCEBYTES == crypto_stream_chacha20_ietf_noncebytes,
410 CRYPTO_CORE_HCHACHA20_INPUTBYTES == crypto_core_hchacha20_inputbytes,
411 CRYPTO_CORE_HCHACHA20_OUTPUTBYTES == crypto_core_hchacha20_outputbytes,
412 CRYPTO_CORE_HCHACHA20_KEYBYTES == crypto_core_hchacha20_keybytes,
413 CRYPTO_CORE_HSALSA20_OUTPUTBYTES == crypto_core_hsalsa20_outputbytes,
414 CRYPTO_CORE_HSALSA20_INPUTBYTES == crypto_core_hsalsa20_inputbytes,
415 CRYPTO_CORE_HSALSA20_KEYBYTES == crypto_core_hsalsa20_keybytes,
416 CRYPTO_CORE_HSALSA20_CONSTBYTES == crypto_core_hsalsa20_constbytes,
417 CRYPTO_GENERICHASH_BLAKE2B_BYTES_MIN == crypto_generichash_blake2b_bytes_min,
418 CRYPTO_GENERICHASH_BLAKE2B_BYTES_MAX == crypto_generichash_blake2b_bytes_max,
419 CRYPTO_GENERICHASH_BLAKE2B_BYTES == crypto_generichash_blake2b_bytes,
420 CRYPTO_GENERICHASH_BLAKE2B_KEYBYTES_MIN == crypto_generichash_blake2b_keybytes_min,
421 CRYPTO_GENERICHASH_BLAKE2B_KEYBYTES_MAX == crypto_generichash_blake2b_keybytes_max,
422 CRYPTO_GENERICHASH_BLAKE2B_KEYBYTES == crypto_generichash_blake2b_keybytes,
423 CRYPTO_GENERICHASH_BLAKE2B_SALTBYTES == crypto_generichash_blake2b_saltbytes,
424 CRYPTO_GENERICHASH_BLAKE2B_PERSONALBYTES == crypto_generichash_blake2b_personalbytes,
425 CRYPTO_GENERICHASH_BYTES == crypto_generichash_bytes,
426 CRYPTO_GENERICHASH_KEYBYTES == crypto_generichash_keybytes,
427 CRYPTO_GENERICHASH_BYTES_MIN == crypto_generichash_bytes_min,
428 CRYPTO_GENERICHASH_BYTES_MAX == crypto_generichash_bytes_max,
429 CRYPTO_GENERICHASH_KEYBYTES_MIN == crypto_generichash_keybytes_min,
430 CRYPTO_GENERICHASH_KEYBYTES_MAX == crypto_generichash_keybytes_max,
431 CRYPTO_ONETIMEAUTH_POLY1305_BYTES == crypto_onetimeauth_poly1305_bytes,
432 CRYPTO_ONETIMEAUTH_POLY1305_KEYBYTES == crypto_onetimeauth_poly1305_keybytes,
433 CRYPTO_ONETIMEAUTH_BYTES == crypto_onetimeauth_bytes,
434 CRYPTO_ONETIMEAUTH_KEYBYTES == crypto_onetimeauth_keybytes,
435 CRYPTO_AUTH_HMACSHA512256_BYTES == crypto_auth_hmacsha512256_bytes,
436 CRYPTO_AUTH_HMACSHA512256_KEYBYTES == crypto_auth_hmacsha512256_keybytes,
437 CRYPTO_AUTH_HMACSHA256_BYTES == crypto_auth_hmacsha256_bytes,
438 CRYPTO_AUTH_HMACSHA256_KEYBYTES == crypto_auth_hmacsha256_keybytes,
439 CRYPTO_AUTH_HMACSHA512_BYTES == crypto_auth_hmacsha512_bytes,
440 CRYPTO_AUTH_HMACSHA512_KEYBYTES == crypto_auth_hmacsha512_keybytes,
441 CRYPTO_AUTH_BYTES == crypto_auth_bytes,
442 CRYPTO_AUTH_KEYBYTES == crypto_auth_keybytes,
443 CRYPTO_HASH_SHA256_BYTES == crypto_hash_sha256_bytes,
444 CRYPTO_HASH_SHA512_BYTES == crypto_hash_sha512_bytes,
445 CRYPTO_HASH_BYTES == crypto_hash_bytes,
446 CRYPTO_KDF_BLAKE2B_KEYBYTES == crypto_kdf_blake2b_keybytes,
447 CRYPTO_KDF_BLAKE2B_CONTEXTBYTES == crypto_kdf_blake2b_contextbytes,
448 CRYPTO_KDF_BLAKE2B_BYTES_MIN == crypto_kdf_blake2b_bytes_min,
449 CRYPTO_KDF_BLAKE2B_BYTES_MAX == crypto_kdf_blake2b_bytes_max,
450 CRYPTO_KDF_KEYBYTES == crypto_kdf_keybytes,
451 CRYPTO_KDF_CONTEXTBYTES == crypto_kdf_contextbytes,
452 CRYPTO_KX_PUBLICKEYBYTES == crypto_kx_publickeybytes,
453 CRYPTO_KX_SECRETKEYBYTES == crypto_kx_secretkeybytes,
454 CRYPTO_KX_SEEDBYTES == crypto_kx_seedbytes,
455 CRYPTO_KX_SESSIONKEYBYTES == crypto_kx_sessionkeybytes,
456 CRYPTO_SIGN_ED25519_PUBLICKEYBYTES == crypto_sign_ed25519_publickeybytes,
457 CRYPTO_SIGN_ED25519_SECRETKEYBYTES == crypto_sign_ed25519_secretkeybytes,
458 CRYPTO_SIGN_ED25519_BYTES == crypto_sign_ed25519_bytes,
459 CRYPTO_SIGN_ED25519_SEEDBYTES == crypto_sign_ed25519_seedbytes,
460 CRYPTO_SIGN_ED25519_MESSAGEBYTES_MAX == crypto_sign_ed25519_messagebytes_max,
461 CRYPTO_CORE_ED25519_BYTES == crypto_core_ed25519_bytes,
462 CRYPTO_SIGN_BYTES == crypto_sign_bytes,
463 CRYPTO_SIGN_SEEDBYTES == crypto_sign_seedbytes,
464 CRYPTO_SIGN_PUBLICKEYBYTES == crypto_sign_publickeybytes,
465 CRYPTO_SIGN_SECRETKEYBYTES == crypto_sign_secretkeybytes,
466 CRYPTO_SIGN_MESSAGEBYTES_MAX == crypto_sign_messagebytes_max,
467 CRYPTO_SHORTHASH_SIPHASH24_BYTES == crypto_shorthash_siphash24_bytes,
468 CRYPTO_SHORTHASH_SIPHASH24_KEYBYTES == crypto_shorthash_siphash24_keybytes,
469 CRYPTO_SHORTHASH_BYTES == crypto_shorthash_bytes,
470 CRYPTO_SHORTHASH_KEYBYTES == crypto_shorthash_keybytes,
471 CRYPTO_PWHASH_ARGON2I_ALG_ARGON2I13 == crypto_pwhash_argon2i_alg_argon2i13,
472 CRYPTO_PWHASH_ARGON2I_BYTES_MAX == crypto_pwhash_argon2i_bytes_max,
473 CRYPTO_PWHASH_ARGON2I_BYTES_MIN == crypto_pwhash_argon2i_bytes_min,
474 CRYPTO_PWHASH_ARGON2I_MEMLIMIT_INTERACTIVE
475 == crypto_pwhash_argon2i_memlimit_interactive,
476 CRYPTO_PWHASH_ARGON2I_MEMLIMIT_MAX == crypto_pwhash_argon2i_memlimit_max,
477 CRYPTO_PWHASH_ARGON2I_MEMLIMIT_MIN == crypto_pwhash_argon2i_memlimit_min,
478 CRYPTO_PWHASH_ARGON2I_MEMLIMIT_MODERATE == crypto_pwhash_argon2i_memlimit_moderate,
479 CRYPTO_PWHASH_ARGON2I_MEMLIMIT_SENSITIVE == crypto_pwhash_argon2i_memlimit_sensitive,
480 CRYPTO_PWHASH_ARGON2I_OPSLIMIT_INTERACTIVE
481 == crypto_pwhash_argon2i_opslimit_interactive,
482 CRYPTO_PWHASH_ARGON2I_OPSLIMIT_MAX == crypto_pwhash_argon2i_opslimit_max,
483 CRYPTO_PWHASH_ARGON2I_OPSLIMIT_MIN == crypto_pwhash_argon2i_opslimit_min,
484 CRYPTO_PWHASH_ARGON2I_OPSLIMIT_MODERATE == crypto_pwhash_argon2i_opslimit_moderate,
485 CRYPTO_PWHASH_ARGON2I_OPSLIMIT_SENSITIVE == crypto_pwhash_argon2i_opslimit_sensitive,
486 CRYPTO_PWHASH_ARGON2I_PASSWD_MAX == crypto_pwhash_argon2i_passwd_max,
487 CRYPTO_PWHASH_ARGON2I_PASSWD_MIN == crypto_pwhash_argon2i_passwd_min,
488 CRYPTO_PWHASH_ARGON2I_SALTBYTES == crypto_pwhash_argon2i_saltbytes,
489 CRYPTO_PWHASH_ARGON2I_STRBYTES == crypto_pwhash_argon2i_strbytes,
490 CRYPTO_PWHASH_ARGON2ID_ALG_ARGON2ID13 == crypto_pwhash_argon2id_alg_argon2id13,
491 CRYPTO_PWHASH_ARGON2ID_BYTES_MAX == crypto_pwhash_argon2id_bytes_max,
492 CRYPTO_PWHASH_ARGON2ID_BYTES_MIN == crypto_pwhash_argon2id_bytes_min,
493 CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_INTERACTIVE
494 == crypto_pwhash_argon2id_memlimit_interactive,
495 CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_MIN == crypto_pwhash_argon2id_memlimit_min,
496 CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_MAX == crypto_pwhash_argon2id_memlimit_max,
497 CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_MODERATE == crypto_pwhash_argon2id_memlimit_moderate,
498 CRYPTO_PWHASH_ARGON2ID_MEMLIMIT_SENSITIVE == crypto_pwhash_argon2id_memlimit_sensitive,
499 CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_INTERACTIVE
500 == crypto_pwhash_argon2id_opslimit_interactive,
501 CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_MAX == crypto_pwhash_argon2id_opslimit_max,
502 CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_MIN == crypto_pwhash_argon2id_opslimit_min,
503 CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_MODERATE == crypto_pwhash_argon2id_opslimit_moderate,
504 CRYPTO_PWHASH_ARGON2ID_OPSLIMIT_SENSITIVE == crypto_pwhash_argon2id_opslimit_sensitive,
505 CRYPTO_PWHASH_ARGON2ID_PASSWD_MAX == crypto_pwhash_argon2id_passwd_max,
506 CRYPTO_PWHASH_ARGON2ID_PASSWD_MIN == crypto_pwhash_argon2id_passwd_min,
507 CRYPTO_PWHASH_ARGON2ID_SALTBYTES == crypto_pwhash_argon2id_saltbytes,
508 CRYPTO_PWHASH_ARGON2ID_STRBYTES == crypto_pwhash_argon2id_strbytes,
509 CRYPTO_PWHASH_ALG_ARGON2I13 == crypto_pwhash_alg_argon2i13,
510 CRYPTO_PWHASH_ALG_ARGON2ID13 == crypto_pwhash_alg_argon2id13,
511 CRYPTO_PWHASH_ALG_DEFAULT == crypto_pwhash_alg_default,
512 CRYPTO_PWHASH_BYTES_MAX == crypto_pwhash_bytes_max,
513 CRYPTO_PWHASH_BYTES_MIN == crypto_pwhash_bytes_min,
514 CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE == crypto_pwhash_memlimit_interactive,
515 CRYPTO_PWHASH_MEMLIMIT_MAX == crypto_pwhash_memlimit_max,
516 CRYPTO_PWHASH_MEMLIMIT_MIN == crypto_pwhash_memlimit_min,
517 CRYPTO_PWHASH_MEMLIMIT_MODERATE == crypto_pwhash_memlimit_moderate,
518 CRYPTO_PWHASH_MEMLIMIT_SENSITIVE == crypto_pwhash_memlimit_sensitive,
519 CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE == crypto_pwhash_opslimit_interactive,
520 CRYPTO_PWHASH_OPSLIMIT_MAX == crypto_pwhash_opslimit_max,
521 CRYPTO_PWHASH_OPSLIMIT_MIN == crypto_pwhash_opslimit_min,
522 CRYPTO_PWHASH_OPSLIMIT_MODERATE == crypto_pwhash_opslimit_moderate,
523 CRYPTO_PWHASH_OPSLIMIT_SENSITIVE == crypto_pwhash_opslimit_sensitive,
524 CRYPTO_PWHASH_PASSWD_MAX == crypto_pwhash_passwd_max,
525 CRYPTO_PWHASH_PASSWD_MIN == crypto_pwhash_passwd_min,
526 CRYPTO_PWHASH_SALTBYTES == crypto_pwhash_saltbytes,
527 CRYPTO_PWHASH_STRBYTES == crypto_pwhash_strbytes,
528 CRYPTO_HASH_SHA3256_BYTES == crypto_hash_sha3256_bytes,
529 CRYPTO_HASH_SHA3512_BYTES == crypto_hash_sha3512_bytes,
530 CRYPTO_XOF_SHAKE128_BLOCKBYTES == crypto_xof_shake128_blockbytes,
531 CRYPTO_XOF_SHAKE128_DOMAIN_STANDARD == crypto_xof_shake128_domain_standard,
532 CRYPTO_XOF_SHAKE256_BLOCKBYTES == crypto_xof_shake256_blockbytes,
533 CRYPTO_XOF_SHAKE256_DOMAIN_STANDARD == crypto_xof_shake256_domain_standard,
534 CRYPTO_XOF_TURBOSHAKE128_BLOCKBYTES == crypto_xof_turboshake128_blockbytes,
535 CRYPTO_XOF_TURBOSHAKE128_DOMAIN_STANDARD == crypto_xof_turboshake128_domain_standard,
536 CRYPTO_XOF_TURBOSHAKE256_BLOCKBYTES == crypto_xof_turboshake256_blockbytes,
537 CRYPTO_XOF_TURBOSHAKE256_DOMAIN_STANDARD == crypto_xof_turboshake256_domain_standard,
538 CRYPTO_KEM_MLKEM768_PUBLICKEYBYTES == crypto_kem_mlkem768_publickeybytes,
539 CRYPTO_KEM_MLKEM768_SECRETKEYBYTES == crypto_kem_mlkem768_secretkeybytes,
540 CRYPTO_KEM_MLKEM768_CIPHERTEXTBYTES == crypto_kem_mlkem768_ciphertextbytes,
541 CRYPTO_KEM_MLKEM768_SHAREDSECRETBYTES == crypto_kem_mlkem768_sharedsecretbytes,
542 CRYPTO_KEM_MLKEM768_SEEDBYTES == crypto_kem_mlkem768_seedbytes,
543 CRYPTO_KEM_XWING_PUBLICKEYBYTES == crypto_kem_xwing_publickeybytes,
544 CRYPTO_KEM_XWING_SECRETKEYBYTES == crypto_kem_xwing_secretkeybytes,
545 CRYPTO_KEM_XWING_CIPHERTEXTBYTES == crypto_kem_xwing_ciphertextbytes,
546 CRYPTO_KEM_XWING_SHAREDSECRETBYTES == crypto_kem_xwing_sharedsecretbytes,
547 CRYPTO_KEM_XWING_SEEDBYTES == crypto_kem_xwing_seedbytes,
548 CRYPTO_KEM_PUBLICKEYBYTES == crypto_kem_publickeybytes,
549 CRYPTO_KEM_SECRETKEYBYTES == crypto_kem_secretkeybytes,
550 CRYPTO_KEM_CIPHERTEXTBYTES == crypto_kem_ciphertextbytes,
551 CRYPTO_KEM_SHAREDSECRETBYTES == crypto_kem_sharedsecretbytes,
552 CRYPTO_KEM_SEEDBYTES == crypto_kem_seedbytes,
553 );
554
555 check_str!(
556 CRYPTO_SECRETBOX_PRIMITIVE == crypto_secretbox_primitive,
557 CRYPTO_HASH_PRIMITIVE == crypto_hash_primitive,
558 CRYPTO_PWHASH_ARGON2I_STRPREFIX == crypto_pwhash_argon2i_strprefix,
559 CRYPTO_PWHASH_ARGON2ID_STRPREFIX == crypto_pwhash_argon2id_strprefix,
560 CRYPTO_PWHASH_STRPREFIX == crypto_pwhash_strprefix,
561 CRYPTO_KEM_PRIMITIVE == crypto_kem_primitive,
562 );
563 }
564}