B \Úæ`‰ã@szddlmZmZmZddlmZddlmZmZm Z m Z ddl m Z ddl mZddlmZe e¡Gdd„deƒƒZd S) é)Úabsolute_importÚdivisionÚprint_function)Úutils)ÚAlreadyFinalizedÚ InvalidKeyÚUnsupportedAlgorithmÚ_Reasons)ÚPBKDF2HMACBackend)Ú constant_time)ÚKeyDerivationFunctionc@s$eZdZdd„Zdd„Zdd„ZdS)Ú PBKDF2HMACcCsnt|tƒstdtjƒ‚| |¡s4td |j¡tjƒ‚d|_ ||_ ||_ t|t ƒsXt dƒ‚||_||_||_dS)Nz4Backend object does not implement PBKDF2HMACBackend.z0{0} is not supported for PBKDF2 by this backend.Fzsalt must be bytes.)Ú isinstancer rr ZBACKEND_MISSING_INTERFACEZpbkdf2_hmac_supportedÚformatÚnameZUNSUPPORTED_HASHÚ_usedÚ _algorithmÚ_lengthÚbytesÚ TypeErrorÚ_saltÚ _iterationsÚ_backend)ÚselfÚ algorithmÚlengthZsaltZ iterationsZbackend©rú\/opt/alt/python37/lib64/python3.7/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.pyÚ__init__s"   zPBKDF2HMAC.__init__cCsB|jrtdƒ‚d|_t|tƒs&tdƒ‚|j |j|j|j |j |¡S)Nz'PBKDF2 instances can only be used once.Tzkey_material must be bytes.) rrrrrrZderive_pbkdf2_hmacrrrr)rÚ key_materialrrrÚderive(s zPBKDF2HMAC.derivecCs"| |¡}t ||¡stdƒ‚dS)NzKeys do not match.)r r Zbytes_eqr)rrZ expected_keyZ derived_keyrrrÚverify7s  zPBKDF2HMAC.verifyN)Ú__name__Ú __module__Ú __qualname__rr r!rrrrr sr N)Z __future__rrrZ cryptographyrZcryptography.exceptionsrrrr Z'cryptography.hazmat.backends.interfacesr Zcryptography.hazmat.primitivesr Z"cryptography.hazmat.primitives.kdfr Zregister_interfaceÚobjectr rrrrÚs