a °…bÒ ã@sLddlZddlmZddlmZdZdZejr:ddlm Z Gdd„dƒZ dS) éN)ÚInvalidSignature)Ú constant_timeéé )ÚBackendc@sLeZdZdeddœdd„Zeddœdd„Zed œd d „Zedd œd d„ZdS)Ú_Poly1305ContextrN)ÚbackendÚkeyÚreturncCsà||_|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)Úselfrr Zkey_ptrZevp_pkeyÚctxÚres©rúT/tmp/pip-target-98j97qn4/lib/python/cryptography/hazmat/backends/openssl/poly1305.pyÚ__init__s2ü ÿ  ÿûz_Poly1305Context.__init__)Údatar cCs:|jj |¡}|jj |j|t|ƒ¡}|j |dk¡dS)Nr)r r rrZEVP_DigestSignUpdaterrr)rrZdata_ptrrrrrÚupdate2s  ÿz_Poly1305Context.update)r cCsr|jj dt¡}|jj dt¡}|jj |j||¡}|j |dk¡|j |dtk¡|jj |¡d|d…S)Nzunsigned char[]zsize_t *r) r r ÚnewÚ_POLY1305_TAG_SIZErZEVP_DigestSignFinalrrÚbuffer)rÚbufZoutlenrrrrÚfinalize9s z_Poly1305Context.finalize)Útagr cCs | ¡}t ||¡stdƒ‚dS)Nz!Value did not match computed tag.)r rZbytes_eqr)rr!ÚmacrrrÚverifyAs z_Poly1305Context.verify)Ú__name__Ú __module__Ú __qualname__Úbytesrrr r#rrrrrsr) ÚtypingZcryptography.exceptionsrZcryptography.hazmat.primitivesrrZ_POLY1305_KEY_SIZEÚ TYPE_CHECKINGZ,cryptography.hazmat.backends.openssl.backendrrrrrrÚs