o
    "“iÏ  ã                   @  sj   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
 d dlmZ ddd„ZG dd„ deƒZdS )é    )ÚannotationsN)Úutils)ÚAlreadyFinalizedÚ
InvalidKey)Úconstant_timeÚhashes)ÚKeyDerivationFunctionÚnÚintÚreturnÚbytesc                 C  s   | j ddd�S )Né   Úbig)ÚlengthÚ	byteorder)Úto_bytes)r	   © r   új/var/www/html/premium_crap/venv/lib/python3.10/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.pyÚ_int_to_u32be   s   r   c                   @  s.   e Zd Z	ddd
d„Zddd„Zddd„ZdS )ÚX963KDFNÚ	algorithmúhashes.HashAlgorithmr   r
   Ú
sharedinfoúbytes | NoneÚbackendú
typing.Anyc                 C  sR   |j d }||krtd|› d�ƒ‚|d urt d|¡ || _|| _|| _d| _d S )Nl   ÿÿ zCannot derive keys larger than z bits.r   F)Údigest_sizeÚ
ValueErrorr   Ú_check_bytesÚ
_algorithmÚ_lengthÚ_sharedinfoÚ_used)Úselfr   r   r   r   Úmax_lenr   r   r   Ú__init__   s   

zX963KDF.__init__Úkey_materialúutils.Bufferr   r   c                 C  s²   | j rt‚d| _ t d|¡ dg}d}d}| j|krOt | j¡}| |¡ | t	|ƒ¡ | j
d ur7| | j
¡ | | ¡ ¡ |t|d ƒ7 }|d7 }| j|ksd |¡d | j… S )NTr&   ó    r   é   éÿÿÿÿ)r"   r   r   Ú_check_bytesliker    r   ÚHashr   Úupdater   r!   ÚappendÚfinalizeÚlenÚjoin)r#   r&   ÚoutputÚoutlenÚcounterÚhr   r   r   Úderive&   s$   



ø
zX963KDF.deriveÚexpected_keyÚNonec                 C  s   t  |  |¡|¡st‚d S ©N)r   Úbytes_eqr6   r   )r#   r&   r7   r   r   r   Úverify;   s   ÿzX963KDF.verifyr9   )r   r   r   r
   r   r   r   r   )r&   r'   r   r   )r&   r   r7   r   r   r8   )Ú__name__Ú
__module__Ú__qualname__r%   r6   r;   r   r   r   r   r      s
    û
r   )r	   r
   r   r   )Ú
__future__r   ÚtypingÚcryptographyr   Úcryptography.exceptionsr   r   Úcryptography.hazmat.primitivesr   r   Ú"cryptography.hazmat.primitives.kdfr   r   r   r   r   r   r   Ú<module>   s   
