a ¹a+ ã@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Ú_libZEVP_PKEY_new_raw_private_keyZ NID_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__cCs:|jj |¡}|jj |j|t|ƒ¡}|j |dk¡dS)Nr)rr r r ZEVP_DigestSignUpdaterr r )rÚdataZdata_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 ZEVP_DigestSignFinalrr Úbuffer)rÚbufZoutlenrrrrÚfinalize4s z_Poly1305Context.finalizecCs | ¡}t ||¡stdƒ‚dS)Nz!Value did not match computed tag.)rrZbytes_eqr)rÚtagZmacrrrÚverify<s z_Poly1305Context.verifyN)Ú__name__Ú __module__Ú __qualname__rrrrrrrrrsrN)Zcryptography.exceptionsrZcryptography.hazmat.primitivesrrZ_POLY1305_KEY_SIZEÚobjectrrrrrÚs