U ¨Ãq` ã@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)ÚselfÚbackendÚkeyZkey_ptrZevp_pkeyÚctxÚres©rúT/tmp/pip-target-nv4zd3e_/lib/python/cryptography/hazmat/backends/openssl/poly1305.pyÚ__init__s6üÿ ÿû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.updatecCsp|jj dt¡}|jj d¡}|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ÚtagÚmacrrrÚverify<s z_Poly1305Context.verifyN)Ú__name__Ú __module__Ú __qualname__rrrr!rrrrrsrN)Zcryptography.exceptionsrZcryptography.hazmat.primitivesrrZ_POLY1305_KEY_SIZEÚobjectrrrrrÚs