Your IP : 52.15.128.81


Current Path : /lib64/python3.6/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/
Upload File :
Current File : //lib64/python3.6/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-36.pyc

3

l�_��@s�ddlmZmZmZddlmZddlmZddlm	Z	ddl
mZmZm
Z
mZddlmZddlmZddlmZmZmZdd	lmZGd
d�de�ZGdd
�d
e�Ze	je�Gdd�de��ZdS)�)�absolute_import�division�print_function)�Enum)�range)�utils)�AlreadyFinalized�
InvalidKey�UnsupportedAlgorithm�_Reasons)�_get_backend)�HMACBackend)�
constant_time�hashes�hmac)�KeyDerivationFunctionc@seZdZdZdS)�ModeZctrN)�__name__�
__module__�__qualname__ZCounterMode�rr�/usr/lib64/python3.6/kbkdf.pyrsrc@seZdZdZdZdS)�CounterLocationZbefore_fixedZafter_fixedN)rrr�BeforeFixed�
AfterFixedrrrrrsrc@s6eZdZddd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�	KBKDFHMACNcCsJt|
�}
t|
t�stdtj��t|tj�s6tdtj��|
j	|�sLtdtj��t|t
�s^td��t|t�sptd��|sx|r�|	r�t
d��|dks�|j|�r�t
d��|dkr�|	dkr�t
d��|dk	r�t|t�r�td	��|dkr�d
}|dkr�d
}tjd|�tjd|�||_||_||_||_||_||_||_||_|
|_d
|_|	|_dS)Nz.Backend object does not implement HMACBackend.z5Algorithm supplied is not a supported hash algorithm.z5Algorithm supplied is not a supported hmac algorithm.zmode 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��label�contextF)r�
isinstancer
r
rZBACKEND_MISSING_INTERFACErZ
HashAlgorithmZUNSUPPORTED_HASHZhmac_supportedr�	TypeErrorr�
ValueError�_valid_byte_length�intr�_check_bytes�
_algorithm�_mode�_length�_rlen�_llen�	_location�_label�_context�_backend�_used�_fixed_data)�self�	algorithm�modeZlengthZrlenZllen�locationrrZfixed�backendrrr�__init__#sV




zKBKDFHMAC.__init__cCsBt|t�std��tjd|�}dt|�ko4dkns>dSdS)Nzvalue must be of type int��FT)rr#r r�int_to_bytes�len)r0�valueZ	value_binrrrr"ks
zKBKDFHMAC._valid_byte_lengthcCs�|jr
t�tjd|�d|_|j|jj}dg}tjd|j�}|t	dt
|�d�dkrdtd��x�td|d�D]n}t
j||j|jd�}tj||j�}|jtjkr�|j|�|j|j��|jtjkr�|j|�|j|j��qtWdj|�d|j�S)	N�key_materialTrr6��zThere are too many iterations.)r4)r.rrZ_check_bytesliker'r%Zdigest_sizer8r(�powr9r!rrZHMACr-r*rr�update�_generate_fixed_inputr�append�finalize�join)r0r;�rounds�outputZr_bin�i�hZcounterrrr�derivets&

zKBKDFHMAC.derivecCsB|jrt|jt�r|jStj|jd|j�}dj|jd|j	|g�S)Nr=r�)
r/r�bytesrr8r'r)rCr+r,)r0Zl_valrrrr@�szKBKDFHMAC._generate_fixed_inputcCstj|j|�|�st�dS)N)rZbytes_eqrHr	)r0r;Zexpected_keyrrr�verify�szKBKDFHMAC.verify)N)rrrr5r"rHr@rKrrrrr!s

=	$rN)Z
__future__rrr�enumrZ	six.movesrZcryptographyrZcryptography.exceptionsrr	r
rZcryptography.hazmat.backendsrZ'cryptography.hazmat.backends.interfacesr
Zcryptography.hazmat.primitivesrrrZ"cryptography.hazmat.primitives.kdfrrrZregister_interface�objectrrrrr�<module>s

?>