B
    ó±ô`¯  ã               @   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               @   sv   e Zd Zedœdd„Zeddœdd„Zedœd	d
„Zeddœdd„Zeeeedœdd„ƒZ	eeeeddœ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.)Z,cryptography.hazmat.backends.openssl.backendr   Zpoly1305_supportedr   r   ZUNSUPPORTED_MACZcreate_poly1305_ctxÚ_ctx)Úselfr   r   © r   úV/home/dcms/DCMS/lib/python3.7/site-packages/cryptography/hazmat/primitives/poly1305.pyÚ__init__   s    zPoly1305.__init__N)ÚdataÚreturnc             C   s.   | j d krtdƒ‚t d|¡ | j  |¡ d S )NzContext was already finalized.r   )r	   r   r   Z_check_byteslikeÚupdate)r
   r   r   r   r   r      s    
zPoly1305.update)r   c             C   s&   | j d krtdƒ‚| j  ¡ }d | _ |S )NzContext was already finalized.)r	   r   Úfinalize)r
   Úmacr   r   r   r      s
    

zPoly1305.finalize)Útagr   c             C   s:   t  d|¡ | jd krtdƒ‚| jd  }| _| |¡ d S )Nr   zContext was already finalized.)r   Ú_check_bytesr	   r   Úverify)r
   r   Úctxr   r   r   r   &   s
    
zPoly1305.verify)r   r   r   c             C   s   t |ƒ}| |¡ | ¡ S )N)r   r   r   )Úclsr   r   Úpr   r   r   Úgenerate_tag.   s    
zPoly1305.generate_tag)r   r   r   r   c             C   s    t |ƒ}| |¡ | |¡ d S )N)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)Zcryptographyr   Zcryptography.exceptionsr   r   r   Úobjectr   r   r   r   r   Ú<module>   s   