o
    "“i™  ã                   @  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   úl/var/www/html/premium_crap/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   


