
    .Ph                    v    d dl mZ 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dZ G d de          ZdS )    )annotationsN)utils)AlreadyFinalized
InvalidKey)constant_timehashes)KeyDerivationFunctionnintreturnbytesc                0    |                      dd          S )N   big)length	byteorder)to_bytes)r
   s    j/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py_int_to_u32ber      s    ::Q%:000    c                  *    e Zd Z	 ddd
ZddZddZdS )X963KDFN	algorithmhashes.HashAlgorithmr   r   
sharedinfobytes | Nonebackend
typing.Anyc                    |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_materialutils.Bufferr   r   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_keyNonec                d    t          j        |                     |          |          st          d S N)r   bytes_eqr:   r   )r'   r*   r;   s      r   verifyzX963KDF.verify;   s3    %dkk,&?&?NN 		 	r   r>   )r   r   r   r   r   r   r   r   )r*   r+   r   r   )r*   r   r;   r   r   r<   )__name__
__module____qualname__r)   r:   r@    r   r   r   r      sZ         #    $0 0 0 0*     r   r   )r
   r   r   r   )
__future__r   typingcryptographyr   cryptography.exceptionsr   r   cryptography.hazmat.primitivesr   r   "cryptography.hazmat.primitives.kdfr	   r   r   rD   r   r   <module>rK      s   
 # " " " " "        @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ D D D D D D1 1 1 1* * * * *# * * * * *r   