a b@sfddlZddlZddlmZddlmZmZmZddlm Z ddl m Z ej dZ Gddde ZdS) N)utils)AlreadyFinalized InvalidKeyUnsupportedAlgorithm) constant_time)KeyDerivationFunctionc@sJeZdZd eeeeeejdddZeedddZeeddd d Z dS) ScryptN)saltlengthnrpbackendcCsddlm}|std||_td||dksF||d@dkrNtd|dkr^td|dkrntd d |_||_ ||_ ||_ ||_ dS) Nrrz/This version of OpenSSL does not support scryptr rz-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.backendrZscrypt_supportedr_lengthr _check_bytes ValueError_used_salt_n_r_p)selfr r r r rrZosslrP/tmp/pip-target-98j97qn4/lib/python/cryptography/hazmat/primitives/kdf/scrypt.py__init__s$  zScrypt.__init__) key_materialreturncCsJ|jrtdd|_td|ddlm}|||j|j|j |j |j S)Nz'Scrypt instances can only be used once.Trrr) rrrZ_check_byteslikerrZ derive_scryptrrrrr)rrrrrrderive;s  z Scrypt.derive)r expected_keyr cCs"||}t||stddS)NzKeys do not match.)r!rZbytes_eqr)rrr"Z derived_keyrrrverifyGs  z Scrypt.verify)N) __name__ __module__ __qualname__bytesinttypingAnyrr!r#rrrrr s " r )sysr)Z cryptographyrZcryptography.exceptionsrrrZcryptography.hazmat.primitivesrZ"cryptography.hazmat.primitives.kdfrmaxsizeZ _MEM_LIMITr rrrrs