
    .Ph                        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dS )
    )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dS )
PBKDF2HMACN	algorithmhashes.HashAlgorithmlengthintsaltbytes
iterationsbackend
typing.Anyc                    ddl m} |                    |          s"t          |j         dt
          j                  d| _        || _        || _	        t          j        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   ossls          i/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py__init__zPBKDF2HMAC.__init__   s    	
 	
 	
 	
 	
 	
 )))44 	&>@@@)   
#64(((
%    key_materialutils.Bufferreturnc                    | 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(   s     r%   derivezPBKDF2HMAC.derive.   sV    : 	N"#LMMM
22OJL
 
 	
r'   expected_keyNonec                x    |                      |          }t          j        ||          st          d          d S )NzKeys do not match.)r/   r
   bytes_eqr   )r#   r(   r0   derived_keys       r%   verifyzPBKDF2HMAC.verify;   sA    kk,//%k<@@ 	31222	3 	3r'   )N)
r   r   r   r   r   r   r   r   r   r   )r(   r)   r*   r   )r(   r   r0   r   r*   r1   )__name__
__module____qualname__r&   r/   r5    r'   r%   r   r      sZ         #& & & & &0
 
 
 
3 3 3 3 3 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   r9   r'   r%   <module>rA      s   
 # " " " " "                   G F F F F F @ @ @ @ @ @ @ @ D D D D D D)3 )3 )3 )3 )3& )3 )3 )3 )3 )3r'   