
    .Ph                        d dl mZ d dlZd dlm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dZddZddZ G d de          Z G d de          ZdS )     )annotationsN)Callable)utils)AlreadyFinalized
InvalidKey)constant_timehasheshmac)KeyDerivationFunctionnintreturnbytesc                0    |                      dd          S )N   big)length	byteorder)to_bytes)r   s    l/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py_int_to_u32ber      s    ::Q%:000    	algorithmhashes.HashAlgorithmr   	otherinfobytes | NoneNonec                ~    | 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utils.Bufferauxfn Callable[[], hashes.HashContext]c                   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_deriver5       s     
><888UFFG
6//EGG	w''(((		ajjll####fRj//!1 6// 88FGVG$$r   c                  2    e Zd Z	 ddd
ZddZddZddZdS )ConcatKDFHashNr   r   r   r   r   r   backend
typing.Anyc                h    t          |||           || _        || _        ||nd| _        d| _        d S )Nr   F)r#   
_algorithm_length
_otherinfo_used)selfr   r   r   r8   s        r   __init__zConcatKDFHash.__init__8   s?     	Ivy999#.7.C


r   r   hashes.Hashc                4    t          j        | j                  S N)r	   Hashr;   r?   s    r   _hashzConcatKDFHash._hashF   s    {4?+++r   r$   r%   r   c                n    | j         rt          d| _         t          || j        | j        | j                  S NT)r>   r   r5   r<   rF   r=   r?   r$   s     r   derivezConcatKDFHash.deriveI   :    : 	#""
 $,
DO
 
 	
r   expected_keyr   c                d    t          j        |                     |          |          st          d S rC   r   bytes_eqrJ   r   r?   r$   rL   s      r   verifyzConcatKDFHash.verifyQ   3    %dkk,&?&?NN 		 	r   rC   )r   r   r   r   r   r   r8   r9   )r   rA   r$   r%   r   r   r$   r   rL   r   r   r   )__name__
__module____qualname__r@   rF   rJ   rQ    r   r   r7   r7   7   sn         #    , , , ,
 
 
 
     r   r7   c                  2    e Zd Z	 dddZddZddZddZdS )ConcatKDFHMACNr   r   r   r   saltr   r   r8   r9   c                    t          |||           || _        || _        ||nd| _        |j        t          |j         d          |d|j        z  }nt          j        d|           || _	        d| _
        d S )Nr   z is unsupported for ConcatKDF    r[   F)r#   r;   r<   r=   
block_size	TypeErrornamer   r!   _saltr>   )r?   r   r   r[   r   r8   s         r   r@   zConcatKDFHMAC.__init__W   s     	Ivy999#.7.C'y~LLLMMM<Y11DDvt,,,



r   r   	hmac.HMACc                @    t          j        | j        | j                  S rC   )r
   HMACra   r;   rE   s    r   _hmaczConcatKDFHMAC._hmacp   s    yT_555r   r$   r%   r   c                n    | j         rt          d| _         t          || j        | j        | j                  S rH   )r>   r   r5   r<   re   r=   rI   s     r   rJ   zConcatKDFHMAC.derives   rK   r   rL   r   c                d    t          j        |                     |          |          st          d S rC   rN   rP   s      r   rQ   zConcatKDFHMAC.verify{   rR   r   rC   )
r   r   r   r   r[   r   r   r   r8   r9   )r   rb   rS   rT   )rU   rV   rW   r@   re   rJ   rQ   rX   r   r   rZ   rZ   V   sn         #    26 6 6 6
 
 
 
     r   rZ   )r   r   r   r   )r   r   r   r   r   r   r   r   )
r$   r%   r   r   r&   r'   r   r   r   r   )
__future__r   typingcollections.abcr   cryptographyr   cryptography.exceptionsr   r   cryptography.hazmat.primitivesr   r	   r
   "cryptography.hazmat.primitives.kdfr   r   r#   r5   r7   rZ   rX   r   r   <module>ro      s*  
 # " " " " "  $ $ $ $ $ $       @ @ @ @ @ @ @ @ F F F F F F F F F F D D D D D D1 1 1 1	3 	3 	3 	3% % % %.    )   >' ' ' ' ') ' ' ' ' 'r   