§
    pïgÒ	  ã                   ób   — d dl Z d dlmZ d dlmZ dZdZe j        rd dlm	Z	  G d„ d¦  «        Z
dS )	é    N)ÚInvalidSignature)Úconstant_timeé   é    )ÚBackendc                   óN   — e Zd Zdddeddfd„Zdeddfd„Zdefd	„Zd
eddfd„ZdS )Ú_Poly1305ContextÚbackendr   ÚkeyÚreturnNc                 óœ  — || _         | j         j                             |¦  «        }| j         j                             | j         j        j        | j         j        j        |t          |¦  «        ¦  «        }| j                              || j         j        j        k    ¦  «         | j         j         	                    || j         j        j
        ¦  «        | _        | j         j                             ¦   «         }| j                              || j         j        j        k    ¦  «         | j         j         	                    || j         j        j        ¦  «        | _        | j         j                             | j        | j         j        j        | j         j        j        | j         j        j        | j        ¦  «        }| j                              |dk    ¦  «         d S )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)Úselfr
   r   Úkey_ptrÚevp_pkeyÚctxÚress          úO/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/poly1305.pyÚ__init__z_Poly1305Context.__init__   sz  € ØˆŒà”-Ô$×0Ò0°Ñ5Ô5ˆð ”=Ô%×BÒBØŒMÔÔ+ØŒMÔÔ#ØÝ�‰HŒHñ	
ô 
ˆð 	Œ×$Ò$ X°´Ô1CÔ1HÒ%HÑIÔIÐIØœÔ+×.Ò.Ø�d”mÔ(Ô6ñ
ô 
ˆŒð ŒmÔ ×/Ò/Ñ1Ô1ˆØŒ×$Ò$ S¨D¬MÔ,>Ô,CÒ%CÑDÔDÐDØ”MÔ&×)Ò)Ø�”Ô#Ô3ñ
ô 
ˆŒ	ð ŒmÔ ×3Ò3ØŒIØŒMÔÔ#ØŒMÔÔ#ØŒMÔÔ#ØŒNñ
ô 
ˆð 	Œ×$Ò$ S¨A¢XÑ.Ô.Ð.Ð.Ð.ó    Údatac                 óæ   — | j         j                             |¦  «        }| j         j                             | j        |t          |¦  «        ¦  «        }| j                              |dk    ¦  «         d S )Nr   )r   r   r   r   ÚEVP_DigestSignUpdater   r   r   )r   r'   Údata_ptrr#   s       r$   Úupdatez_Poly1305Context.update2   se   € Ø”=Ô%×1Ò1°$Ñ7Ô7ˆØŒmÔ ×5Ò5ØŒI�x¥ T¡¤ñ
ô 
ˆð 	Œ×$Ò$ S¨A¢XÑ.Ô.Ð.Ð.Ð.r&   c                 óÊ  — | j         j                             dt          ¦  «        }| j         j                             dt          ¦  «        }| j         j                             | j        ||¦  «        }| j                              |dk    ¦  «         | j                              |d         t          k    ¦  «         | j         j                             |¦  «        d |d         …         S )Nzunsigned char[]zsize_t *r   )	r   r   ÚnewÚ_POLY1305_TAG_SIZEr   ÚEVP_DigestSignFinalr   r   Úbuffer)r   ÚbufÚoutlenr#   s       r$   Úfinalizez_Poly1305Context.finalize9   s·   € ØŒmÔ ×$Ò$Ð%6Õ8JÑKÔKˆØ”Ô#×'Ò'¨
Õ4FÑGÔGˆØŒmÔ ×4Ò4°T´YÀÀVÑLÔLˆØŒ×$Ò$ S¨A¢XÑ.Ô.Ð.ØŒ×$Ò$ V¨A¤YÕ2DÒ%DÑEÔEÐEØŒ}Ô!×(Ò(¨Ñ-Ô-¨k°°q´	¨kÔ:Ð:r&   Útagc                 óv   — |                       ¦   «         }t          j        ||¦  «        st          d¦  «        ‚d S )Nz!Value did not match computed tag.)r3   r   Úbytes_eqr   )r   r4   Úmacs      r$   Úverifyz_Poly1305Context.verifyA   s@   € Ø�mŠm‰oŒoˆÝÔ% c¨3Ñ/Ô/ð 	HÝ"Ð#FÑGÔGÐGð	Hð 	Hr&   )Ú__name__Ú
__module__Ú__qualname__Úbytesr%   r+   r3   r8   © r&   r$   r	   r	      s¤   € € € € € ð/ 	ð /°ð /¸$ð /ð /ð /ð /ð</˜5ð / Tð /ð /ð /ð /ð;˜%ð ;ð ;ð ;ð ;ðH˜%ð H Dð Hð Hð Hð Hð Hð Hr&   r	   )ÚtypingÚcryptography.exceptionsr   Úcryptography.hazmat.primitivesr   r.   Ú_POLY1305_KEY_SIZEÚTYPE_CHECKINGÚ,cryptography.hazmat.backends.openssl.backendr   r	   r=   r&   r$   ú<module>rD      sž   ðð
 €€€à 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8ð Ð ØÐ ð 
Ôð EØDÐDÐDÐDÐDÐDð1Hð 1Hð 1Hð 1Hð 1Hñ 1Hô 1Hð 1Hð 1Hð 1Hr&   