£Á°è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_g	                 @   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mZ d dlmZ d	d
 ZejeG dd deZdS )    )absolute_importdivisionprint_functionN)utils)AlreadyFinalized
InvalidKeyUnsupportedAlgorithm_Reasons)_get_backend)HashBackend)constant_timehashes)KeyDerivationFunctionc             C   s   t jd| S )Nz>I)structpack)n r   /usr/lib64/python3.6/x963kdf.py_int_to_u32be   s    r   c               @   s&   e Zd ZdddZdd Zdd ZdS )	X963KDFNc             C   st   t |}|jd	 }||kr(tdj||d k	r<tjd| || _|| _|| _t	|t
sdtdtj|| _d| _d S )
N          z(Can not derive keys larger than {} bits.
sharedinfoz.Backend object does not implement HashBackend.Fl        l    )r
   Zdigest_size
ValueErrorformatr   _check_bytes
_algorithm_length_sharedinfo
isinstancer   r   r	   ZBACKEND_MISSING_INTERFACE_backend_used)self	algorithmZlengthr   ZbackendZmax_lenr   r   r   __init__   s     

zX963KDF.__init__c             C   s   | j r
td| _ tjd| dg}d}d}xr| j|krtj| j| j}|j	| |j	t
| | jd k	rt|j	| j |j|j  |t|d 7 }|d7 }q,W dj|d | j S )NTkey_material    r   r   )r"   r   r   Z_check_bytesliker   r   ZHashr   r!   updater   r   appendfinalizelenjoin)r#   r&   outputZoutlenZcounterhr   r   r   derive3   s"    

zX963KDF.derivec             C   s   t j| j||std S )N)r   Zbytes_eqr0   r   )r#   r&   Zexpected_keyr   r   r   verifyH   s    zX963KDF.verify)N)__name__
__module____qualname__r%   r0   r1   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   Zcryptography.hazmat.primitivesr   r   Z"cryptography.hazmat.primitives.kdfr   r   Zregister_interfaceobjectr   r   r   r   r   <module>   s   