a ¹a+ ã @ s4 d dl mZ d dlmZ dZdZG dd„ deƒZdS )é )ÚInvalidSignature)Ú constant_timeé é c @ s, e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd S ) Ú_Poly1305Contextc C sà || _ | j j |¡}| j j | j jj| j jj|t|ƒ¡}| j || j jjk¡ | j j || j jj ¡| _| j j ¡ }| j || j jjk¡ | j j || j jj ¡| _| j j | j| j jj| j jj| j jj| j¡}| j |dk¡ d S )Né )Ú_backendÚ_ffiÚfrom_bufferÚ_libZEVP_PKEY_new_raw_private_keyZNID_poly1305ZNULLÚlenÚopenssl_assertÚgcZ EVP_PKEY_freeZ _evp_pkeyZEVP_MD_CTX_newZEVP_MD_CTX_freeÚ_ctxZEVP_DigestSignInit)ÚselfZbackendÚkeyZkey_ptrZevp_pkeyÚctxÚres© r úS/usr/lib64/python3.9/site-packages/cryptography/hazmat/backends/openssl/poly1305.pyÚ__init__ s2 ü ÿ ÿûz_Poly1305Context.__init__c C s: | j j |¡}| j j | j|t|ƒ¡}| j |dk¡ d S )Nr )r r r r ZEVP_DigestSignUpdater r r )r ÚdataZdata_ptrr r r r Úupdate- s ÿz_Poly1305Context.updatec C sr | j j dt¡}| j j dt¡}| j j | j||¡}| j |dk¡ | j |d tk¡ | j j |¡d |d … S )Nzunsigned char[]zsize_t *r ) r r ÚnewÚ_POLY1305_TAG_SIZEr ZEVP_DigestSignFinalr r Úbuffer)r ÚbufZoutlenr r r r Úfinalize4 s z_Poly1305Context.finalizec C s | ¡ }t ||¡stdƒ‚d S )Nz!Value did not match computed tag.)r r Zbytes_eqr )r ÚtagZmacr r r Úverify<