o
    -&%a¯  ã                   @   s4   d dl mZ d dlmZmZmZ G dd„ deƒZdS )é    )Úutils)ÚAlreadyFinalizedÚUnsupportedAlgorithmÚ_Reasonsc                	   @   s„   e Zd Zdefdd„Zdeddfdd„Zdefd	d
„Zdeddfdd„Zedededefdd„ƒZ	ededededdfdd„ƒZ
dS )ÚPoly1305Úkeyc                 C   s0   ddl m} | ¡ stdtjƒ‚| |¡| _d S )Nr   )Úbackendz5poly1305 is not supported by this version of OpenSSL.)Ú,cryptography.hazmat.backends.openssl.backendr   Úpoly1305_supportedr   r   ÚUNSUPPORTED_MACÚcreate_poly1305_ctxÚ_ctx)Úselfr   r   © r   úI/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/poly1305.pyÚ__init__   s   þzPoly1305.__init__ÚdataÚreturnNc                 C   s.   | j d u r	tdƒ‚t d|¡ | j  |¡ d S )NúContext was already finalized.r   )r   r   r   Ú_check_byteslikeÚupdate)r   r   r   r   r   r      s   
zPoly1305.updatec                 C   s&   | j d u r	tdƒ‚| j  ¡ }d | _ |S )Nr   )r   r   Úfinalize)r   Úmacr   r   r   r      s
   

zPoly1305.finalizeÚtagc                 C   s:   t  d|¡ | jd u rtdƒ‚| jd }| _| |¡ d S )Nr   r   )r   Ú_check_bytesr   r   Úverify)r   r   Úctxr   r   r   r   &   s
   
zPoly1305.verifyc                 C   s   t |ƒ}| |¡ | ¡ S ©N)r   r   r   )Úclsr   r   Úpr   r   r   Úgenerate_tag.   s   
zPoly1305.generate_tagc                 C   s    t |ƒ}| |¡ | |¡ d S r   )r   r   r   )r   r   r   r   r   r   r   r   Ú
verify_tag4   s   
zPoly1305.verify_tag)Ú__name__Ú
__module__Ú__qualname__Úbytesr   r   r   r   Úclassmethodr    r!   r   r   r   r   r      s    
 r   N)Úcryptographyr   Úcryptography.exceptionsr   r   r   Úobjectr   r   r   r   r   Ú<module>   s   