File: //lib/python3/dist-packages/cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-38.pyc
U
�e�]) � @ s� d dl mZmZmZ d dlmZ d dlmZ d dlm Z d dl
mZmZm
Z
mZ d dlmZ d dlmZmZmZ d dlmZ G d d
� d
e�ZG dd� de�Ze �e�G d
d� de��ZdS )� )�absolute_import�division�print_function)�Enum)�range)�utils)�AlreadyFinalized�
InvalidKey�UnsupportedAlgorithm�_Reasons)�HMACBackend)�
constant_time�hashes�hmac)�KeyDerivationFunctionc @ s e Zd ZdZdS )�ModeZctrN)�__name__�
__module__�__qualname__ZCounterMode� r r �J/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/kdf/kbkdf.pyr s r c @ s e Zd ZdZdZdS )�CounterLocationZbefore_fixedZafter_fixedN)r r r �BeforeFixed�
AfterFixedr r r r r s r c @ s4 e Zd Zdd� Zdd� Zdd� Zdd� Zd d
� ZdS )� KBKDFHMACc C s> t |
t�stdtj��t |tj�s.tdtj��|
�|�sDtdtj��t |t �sVt
d��t |t�sht
d��|sp|r|| r|td��|d ks�| �
|�s�td��|d kr�| d kr�td��|d k r�t |t�s�t
d ��|d kr�d
}|d kr�d
}t�d|� t�d|� || _|| _|| _|| _|| _|| _|| _|| _|
| _d
| _| | _d S )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)�
isinstancer r
r ZBACKEND_MISSING_INTERFACEr Z
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�locationr r Zfixed�backendr r r �__init__ sX
��
�
zKBKDFHMAC.__init__c C s@ t |t�std��t�d|�}dt|� kr6dks<n dS dS )Nzvalue must be of type int� � FT)r r"