
    +h                    z    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	e      Zy)
    )annotationsN)utils)AlreadyFinalized
InvalidKeyUnsupportedAlgorithm_Reasons)openssl)constant_timehashes)KeyDerivationFunctionc                  :    e Zd Z	 d	 	 	 	 	 	 	 	 	 ddZddZddZy)	
PBKDF2HMACNc                
   ddl m} |j                  |      s3t        dj	                  |j
                        t        j                        d| _        || _	        || _
        t        j                  d|       || _        || _        y )Nr   )backendz/{} is not supported for PBKDF2 by this backend.Fsalt),cryptography.hazmat.backends.openssl.backendr   pbkdf2_hmac_supportedr   formatnamer   UNSUPPORTED_HASH_used
_algorithm_lengthr   _check_bytes_salt_iterations)self	algorithmlengthr   
iterationsr   ossls          \/var/www/html/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py__init__zPBKDF2HMAC.__init__   sz    	
 )))4&AHHNN ))	  
#64(
%    c                    | j                   rt        d      d| _         t        j                  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   key_materials     r"   derivezPBKDF2HMAC.derive0   sV    ::"#LMM
22OOJJLL
 	
r$   c                h    | j                  |      }t        j                  ||      st        d      y )NzKeys do not match.)r*   r
   bytes_eqr   )r   r)   expected_keyderived_keys       r"   verifyzPBKDF2HMAC.verify=   s2    kk,/%%k<@122 Ar$   )N)
r   zhashes.HashAlgorithmr   intr   bytesr    r0   r   z
typing.Any)r)   r1   returnr1   )r)   r1   r-   r1   r2   None)__name__
__module____qualname__r#   r*   r/    r$   r"   r   r      sF     #&'& & 	&
 & &4
3r$   r   )
__future__r   typingcryptographyr   cryptography.exceptionsr   r   r   r   "cryptography.hazmat.bindings._rustr	   r&   cryptography.hazmat.primitivesr
   r   "cryptography.hazmat.primitives.kdfr   r   r7   r$   r"   <module>r?      s3   
 #    G @ D+3& +3r$   