
     h	                     b    d dl Z d dlmZ d dlmZ dZdZe j        rd dlm	Z	  G d d          Z
dS )	    N)InvalidSignature)constant_time       )Backendc                   N    e Zd ZdddeddfdZdeddfdZdefd	Zd
eddfdZdS )_Poly1305Contextbackendr   keyreturnNc                    || _         | j         j                            |          }| j         j                            | j         j        j        | j         j        j        |t          |                    }| j                             || j         j        j        k               | j         j        	                    || j         j        j
                  | _        | j         j                                        }| j                             || j         j        j        k               | j         j        	                    || j         j        j                  | _        | j         j                            | j        | j         j        j        | j         j        j        | j         j        j        | j                  }| j                             |dk               d S )N   )_backend_ffifrom_buffer_libEVP_PKEY_new_raw_private_keyNID_poly1305NULLlenopenssl_assertgcEVP_PKEY_free	_evp_pkeyEVP_MD_CTX_newEVP_MD_CTX_free_ctxEVP_DigestSignInit)selfr
   r   key_ptrevp_pkeyctxress          i/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/cryptography/hazmat/backends/openssl/poly1305.py__init__z_Poly1305Context.__init__   sz   -$0055 =%BBM+M#HH	
 
 	$$X1C1H%HIII+..dm(6
 
 m //11$$SDM,>,C%CDDDM&))#3
 
	 m 33IM#M#M#N
 
 	$$SAX.....    datac                     | j         j                            |          }| j         j                            | j        |t          |                    }| j                             |dk               d S )Nr   )r   r   r   r   EVP_DigestSignUpdater   r   r   )r   r'   data_ptrr#   s       r$   updatez_Poly1305Context.update1   se    =%11$77m 55IxT
 
 	$$SAX.....r&   c                    | j         j                            dt                    }| j         j                            dt                    }| j         j                            | j        ||          }| j                             |dk               | j                             |d         t          k               | j         j                            |          d |d                  S )Nzunsigned char[]zsize_t *r   )	r   r   new_POLY1305_TAG_SIZEr   EVP_DigestSignFinalr   r   buffer)r   bufoutlenr#   s       r$   finalizez_Poly1305Context.finalize8   s    m $$%68JKK#''
4FGGm 44TYVLL$$SAX...$$VAY2D%DEEE}!((--kq	k::r&   tagc                 v    |                                  }t          j        ||          st          d          d S )Nz!Value did not match computed tag.)r3   r   bytes_eqr   )r   r4   macs      r$   verifyz_Poly1305Context.verify@   s@    mmoo%c3// 	H"#FGGG	H 	Hr&   )__name__
__module____qualname__bytesr%   r+   r3   r8    r&   r$   r	   r	      s        /	 / /$ / / / /</5 /T / / / /;% ; ; ; ;H% HD H H H H H Hr&   r	   )typingcryptography.exceptionsr   cryptography.hazmat.primitivesr   r.   _POLY1305_KEY_SIZETYPE_CHECKING,cryptography.hazmat.backends.openssl.backendr   r	   r=   r&   r$   <module>rD      s   
  4 4 4 4 4 4 8 8 8 8 8 8   
 EDDDDDD1H 1H 1H 1H 1H 1H 1H 1H 1H 1Hr&   