
     h                     r    d dl Z d dlmZ d dlmZmZ d dlmZmZ d dl	m
Z
 dedefdZ G d	 d
e
          ZdS )    N)utils)AlreadyFinalized
InvalidKey)constant_timehashes)KeyDerivationFunctionnreturnc                 0    |                      dd          S )N   big)length	byteorder)to_bytes)r	   s    f/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py_int_to_u32ber      s    ::Q%:000    c            	       x    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ddfdZdS )X963KDFN	algorithmr   
sharedinfobackendc                     |j         dz  }||k    rt          d| d          |t          j        d|           || _        || _        || _        d| _        d S )Nl    zCannot derive keys larger than z bits.r   F)digest_size
ValueErrorr   _check_bytes
_algorithm_length_sharedinfo_used)selfr   r   r   r   max_lens         r   __init__zX963KDF.__init__   sp     '95GNwNNNOOO!|Z888#%


r   key_materialr
   c                 >   | j         rt          d| _         t          j        d|           dg}d}d}| j        |k    rt          j        | j                  }|                    |           |                    t          |                     | j
        |                    | j
                   |                    |                                           |t          |d                   z  }|dz  }| j        |k    d                    |          d | j                 S )NTr$   r   r      )r    r   r   _check_bytesliker   r   Hashr   updater   r   appendfinalizelenjoin)r!   r$   outputoutlencounterhs         r   derivezX963KDF.derive%   s
   : 	#""
~|<<<lV##DO,,AHH\"""HH]7++,,,+)***MM!**,,'''c&*oo%FqLG lV## xx$,//r   expected_keyc                 d    t          j        |                     |          |          st          d S N)r   bytes_eqr3   r   )r!   r$   r4   s      r   verifyzX963KDF.verify:   s3    %dkk,&?&?NN 		 	r   r6   )__name__
__module____qualname__r   HashAlgorithminttypingOptionalbytesAnyr#   r3   r8    r   r   r   r      s         # '  OE*	
    $05 0U 0 0 0 0*5  $      r   r   )r>   cryptographyr   cryptography.exceptionsr   r   cryptography.hazmat.primitivesr   r   "cryptography.hazmat.primitives.kdfr   r=   r@   r   r   rB   r   r   <module>rG      s           @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ D D D D D D1S 1U 1 1 1 1* * * * *# * * * * *r   