
    +h                    n    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y)    )annotationsN)utils)AlreadyFinalized
InvalidKey)constant_timehashes)KeyDerivationFunctionc                (    | j                  dd      S )N   big)length	byteorder)to_bytes)ns    ]/var/www/html/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py_int_to_u32ber      s    ::Q%:00    c                  6    e Zd Z	 d	 	 	 	 	 	 	 ddZddZddZy)	X963KDFNc                    |j                   dz  }||kD  rt        d| d      |t        j                  d|       || _        || _        || _        d| _        y )Nl    zCannot derive keys larger than z bits.
sharedinfoF)digest_size
ValueErrorr   _check_bytes
_algorithm_length_sharedinfo_used)self	algorithmr   r   backendmax_lens         r   __init__zX963KDF.__init__   sd     ''95G>wivNOO!|Z8#%
r   c                4   | j                   rt        d| _         t        j                  d|       dg}d}d}| j                  |kD  rt        j                  | j                        }|j                  |       |j                  t        |             | j                  |j                  | j                         |j                  |j                                |t        |d         z  }|dz  }| j                  |kD  rdj                  |      d | j                   S )NTkey_materialr   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    ::""
~|<llV#DOO,AHH\"HH]7+,+))*MM!**,'c&*o%FqLG llV# xx$,,//r   c                Z    t        j                  | j                  |      |      st        y N)r   bytes_eqr3   r   )r   r%   expected_keys      r   verifyzX963KDF.verify;   s'    %%dkk,&?N Or   r5   )r    zhashes.HashAlgorithmr   intr   ztyping.Optional[bytes]r!   z
typing.Any)r%   bytesreturnr:   )r%   r:   r7   r:   r;   None)__name__
__module____qualname__r#   r3   r8    r   r   r   r      s<     #'  +	
 $0*r   r   )r   r9   r;   r:   )
__future__r   typingcryptographyr   cryptography.exceptionsr   r   cryptography.hazmat.primitivesr   r   "cryptography.hazmat.primitives.kdfr	   r   r   r@   r   r   <module>rG      s+   
 #   @ @ D1*# *r   