377 lines
15 KiB
Python
377 lines
15 KiB
Python
# Copyright 2013 Donald Stufft and individual contributors
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
from __future__ import absolute_import, division, print_function
|
|
|
|
from nacl.bindings.crypto_aead import (
|
|
crypto_aead_chacha20poly1305_ABYTES,
|
|
crypto_aead_chacha20poly1305_KEYBYTES,
|
|
crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX,
|
|
crypto_aead_chacha20poly1305_NPUBBYTES,
|
|
crypto_aead_chacha20poly1305_NSECBYTES,
|
|
crypto_aead_chacha20poly1305_decrypt,
|
|
crypto_aead_chacha20poly1305_encrypt,
|
|
crypto_aead_chacha20poly1305_ietf_ABYTES,
|
|
crypto_aead_chacha20poly1305_ietf_KEYBYTES,
|
|
crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX,
|
|
crypto_aead_chacha20poly1305_ietf_NPUBBYTES,
|
|
crypto_aead_chacha20poly1305_ietf_NSECBYTES,
|
|
crypto_aead_chacha20poly1305_ietf_decrypt,
|
|
crypto_aead_chacha20poly1305_ietf_encrypt,
|
|
crypto_aead_xchacha20poly1305_ietf_ABYTES,
|
|
crypto_aead_xchacha20poly1305_ietf_KEYBYTES,
|
|
crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX,
|
|
crypto_aead_xchacha20poly1305_ietf_NPUBBYTES,
|
|
crypto_aead_xchacha20poly1305_ietf_NSECBYTES,
|
|
crypto_aead_xchacha20poly1305_ietf_decrypt,
|
|
crypto_aead_xchacha20poly1305_ietf_encrypt,
|
|
)
|
|
from nacl.bindings.crypto_box import (
|
|
crypto_box, crypto_box_BEFORENMBYTES, crypto_box_BOXZEROBYTES,
|
|
crypto_box_NONCEBYTES, crypto_box_PUBLICKEYBYTES, crypto_box_SEALBYTES,
|
|
crypto_box_SECRETKEYBYTES, crypto_box_SEEDBYTES, crypto_box_ZEROBYTES,
|
|
crypto_box_afternm, crypto_box_beforenm, crypto_box_keypair,
|
|
crypto_box_open, crypto_box_open_afternm, crypto_box_seal,
|
|
crypto_box_seal_open, crypto_box_seed_keypair,
|
|
)
|
|
from nacl.bindings.crypto_generichash import (
|
|
crypto_generichash_BYTES, crypto_generichash_BYTES_MAX,
|
|
crypto_generichash_BYTES_MIN, crypto_generichash_KEYBYTES,
|
|
crypto_generichash_KEYBYTES_MAX, crypto_generichash_KEYBYTES_MIN,
|
|
crypto_generichash_PERSONALBYTES, crypto_generichash_SALTBYTES,
|
|
crypto_generichash_STATEBYTES,
|
|
generichash_blake2b_final as crypto_generichash_blake2b_final,
|
|
generichash_blake2b_init as crypto_generichash_blake2b_init,
|
|
generichash_blake2b_salt_personal as
|
|
crypto_generichash_blake2b_salt_personal,
|
|
generichash_blake2b_state_copy as crypto_generichash_blake2b_state_copy,
|
|
generichash_blake2b_update as crypto_generichash_blake2b_update
|
|
)
|
|
from nacl.bindings.crypto_hash import (
|
|
crypto_hash, crypto_hash_BYTES, crypto_hash_sha256,
|
|
crypto_hash_sha256_BYTES, crypto_hash_sha512, crypto_hash_sha512_BYTES,
|
|
)
|
|
from nacl.bindings.crypto_kx import (
|
|
crypto_kx_PUBLIC_KEY_BYTES,
|
|
crypto_kx_SECRET_KEY_BYTES,
|
|
crypto_kx_SEED_BYTES,
|
|
crypto_kx_SESSION_KEY_BYTES,
|
|
crypto_kx_client_session_keys,
|
|
crypto_kx_keypair,
|
|
crypto_kx_seed_keypair,
|
|
crypto_kx_server_session_keys,
|
|
)
|
|
from nacl.bindings.crypto_pwhash import (
|
|
crypto_pwhash_ALG_ARGON2I13,
|
|
crypto_pwhash_ALG_ARGON2ID13,
|
|
crypto_pwhash_ALG_DEFAULT,
|
|
crypto_pwhash_BYTES_MAX,
|
|
crypto_pwhash_BYTES_MIN,
|
|
crypto_pwhash_PASSWD_MAX,
|
|
crypto_pwhash_PASSWD_MIN,
|
|
crypto_pwhash_SALTBYTES,
|
|
crypto_pwhash_STRBYTES,
|
|
crypto_pwhash_alg,
|
|
crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE,
|
|
crypto_pwhash_argon2i_MEMLIMIT_MAX,
|
|
crypto_pwhash_argon2i_MEMLIMIT_MIN,
|
|
crypto_pwhash_argon2i_MEMLIMIT_MODERATE,
|
|
crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE,
|
|
crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE,
|
|
crypto_pwhash_argon2i_OPSLIMIT_MAX,
|
|
crypto_pwhash_argon2i_OPSLIMIT_MIN,
|
|
crypto_pwhash_argon2i_OPSLIMIT_MODERATE,
|
|
crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE,
|
|
crypto_pwhash_argon2i_STRPREFIX,
|
|
crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE,
|
|
crypto_pwhash_argon2id_MEMLIMIT_MAX,
|
|
crypto_pwhash_argon2id_MEMLIMIT_MIN,
|
|
crypto_pwhash_argon2id_MEMLIMIT_MODERATE,
|
|
crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE,
|
|
crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE,
|
|
crypto_pwhash_argon2id_OPSLIMIT_MAX,
|
|
crypto_pwhash_argon2id_OPSLIMIT_MIN,
|
|
crypto_pwhash_argon2id_OPSLIMIT_MODERATE,
|
|
crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE,
|
|
crypto_pwhash_argon2id_STRPREFIX,
|
|
crypto_pwhash_scryptsalsa208sha256_BYTES_MAX,
|
|
crypto_pwhash_scryptsalsa208sha256_BYTES_MIN,
|
|
crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE,
|
|
crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX,
|
|
crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN,
|
|
crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE,
|
|
crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE,
|
|
crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX,
|
|
crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN,
|
|
crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE,
|
|
crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX,
|
|
crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN,
|
|
crypto_pwhash_scryptsalsa208sha256_SALTBYTES,
|
|
crypto_pwhash_scryptsalsa208sha256_STRBYTES,
|
|
crypto_pwhash_scryptsalsa208sha256_STRPREFIX,
|
|
crypto_pwhash_scryptsalsa208sha256_ll,
|
|
crypto_pwhash_scryptsalsa208sha256_str,
|
|
crypto_pwhash_scryptsalsa208sha256_str_verify,
|
|
crypto_pwhash_str_alg,
|
|
crypto_pwhash_str_verify,
|
|
nacl_bindings_pick_scrypt_params,
|
|
)
|
|
from nacl.bindings.crypto_scalarmult import (
|
|
crypto_scalarmult, crypto_scalarmult_BYTES, crypto_scalarmult_SCALARBYTES,
|
|
crypto_scalarmult_base
|
|
)
|
|
from nacl.bindings.crypto_secretbox import (
|
|
crypto_secretbox, crypto_secretbox_BOXZEROBYTES, crypto_secretbox_KEYBYTES,
|
|
crypto_secretbox_MACBYTES, crypto_secretbox_MESSAGEBYTES_MAX,
|
|
crypto_secretbox_NONCEBYTES, crypto_secretbox_ZEROBYTES,
|
|
crypto_secretbox_open
|
|
)
|
|
from nacl.bindings.crypto_secretstream import (
|
|
crypto_secretstream_xchacha20poly1305_ABYTES,
|
|
crypto_secretstream_xchacha20poly1305_HEADERBYTES,
|
|
crypto_secretstream_xchacha20poly1305_KEYBYTES,
|
|
crypto_secretstream_xchacha20poly1305_STATEBYTES,
|
|
crypto_secretstream_xchacha20poly1305_TAG_FINAL,
|
|
crypto_secretstream_xchacha20poly1305_TAG_MESSAGE,
|
|
crypto_secretstream_xchacha20poly1305_TAG_PUSH,
|
|
crypto_secretstream_xchacha20poly1305_TAG_REKEY,
|
|
crypto_secretstream_xchacha20poly1305_init_pull,
|
|
crypto_secretstream_xchacha20poly1305_init_push,
|
|
crypto_secretstream_xchacha20poly1305_keygen,
|
|
crypto_secretstream_xchacha20poly1305_pull,
|
|
crypto_secretstream_xchacha20poly1305_push,
|
|
crypto_secretstream_xchacha20poly1305_rekey,
|
|
crypto_secretstream_xchacha20poly1305_state,
|
|
)
|
|
from nacl.bindings.crypto_shorthash import (
|
|
BYTES as crypto_shorthash_siphash24_BYTES,
|
|
KEYBYTES as crypto_shorthash_siphash24_KEYBYTES,
|
|
XBYTES as crypto_shorthash_siphashx24_BYTES,
|
|
XKEYBYTES as crypto_shorthash_siphashx24_KEYBYTES,
|
|
crypto_shorthash_siphash24,
|
|
crypto_shorthash_siphashx24
|
|
)
|
|
from nacl.bindings.crypto_sign import (
|
|
crypto_sign, crypto_sign_BYTES, crypto_sign_PUBLICKEYBYTES,
|
|
crypto_sign_SECRETKEYBYTES, crypto_sign_SEEDBYTES,
|
|
crypto_sign_ed25519_pk_to_curve25519, crypto_sign_ed25519_sk_to_curve25519,
|
|
crypto_sign_ed25519ph_STATEBYTES, crypto_sign_ed25519ph_final_create,
|
|
crypto_sign_ed25519ph_final_verify, crypto_sign_ed25519ph_state,
|
|
crypto_sign_ed25519ph_update, crypto_sign_keypair, crypto_sign_open,
|
|
crypto_sign_seed_keypair,
|
|
)
|
|
from nacl.bindings.randombytes import randombytes
|
|
from nacl.bindings.sodium_core import sodium_init
|
|
from nacl.bindings.utils import (
|
|
sodium_add, sodium_increment, sodium_memcmp, sodium_pad, sodium_unpad,
|
|
)
|
|
|
|
|
|
__all__ = [
|
|
"crypto_aead_chacha20poly1305_ABYTES",
|
|
"crypto_aead_chacha20poly1305_KEYBYTES",
|
|
"crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX",
|
|
"crypto_aead_chacha20poly1305_NPUBBYTES",
|
|
"crypto_aead_chacha20poly1305_NSECBYTES",
|
|
"crypto_aead_chacha20poly1305_decrypt",
|
|
"crypto_aead_chacha20poly1305_encrypt",
|
|
"crypto_aead_chacha20poly1305_ietf_ABYTES",
|
|
"crypto_aead_chacha20poly1305_ietf_KEYBYTES",
|
|
"crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX",
|
|
"crypto_aead_chacha20poly1305_ietf_NPUBBYTES",
|
|
"crypto_aead_chacha20poly1305_ietf_NSECBYTES",
|
|
"crypto_aead_chacha20poly1305_ietf_decrypt",
|
|
"crypto_aead_chacha20poly1305_ietf_encrypt",
|
|
"crypto_aead_xchacha20poly1305_ietf_ABYTES",
|
|
"crypto_aead_xchacha20poly1305_ietf_KEYBYTES",
|
|
"crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX",
|
|
"crypto_aead_xchacha20poly1305_ietf_NPUBBYTES",
|
|
"crypto_aead_xchacha20poly1305_ietf_NSECBYTES",
|
|
"crypto_aead_xchacha20poly1305_ietf_decrypt",
|
|
"crypto_aead_xchacha20poly1305_ietf_encrypt",
|
|
|
|
"crypto_box_SECRETKEYBYTES",
|
|
"crypto_box_PUBLICKEYBYTES",
|
|
"crypto_box_SEEDBYTES",
|
|
"crypto_box_NONCEBYTES",
|
|
"crypto_box_ZEROBYTES",
|
|
"crypto_box_BOXZEROBYTES",
|
|
"crypto_box_BEFORENMBYTES",
|
|
"crypto_box_SEALBYTES",
|
|
"crypto_box_keypair",
|
|
"crypto_box",
|
|
"crypto_box_open",
|
|
"crypto_box_beforenm",
|
|
"crypto_box_afternm",
|
|
"crypto_box_open_afternm",
|
|
"crypto_box_seal",
|
|
"crypto_box_seal_open",
|
|
"crypto_box_seed_keypair",
|
|
|
|
"crypto_hash_BYTES",
|
|
"crypto_hash_sha256_BYTES",
|
|
"crypto_hash_sha512_BYTES",
|
|
"crypto_hash",
|
|
"crypto_hash_sha256",
|
|
"crypto_hash_sha512",
|
|
|
|
"crypto_generichash_BYTES",
|
|
"crypto_generichash_BYTES_MIN",
|
|
"crypto_generichash_BYTES_MAX",
|
|
"crypto_generichash_KEYBYTES",
|
|
"crypto_generichash_KEYBYTES_MIN",
|
|
"crypto_generichash_KEYBYTES_MAX",
|
|
"crypto_generichash_SALTBYTES",
|
|
"crypto_generichash_PERSONALBYTES",
|
|
"crypto_generichash_STATEBYTES",
|
|
"crypto_generichash_blake2b_salt_personal",
|
|
"crypto_generichash_blake2b_init",
|
|
"crypto_generichash_blake2b_update",
|
|
"crypto_generichash_blake2b_final",
|
|
"crypto_generichash_blake2b_state_copy",
|
|
|
|
"crypto_kx_keypair",
|
|
"crypto_kx_seed_keypair",
|
|
"crypto_kx_client_session_keys",
|
|
"crypto_kx_server_session_keys",
|
|
"crypto_kx_PUBLIC_KEY_BYTES",
|
|
"crypto_kx_SECRET_KEY_BYTES",
|
|
"crypto_kx_SEED_BYTES",
|
|
"crypto_kx_SESSION_KEY_BYTES",
|
|
|
|
"crypto_scalarmult_BYTES",
|
|
"crypto_scalarmult_SCALARBYTES",
|
|
"crypto_scalarmult",
|
|
"crypto_scalarmult_base",
|
|
|
|
"crypto_secretbox_KEYBYTES",
|
|
"crypto_secretbox_NONCEBYTES",
|
|
"crypto_secretbox_ZEROBYTES",
|
|
"crypto_secretbox_BOXZEROBYTES",
|
|
"crypto_secretbox_MACBYTES",
|
|
"crypto_secretbox_MESSAGEBYTES_MAX",
|
|
"crypto_secretbox",
|
|
"crypto_secretbox_open",
|
|
|
|
"crypto_secretstream_xchacha20poly1305_ABYTES",
|
|
"crypto_secretstream_xchacha20poly1305_HEADERBYTES",
|
|
"crypto_secretstream_xchacha20poly1305_KEYBYTES",
|
|
"crypto_secretstream_xchacha20poly1305_STATEBYTES",
|
|
"crypto_secretstream_xchacha20poly1305_TAG_FINAL",
|
|
"crypto_secretstream_xchacha20poly1305_TAG_MESSAGE",
|
|
"crypto_secretstream_xchacha20poly1305_TAG_PUSH",
|
|
"crypto_secretstream_xchacha20poly1305_TAG_REKEY",
|
|
"crypto_secretstream_xchacha20poly1305_init_pull",
|
|
"crypto_secretstream_xchacha20poly1305_init_push",
|
|
"crypto_secretstream_xchacha20poly1305_keygen",
|
|
"crypto_secretstream_xchacha20poly1305_pull",
|
|
"crypto_secretstream_xchacha20poly1305_push",
|
|
"crypto_secretstream_xchacha20poly1305_rekey",
|
|
"crypto_secretstream_xchacha20poly1305_state",
|
|
|
|
"crypto_shorthash_siphash24_BYTES",
|
|
"crypto_shorthash_siphash24_KEYBYTES",
|
|
"crypto_shorthash_siphash24",
|
|
"crypto_shorthash_siphashx24_BYTES",
|
|
"crypto_shorthash_siphashx24_KEYBYTES",
|
|
"crypto_shorthash_siphashx24",
|
|
|
|
"crypto_sign_BYTES",
|
|
"crypto_sign_SEEDBYTES",
|
|
"crypto_sign_PUBLICKEYBYTES",
|
|
"crypto_sign_SECRETKEYBYTES",
|
|
"crypto_sign_keypair",
|
|
"crypto_sign_seed_keypair",
|
|
"crypto_sign",
|
|
"crypto_sign_open",
|
|
"crypto_sign_ed25519_pk_to_curve25519",
|
|
"crypto_sign_ed25519_sk_to_curve25519",
|
|
"crypto_sign_ed25519ph_STATEBYTES",
|
|
"crypto_sign_ed25519ph_final_create",
|
|
"crypto_sign_ed25519ph_final_verify",
|
|
"crypto_sign_ed25519ph_state",
|
|
"crypto_sign_ed25519ph_update",
|
|
|
|
"crypto_pwhash_ALG_ARGON2I13",
|
|
"crypto_pwhash_ALG_ARGON2ID13",
|
|
"crypto_pwhash_ALG_DEFAULT",
|
|
"crypto_pwhash_BYTES_MAX",
|
|
"crypto_pwhash_BYTES_MIN",
|
|
"crypto_pwhash_PASSWD_MAX",
|
|
"crypto_pwhash_PASSWD_MIN",
|
|
"crypto_pwhash_SALTBYTES",
|
|
"crypto_pwhash_STRBYTES",
|
|
|
|
"crypto_pwhash_alg",
|
|
"crypto_pwhash_argon2i_MEMLIMIT_MIN",
|
|
"crypto_pwhash_argon2i_MEMLIMIT_MAX",
|
|
"crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE",
|
|
"crypto_pwhash_argon2i_MEMLIMIT_MODERATE",
|
|
"crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE",
|
|
"crypto_pwhash_argon2i_OPSLIMIT_MIN",
|
|
"crypto_pwhash_argon2i_OPSLIMIT_MAX",
|
|
"crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE",
|
|
"crypto_pwhash_argon2i_OPSLIMIT_MODERATE",
|
|
"crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE",
|
|
"crypto_pwhash_argon2i_STRPREFIX",
|
|
|
|
"crypto_pwhash_argon2id_MEMLIMIT_MIN",
|
|
"crypto_pwhash_argon2id_MEMLIMIT_MAX",
|
|
"crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE",
|
|
"crypto_pwhash_argon2id_MEMLIMIT_MODERATE",
|
|
"crypto_pwhash_argon2id_OPSLIMIT_MIN",
|
|
"crypto_pwhash_argon2id_OPSLIMIT_MAX",
|
|
"crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE",
|
|
"crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE",
|
|
"crypto_pwhash_argon2id_OPSLIMIT_MODERATE",
|
|
"crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE",
|
|
"crypto_pwhash_argon2id_STRPREFIX",
|
|
|
|
"crypto_pwhash_str_alg",
|
|
"crypto_pwhash_str_verify",
|
|
|
|
"crypto_pwhash_scryptsalsa208sha256_BYTES_MAX",
|
|
"crypto_pwhash_scryptsalsa208sha256_BYTES_MIN",
|
|
"crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE",
|
|
"crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX",
|
|
"crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN",
|
|
"crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE",
|
|
"crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE",
|
|
"crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX",
|
|
"crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN",
|
|
"crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE",
|
|
"crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX",
|
|
"crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN",
|
|
"crypto_pwhash_scryptsalsa208sha256_SALTBYTES",
|
|
"crypto_pwhash_scryptsalsa208sha256_STRBYTES",
|
|
"crypto_pwhash_scryptsalsa208sha256_STRPREFIX",
|
|
"crypto_pwhash_scryptsalsa208sha256_ll",
|
|
"crypto_pwhash_scryptsalsa208sha256_str",
|
|
"crypto_pwhash_scryptsalsa208sha256_str_verify",
|
|
"nacl_bindings_pick_scrypt_params",
|
|
|
|
"randombytes",
|
|
|
|
"sodium_init",
|
|
|
|
"sodium_add",
|
|
"sodium_increment",
|
|
|
|
"sodium_memcmp",
|
|
"sodium_pad",
|
|
"sodium_unpad",
|
|
]
|
|
|
|
# Initialize Sodium
|
|
sodium_init()
|