
    (ph                        S SK Jr  S SKrS SKJ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 jr        SS	 jr          SS
 jr " S S\5      r " S S\5      rg)    )annotationsN)Callable)utils)AlreadyFinalized
InvalidKey)constant_timehasheshmac)KeyDerivationFunctionc                "    U R                  SSS9$ )N   big)length	byteorder)to_bytes)ns    _/var/www/html/venv/lib/python3.13/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py_int_to_u32ber      s    ::Q%:00    c                    U R                   S-  nX:  a  [        SU S35      eUb  [        R                  " SU5        g g )Nl    zCannot derive keys larger than z bits.	otherinfo)digest_size
ValueErrorr   _check_bytes)	algorithmr   r   
max_lengths       r   _common_args_checksr      sJ    
 &&)4J::,fMNN;	2 r   c                n   [         R                  " SU 5        S/nSnSnX:  a  U" 5       nUR                  [        U5      5        UR                  U 5        UR                  U5        UR	                  UR                  5       5        U[        US   5      -  nUS-  nX:  a  M  SR                  U5      S U $ )Nkey_materialr   r      )r   _check_byteslikeupdater   appendfinalizelenjoin)r   r   auxfnr   outputoutlencounterhs           r   _concatkdf_deriver-       s     
><8UFFG
/G	w'(		ajjl##fRj/!1 / 88FGV$$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)ConcatKDFHash7   Nc                Z    [        XU5        Xl        X l        Ub  UOSU l        SU l        g )Nr   F)r   
_algorithm_length
_otherinfo_used)selfr   r   r   backends        r   __init__ConcatKDFHash.__init__8   s-     	Iy9#.7.C
r   c                B    [         R                  " U R                  5      $ N)r	   Hashr2   r6   s    r   _hashConcatKDFHash._hashF   s    {{4??++r   c                    U R                   (       a  [        eSU l         [        XR                  U R                  U R
                  5      $ NT)r5   r   r-   r3   r>   r4   r6   r   s     r   deriveConcatKDFHash.deriveI   6    ::""
 ,,

DOO
 	
r   c                f    [         R                  " U R                  U5      U5      (       d  [        eg r;   r   bytes_eqrC   r   r6   r   expected_keys      r   verifyConcatKDFHash.verifyQ   *    %%dkk,&?NN Or   )r2   r3   r4   r5   r;   )r   hashes.HashAlgorithmr   intr   bytes | Noner7   
typing.Any)returnzhashes.Hashr   utils.BufferrR   bytesr   rU   rJ   rU   rR   None)	__name__
__module____qualname____firstlineno__r8   r>   rC   rK   __static_attributes__ r   r   r/   r/   7   sA     #'   	
 ,
r   r/   c                  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)ConcatKDFHMACV   Nc                   [        XU5        Xl        X l        Ub  UOSU l        UR                  c  [        UR                   S35      eUc  SUR                  -  nO[        R                  " SU5        X0l	        SU l
        g )Nr   z is unsupported for ConcatKDF    saltF)r   r2   r3   r4   
block_size	TypeErrornamer   r   _saltr5   )r6   r   r   rc   r   r7   s         r   r8   ConcatKDFHMAC.__init__W   s{     	Iy9#.7.C'y~~..KLMM<Y111Dvt,

r   c                X    [         R                  " U R                  U R                  5      $ r;   )r
   HMACrg   r2   r=   s    r   _hmacConcatKDFHMAC._hmacp   s    yyT__55r   c                    U R                   (       a  [        eSU l         [        XR                  U R                  U R
                  5      $ rA   )r5   r   r-   r3   rk   r4   rB   s     r   rC   ConcatKDFHMAC.derives   rE   r   c                f    [         R                  " U R                  U5      U5      (       d  [        eg r;   rG   rI   s      r   rK   ConcatKDFHMAC.verify{   rM   r   )r2   r3   r4   rg   r5   r;   )
r   rN   r   rO   rc   rP   r   rP   r7   rQ   )rR   z	hmac.HMACrS   rV   )	rX   rY   rZ   r[   r8   rk   rC   rK   r\   r]   r   r   r_   r_   V   sK     #'  	
   26
r   r_   )r   rO   rR   rU   )r   rN   r   rO   r   rP   rR   rW   )
r   rT   r   rO   r(   z Callable[[], hashes.HashContext]r   rU   rR   rU   )
__future__r   typingcollections.abcr   cryptographyr   cryptography.exceptionsr   r   cryptography.hazmat.primitivesr   r	   r
   "cryptography.hazmat.primitives.kdfr   r   r   r-   r/   r_   r]   r   r   <module>rx      s   
 #  $  @ F F D1	3#	3	3 	3 
		3%%% ,% 	%
 %.) >') 'r   