<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
yá˜_s	  ã               @   sH   d dl mZmZmZ d dlmZ d dlmZ dZdZ	G dd„ de
ƒZdS )	é    )Úabsolute_importÚdivisionÚprint_function)ÚInvalidSignature)Úconstant_timeé   é    c               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú_Poly1305Contextc             C   sà   || _ | j jj|ƒ}| j jj| j jj| j jj|t|ƒƒ}| j j|| j jjkƒ | j jj	|| 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| jƒ}| j j|dkƒ d S )Né   )Ú_backendÚ_ffiÚfrom_bufferÚ_libZEVP_PKEY_new_raw_private_keyZNID_poly1305ZNULLÚlenÚopenssl_assertÚgcZEVP_PKEY_freeZ	_evp_pkeyZCryptography_EVP_MD_CTX_newZCryptography_EVP_MD_CTX_freeÚ_ctxZEVP_DigestSignInit)ÚselfZbackendÚkeyZkey_ptrZevp_pkeyZctxÚres© r   ú /usr/lib64/python3.6/poly1305.pyÚ__init__   s*    
z_Poly1305Context.__init__c             C   s:   | j jj|ƒ}| j jj| j|t|ƒƒ}| j j|dkƒ d S )Nr   )r   r   r   r   ZEVP_DigestSignUpdater   r   r   )r   ÚdataZdata_ptrr   r   r   r   Úupdate/   s    z_Poly1305Context.updatec             C   sp   | j jjdtƒ}| j jjdƒ}| j jj| j||ƒ}| j j|dkƒ | j j|d tkƒ | j jj|ƒd |d … S )Nzunsigned char[]zsize_t *r   )	r   r   ÚnewÚ_POLY1305_TAG_SIZEr   ZEVP_DigestSignFinalr   r   Úbuffer)r   ZbufZoutlenr   r   r   r   Úfinalize6   s    z_Poly1305Context.finalizec             C   s    | j ƒ }tj||ƒstdƒ‚d S )Nz!Value did not match computed tag.)r   r   Zbytes_eqr   )r   ÚtagZmacr   r   r   Úverify>   s    z_Poly1305Context.verifyN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r    r   r   r   r   r	      s   r	   N)Z
__future__r   r   r   Zcryptography.exceptionsr   Zcryptography.hazmat.primitivesr   r   Z_POLY1305_KEY_SIZEÚobjectr	   r   r   r   r   Ú<module>   s
   