o
    Vh                     @  st   d dl mZ d dlZd dlmZ d dlmZmZ d dlm	Z	m
Z
mZ d dlmZ G dd deZG d	d
 d
eZdS )    )annotationsN)utils)AlreadyFinalized
InvalidKey)constant_timehasheshmac)KeyDerivationFunctionc                   @  s8   e Zd Z	ddddZdddZdddZdddZdS )HKDFN	algorithmhashes.HashAlgorithmlengthintsaltbytes | Noneinfobackend
typing.Anyc                 C  sB   || _ |d u rd| j j }ntd| || _t| j ||| _d S )N    r   )
_algorithmdigest_sizer   _check_bytes_salt
HKDFExpand_hkdf_expand)selfr   r   r   r   r    r   {/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py__init__   s   zHKDF.__init__key_materialbytesreturnc                 C  s"   t | j| j}|| | S N)r   HMACr   r   updatefinalize)r   r   hr   r   r   _extract#   s   
zHKDF._extractc                 C  s   t d| | j| |S )Nr   )r   _check_bytesliker   deriver'   r   r   r   r   r   r)   (   s   zHKDF.deriveexpected_keyNonec                 C     t | ||std S r"   r   bytes_eqr)   r   r   r   r+   r   r   r   verify,      zHKDF.verifyr"   )
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'   r)   r1   r   r   r   r   r
      s    

r
   c                   @  s8   e Zd Z	ddd
dZdddZdddZdddZdS )r   Nr   r   r   r   r   r   r   r   c                 C  sX   || _ d|j }||krtd| d|| _|d u rd}ntd| || _d| _d S )N   zCannot derive keys larger than z octets.    r   F)r   r   
ValueError_lengthr   r   _info_used)r   r   r   r   r   
max_lengthr   r   r   r   2   s   


zHKDFExpand.__init__r   r    r!   c                 C  s   dg}d}| j jt|d  | jk rFt|| j }||d  || j |t|g |	|
  |d7 }| j jt|d  | jk sd|d | j S )Nr9      )r   r   lenr;   r   r#   r$   r<   r    appendr%   join)r   r   outputcounterr&   r   r   r   _expandM   s   zHKDFExpand._expandc                 C  s&   t d| | jrtd| _| |S )Nr   T)r   r(   r=   r   rF   r*   r   r   r   r)   [   s
   
zHKDFExpand.deriver+   r,   c                 C  r-   r"   r.   r0   r   r   r   r1   c   r2   zHKDFExpand.verifyr"   )r   r   r   r   r   r   r   r   r3   r4   )r5   r6   r7   r   rF   r)   r1   r   r   r   r   r   1   s    

r   )
__future__r   typingcryptographyr   cryptography.exceptionsr   r   cryptography.hazmat.primitivesr   r   r   "cryptography.hazmat.primitives.kdfr	   r
   r   r   r   r   r   <module>   s   "