pg~ddlZddlZddlmZddlmZmZmZddlm Z ddl m Z ej dzZ Gdde ZdS) N)utils)AlreadyFinalized InvalidKeyUnsupportedAlgorithm) constant_time)KeyDerivationFunctionc `eZdZ ddedededededejf dZd ed efd Zd ed ed dfd Z dS)ScryptNsaltlengthnrpbackendclddlm}|std||_t jd||dks ||dz zdkrtd|dkrtd|dkrtd d |_||_ ||_ ||_ ||_ dS) Nrrz/This version of OpenSSL does not support scryptr r z-n must be greater than 1 and be a power of 2.z%r must be greater than or equal to 1.z%p must be greater than or equal to 1.F) ,cryptography.hazmat.backends.openssl.backendrscrypt_supportedr_lengthr _check_bytes ValueError_used_salt_n_r_p)selfr r rrrrossls K/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/kdf/scrypt.py__init__zScrypt.__init__s      $$&& &A   64((( q55Q!a%[Q&&LMM M q55DEE E q55DEE E   key_materialreturnc|jrtdd|_tjd|ddlm}|||j|j|j |j |j S)Nz'Scrypt instances can only be used once.Tr$rr) rrr_check_byteslikerr derive_scryptrrrrr)rr$rs r!derivez Scrypt.derive;sw : N"#LMM M  ~|<<<HHHHHH$$ $*dlDGTWdg   r# expected_keycx||}tj||stddS)NzKeys do not match.)r)rbytes_eqr)rr$r* derived_keys r!verifyz Scrypt.verifyGsAkk,// %k<@@ 3122 2 3 3r#)N) __name__ __module__ __qualname__bytesinttypingAnyr"r)r.r#r!r r s#              D  5  U     3533$333333r#r )sysr4 cryptographyrcryptography.exceptionsrrrcryptography.hazmat.primitivesr"cryptography.hazmat.primitives.kdfrmaxsize _MEM_LIMITr r6r#r!r>s   988888DDDDDD [A  2323232323 "2323232323r#