
     h                     r    d dl Z d dlmZmZmZ d dlmZmZ e j        rd dl	m
Z
  G d dej                  ZdS )    N)InvalidSignatureUnsupportedAlgorithm_Reasons)constant_timehashes)Backendc                       e Zd Z	 ddddedej        fdZedej        fd            Zdd	Z	d
eddfdZ
defdZdeddfdZdS )_HMACContextNbackendr   key	algorithmc                    || _         || _        |W| j        j                                        }| j                            || j        j        j        k               | j        j                            || j        j        j                  }| j        	                    |          }|| j        j        j        k    r2t          d                    |j                  t          j                  | j        j                            |          }| j        j                            ||t#          |          || j        j        j                  }| j                            |dk               || _        || _        d S )Nz*{} is not a supported hash on this backendr   )
_algorithm_backend_libHMAC_CTX_newopenssl_assert_ffiNULLgcHMAC_CTX_free_evp_md_from_algorithmr   formatnamer   UNSUPPORTED_HASHfrom_bufferHMAC_Init_exlen_ctx_key)selfr   r   r   ctxevp_mdkey_ptrress           e/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/cryptography/hazmat/backends/openssl/hmac.py__init__z_HMACContext.__init__   sG    $;-$1133CM((0B0G)GHHH-$''T]-?-MNNC]99)DDF+000*@GG!  -	   m(44S99G-$11Wc#hh0B0G C M((222				    returnc                     | j         S N)r   )r!   s    r&   r   z_HMACContext.algorithm2   s
    r(   c                    | j         j                                        }| j                             || j         j        j        k               | j         j                            || j         j        j                  }| j         j                            || j	                  }| j                             |dk               t          | j         | j        | j        |          S )Nr   )r"   )r   r   r   r   r   r   r   r   HMAC_CTX_copyr   r
   r    r   )r!   
copied_ctxr%   s      r&   copyz_HMACContext.copy6   s    ]'4466
$$Z4=3E3J%JKKK]'***8
 

 m ..z49EE$$SAX...M49dn*
 
 
 	
r(   datac                     | j         j                            |          }| j         j                            | j        |t          |                    }| j                             |dk               d S )Nr   )r   r   r   r   HMAC_Updater   r   r   )r!   r0   data_ptrr%   s       r&   updatez_HMACContext.updateB   s^    =%11$77m ,,TY#d))LL$$SAX.....r(   c                    | j         j                            d| j         j        j                  }| j         j                            d          }| j         j                            | j        ||          }| j                             |dk               | j                             |d         | j        j	        k               | j         j        
                    |          d |d                  S )Nzunsigned char[]zunsigned int *r   )r   r   newr   EVP_MAX_MD_SIZE
HMAC_Finalr   r   r   digest_sizebuffer)r!   bufoutlenr%   s       r&   finalizez_HMACContext.finalizeG   s    m $$t}1A
 
 #''(899m ++DIsFCC$$SAX...$$VAY$.2L%LMMM}!((--kq	k::r(   	signaturec                 v    |                                  }t          j        ||          st          d          d S )NzSignature did not match digest.)r=   r   bytes_eqr   )r!   r>   digests      r&   verifyz_HMACContext.verifyQ   s@    %fi88 	F"#DEEE	F 	Fr(   r+   )r)   r
   )__name__
__module____qualname__bytesr   HashAlgorithmr'   propertyr   r/   r4   r=   rB    r(   r&   r
   r
      s            '	   > 6/    X

 

 

 

/5 /T / / / /
;% ; ; ; ;F F$ F F F F F Fr(   r
   )typingcryptography.exceptionsr   r   r   cryptography.hazmat.primitivesr   r   TYPE_CHECKING,cryptography.hazmat.backends.openssl.backendr   HashContextr
   rI   r(   r&   <module>rP      s   
          
 A @ @ @ @ @ @ @	 EDDDDDDBF BF BF BF BF6% BF BF BF BF BFr(   