§
    pïgâ  ã                   ór   — d dl Z d dlmZ d dlmZmZ d dlmZmZ d dl	m
Z
 dedefd„Z G d	„ d
e
¦  «        ZdS )é    N)Úutils)ÚAlreadyFinalizedÚ
InvalidKey)Úconstant_timeÚhashes)ÚKeyDerivationFunctionÚnÚreturnc                 ó0   — |                       dd¬¦  «        S )Né   Úbig)ÚlengthÚ	byteorder)Úto_bytes)r	   s    úL/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/kdf/x963kdf.pyÚ_int_to_u32ber      s   € Ø�:Š:˜Q¨%ˆ:Ñ0Ô0Ð0ó    c            	       óx   — e Zd Z	 ddej        dedej        e         dej	        fd„Z
dedefd	„Zded
eddfd„ZdS )ÚX963KDFNÚ	algorithmr   Ú
sharedinfoÚbackendc                 óÐ   — |j         dz  }||k    r"t          d                     |¦  «        ¦  «        ‚|�t          j        d|¦  «         || _        || _        || _        d| _        d S )Nl   ÿÿ z'Cannot derive keys larger than {} bits.r   F)	Údigest_sizeÚ
ValueErrorÚformatr   Ú_check_bytesÚ
_algorithmÚ_lengthÚ_sharedinfoÚ_used)Úselfr   r   r   r   Úmax_lens         r   Ú__init__zX963KDF.__init__   s{   € ð Ô'¨9Ñ5ˆØ�GÒÐÝØ9×@Ò@ÀÑIÔIñô ð ð Ð!ÝÔ˜|¨ZÑ8Ô8Ð8à#ˆŒØˆŒØ%ˆÔØˆŒ
ˆ
ˆ
r   Úkey_materialr
   c                 ó>  — | j         rt          ‚d| _         t          j        d|¦  «         dg}d}d}| j        |k    rÀt          j        | j        ¦  «        }|                     |¦  «         |                     t          |¦  «        ¦  «         | j
        �|                     | j
        ¦  «         |                     |                     ¦   «         ¦  «         |t          |d         ¦  «        z  }|dz  }| j        |k    °Àd                     |¦  «        d | j        …         S )NTr%   r   r   é   éÿÿÿÿ)r!   r   r   Ú_check_bytesliker   r   ÚHashr   Úupdater   r    ÚappendÚfinalizeÚlenÚjoin)r"   r%   ÚoutputÚoutlenÚcounterÚhs         r   ÚderivezX963KDF.derive*   s
  € ØŒ:ð 	#Ý"Ð"ØˆŒ
ÝÔ˜~¨|Ñ<Ô<Ð<Ø�ˆØˆØˆàŒl˜VÒ#Ð#Ý”˜DœOÑ,Ô,ˆAØ�HŠH�\Ñ"Ô"Ð"Ø�HŠH•] 7Ñ+Ô+Ñ,Ô,Ð,ØÔÐ+Ø—’˜Ô)Ñ*Ô*Ð*Ø�MŠM˜!Ÿ*š*™,œ,Ñ'Ô'Ð'Ø•c˜& œ*‘o”oÑ%ˆFØ�q‰LˆGð Œl˜VÒ#Ð#ð �xŠx˜ÑÔ  $¤, Ô/Ð/r   Úexpected_keyc                 ód   — t          j        |                      |¦  «        |¦  «        st          ‚d S ©N)r   Úbytes_eqr4   r   )r"   r%   r5   s      r   ÚverifyzX963KDF.verify?   s3   € ÝÔ% d§k¢k°,Ñ&?Ô&?ÀÑNÔNð 	ÝÐð	ð 	r   r7   )Ú__name__Ú
__module__Ú__qualname__r   ÚHashAlgorithmÚintÚtypingÚOptionalÚbytesÚAnyr$   r4   r9   © r   r   r   r      s¯   € € € € € ð #ðð àÔ'ðð ðð ”O EÔ*ð	ð
 ”ðð ð ð ð(0 5ð 0¨Uð 0ð 0ð 0ð 0ð* 5ð ¸ð À$ð ð ð ð ð ð r   r   )r?   Úcryptographyr   Úcryptography.exceptionsr   r   Úcryptography.hazmat.primitivesr   r   Ú"cryptography.hazmat.primitives.kdfr   r>   rA   r   r   rC   r   r   ú<module>rH      sÎ   ðð €€€à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð AÐ @Ð @Ð @Ð @Ð @Ð @Ð @Ø DÐ DÐ DÐ DÐ DÐ Dð1�Sð 1˜Uð 1ð 1ð 1ð 1ð,ð ,ð ,ð ,ð ,Ð#ñ ,ô ,ð ,ð ,ð ,r   