o gàe+ ã@s4ddlmZddlmZdZdZGdd„deƒZdS)é)ÚInvalidSignature)Ú constant_timeéé c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) Ú_Poly1305ContextcCsà||_|jj |¡}|jj |jjj|jjj|t|ƒ¡}|j ||jjjk¡|jj  ||jjj ¡|_ |jj  ¡}|j ||jjjk¡|jj  ||jjj ¡|_|jj |j|jjj|jjj|jjj|j ¡}|j |dk¡dS)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)ÚselfÚbackendÚkeyÚkey_ptrÚevp_pkeyÚctxÚres©rúO/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/poly1305.pyÚ__init__s2ü ÿ  ÿûz_Poly1305Context.__init__cCs:|jj |¡}|jj |j|t|ƒ¡}|j |dk¡dS)Nr)rr r r ÚEVP_DigestSignUpdaterrr)rÚdataÚdata_ptrrrrr Úupdate-s  ÿz_Poly1305Context.updatecCsr|jj dt¡}|jj dt¡}|jj |j||¡}|j |dk¡|j |dtk¡|jj |¡d|d…S)Nzunsigned char[]zsize_t *r) rr ÚnewÚ_POLY1305_TAG_SIZEr ÚEVP_DigestSignFinalrrÚbuffer)rÚbufÚoutlenrrrr Úfinalize4s z_Poly1305Context.finalizecCs | ¡}t ||¡stdƒ‚dS)Nz!Value did not match computed tag.)r,rÚbytes_eqr)rÚtagÚmacrrr Úverify<s ÿz_Poly1305Context.verifyN)Ú__name__Ú __module__Ú __qualname__r!r%r,r0rrrr rs  rN)Úcryptography.exceptionsrÚcryptography.hazmat.primitivesrr'Ú_POLY1305_KEY_SIZEÚobjectrrrrr Ús