
     hk              
       
   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    h/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py_int_to_u32ber      s    ::Q%:000    	algorithmr   	otherinfoc                 ~    | j         dz  }||k    rt          d| d          |t          j        d|           d S d S )Nl    zCannot derive keys larger than z bits.r   )digest_size
ValueErrorr   _check_bytes)r   r   r   
max_lengths       r   _common_args_checksr      s]    
 &)4J
M:MMMNNN;	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UFFG
6//EGG	w''(((		ajjll####fRj//!1 6// 88FGVG$$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   r/   s        r   __init__zConcatKDFHash.__init__6   s?     	Ivy999#.7.C


r   r   c                 4    t          j        | j                  S N)r   Hashr1   r5   s    r   _hashzConcatKDFHash._hashD   s    {4?+++r   r   c                 n    | j         rt          d| _         t          || j        | j        | j                  S NT)r4   r   r,   r2   r;   r3   r5   r   s     r   derivezConcatKDFHash.deriveG   :    : 	#""
 $,
DO
 
 	
r   expected_keyc                 d    t          j        |                     |          |          st          d S r8   r   bytes_eqr?   r   r5   r   rA   s      r   verifyzConcatKDFHash.verifyO   3    %dkk,&?&?NN 		 	r   r8   )__name__
__module____qualname__r   HashAlgorithminttypingOptionalbytesAnyr6   r9   r;   r?   rF    r   r   r.   r.   5   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   r/   c                     t          |||           || _        || _        ||nd| _        |j        t          |j         d          |d|j        z  }nt          j        d|           || _	        d| _
        d S )Nr   z is unsupported for ConcatKDF    rT   F)r   r1   r2   r3   
block_size	TypeErrornamer   r   _saltr4   )r5   r   r   rT   r   r/   s         r   r6   zConcatKDFHMAC.__init__U   s     	Ivy999#.7.C'y~LLLMMM<Y11DDvt,,,



r   r   c                 @    t          j        | j        | j                  S r8   )r   HMACrZ   r1   r:   s    r   _hmaczConcatKDFHMAC._hmacn   s    yT_555r   r   c                 n    | j         rt          d| _         t          || j        | j        | j                  S r=   )r4   r   r,   r2   r]   r3   r>   s     r   r?   zConcatKDFHMAC.deriveq   r@   r   rA   c                 d    t          j        |                     |          |          st          d S r8   rC   rE   s      r   rF   zConcatKDFHMAC.verifyy   rG   r   r8   )rH   rI   rJ   r   rK   rL   rM   rN   rO   rP   r6   r   r\   r]   r?   rF   rQ   r   r   rS   rS   T   s         # '  oe$	
 ?5)    26ty 6 6 6 6
5 
U 
 
 
 
5  $      r   rS   )rM   cryptographyr   cryptography.exceptionsr   r   cryptography.hazmat.primitivesr   r   r   "cryptography.hazmat.primitives.kdfr	   rL   rO   r   rK   rN   r   CallableHashContextr,   r.   rS   rQ   r   r   <module>rf      s          @ @ @ @ @ @ @ @ F F F F F F F F F F D D D D D D1S 1U 1 1 1 1	3#	3	3 u%	3 
		3 	3 	3 	3%%% ?2v112% 	%
 % % % %.    )   >' ' ' ' ') ' ' ' ' 'r   