3
yá˜_s ã @ sH d dl mZmZmZ d dlmZ d dlmZ dZdZ G dd„ de
ƒZdS ) é )Úabsolute_importÚdivisionÚprint_function)ÚInvalidSignature)Ú
constant_timeé é c @ s, e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd S )
Ú_Poly1305Contextc C sà || _ | j jj|ƒ}| j jj| j jj| j jj|t|ƒƒ}| j j|| j jjkƒ | j jj || j jj
ƒ| _| j jjƒ }| j j|| j jjkƒ | j jj || j jj
ƒ| _| j jj| j| j jj| j jj| j jj| jƒ}| 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_pkeyZCryptography_EVP_MD_CTX_newZCryptography_EVP_MD_CTX_freeÚ_ctxZEVP_DigestSignInit)ÚselfZbackendÚkeyZkey_ptrZevp_pkeyZctxÚres© r ú /usr/lib64/python3.6/poly1305.pyÚ__init__ s*
z_Poly1305Context.__init__c C s: | j jj|ƒ}| j jj| j|t|ƒƒ}| j 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 sp | j jjdtƒ}| j jjdƒ}| j jj| j||ƒ}| j j|dkƒ | j j|d tkƒ | j jj|ƒd |d … S )Nzunsigned char[]zsize_t *r ) r r ÚnewÚ_POLY1305_TAG_SIZEr ZEVP_DigestSignFinalr r Úbuffer)r ZbufZoutlenr r r r Úfinalize6 s z_Poly1305Context.finalizec C s | j ƒ }tj||ƒstdƒ‚d S )Nz!Value did not match computed tag.)r r Zbytes_eqr )r ÚtagZmacr 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 Zcryptography.exceptionsr Zcryptography.hazmat.primitivesr r Z_POLY1305_KEY_SIZEÚobjectr r r r r Ú