
    #	h                    z    S SK Jr  S SKrS SKJr  S SKJrJrJrJ	r	  S SK
Jr  S SKJrJr  S SKJr   " S S	\5      rg)
    )annotationsN)utils)AlreadyFinalized
InvalidKeyUnsupportedAlgorithm_Reasons)openssl)constant_timehashes)KeyDerivationFunctionc                  J    \ rS rSr S         SS jjrS	S jrS
S jrSrg)
PBKDF2HMAC   Nc                    SSK Jn  UR                  U5      (       d'  [        UR                   S3[
        R                  5      eSU l        Xl        X l	        [        R                  " SU5        X0l        X@l        g )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/html/env/lib/python3.13/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py__init__PBKDF2HMAC.__init__   sn    	
 )))44&>>""?@))  
#64(
%    c                    U R                   (       a  [        S5      eSU l         [        R                  R	                  UU R
                  U R                  U R                  U R                  5      $ )Nz'PBKDF2 instances can only be used once.T)	r   r   rust_opensslkdfderive_pbkdf2_hmacr   r   r   r   )r   key_materials     r"   derivePBKDF2HMAC.derive.   sV    ::"#LMM
22OOJJLL
 	
r%   c                r    U R                  U5      n[        R                  " X25      (       d  [        S5      eg )NzKeys do not match.)r+   r
   bytes_eqr   )r   r*   expected_keyderived_keys       r"   verifyPBKDF2HMAC.verify;   s3    kk,/%%k@@122 Ar%   )r   r   r   r   r   )N)
r   zhashes.HashAlgorithmr   intr   bytesr    r3   r   z
typing.Any)r*   r4   returnr4   )r*   r4   r/   r4   r5   None)__name__
__module____qualname____firstlineno__r#   r+   r1   __static_attributes__ 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   r<   r%   r"   <module>rD      s3   
 #    G @ D)3& )3r%   