£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
3
l_                 @   s   d dl mZmZmZ d dlZd dlmZ d dlmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZmZmZ d d	lmZ d
d Zdd Zdd ZejeG dd deZejeG dd deZdS )    )absolute_importdivisionprint_functionN)utils)AlreadyFinalized
InvalidKeyUnsupportedAlgorithm_Reasons)_get_backend)HMACBackend)HashBackend)constant_timehasheshmac)KeyDerivationFunctionc             C   s   t jd| S )Nz>I)structpack)n r   !/usr/lib64/python3.6/concatkdf.py_int_to_u32be   s    r   c             C   s8   | j d }||kr tdj||d k	r4tjd| d S )N          z(Can not derive keys larger than {} bits.	otherinfol        l    )Zdigest_size
ValueErrorformatr   _check_bytes)	algorithmlengthr   Z
max_lengthr   r   r   _common_args_checks   s    
r    c             C   s   t jd|  dg}d}d}xZ||krt| }|jt| |j|  |j| |j|j  |t|d 7 }|d7 }qW dj|d | S )Nkey_material    r   r   )r   Z_check_byteslikeupdater   appendfinalizelenjoin)r!   r   Zauxfnr   outputZoutlenZcounterhr   r   r   _concatkdf_derive%   s    


r+   c               @   s.   e Zd Zd
ddZdd Zdd Zdd	 ZdS )ConcatKDFHashNc             C   s\   t |}t||| || _|| _|| _| jd kr6d| _t|tsLtdtj	|| _
d| _d S )Nr"   z.Backend object does not implement HashBackend.F)r
   r    
_algorithm_length
_otherinfo
isinstancer   r   r	   BACKEND_MISSING_INTERFACE_backend_used)selfr   r   r   backendr   r   r   __init__9   s    

zConcatKDFHash.__init__c             C   s   t j| j| jS )N)r   ZHashr-   r2   )r4   r   r   r   _hashK   s    zConcatKDFHash._hashc             C   s$   | j r
td| _ t|| j| j| jS )NT)r3   r   r+   r.   r7   r/   )r4   r!   r   r   r   deriveN   s
    zConcatKDFHash.derivec             C   s   t j| j||std S )N)r   bytes_eqr8   r   )r4   r!   expected_keyr   r   r   verifyV   s    zConcatKDFHash.verify)N)__name__
__module____qualname__r6   r7   r8   r;   r   r   r   r   r,   7   s   
r,   c               @   s.   e Zd Zd
ddZdd Zdd Zdd	 ZdS )ConcatKDFHMACNc             C   s   t |}t||| || _|| _|| _| jd kr6d| _|d krJd|j }ntjd| || _t	|t
srtdtj|| _d| _d S )Nr"       saltz.Backend object does not implement HMACBackend.F)r
   r    r-   r.   r/   Z
block_sizer   r   _saltr0   r   r   r	   r1   r2   r3   )r4   r   r   rA   r   r5   r   r   r   r6   ]   s"    

zConcatKDFHMAC.__init__c             C   s   t j| j| j| jS )N)r   ZHMACrB   r-   r2   )r4   r   r   r   _hmacv   s    zConcatKDFHMAC._hmacc             C   s$   | j r
td| _ t|| j| j| jS )NT)r3   r   r+   r.   rC   r/   )r4   r!   r   r   r   r8   y   s
    zConcatKDFHMAC.derivec             C   s   t j| j||std S )N)r   r9   r8   r   )r4   r!   r:   r   r   r   r;      s    zConcatKDFHMAC.verify)N)r<   r=   r>   r6   rC   r8   r;   r   r   r   r   r?   [   s   
r?   )Z
__future__r   r   r   r   Zcryptographyr   Zcryptography.exceptionsr   r   r   r	   Zcryptography.hazmat.backendsr
   Z'cryptography.hazmat.backends.interfacesr   r   Zcryptography.hazmat.primitivesr   r   r   Z"cryptography.hazmat.primitives.kdfr   r   r    r+   Zregister_interfaceobjectr,   r?   r   r   r   r   <module>   s   
#