o
    Ç `¬  ã                   @   s†   d dl mZmZmZ d dlmZ d dlmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ e e¡G dd	„ d	eƒƒZd
S )é    )Úabsolute_importÚdivisionÚprint_function)Úutils)ÚAlreadyFinalizedÚ
InvalidKeyÚUnsupportedAlgorithmÚ_Reasons)Ú_get_backend)ÚPBKDF2HMACBackend)Úconstant_time)ÚKeyDerivationFunctionc                   @   s&   e Zd Zddd„Zdd„ Zdd„ ZdS )	Ú
PBKDF2HMACNc                 C   sp   t |ƒ}t|tƒstdtjƒ‚| |¡std |j¡tj	ƒ‚d| _
|| _|| _t d|¡ || _|| _|| _d S )Nz4Backend object does not implement PBKDF2HMACBackend.z/{} is not supported for PBKDF2 by this backend.FÚsalt)r
   Ú
isinstancer   r   r	   ZBACKEND_MISSING_INTERFACEZpbkdf2_hmac_supportedÚformatÚnameZUNSUPPORTED_HASHÚ_usedÚ
_algorithmÚ_lengthr   Ú_check_bytesÚ_saltÚ_iterationsÚ_backend)ÚselfÚ	algorithmÚlengthr   Z
iterationsÚbackend© r   úhome/ych/rk3568/buildroot/output/rockchip_rk3568/host/lib/python3.10/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.pyÚ__init__   s(   
þ
ÿü
zPBKDF2HMAC.__init__c                 C   s<   | j rtdƒ‚d| _ t d|¡ | j | j| j| j| j	|¡S )Nz'PBKDF2 instances can only be used once.TÚkey_material)
r   r   r   Z_check_bytesliker   Zderive_pbkdf2_hmacr   r   r   r   )r   r!   r   r   r   Úderive-   s   ûzPBKDF2HMAC.derivec                 C   s"   |   |¡}t ||¡stdƒ‚d S )NzKeys do not match.)r"   r   Zbytes_eqr   )r   r!   Zexpected_keyZderived_keyr   r   r   Úverify;   s   
ÿzPBKDF2HMAC.verify)N)Ú__name__Ú
__module__Ú__qualname__r    r"   r#   r   r   r   r   r      s    
r   N)Ú
__future__r   r   r   Úcryptographyr   Zcryptography.exceptionsr   r   r   r	   Zcryptography.hazmat.backendsr
   Z'cryptography.hazmat.backends.interfacesr   Zcryptography.hazmat.primitivesr   Z"cryptography.hazmat.primitives.kdfr   Zregister_interfaceÚobjectr   r   r   r   r   Ú<module>   s   