o
    Vh                     @  st   d dl mZ d dl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mZ d dlmZ G dd	 d	eZdS )
    )annotationsN)utils)AlreadyFinalized
InvalidKeyUnsupportedAlgorithm_Reasons)openssl)constant_timehashes)KeyDerivationFunctionc                   @  s.   e Zd Z	ddddZdddZdddZdS )
PBKDF2HMACN	algorithmhashes.HashAlgorithmlengthintsaltbytes
iterationsbackend
typing.Anyc                 C  sX   ddl m} ||st|j dtjd| _|| _|| _	t
d| || _|| _d S )Nr   )r   z is not supported for PBKDF2.Fr   ),cryptography.hazmat.backends.openssl.backendr   pbkdf2_hmac_supportedr   namer   UNSUPPORTED_HASH_used
_algorithm_lengthr   _check_bytes_salt_iterations)selfr   r   r   r   r   ossl r"   }/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py__init__   s   


zPBKDF2HMAC.__init__key_materialreturnc                 C  s0   | j rtdd| _ tj|| j| j| j| jS )Nz'PBKDF2 instances can only be used once.T)	r   r   rust_opensslkdfderive_pbkdf2_hmacr   r   r   r   )r    r%   r"   r"   r#   derive.   s   zPBKDF2HMAC.deriveexpected_keyNonec                 C  s"   |  |}t||stdd S )NzKeys do not match.)r*   r	   bytes_eqr   )r    r%   r+   derived_keyr"   r"   r#   verify;   s   
zPBKDF2HMAC.verify)N)
r   r   r   r   r   r   r   r   r   r   )r%   r   r&   r   )r%   r   r+   r   r&   r,   )__name__
__module____qualname__r$   r*   r/   r"   r"   r"   r#   r      s
    
r   )
__future__r   typingcryptographyr   cryptography.exceptionsr   r   r   r   "cryptography.hazmat.bindings._rustr   r'   cryptography.hazmat.primitivesr	   r
   "cryptography.hazmat.primitives.kdfr   r   r"   r"   r"   r#   <module>   s   