§
    ¡ã hÂ  ã                   ó‚   — 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  G d„ de¦  «        Z G d„ d	e¦  «        ZdS )
é    N)Úutils)ÚAlreadyFinalizedÚ
InvalidKey)Úconstant_timeÚhashesÚhmac)ÚKeyDerivationFunctionc                   ó¢   — 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d	efd
„Zded	efd„Zdeded	dfd„ZdS )ÚHKDFNÚ	algorithmÚlengthÚsaltÚinfoÚbackendc                 ó¦   — || _         |€d| j         j        z  }nt          j        d|¦  «         || _        t          | j         ||¦  «        | _        d S )Nó    r   )Ú
_algorithmÚdigest_sizer   Ú_check_bytesÚ_saltÚ
HKDFExpandÚ_hkdf_expand)Úselfr   r   r   r   r   s         úc/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/cryptography/hazmat/primitives/kdf/hkdf.pyÚ__init__zHKDF.__init__   sW   € ð $ˆŒàˆ<Ø˜Tœ_Ô8Ñ8ˆDˆDåÔ˜v tÑ,Ô,Ð,àˆŒ
å& t¤¸ÀÑEÔEˆÔÐÐó    Úkey_materialÚreturnc                 ó’   — t          j        | j        | j        ¦  «        }|                     |¦  «         |                     ¦   «         S ©N)r   ÚHMACr   r   ÚupdateÚfinalize)r   r   Úhs      r   Ú_extractzHKDF._extract"   s7   € ÝŒId”j $¤/Ñ2Ô2ˆØ	ŠÑÔÐØzŠz‰|Œ|Ðr   c                 ó†   — t          j        d|¦  «         | j                             |                      |¦  «        ¦  «        S )Nr   )r   Ú_check_bytesliker   Úderiver%   ©r   r   s     r   r(   zHKDF.derive'   s8   € ÝÔ˜~¨|Ñ<Ô<Ð<ØÔ ×'Ò'¨¯ª°lÑ(CÔ(CÑDÔDÐDr   Úexpected_keyc                 ód   — t          j        |                      |¦  «        |¦  «        st          ‚d S r    ©r   Úbytes_eqr(   r   ©r   r   r*   s      r   ÚverifyzHKDF.verify+   ó3   € ÝÔ% d§k¢k°,Ñ&?Ô&?ÀÑNÔNð 	ÝÐð	ð 	r   r    )Ú__name__Ú
__module__Ú__qualname__r   ÚHashAlgorithmÚintÚtypingÚOptionalÚbytesÚAnyr   r%   r(   r/   © r   r   r   r      sò   € € € € € ð #ðFð FàÔ'ðFð ðFð Œo˜eÔ$ð	Fð
 Œo˜eÔ$ðFð ”ðFð Fð Fð Fð& Uð ¨uð ð ð ð ð
E 5ð E¨Uð Eð Eð Eð Eð 5ð ¸ð À$ð ð ð ð ð ð r   r   c            	       óˆ   — 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fd
„Zdededdfd„ZdS )r   Nr   r   r   r   c                 ó¸   — || _         d|j        z  }||k    rt          d|› d¦  «        ‚|| _        |€d}nt	          j        d|¦  «         || _        d| _        d S )Néÿ   zCannot derive keys larger than z octets.r   r   F)r   r   Ú
ValueErrorÚ_lengthr   r   Ú_infoÚ_used)r   r   r   r   r   Ú
max_lengths         r   r   zHKDFExpand.__init__1   s}   € ð $ˆŒà˜9Ô0Ñ0ˆ
àJÒÐÝØF°*ÐFÐFÐFñô ð ð ˆŒàˆ<ØˆDˆDåÔ˜v tÑ,Ô,Ð,àˆŒ
àˆŒ
ˆ
ˆ
r   r   r   c                 ó,  — dg}d}| j         j        t          |¦  «        dz
  z  | j        k     rÆt	          j        || j         ¦  «        }|                     |d         ¦  «         |                     | j        ¦  «         |                     t          |g¦  «        ¦  «         | 	                    | 
                    ¦   «         ¦  «         |dz  }| j         j        t          |¦  «        dz
  z  | j        k     °Æd                     |¦  «        d | j        …         S )Nr   é   éÿÿÿÿ)r   r   Úlenr?   r   r!   r"   r@   r8   Úappendr#   Újoin)r   r   ÚoutputÚcounterr$   s        r   Ú_expandzHKDFExpand._expandL   sí   € ØˆØˆàŒoÔ)­S°©[¬[¸1©_Ñ=ÀÄÒLÐLÝ”	˜,¨¬Ñ8Ô8ˆAØHŠHV˜B”ZÑ Ô Ð ØHŠHT”ZÑ Ô Ð ØHŠH•U˜G˜9Ñ%Ô%Ñ&Ô&Ð&ØMŠM˜!Ÿ*š*™,œ,Ñ'Ô'Ð'Øq‰LˆGð ŒoÔ)­S°©[¬[¸1©_Ñ=ÀÄÒLÐLð xŠx˜ÑÔ  $¤, Ô/Ð/r   c                 ó€   — t          j        d|¦  «         | j        rt          ‚d| _        |                      |¦  «        S )Nr   T)r   r'   rA   r   rK   r)   s     r   r(   zHKDFExpand.deriveZ   s>   € ÝÔ˜~¨|Ñ<Ô<Ð<ØŒ:ð 	#Ý"Ð"àˆŒ
Ø|Š|˜LÑ)Ô)Ð)r   r*   c                 ód   — t          j        |                      |¦  «        |¦  «        st          ‚d S r    r,   r.   s      r   r/   zHKDFExpand.verifyb   r0   r   r    )r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r   rK   r(   r/   r:   r   r   r   r   0   sÑ   € € € € € ð #ðð àÔ'ðð ðð Œo˜eÔ$ð	ð
 ”ðð ð ð ð60 Eð 0¨eð 0ð 0ð 0ð 0ð* 5ð *¨Uð *ð *ð *ð *ð 5ð ¸ð À$ð ð ð ð ð ð r   r   )r6   Úcryptographyr   Úcryptography.exceptionsr   r   Úcryptography.hazmat.primitivesr   r   r   Ú"cryptography.hazmat.primitives.kdfr	   r   r   r:   r   r   ú<module>rR      sË   ðð €€€à Ð Ð Ð Ð Ð Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ DÐ DÐ DÐ DÐ DÐ Dðð ð ð ð Ð ñ ô ð ðD4ð 4ð 4ð 4ð 4Ð&ñ 4ô 4ð 4ð 4ð 4r   