Current File : //lib64/python3.9/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-39.pyc
a

�a��@s�ddlZddlmZddlmZmZmZmZddlm	Z	m
Z
mZmZm
Z
ddlmZGdd�dej�ZGdd	�d	ej�ZGd
d�d�ZGdd
�d
e�ZGdd�de�ZdS)�N)�utils)�AlreadyFinalized�
InvalidKey�UnsupportedAlgorithm�_Reasons)�ciphers�cmac�
constant_time�hashes�hmac)�KeyDerivationFunctionc@seZdZdZdS)�ModeZctrN)�__name__�
__module__�__qualname__ZCounterMode�rr�N/usr/lib64/python3.9/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.pyr
sr
c@seZdZdZdZdS)�CounterLocationZbefore_fixedZafter_fixedN)rrr�BeforeFixed�
AfterFixedrrrrrsrc
@sxeZdZejeeeejeeeje	eje	eje	d�	dd�Z
eeed�dd��Z
e	ee	d�dd	�Ze	d
�dd�Zd
S)�
_KBKDFDeriver)	�prf�mode�length�rlen�llen�location�label�context�fixedc

Cst|�sJ�t|t�std��t|t�s0td��|s8|rD|	rDtd��|dusV|�|�s^td��|durv|	durvtd��|dur�t|t�s�td��|dur�d}|dur�d}t�	d|�t�	d	|�||_
||_||_||_
||_||_||_||_d
|_|	|_dS)Nzmode must be of type Modez(location must be of type CounterLocationz9When supplying fixed data, label and context are ignored.zrlen must be between 1 and 4zPlease specify an llenzllen must be an integer�rrF)�callable�
isinstancer
�	TypeErrorr�
ValueError�_valid_byte_length�intr�_check_bytes�_prf�_mode�_length�_rlen�_llen�	_location�_label�_context�_used�_fixed_data)
�selfrrrrrrrrrrrr�__init__"s>

�z_KBKDFDeriver.__init__)�value�returncCs@t|t�std��t�d|�}dt|�kr6dks<ndSdS)Nzvalue must be of type int��FT)r"r&r#r�int_to_bytes�len)r4Z	value_binrrrr%Ws
z _KBKDFDeriver._valid_byte_length)�key_material�prf_output_sizer5c	Cs�|jr
t�t�d|�d|_|j|}dg}t�d|j�}|tdt|�d�dkr`t	d��t
d|d�D]d}|�|�}t�||j�}|jt
jkr�|�|�|�|���|jt
jkr�|�|�|�|���qnd�|�d|j�S)Nr:Tr r6��zThere are too many iterations.)r0rrZ_check_bytesliker*r8r+�powr9r$�ranger(r-rr�update�_generate_fixed_inputr�append�finalize�join)	r2r:r;�rounds�outputZr_bin�i�hZcounterrrr�deriveas&


z_KBKDFDeriver.derive�r5cCsB|jrt|jt�r|jSt�|jd|j�}d�|jd|j	|g�S)Nr=r �)
r1r"�bytesrr8r*r,rDr.r/)r2Zl_valrrrrA�sz#_KBKDFDeriver._generate_fixed_inputN)rrr�typing�Callabler
r&�OptionalrrLr3�staticmethod�boolr%rIrArrrrr!s�5	$rc@sxeZdZdejeeeejee	eje
eje
eje
ejd�
dd�Ze
d�dd�Z
e
d�d	d
�Ze
e
dd�dd
�ZdS)�	KBKDFHMACN)
�	algorithmrrrrrrrr�backendc
Cs`t|tj�stdtj��ddlm}|�|�s:tdtj��||_	t
|j||||||||	�	|_dS)Nz5Algorithm supplied is not a supported hash algorithm.r�rTz5Algorithm supplied is not a supported hmac algorithm.)
r"r
�
HashAlgorithmrrZUNSUPPORTED_HASH�,cryptography.hazmat.backends.openssl.backendrTZhmac_supported�
_algorithmrr(�_deriver)r2rSrrrrrrrrrT�osslrrrr3�s.
�
��zKBKDFHMAC.__init__)r:cCst�||j�S�N)r�HMACrX�r2r:rrrr(�szKBKDFHMAC._prfrJcCs|j�||jj�Sr[)rYrIrX�digest_sizer]rrrrI�szKBKDFHMAC.derive�r:�expected_keyr5cCst�|�|�|�st�dSr[�r	Zbytes_eqrIr�r2r:r`rrr�verify�szKBKDFHMAC.verify)N)rrrr
rVr
r&rMrOrrL�Anyr3r(rIrcrrrrrR�s ��+rRc@sveZdZdeeeejeeejeejeejeej	d�	dd�Z
ed�dd�Zeed�d	d
�Zeedd�dd
�Z
dS)�	KBKDFCMACN)	rrrrrrrrrTc
CsPt|tj�rt|tj�s$tdtj��||_d|_t	|j
||||||||	�	|_dS)N�7Algorithm supplied is not a supported cipher algorithm.)�
issubclassrZBlockCipherAlgorithmZCipherAlgorithmrr�UNSUPPORTED_CIPHERrX�_cipherrr(rY)r2rSrrrrrrrrrTrrrr3�s,
�
���zKBKDFCMAC.__init__)�_cCs|jdusJ�t�|j�Sr[)rirZCMAC)r2rjrrrr(�szKBKDFCMAC._prf)r:r5cCsT|�|�|_|jdusJ�ddlm}|�|j�s>tdtj��|j�	||jj
d�S)NrrUrfr=)rXrirWrTZcmac_algorithm_supportedrrrhrYrI�
block_size)r2r:rZrrrrI�s�zKBKDFCMAC.deriver_cCst�|�|�|�st�dSr[rarbrrrrcszKBKDFCMAC.verify)N)rrrr
r&rMrOrrLrdr3r(rIrcrrrrre�s��$re)rMZcryptographyrZcryptography.exceptionsrrrrZcryptography.hazmat.primitivesrrr	r
rZ"cryptography.hazmat.primitives.kdfr�Enumr
rrrRrerrrr�<module>sm7