
    i                        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  G d de          Z G d	 d
e          ZdS )    )annotationsN)utils)AlreadyFinalized
InvalidKey)constant_timehasheshmac)KeyDerivationFunctionc                  2    e Zd Z	 dddZddZddZddZdS )HKDFN	algorithmhashes.HashAlgorithmlengthintsaltbytes | Noneinfobackend
typing.Anyc                    || _         |d| j         j        z  }nt          j        d|           || _        t          | j         ||          | _        d S )N    r   )
_algorithmdigest_sizer   _check_bytes_salt
HKDFExpand_hkdf_expand)selfr   r   r   r   r   s         w/var/www/html/crypto-mining-system/backend/venv/lib/python3.11/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py__init__zHKDF.__init__   sW     $<T_88DDvt,,,
&tEE    key_materialbytesreturnc                    t          j        | j        | j                  }|                    |           |                                S N)r	   HMACr   r   updatefinalize)r   r"   hs      r   _extractzHKDF._extract#   s7    Idj$/22	zz||r!   c                    t          j        d|           | j                            |                     |                    S )Nr"   )r   _check_bytesliker   deriver+   r   r"   s     r   r.   zHKDF.derive(   s8    ~|<<< ''l(C(CDDDr!   expected_keyNonec                d    t          j        |                     |          |          st          d S r&   r   bytes_eqr.   r   r   r"   r0   s      r   verifyzHKDF.verify,   3    %dkk,&?&?NN 		 	r!   r&   )
r   r   r   r   r   r   r   r   r   r   r"   r#   r$   r#   r"   r#   r0   r#   r$   r1   )__name__
__module____qualname__r    r+   r.   r6    r!   r   r   r      sw         #F F F F F&   
E E E E     r!   r   c                  2    e Zd Z	 ddd
ZddZddZddZdS )r   Nr   r   r   r   r   r   r   r   c                    || _         d|j        z  }||k    rt          d| d          || _        |d}nt	          j        d|           || _        d| _        d S )N   zCannot derive keys larger than z octets.r!   r   F)r   r   
ValueError_lengthr   r   _info_used)r   r   r   r   r   
max_lengths         r   r    zHKDFExpand.__init__2   s}     $900
JF*FFF   <DDvt,,,



r!   r"   r#   r$   c                ,   dg}d}| j         j        t          |          dz
  z  | j        k     rt	          j        || j                   }|                    |d                    |                    | j                   |                    t          |g                     |	                    |
                                           |dz  }| j         j        t          |          dz
  z  | j        k     d                    |          d | j                 S )Nr!      )r   r   lenrB   r	   r'   r(   rC   r#   appendr)   join)r   r"   outputcounterr*   s        r   _expandzHKDFExpand._expandM   s    o)S[[1_=LL	,88AHHVBZ   HHTZ   HHUG9%%&&&MM!**,,'''qLG o)S[[1_=LL xx$,//r!   c                    t          j        d|           | j        rt          d| _        |                     |          S )Nr"   T)r   r-   rD   r   rN   r/   s     r   r.   zHKDFExpand.derive[   s>    ~|<<<: 	#""
||L)))r!   r0   r1   c                d    t          j        |                     |          |          st          d S r&   r3   r5   s      r   r6   zHKDFExpand.verifyc   r7   r!   r&   )r   r   r   r   r   r   r   r   r8   r9   )r:   r;   r<   r    rN   r.   r6   r=   r!   r   r   r   1   sn         #    60 0 0 0* * * *     r!   r   )
__future__r   typingcryptographyr   cryptography.exceptionsr   r   cryptography.hazmat.primitivesr   r   r	   "cryptography.hazmat.primitives.kdfr
   r   r   r=   r!   r   <module>rW      s   
 # " " " " "        @ @ @ @ @ @ @ @ F F F F F F F F F F D D D D D D        D4 4 4 4 4& 4 4 4 4 4r!   