3 lá˜_ ã @ s¬ d dl mZmZmZ d dlZd dlmZ d dlmZm Z m Z mZ d dlm Z d dlmZ d dlmZmZ d dlmZ ejeƒG d d „ d eƒƒZejeƒG dd„ deƒƒZdS ) é )Úabsolute_importÚdivisionÚprint_functionN)Úutils)ÚAlreadyFinalizedÚ InvalidKeyÚUnsupportedAlgorithmÚ_Reasons)Ú_get_backend)ÚHMACBackend)Ú constant_timeÚhmac)ÚKeyDerivationFunctionc @ s. e Zd Zd dd„Zdd„ Zdd„ Zdd „ ZdS )ÚHKDFNc C sh t |ƒ}t|tƒstdtjƒ‚|| _|d kr:d| jj }ntj d|ƒ || _ || _t| j|||ƒ| _ d S )Nz.Backend object does not implement HMACBackend.ó Úsalt)r Ú isinstancer r r ÚBACKEND_MISSING_INTERFACEÚ _algorithmÚdigest_sizer Ú_check_bytesÚ_saltÚ_backendÚ HKDFExpandÚ_hkdf_expand)ÚselfÚ algorithmÚlengthr ÚinfoÚbackend© r ú/usr/lib64/python3.6/hkdf.pyÚ__init__ s z HKDF.__init__c C s( t j| j| j| jd�}|j|ƒ |jƒ S )N)r )r ÚHMACr r r ÚupdateÚfinalize)r Úkey_materialÚhr r r! Ú_extract- s z HKDF._extractc C s t jd|ƒ | jj| j|ƒƒS )Nr&