§
    pïg¼  ã            
       ó
  — d dl Z d dlmZ d dlmZmZ d dlmZmZm	Z	 d dl
mZ dedefd„Zd	ej        d
ede j        e         ddfd„Zded
ede j        g ej        f         dedef
d„Z G d„ de¦  «        Z G d„ de¦  «        ZdS )é    N)Úutils)ÚAlreadyFinalizedÚ
InvalidKey)Úconstant_timeÚhashesÚhmac)ÚKeyDerivationFunctionÚnÚreturnc                 ó0   — |                       dd¬¦  «        S )Né   Úbig)ÚlengthÚ	byteorder)Úto_bytes)r
   s    úN/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/kdf/concatkdf.pyÚ_int_to_u32ber      s   € Ø�:Š:˜Q¨%ˆ:Ñ0Ô0Ð0ó    Ú	algorithmr   Ú	otherinfoc                 óœ   — | j         dz  }||k    r"t          d                     |¦  «        ¦  «        ‚|�t          j        d|¦  «         d S d S )Nl   ÿÿ z'Cannot derive keys larger than {} bits.r   )Údigest_sizeÚ
ValueErrorÚformatr   Ú_check_bytes)r   r   r   Ú
max_lengths       r   Ú_common_args_checksr      sh   € ð
 Ô&¨)Ñ4€JØ�
ÒÐÝØ5×<Ò<¸ZÑHÔHñ
ô 
ð 	
ð ÐÝÔ˜;¨	Ñ2Ô2Ð2Ð2Ð2ð Ðr   Úkey_materialÚauxfnc                 óÀ  — t          j        d| ¦  «         dg}d}d}||k    r  |¦   «         }|                     t          |¦  «        ¦  «         |                     | ¦  «         |                     |¦  «         |                     |                     ¦   «         ¦  «         |t          |d         ¦  «        z  }|dz  }||k    ° d                     |¦  «        d |…         S )Nr   r   r   é   éÿÿÿÿ)r   Ú_check_byteslikeÚupdater   ÚappendÚfinalizeÚlenÚjoin)r   r   r   r   ÚoutputÚoutlenÚcounterÚhs           r   Ú_concatkdf_deriver-   #   sÙ   € õ 
Ô˜>¨<Ñ8Ô8Ð8ØˆU€FØ€FØ€Gà
�6Š/ˆ/ØˆE‰GŒGˆØ	�Š•˜wÑ'Ô'Ñ(Ô(Ð(Ø	�Š�ÑÔÐØ	�Š�ÑÔÐØ�Š�a—j’j‘l”lÑ#Ô#Ð#Ø•#�f˜R”j‘/”/Ñ!ˆØ�1‰ˆð �6Š/ˆ/ð �8Š8�FÑÔ˜G˜V˜GÔ$Ð$r   c            	       óŽ   — e Zd Z	 ddej        dedej        e         dej	        fd„Z
dej        fd„Zd	edefd
„Zd	ededdfd„ZdS )ÚConcatKDFHashNr   r   r   Úbackendc                 óh   — t          |||¦  «         || _        || _        |�|nd| _        d| _        d S )Nr   F)r   Ú
_algorithmÚ_lengthÚ
_otherinfoÚ_used)Úselfr   r   r   r0   s        r   Ú__init__zConcatKDFHash.__init__;   s?   € õ 	˜I v¨yÑ9Ô9Ð9Ø#ˆŒØˆŒØ.7Ð.C  ÈˆŒàˆŒ
ˆ
ˆ
r   r   c                 ó4   — t          j        | j        ¦  «        S ©N)r   ÚHashr2   ©r6   s    r   Ú_hashzConcatKDFHash._hashI   s   € ÝŒ{˜4œ?Ñ+Ô+Ð+r   r   c                 ón   — | j         rt          ‚d| _         t          || j        | j        | j        ¦  «        S ©NT)r5   r   r-   r3   r<   r4   ©r6   r   s     r   ÚderivezConcatKDFHash.deriveL   ó:   € ØŒ:ð 	#Ý"Ð"ØˆŒ
Ý Ø˜$œ,¨¬
°D´Oñ
ô 
ð 	
r   Úexpected_keyc                 ód   — t          j        |                      |¦  «        |¦  «        st          ‚d S r9   ©r   Úbytes_eqr@   r   ©r6   r   rB   s      r   ÚverifyzConcatKDFHash.verifyT   ó3   € ÝÔ% d§k¢k°,Ñ&?Ô&?ÀÑNÔNð 	ÝÐð	ð 	r   r9   )Ú__name__Ú
__module__Ú__qualname__r   ÚHashAlgorithmÚintÚtypingÚOptionalÚbytesÚAnyr7   r:   r<   r@   rG   © r   r   r/   r/   :   sÌ   € € € € € ð #ðð àÔ'ðð ðð ”? 5Ô)ð	ð
 ”ðð ð ð ð,�v”{ð ,ð ,ð ,ð ,ð
 5ð 
¨Uð 
ð 
ð 
ð 
ð 5ð ¸ð À$ð ð ð ð ð ð r   r/   c                   ó¨   — e Zd Z	 ddej        dedej        e         dej        e         dej	        f
d„Z
dej        fd	„Zd
edefd„Zd
ededdfd„ZdS )ÚConcatKDFHMACNr   r   Úsaltr   r0   c                 ó  — t          |||¦  «         || _        || _        |�|nd| _        |j        €'t          d                     |j        ¦  «        ¦  «        ‚|€d|j        z  }nt          j	        d|¦  «         || _
        d| _        d S )Nr   z{} is unsupported for ConcatKDFó    rU   F)r   r2   r3   r4   Ú
block_sizeÚ	TypeErrorr   Únamer   r   Ú_saltr5   )r6   r   r   rU   r   r0   s         r   r7   zConcatKDFHMAC.__init__Z   s�   € õ 	˜I v¨yÑ9Ô9Ð9Ø#ˆŒØˆŒØ.7Ð.C  ÈˆŒàÔÐ'ÝØ1×8Ò8¸¼ÑHÔHñô ð ð ˆ<Ø˜YÔ1Ñ1ˆDˆDåÔ˜v tÑ,Ô,Ð,àˆŒ
àˆŒ
ˆ
ˆ
r   r   c                 ó@   — t          j        | j        | j        ¦  «        S r9   )r   ÚHMACr[   r2   r;   s    r   Ú_hmaczConcatKDFHMAC._hmacu   s   € ÝŒy˜œ T¤_Ñ5Ô5Ð5r   r   c                 ón   — | j         rt          ‚d| _         t          || j        | j        | j        ¦  «        S r>   )r5   r   r-   r3   r^   r4   r?   s     r   r@   zConcatKDFHMAC.derivex   rA   r   rB   c                 ód   — t          j        |                      |¦  «        |¦  «        st          ‚d S r9   rD   rF   s      r   rG   zConcatKDFHMAC.verify€   rH   r   r9   )rI   rJ   rK   r   rL   rM   rN   rO   rP   rQ   r7   r   r]   r^   r@   rG   rR   r   r   rT   rT   Y   sÝ   € € € € € ð #ðð àÔ'ðð ðð Œo˜eÔ$ð	ð
 ”? 5Ô)ðð ”ðð ð ð ð66�t”yð 6ð 6ð 6ð 6ð
 5ð 
¨Uð 
ð 
ð 
ð 
ð 5ð ¸ð À$ð ð ð ð ð ð r   rT   )rN   Úcryptographyr   Úcryptography.exceptionsr   r   Úcryptography.hazmat.primitivesr   r   r   Ú"cryptography.hazmat.primitives.kdfr	   rM   rP   r   rL   rO   r   ÚCallableÚHashContextr-   r/   rT   rR   r   r   ú<module>rg      s’  ðð €€€à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð GÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ DÐ DÐ DÐ DÐ DÐ Dð1�Sð 1˜Uð 1ð 1ð 1ð 1ð3ØÔ#ð3àð3ð Œ˜uÔ%ð3ð 
ð	3ð 3ð 3ð 3ð%Øð%àð%ð Œ?˜2˜vÔ1Ð1Ô2ð%ð ð	%ð
 ð%ð %ð %ð %ð.ð ð ð ð Ð)ñ ô ð ð>)ð )ð )ð )ð )Ð)ñ )ô )ð )ð )ð )r   