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