o
    Z2h                     @  s   d dl mZ d dlZd dlm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 d ddZd!ddZd"ddZG dd deZG dd deZdS )#    )annotationsN)Callable)utils)AlreadyFinalized
InvalidKey)constant_timehasheshmac)KeyDerivationFunctionnintreturnbytesc                 C  s   | j dddS )N   big)length	byteorder)to_bytes)r    r   }/home/skpark/git/infrasmart_work/infrasmart/venv/lib/python3.10/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py_int_to_u32be   s   r   	algorithmhashes.HashAlgorithmr   	otherinfobytes | NoneNonec                 C  s>   | j d }||krtd| d|d urtd| d S d S )Nl    zCannot derive keys larger than z bits.r   )digest_size
ValueErrorr   _check_bytes)r   r   r   
max_lengthr   r   r   _common_args_checks   s   
r    key_materialutils.Bufferauxfn Callable[[], hashes.HashContext]c                 C  s   t d|  dg}d}d}||kr<| }|t| ||  || ||  |t|d 7 }|d7 }||ksd|d | S )Nr!       r      )r   _check_byteslikeupdater   appendfinalizelenjoin)r!   r   r#   r   outputoutlencounterhr   r   r   _concatkdf_derive    s   

	r2   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 )ConcatKDFHashNr   r   r   r   r   r   backend
typing.Anyc                 C  s4   t ||| || _|| _|d ur|nd| _d| _d S )Nr%   F)r    
_algorithm_length
_otherinfo_used)selfr   r   r   r4   r   r   r   __init__8   s
   
zConcatKDFHash.__init__r   hashes.Hashc                 C  s   t | jS N)r   Hashr6   r:   r   r   r   _hashF   s   zConcatKDFHash._hashr!   r"   r   c                 C  $   | j rtd| _ t|| j| j| jS NT)r9   r   r2   r7   r@   r8   r:   r!   r   r   r   deriveI      zConcatKDFHash.deriveexpected_keyr   c                 C     t | ||std S r=   r   bytes_eqrD   r   r:   r!   rF   r   r   r   verifyQ      zConcatKDFHash.verifyr=   )r   r   r   r   r   r   r4   r5   )r   r<   r!   r"   r   r   r!   r   rF   r   r   r   )__name__
__module____qualname__r;   r@   rD   rK   r   r   r   r   r3   7   s    

r3   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 )ConcatKDFHMACNr   r   r   r   saltr   r   r4   r5   c                 C  st   t ||| || _|| _|d ur|nd| _|jd u r"t|j d|d u r,d|j }ntd| || _	d| _
d S )Nr%   z is unsupported for ConcatKDF    rS   F)r    r6   r7   r8   
block_size	TypeErrornamer   r   _saltr9   )r:   r   r   rS   r   r4   r   r   r   r;   W   s   

zConcatKDFHMAC.__init__r   	hmac.HMACc                 C  s   t | j| jS r=   )r	   HMACrX   r6   r?   r   r   r   _hmacp   s   zConcatKDFHMAC._hmacr!   r"   r   c                 C  rA   rB   )r9   r   r2   r7   r[   r8   rC   r   r   r   rD   s   rE   zConcatKDFHMAC.deriverF   r   c                 C  rG   r=   rH   rJ   r   r   r   rK   {   rL   zConcatKDFHMAC.verifyr=   )
r   r   r   r   rS   r   r   r   r4   r5   )r   rY   rM   rN   )rO   rP   rQ   r;   r[   rD   rK   r   r   r   r   rR   V   s    

rR   )r   r   r   r   )r   r   r   r   r   r   r   r   )
r!   r"   r   r   r#   r$   r   r   r   r   )
__future__r   typingcollections.abcr   cryptographyr   cryptography.exceptionsr   r   cryptography.hazmat.primitivesr   r   r	   "cryptography.hazmat.primitives.kdfr
   r   r    r2   r3   rR   r   r   r   r   <module>   s   


