
    (ph                        S SK Jr  S SKrS SKJr  S SKJrJr  S SKJ	r	J
r
Jr  S SKJr   " S S\5      r " S	 S
\5      rg)    )annotationsN)utils)AlreadyFinalized
InvalidKey)constant_timehasheshmac)KeyDerivationFunctionc                  T    \ rS rSr S         S	S jjrS
S jrS
S jrSS jrSrg)HKDF   Nc                    Xl         Uc  SU R                   R                  -  nO[        R                  " SU5        X0l        [        U R                   X$5      U l        g )N    salt)
_algorithmdigest_sizer   _check_bytes_salt
HKDFExpand_hkdf_expand)self	algorithmlengthr   infobackends         Z/var/www/html/venv/lib/python3.13/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py__init__HKDF.__init__   sJ     $<T__888Dvt,
&tE    c                    [         R                  " U R                  U R                  5      nUR	                  U5        UR                  5       $ N)r	   HMACr   r   updatefinalize)r   key_materialhs      r   _extractHKDF._extract#   s2    IIdjj$//2	zz|r   c                    [         R                  " SU5        U R                  R                  U R	                  U5      5      $ )Nr%   )r   _check_bytesliker   deriver'   r   r%   s     r   r+   HKDF.derive(   s2    ~|<  ''l(CDDr   c                f    [         R                  " U R                  U5      U5      (       d  [        eg r!   r   bytes_eqr+   r   r   r%   expected_keys      r   verifyHKDF.verify,   *    %%dkk,&?NN Or   )r   r   r   r!   )
r   hashes.HashAlgorithmr   intr   bytes | Noner   r8   r   
typing.Anyr%   zutils.Bufferreturnbytesr%   r<   r2   r<   r;   None)	__name__
__module____qualname____firstlineno__r   r'   r+   r3   __static_attributes__ r   r   r   r      sR     #F'F F 	F
 F F&
Er   r   c                  P    \ rS rSr S       S	S jjrS
S jrS
S jrSS jrSrg)r   1   Nc                    Xl         SUR                  -  nX%:  a  [        SU S35      eX l        Uc  SnO[        R
                  " SU5        X0l        SU l        g )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   HKDFExpand.__init__2   se     $9000
1*XF  <Dvt,

r   c                4   S/nSnU R                   R                  [        U5      S-
  -  U R                  :  a  [        R
                  " XR                   5      nUR                  US   5        UR                  U R                  5        UR                  [        U/5      5        UR                  UR                  5       5        US-  nU R                   R                  [        U5      S-
  -  U R                  :  a  M  SR                  U5      S U R                   $ )Nr      )r   r   lenrJ   r	   r"   r#   rK   r<   appendr$   join)r   r%   outputcounterr&   s        r   _expandHKDFExpand._expandM   s    oo))S[1_=L		,8AHHVBZ HHTZZ HHUG9%&MM!**,'qLG oo))S[1_=L xx$,,//r   c                    [         R                  " SU5        U R                  (       a  [        eSU l        U R	                  U5      $ )Nr%   T)r   r*   rL   r   rW   r,   s     r   r+   HKDFExpand.derive[   s5    ~|<::""
||L))r   c                f    [         R                  " U R                  U5      U5      (       d  [        eg r!   r/   r1   s      r   r3   HKDFExpand.verifyc   r5   r   )r   rK   rJ   rL   r!   )r   r6   r   r7   r   r8   r   r9   r:   r=   )	r?   r@   rA   rB   r   rW   r+   r3   rC   rD   r   r   r   r   1   sA     #'  	
 60*r   r   )
__future__r   typingcryptographyr   cryptography.exceptionsr   r   cryptography.hazmat.primitivesr   r   r	   "cryptography.hazmat.primitives.kdfr
   r   r   rD   r   r   <module>rc      s7   
 #   @ F F D  D4& 4r   