
    Wwg                    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                  |      s't        |j                   dt
        j                        d| _        || _        || _	        t        j                  d|       || _        || _        y )Nr   )backendz is not supported for PBKDF2.Fsalt),cryptography.hazmat.backends.openssl.backendr   pbkdf2_hmac_supportedr   namer   UNSUPPORTED_HASH_used
_algorithm_lengthr   _check_bytes_salt_iterations)self	algorithmlengthr   
iterationsr   ossls          `/var/www/horilla/myenv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py__init__zPBKDF2HMAC.__init__   ss    	
 )))4&>>""?@))  
#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.derive.   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   r/   r   z
typing.Any)r(   r0   returnr0   )r(   r0   r,   r0   r1   None)__name__
__module____qualname__r"   r)   r.    r#   r!   r   r      sF     #&'& & 	&
 & &0
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   r6   r#   r!   <module>r>      s3   
 #    G @ D)3& )3r#   