
    _f                        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
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)utils)AlreadyFinalized
InvalidKey)constant_timehasheshmac)KeyDerivationFunctionnintreturnbytesc                0    |                      dd          S )N   big)length	byteorder)to_bytes)r   s    ^/var/www/html/env/lib/python3.11/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py_int_to_u32ber      s    ::Q%:000    	algorithmhashes.HashAlgorithmr   	otherinfotyping.Optional[bytes]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auxfn'typing.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_deriver3      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   r6   s        r   __init__zConcatKDFHash.__init__7   s?     	Ivy999#.7.C


r   r   hashes.Hashc                4    t          j        | j                  S N)r   Hashr9   r=   s    r   _hashzConcatKDFHash._hashE   s    {4?+++r   r#   r   c                n    | j         rt          d| _         t          || j        | j        | j                  S NT)r<   r   r3   r:   rD   r;   r=   r#   s     r   derivezConcatKDFHash.deriveH   :    : 	#""
 $,
DO
 
 	
r   expected_keyr   c                d    t          j        |                     |          |          st          d S rA   r   bytes_eqrH   r   r=   r#   rJ   s      r   verifyzConcatKDFHash.verifyP   3    %dkk,&?&?NN 		 	r   rA   )r   r   r   r   r   r   r6   r7   )r   r?   r#   r   r   r   r#   r   rJ   r   r   r   )__name__
__module____qualname__r>   rD   rH   rO    r   r   r5   r5   6   sn         #    , , , ,
 
 
 
     r   r5   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   r6   r7   c                    t          |||           || _        || _        ||nd| _        |j        t          |j         d          |d|j        z  }nt          j        d|           || _	        d| _
        d S )Nr   z is unsupported for ConcatKDF    rY   F)r"   r9   r:   r;   
block_size	TypeErrornamer   r    _saltr<   )r=   r   r   rY   r   r6   s         r   r>   zConcatKDFHMAC.__init__V   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 rA   )r	   HMACr_   r9   rC   s    r   _hmaczConcatKDFHMAC._hmaco   s    yT_555r   r#   r   c                n    | j         rt          d| _         t          || j        | j        | j                  S rF   )r<   r   r3   r:   rc   r;   rG   s     r   rH   zConcatKDFHMAC.deriver   rI   r   rJ   r   c                d    t          j        |                     |          |          st          d S rA   rL   rN   s      r   rO   zConcatKDFHMAC.verifyz   rP   r   rA   )
r   r   r   r   rY   r   r   r   r6   r7   )r   r`   rQ   rR   )rS   rT   rU   r>   rc   rH   rO   rV   r   r   rX   rX   U   sn         #    26 6 6 6
 
 
 
     r   rX   )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cryptographyr   cryptography.exceptionsr   r   cryptography.hazmat.primitivesr   r   r	   "cryptography.hazmat.primitives.kdfr
   r   r"   r3   r5   rX   rV   r   r   <module>rl      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   