�
�3Tf� � � � d dl mZ d dlZd dlmZ d dlmZmZ d dlm Z m
Z
mZ d dlm
Z
G d� de
� Z G d � d
e
� Zy)� )�annotationsN)�utils)�AlreadyFinalized�
InvalidKey)�
constant_time�hashes�hmac)�KeyDerivationFunctionc �B � e Zd Z d dd�Zdd�Zdd�Zd d�Zy)
�HKDFNc � � || _ |�d| j j z }nt j d|� || _ t | j ||� | _ y )N� �salt)�
_algorithm�digest_sizer �_check_bytes�_salt�
HKDFExpand�_hkdf_expand)�self� algorithm�lengthr �info�backends �I/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/kdf/hkdf.py�__init__z
HKDF.__init__ sP � � $����<��T�_�_�8�8�8�D����v�t�,���
�&�t�����E��� c � � t j | j | j � }|j |� |j � S �N)r �HMACr r �update�finalize)r �key_material�hs r �_extractz
HKDF._extract# s2 � ��I�I�d�j�j�$�/�/�2�� ������z�z�|�r c � � t j d|� | j j | j |� � S )Nr# )r �_check_bytesliker �deriver% �r r# s r r( zHKDF.derive( s2 � �
���~�|�<�� � �'�'��
�
�l�(C�D�Dr c �Z � t j | j |� |� st �y r �r �bytes_eqr( r �r r# �expected_keys r �verifyzHKDF.verify, �' |