1# Copyright 2013-2019 Donald Stufft and individual contributors
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15
16from nacl.bindings.crypto_aead import (
17 crypto_aead_chacha20poly1305_ABYTES,
18 crypto_aead_chacha20poly1305_KEYBYTES,
19 crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX,
20 crypto_aead_chacha20poly1305_NPUBBYTES,
21 crypto_aead_chacha20poly1305_NSECBYTES,
22 crypto_aead_chacha20poly1305_decrypt,
23 crypto_aead_chacha20poly1305_encrypt,
24 crypto_aead_chacha20poly1305_ietf_ABYTES,
25 crypto_aead_chacha20poly1305_ietf_KEYBYTES,
26 crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX,
27 crypto_aead_chacha20poly1305_ietf_NPUBBYTES,
28 crypto_aead_chacha20poly1305_ietf_NSECBYTES,
29 crypto_aead_chacha20poly1305_ietf_decrypt,
30 crypto_aead_chacha20poly1305_ietf_encrypt,
31 crypto_aead_xchacha20poly1305_ietf_ABYTES,
32 crypto_aead_xchacha20poly1305_ietf_KEYBYTES,
33 crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX,
34 crypto_aead_xchacha20poly1305_ietf_NPUBBYTES,
35 crypto_aead_xchacha20poly1305_ietf_NSECBYTES,
36 crypto_aead_xchacha20poly1305_ietf_decrypt,
37 crypto_aead_xchacha20poly1305_ietf_encrypt,
38)
39from nacl.bindings.crypto_box import (
40 crypto_box,
41 crypto_box_BEFORENMBYTES,
42 crypto_box_BOXZEROBYTES,
43 crypto_box_NONCEBYTES,
44 crypto_box_PUBLICKEYBYTES,
45 crypto_box_SEALBYTES,
46 crypto_box_SECRETKEYBYTES,
47 crypto_box_SEEDBYTES,
48 crypto_box_ZEROBYTES,
49 crypto_box_afternm,
50 crypto_box_beforenm,
51 crypto_box_keypair,
52 crypto_box_open,
53 crypto_box_open_afternm,
54 crypto_box_seal,
55 crypto_box_seal_open,
56 crypto_box_seed_keypair,
57)
58from nacl.bindings.crypto_core import (
59 crypto_core_ed25519_BYTES,
60 crypto_core_ed25519_NONREDUCEDSCALARBYTES,
61 crypto_core_ed25519_SCALARBYTES,
62 crypto_core_ed25519_add,
63 crypto_core_ed25519_from_uniform,
64 crypto_core_ed25519_is_valid_point,
65 crypto_core_ed25519_scalar_add,
66 crypto_core_ed25519_scalar_complement,
67 crypto_core_ed25519_scalar_invert,
68 crypto_core_ed25519_scalar_mul,
69 crypto_core_ed25519_scalar_negate,
70 crypto_core_ed25519_scalar_reduce,
71 crypto_core_ed25519_scalar_sub,
72 crypto_core_ed25519_sub,
73 has_crypto_core_ed25519,
74)
75from nacl.bindings.crypto_generichash import (
76 crypto_generichash_BYTES,
77 crypto_generichash_BYTES_MAX,
78 crypto_generichash_BYTES_MIN,
79 crypto_generichash_KEYBYTES,
80 crypto_generichash_KEYBYTES_MAX,
81 crypto_generichash_KEYBYTES_MIN,
82 crypto_generichash_PERSONALBYTES,
83 crypto_generichash_SALTBYTES,
84 crypto_generichash_STATEBYTES,
85 generichash_blake2b_final as crypto_generichash_blake2b_final,
86 generichash_blake2b_init as crypto_generichash_blake2b_init,
87 generichash_blake2b_salt_personal as crypto_generichash_blake2b_salt_personal,
88 generichash_blake2b_update as crypto_generichash_blake2b_update,
89)
90from nacl.bindings.crypto_hash import (
91 crypto_hash,
92 crypto_hash_BYTES,
93 crypto_hash_sha256,
94 crypto_hash_sha256_BYTES,
95 crypto_hash_sha512,
96 crypto_hash_sha512_BYTES,
97)
98from nacl.bindings.crypto_kx import (
99 crypto_kx_PUBLIC_KEY_BYTES,
100 crypto_kx_SECRET_KEY_BYTES,
101 crypto_kx_SEED_BYTES,
102 crypto_kx_SESSION_KEY_BYTES,
103 crypto_kx_client_session_keys,
104 crypto_kx_keypair,
105 crypto_kx_seed_keypair,
106 crypto_kx_server_session_keys,
107)
108from nacl.bindings.crypto_pwhash import (
109 crypto_pwhash_ALG_ARGON2I13,
110 crypto_pwhash_ALG_ARGON2ID13,
111 crypto_pwhash_ALG_DEFAULT,
112 crypto_pwhash_BYTES_MAX,
113 crypto_pwhash_BYTES_MIN,
114 crypto_pwhash_PASSWD_MAX,
115 crypto_pwhash_PASSWD_MIN,
116 crypto_pwhash_SALTBYTES,
117 crypto_pwhash_STRBYTES,
118 crypto_pwhash_alg,
119 crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE,
120 crypto_pwhash_argon2i_MEMLIMIT_MAX,
121 crypto_pwhash_argon2i_MEMLIMIT_MIN,
122 crypto_pwhash_argon2i_MEMLIMIT_MODERATE,
123 crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE,
124 crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE,
125 crypto_pwhash_argon2i_OPSLIMIT_MAX,
126 crypto_pwhash_argon2i_OPSLIMIT_MIN,
127 crypto_pwhash_argon2i_OPSLIMIT_MODERATE,
128 crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE,
129 crypto_pwhash_argon2i_STRPREFIX,
130 crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE,
131 crypto_pwhash_argon2id_MEMLIMIT_MAX,
132 crypto_pwhash_argon2id_MEMLIMIT_MIN,
133 crypto_pwhash_argon2id_MEMLIMIT_MODERATE,
134 crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE,
135 crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE,
136 crypto_pwhash_argon2id_OPSLIMIT_MAX,
137 crypto_pwhash_argon2id_OPSLIMIT_MIN,
138 crypto_pwhash_argon2id_OPSLIMIT_MODERATE,
139 crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE,
140 crypto_pwhash_argon2id_STRPREFIX,
141 crypto_pwhash_scryptsalsa208sha256_BYTES_MAX,
142 crypto_pwhash_scryptsalsa208sha256_BYTES_MIN,
143 crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE,
144 crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX,
145 crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN,
146 crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE,
147 crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE,
148 crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX,
149 crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN,
150 crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE,
151 crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX,
152 crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN,
153 crypto_pwhash_scryptsalsa208sha256_SALTBYTES,
154 crypto_pwhash_scryptsalsa208sha256_STRBYTES,
155 crypto_pwhash_scryptsalsa208sha256_STRPREFIX,
156 crypto_pwhash_scryptsalsa208sha256_ll,
157 crypto_pwhash_scryptsalsa208sha256_str,
158 crypto_pwhash_scryptsalsa208sha256_str_verify,
159 crypto_pwhash_str_alg,
160 crypto_pwhash_str_verify,
161 has_crypto_pwhash_scryptsalsa208sha256,
162 nacl_bindings_pick_scrypt_params,
163)
164from nacl.bindings.crypto_scalarmult import (
165 crypto_scalarmult,
166 crypto_scalarmult_BYTES,
167 crypto_scalarmult_SCALARBYTES,
168 crypto_scalarmult_base,
169 crypto_scalarmult_ed25519,
170 crypto_scalarmult_ed25519_BYTES,
171 crypto_scalarmult_ed25519_SCALARBYTES,
172 crypto_scalarmult_ed25519_base,
173 crypto_scalarmult_ed25519_base_noclamp,
174 crypto_scalarmult_ed25519_noclamp,
175 has_crypto_scalarmult_ed25519,
176)
177from nacl.bindings.crypto_secretbox import (
178 crypto_secretbox,
179 crypto_secretbox_BOXZEROBYTES,
180 crypto_secretbox_KEYBYTES,
181 crypto_secretbox_MACBYTES,
182 crypto_secretbox_MESSAGEBYTES_MAX,
183 crypto_secretbox_NONCEBYTES,
184 crypto_secretbox_ZEROBYTES,
185 crypto_secretbox_open,
186)
187from nacl.bindings.crypto_secretstream import (
188 crypto_secretstream_xchacha20poly1305_ABYTES,
189 crypto_secretstream_xchacha20poly1305_HEADERBYTES,
190 crypto_secretstream_xchacha20poly1305_KEYBYTES,
191 crypto_secretstream_xchacha20poly1305_STATEBYTES,
192 crypto_secretstream_xchacha20poly1305_TAG_FINAL,
193 crypto_secretstream_xchacha20poly1305_TAG_MESSAGE,
194 crypto_secretstream_xchacha20poly1305_TAG_PUSH,
195 crypto_secretstream_xchacha20poly1305_TAG_REKEY,
196 crypto_secretstream_xchacha20poly1305_init_pull,
197 crypto_secretstream_xchacha20poly1305_init_push,
198 crypto_secretstream_xchacha20poly1305_keygen,
199 crypto_secretstream_xchacha20poly1305_pull,
200 crypto_secretstream_xchacha20poly1305_push,
201 crypto_secretstream_xchacha20poly1305_rekey,
202 crypto_secretstream_xchacha20poly1305_state,
203)
204from nacl.bindings.crypto_shorthash import (
205 BYTES as crypto_shorthash_siphash24_BYTES,
206 KEYBYTES as crypto_shorthash_siphash24_KEYBYTES,
207 XBYTES as crypto_shorthash_siphashx24_BYTES,
208 XKEYBYTES as crypto_shorthash_siphashx24_KEYBYTES,
209 crypto_shorthash_siphash24,
210 crypto_shorthash_siphashx24,
211 has_crypto_shorthash_siphashx24,
212)
213from nacl.bindings.crypto_sign import (
214 crypto_sign,
215 crypto_sign_BYTES,
216 crypto_sign_PUBLICKEYBYTES,
217 crypto_sign_SECRETKEYBYTES,
218 crypto_sign_SEEDBYTES,
219 crypto_sign_ed25519_pk_to_curve25519,
220 crypto_sign_ed25519_sk_to_curve25519,
221 crypto_sign_ed25519_sk_to_pk,
222 crypto_sign_ed25519_sk_to_seed,
223 crypto_sign_ed25519ph_STATEBYTES,
224 crypto_sign_ed25519ph_final_create,
225 crypto_sign_ed25519ph_final_verify,
226 crypto_sign_ed25519ph_state,
227 crypto_sign_ed25519ph_update,
228 crypto_sign_keypair,
229 crypto_sign_open,
230 crypto_sign_seed_keypair,
231)
232from nacl.bindings.randombytes import (
233 randombytes,
234 randombytes_buf_deterministic,
235)
236from nacl.bindings.sodium_core import sodium_init
237from nacl.bindings.utils import (
238 sodium_add,
239 sodium_increment,
240 sodium_memcmp,
241 sodium_pad,
242 sodium_unpad,
243)
244
245
246__all__ = [
247 "crypto_aead_chacha20poly1305_ABYTES",
248 "crypto_aead_chacha20poly1305_KEYBYTES",
249 "crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX",
250 "crypto_aead_chacha20poly1305_NPUBBYTES",
251 "crypto_aead_chacha20poly1305_NSECBYTES",
252 "crypto_aead_chacha20poly1305_decrypt",
253 "crypto_aead_chacha20poly1305_encrypt",
254 "crypto_aead_chacha20poly1305_ietf_ABYTES",
255 "crypto_aead_chacha20poly1305_ietf_KEYBYTES",
256 "crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX",
257 "crypto_aead_chacha20poly1305_ietf_NPUBBYTES",
258 "crypto_aead_chacha20poly1305_ietf_NSECBYTES",
259 "crypto_aead_chacha20poly1305_ietf_decrypt",
260 "crypto_aead_chacha20poly1305_ietf_encrypt",
261 "crypto_aead_xchacha20poly1305_ietf_ABYTES",
262 "crypto_aead_xchacha20poly1305_ietf_KEYBYTES",
263 "crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX",
264 "crypto_aead_xchacha20poly1305_ietf_NPUBBYTES",
265 "crypto_aead_xchacha20poly1305_ietf_NSECBYTES",
266 "crypto_aead_xchacha20poly1305_ietf_decrypt",
267 "crypto_aead_xchacha20poly1305_ietf_encrypt",
268 "crypto_box_SECRETKEYBYTES",
269 "crypto_box_PUBLICKEYBYTES",
270 "crypto_box_SEEDBYTES",
271 "crypto_box_NONCEBYTES",
272 "crypto_box_ZEROBYTES",
273 "crypto_box_BOXZEROBYTES",
274 "crypto_box_BEFORENMBYTES",
275 "crypto_box_SEALBYTES",
276 "crypto_box_keypair",
277 "crypto_box",
278 "crypto_box_open",
279 "crypto_box_beforenm",
280 "crypto_box_afternm",
281 "crypto_box_open_afternm",
282 "crypto_box_seal",
283 "crypto_box_seal_open",
284 "crypto_box_seed_keypair",
285 "has_crypto_core_ed25519",
286 "crypto_core_ed25519_BYTES",
287 "crypto_core_ed25519_UNIFORMBYTES",
288 "crypto_core_ed25519_SCALARBYTES",
289 "crypto_core_ed25519_NONREDUCEDSCALARBYTES",
290 "crypto_core_ed25519_add",
291 "crypto_core_ed25519_from_uniform",
292 "crypto_core_ed25519_is_valid_point",
293 "crypto_core_ed25519_sub",
294 "crypto_core_ed25519_scalar_invert",
295 "crypto_core_ed25519_scalar_negate",
296 "crypto_core_ed25519_scalar_complement",
297 "crypto_core_ed25519_scalar_add",
298 "crypto_core_ed25519_scalar_sub",
299 "crypto_core_ed25519_scalar_mul",
300 "crypto_core_ed25519_scalar_reduce",
301 "crypto_hash_BYTES",
302 "crypto_hash_sha256_BYTES",
303 "crypto_hash_sha512_BYTES",
304 "crypto_hash",
305 "crypto_hash_sha256",
306 "crypto_hash_sha512",
307 "crypto_generichash_BYTES",
308 "crypto_generichash_BYTES_MIN",
309 "crypto_generichash_BYTES_MAX",
310 "crypto_generichash_KEYBYTES",
311 "crypto_generichash_KEYBYTES_MIN",
312 "crypto_generichash_KEYBYTES_MAX",
313 "crypto_generichash_SALTBYTES",
314 "crypto_generichash_PERSONALBYTES",
315 "crypto_generichash_STATEBYTES",
316 "crypto_generichash_blake2b_salt_personal",
317 "crypto_generichash_blake2b_init",
318 "crypto_generichash_blake2b_update",
319 "crypto_generichash_blake2b_final",
320 "crypto_kx_keypair",
321 "crypto_kx_seed_keypair",
322 "crypto_kx_client_session_keys",
323 "crypto_kx_server_session_keys",
324 "crypto_kx_PUBLIC_KEY_BYTES",
325 "crypto_kx_SECRET_KEY_BYTES",
326 "crypto_kx_SEED_BYTES",
327 "crypto_kx_SESSION_KEY_BYTES",
328 "has_crypto_scalarmult_ed25519",
329 "crypto_scalarmult_BYTES",
330 "crypto_scalarmult_SCALARBYTES",
331 "crypto_scalarmult",
332 "crypto_scalarmult_base",
333 "crypto_scalarmult_ed25519_BYTES",
334 "crypto_scalarmult_ed25519_SCALARBYTES",
335 "crypto_scalarmult_ed25519",
336 "crypto_scalarmult_ed25519_base",
337 "crypto_scalarmult_ed25519_noclamp",
338 "crypto_scalarmult_ed25519_base_noclamp",
339 "crypto_secretbox_KEYBYTES",
340 "crypto_secretbox_NONCEBYTES",
341 "crypto_secretbox_ZEROBYTES",
342 "crypto_secretbox_BOXZEROBYTES",
343 "crypto_secretbox_MACBYTES",
344 "crypto_secretbox_MESSAGEBYTES_MAX",
345 "crypto_secretbox",
346 "crypto_secretbox_open",
347 "crypto_secretstream_xchacha20poly1305_ABYTES",
348 "crypto_secretstream_xchacha20poly1305_HEADERBYTES",
349 "crypto_secretstream_xchacha20poly1305_KEYBYTES",
350 "crypto_secretstream_xchacha20poly1305_STATEBYTES",
351 "crypto_secretstream_xchacha20poly1305_TAG_FINAL",
352 "crypto_secretstream_xchacha20poly1305_TAG_MESSAGE",
353 "crypto_secretstream_xchacha20poly1305_TAG_PUSH",
354 "crypto_secretstream_xchacha20poly1305_TAG_REKEY",
355 "crypto_secretstream_xchacha20poly1305_init_pull",
356 "crypto_secretstream_xchacha20poly1305_init_push",
357 "crypto_secretstream_xchacha20poly1305_keygen",
358 "crypto_secretstream_xchacha20poly1305_pull",
359 "crypto_secretstream_xchacha20poly1305_push",
360 "crypto_secretstream_xchacha20poly1305_rekey",
361 "crypto_secretstream_xchacha20poly1305_state",
362 "has_crypto_shorthash_siphashx24",
363 "crypto_shorthash_siphash24_BYTES",
364 "crypto_shorthash_siphash24_KEYBYTES",
365 "crypto_shorthash_siphash24",
366 "crypto_shorthash_siphashx24_BYTES",
367 "crypto_shorthash_siphashx24_KEYBYTES",
368 "crypto_shorthash_siphashx24",
369 "crypto_sign_BYTES",
370 "crypto_sign_SEEDBYTES",
371 "crypto_sign_PUBLICKEYBYTES",
372 "crypto_sign_SECRETKEYBYTES",
373 "crypto_sign_keypair",
374 "crypto_sign_seed_keypair",
375 "crypto_sign",
376 "crypto_sign_open",
377 "crypto_sign_ed25519_pk_to_curve25519",
378 "crypto_sign_ed25519_sk_to_curve25519",
379 "crypto_sign_ed25519_sk_to_pk",
380 "crypto_sign_ed25519_sk_to_seed",
381 "crypto_sign_ed25519ph_STATEBYTES",
382 "crypto_sign_ed25519ph_final_create",
383 "crypto_sign_ed25519ph_final_verify",
384 "crypto_sign_ed25519ph_state",
385 "crypto_sign_ed25519ph_update",
386 "crypto_pwhash_ALG_ARGON2I13",
387 "crypto_pwhash_ALG_ARGON2ID13",
388 "crypto_pwhash_ALG_DEFAULT",
389 "crypto_pwhash_BYTES_MAX",
390 "crypto_pwhash_BYTES_MIN",
391 "crypto_pwhash_PASSWD_MAX",
392 "crypto_pwhash_PASSWD_MIN",
393 "crypto_pwhash_SALTBYTES",
394 "crypto_pwhash_STRBYTES",
395 "crypto_pwhash_alg",
396 "crypto_pwhash_argon2i_MEMLIMIT_MIN",
397 "crypto_pwhash_argon2i_MEMLIMIT_MAX",
398 "crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE",
399 "crypto_pwhash_argon2i_MEMLIMIT_MODERATE",
400 "crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE",
401 "crypto_pwhash_argon2i_OPSLIMIT_MIN",
402 "crypto_pwhash_argon2i_OPSLIMIT_MAX",
403 "crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE",
404 "crypto_pwhash_argon2i_OPSLIMIT_MODERATE",
405 "crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE",
406 "crypto_pwhash_argon2i_STRPREFIX",
407 "crypto_pwhash_argon2id_MEMLIMIT_MIN",
408 "crypto_pwhash_argon2id_MEMLIMIT_MAX",
409 "crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE",
410 "crypto_pwhash_argon2id_MEMLIMIT_MODERATE",
411 "crypto_pwhash_argon2id_OPSLIMIT_MIN",
412 "crypto_pwhash_argon2id_OPSLIMIT_MAX",
413 "crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE",
414 "crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE",
415 "crypto_pwhash_argon2id_OPSLIMIT_MODERATE",
416 "crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE",
417 "crypto_pwhash_argon2id_STRPREFIX",
418 "crypto_pwhash_str_alg",
419 "crypto_pwhash_str_verify",
420 "has_crypto_pwhash_scryptsalsa208sha256",
421 "crypto_pwhash_scryptsalsa208sha256_BYTES_MAX",
422 "crypto_pwhash_scryptsalsa208sha256_BYTES_MIN",
423 "crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE",
424 "crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX",
425 "crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN",
426 "crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE",
427 "crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE",
428 "crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX",
429 "crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN",
430 "crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE",
431 "crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX",
432 "crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN",
433 "crypto_pwhash_scryptsalsa208sha256_SALTBYTES",
434 "crypto_pwhash_scryptsalsa208sha256_STRBYTES",
435 "crypto_pwhash_scryptsalsa208sha256_STRPREFIX",
436 "crypto_pwhash_scryptsalsa208sha256_ll",
437 "crypto_pwhash_scryptsalsa208sha256_str",
438 "crypto_pwhash_scryptsalsa208sha256_str_verify",
439 "nacl_bindings_pick_scrypt_params",
440 "randombytes",
441 "randombytes_buf_deterministic",
442 "sodium_init",
443 "sodium_add",
444 "sodium_increment",
445 "sodium_memcmp",
446 "sodium_pad",
447 "sodium_unpad",
448]
449
450
451# Initialize Sodium
452sodium_init()