3 œäL](ã@szddlmZmZmZddlmZddlmZmZm Z m Z ddl m Z ddl mZddlmZejeƒGdd„deƒƒZd S) é)Úabsolute_importÚdivisionÚprint_function)Úutils)ÚAlreadyFinalizedÚ InvalidKeyÚUnsupportedAlgorithmÚ_Reasons)ÚPBKDF2HMACBackend)Ú constant_time)ÚKeyDerivationFunctionc@s$eZdZdd„Zdd„Zdd„ZdS)Ú PBKDF2HMACcCsht|tƒstdtjƒ‚|j|ƒs4tdj|jƒtjƒ‚d|_ ||_ ||_ t j d|ƒ||_||_||_dS)Nz4Backend object does not implement PBKDF2HMACBackend.z/{} is not supported for PBKDF2 by this backend.FÚsalt)Ú isinstancer rr ZBACKEND_MISSING_INTERFACEZpbkdf2_hmac_supportedÚformatÚnameZUNSUPPORTED_HASHÚ_usedÚ _algorithmÚ_lengthrÚ _check_bytesÚ_saltÚ _iterationsÚ_backend)ÚselfÚ algorithmÚlengthrZ iterationsÚbackend©rúS/tmp/pip-install-wfra5znf/cryptography/cryptography/hazmat/primitives/kdf/pbkdf2.pyÚ__init__s    zPBKDF2HMAC.__init__cCs<|jrtdƒ‚d|_tjd|ƒ|jj|j|j|j|j |ƒS)Nz'PBKDF2 instances can only be used once.TÚ key_material) rrrZ_check_byteslikerZderive_pbkdf2_hmacrrrr)rr rrrÚderive's zPBKDF2HMAC.derivecCs"|j|ƒ}tj||ƒstdƒ‚dS)NzKeys do not match.)r!r Zbytes_eqr)rr Z expected_keyZ derived_keyrrrÚverify5s  zPBKDF2HMAC.verifyN)Ú__name__Ú __module__Ú __qualname__rr!r"rrrrr sr N)Ú __future__rrrZ cryptographyrZcryptography.exceptionsrrrr Z'cryptography.hazmat.backends.interfacesr Zcryptography.hazmat.primitivesr Z"cryptography.hazmat.primitives.kdfr Zregister_interfaceÚobjectr rrrrÚs