def crypto_pwhash_scryptsalsa208sha256_ll(passwd, salt, n, r, p, dklen=64, maxmem=SCRYPT_MAX_MEM): """ Derive a cryptographic key using the ``passwd`` and ``salt`` given as input. The work factor can be tuned by by picking different values for the parameters :param bytes passwd: :param bytes salt: :param bytes salt: *must* be *exactly* :py:const:`.SALTBYTES` long :param int dklen: :param int opslimit: :param int n: :param int r: block size, :param int p: the parallelism factor :param int maxmem: the maximum available memory available for scrypt's operations :rtype: bytes :raises nacl.exceptions.UnavailableError: If called when using a minimal build of libsodium. """ ensure( has_crypto_pwhash_scryptsalsa208sha256, "Not available in minimal build", raising=exc.UnavailableError, ) ensure(isinstance(n, int), raising=TypeError) ensure(isinstance(r, int), raising=TypeError) ensure(isinstance(p, int), raising=TypeError) ensure(isinstance(passwd, bytes), raising=TypeError) ensure(isinstance(salt, bytes), raising=TypeError) _check_memory_occupation(n, r, p, maxmem) buf = ffi.new("uint8_t[]", dklen) ret = lib.crypto_pwhash_scryptsalsa208sha256_ll(passwd, len(passwd), salt, len(salt), n, r, p, buf, dklen) ensure( ret == 0, "Unexpected failure in key derivation", raising=exc.RuntimeError, ) return ffi.buffer(ffi.cast("char *", buf), dklen)[:]
def crypto_pwhash_scryptsalsa208sha256_ll(passwd, salt, n, r, p, dklen=64, maxmem=SCRYPT_MAX_MEM): """ Derive a cryptographic key using the ``passwd`` and ``salt`` given as input. The work factor can be tuned by by picking different values for the parameters :param bytes passwd: :param bytes salt: :param bytes salt: *must* be *exactly* :py:const:`.SALTBYTES` long :param int dklen: :param int opslimit: :param int n: :param int r: block size, :param int p: the parallelism factor :param int maxmem: the maximum available memory available for scrypt's operations :rtype: bytes """ ensure(isinstance(n, int), raising=TypeError) ensure(isinstance(r, int), raising=TypeError) ensure(isinstance(p, int), raising=TypeError) ensure(isinstance(passwd, bytes), raising=TypeError) ensure(isinstance(salt, bytes), raising=TypeError) _check_memory_occupation(n, r, p, maxmem) buf = ffi.new("uint8_t[]", dklen) ret = lib.crypto_pwhash_scryptsalsa208sha256_ll(passwd, len(passwd), salt, len(salt), n, r, p, buf, dklen) ensure(ret == 0, 'Unexpected failure in key derivation', raising=exc.RuntimeError) return ffi.buffer(ffi.cast("char *", buf), dklen)[:]
crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX = 0 crypto_pwhash_scryptsalsa208sha256_BYTES_MIN = 0 crypto_pwhash_scryptsalsa208sha256_BYTES_MAX = 0 crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN = 0 crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX = 0 crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN = 0 crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX = 0 crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE = 0 crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE = 0 crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE = 0 crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE = 0 if has_crypto_pwhash_scryptsalsa208sha256: crypto_pwhash_scryptsalsa208sha256_STRPREFIX = \ ffi.string(ffi.cast("char *", lib.crypto_pwhash_scryptsalsa208sha256_strprefix() ) )[:] crypto_pwhash_scryptsalsa208sha256_SALTBYTES = \ lib.crypto_pwhash_scryptsalsa208sha256_saltbytes() crypto_pwhash_scryptsalsa208sha256_STRBYTES = \ lib.crypto_pwhash_scryptsalsa208sha256_strbytes() crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN = \ lib.crypto_pwhash_scryptsalsa208sha256_passwd_min() crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX = \ lib.crypto_pwhash_scryptsalsa208sha256_passwd_max() crypto_pwhash_scryptsalsa208sha256_BYTES_MIN = \ lib.crypto_pwhash_scryptsalsa208sha256_bytes_min() crypto_pwhash_scryptsalsa208sha256_BYTES_MAX = \ lib.crypto_pwhash_scryptsalsa208sha256_bytes_max() crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN = \
# See the License for the specific language governing permissions and # limitations under the License. from __future__ import absolute_import, division, print_function import sys from six import integer_types import nacl.exceptions as exc from nacl._sodium import ffi, lib from nacl.exceptions import ensure crypto_pwhash_scryptsalsa208sha256_STRPREFIX = \ ffi.string(ffi.cast("char *", lib.crypto_pwhash_scryptsalsa208sha256_strprefix() ) )[:] crypto_pwhash_scryptsalsa208sha256_SALTBYTES = \ lib.crypto_pwhash_scryptsalsa208sha256_saltbytes() crypto_pwhash_scryptsalsa208sha256_STRBYTES = \ lib.crypto_pwhash_scryptsalsa208sha256_strbytes() crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN = \ lib.crypto_pwhash_scryptsalsa208sha256_passwd_min() crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX = \ lib.crypto_pwhash_scryptsalsa208sha256_passwd_max() crypto_pwhash_scryptsalsa208sha256_BYTES_MIN = \ lib.crypto_pwhash_scryptsalsa208sha256_bytes_min() crypto_pwhash_scryptsalsa208sha256_BYTES_MAX = \ lib.crypto_pwhash_scryptsalsa208sha256_bytes_max() crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN = \