o
    ÖèFhf  ã                   @  s’   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 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)Ú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   úe/var/www/html/loop/nvenv/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Úauxfnú'typing.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   

ù	r0   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   r2   r   r   r   Ú__init__7   s
   
zConcatKDFHash.__init__r   úhashes.Hashc                 C  s   t  | j¡S ©N)r   ÚHashr4   ©r8   r   r   r   Ú_hashE   s   zConcatKDFHash._hashr    r   c                 C  ó$   | j rt‚d| _ t|| j| j| jƒS ©NT)r7   r   r0   r5   r>   r6   ©r8   r    r   r   r   ÚderiveH   ó   ÿzConcatKDFHash.deriveÚexpected_keyr   c                 C  ó   t  |  |¡|¡st‚d S r;   ©r   Úbytes_eqrB   r   ©r8   r    rD   r   r   r   ÚverifyP   ó   ÿzConcatKDFHash.verifyr;   )r   r   r   r   r   r   r2   r3   )r   r:   ©r    r   r   r   ©r    r   rD   r   r   r   )Ú__name__Ú
__module__Ú__qualname__r9   r>   rB   rI   r   r   r   r   r1   6   s    û

r1   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   r2   r3   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ó    rQ   F)r   r4   r5   r6   Ú
block_sizeÚ	TypeErrorÚnamer   r   Ú_saltr7   )r8   r   r   rQ   r   r2   r   r   r   r9   V   s   

zConcatKDFHMAC.__init__r   ú	hmac.HMACc                 C  s   t  | j| j¡S r;   )r   ÚHMACrV   r4   r=   r   r   r   Ú_hmaco   s   zConcatKDFHMAC._hmacr    r   c                 C  r?   r@   )r7   r   r0   r5   rY   r6   rA   r   r   r   rB   r   rC   zConcatKDFHMAC.deriverD   r   c                 C  rE   r;   rF   rH   r   r   r   rI   z   rJ   zConcatKDFHMAC.verifyr;   )
r   r   r   r   rQ   r   r   r   r2   r3   )r   rW   rK   rL   )rM   rN   rO   r9   rY   rB   rI   r   r   r   r   rP   U   s    ú

rP   )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Úcryptographyr   Úcryptography.exceptionsr   r   Úcryptography.hazmat.primitivesr   r   r   Ú"cryptography.hazmat.primitives.kdfr	   r   r   r0   r1   rP   r   r   r   r   Ú<module>   s   


