o
    Z2h                     @  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"   z/home/skpark/git/infrasmart_work/infrasmart/venv/lib/python3.10/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py__init__   s   


zPBKDF2HMAC.__init__key_materialutils.Buffer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+   r0   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   