a
¹að ã @ s\ d dl Z d dlmZ d dlmZmZmZmZ d dlm Z m
Z
d dlmZ G dd„ deƒZ
dS )é N)Úutils)ÚAlreadyFinalizedÚ
InvalidKeyÚUnsupportedAlgorithmÚ_Reasons)Ú
constant_timeÚhashes)ÚKeyDerivationFunctionc @ sJ e Zd Zdejeeeejdœdd„Z eedœdd„Z
eeddœd d
„ZdS )Ú
PBKDF2HMACN)Ú algorithmÚlengthÚsaltÚ
iterationsÚbackendc C sX ddl m} | |¡s*td |j¡tjƒ‚d| _|| _ || _
t d|¡ || _
|| _d S )Nr ©r z/{} is not supported for PBKDF2 by this backend.Fr
)Ú,cryptography.hazmat.backends.openssl.backendr Zpbkdf2_hmac_supportedr ÚformatÚnamer ZUNSUPPORTED_HASHÚ_usedÚ
_algorithmÚ_lengthr Ú_check_bytesÚ_saltÚ_iterations)Úselfr r r
r r Zossl© r úO/usr/lib64/python3.9/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.pyÚ__init__ s
ÿüzPBKDF2HMAC.__init__)Úkey_materialÚreturnc C sF | j rtdƒ‚d| _ t d|¡ ddlm} | | j| j| j | j
|¡S )Nz'PBKDF2 instances can only be used once.Tr r r )r r r Z_check_bytesliker r Zderive_pbkdf2_hmacr r r r )r r r r r r Úderive. s ûzPBKDF2HMAC.derive)r Úexpected_keyr c C s" | |¡}t ||¡stdƒ‚d S )NzKeys do not match.)r r Zbytes_eqr )r r r! Zderived_keyr r r Úverify> s
zPBKDF2HMAC.verify)N)Ú__name__Ú
__module__Ú__qualname__r Z
HashAlgorithmÚintÚbytesÚtypingÚAnyr r r" r r r r r
s úúr
)r( Zcryptographyr Zcryptography.exceptionsr r r r Zcryptography.hazmat.primitivesr r Z"cryptography.hazmat.primitives.kdfr r
r r r r Ú