U
    ÒZjõ  ã                   @   sP   d dl Z d dlmZ d dlmZ d dlmZ e jr>d dlm	Z	 G dd„ dƒZ
dS )é    N)Úutils)ÚAlreadyFinalized)Úciphers)Ú_CMACContextc                   @   s€   e Zd ZU ejd ed< ejed< dejejejd dœdd„Z	e
ddœd	d
„Ze
dœdd„Ze
ddœdd„Zd dœdd„ZdS )ÚCMACr   Ú_ctxÚ
_algorithmN)Ú	algorithmÚbackendÚctxc                 C   sH   t |tjƒstdƒ‚|| _|d kr>ddlm} | | j¡| _n|| _d S )Nz*Expected instance of BlockCipherAlgorithm.r   )r
   )	Ú
isinstancer   ÚBlockCipherAlgorithmÚ	TypeErrorr   Z,cryptography.hazmat.backends.openssl.backendr
   Zcreate_cmac_ctxr   )Úselfr	   r
   r   Zossl© r   úf/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/cryptography/hazmat/primitives/cmac.pyÚ__init__   s    zCMAC.__init__)ÚdataÚreturnc                 C   s.   | j d krtdƒ‚t d|¡ | j  |¡ d S )NúContext was already finalized.r   )r   r   r   Ú_check_bytesÚupdate)r   r   r   r   r   r   )   s    
zCMAC.update)r   c                 C   s&   | j d krtdƒ‚| j  ¡ }d | _ |S )Nr   )r   r   Úfinalize)r   Údigestr   r   r   r   0   s
    

zCMAC.finalize)Ú	signaturer   c                 C   s:   t  d|¡ | jd krtdƒ‚| jd  }| _| |¡ d S )Nr   r   )r   r   r   r   Úverify)r   r   r   r   r   r   r   7   s
    
zCMAC.verifyc                 C   s&   | j d krtdƒ‚t| j| j  ¡ d�S )Nr   )r   )r   r   r   r   Úcopy)r   r   r   r   r   ?   s    
z	CMAC.copy)NN)Ú__name__Ú
__module__Ú__qualname__ÚtypingÚOptionalÚ__annotations__r   r   ÚAnyr   Úbytesr   r   r   r   r   r   r   r   r      s   

  üür   )r    Zcryptographyr   Zcryptography.exceptionsr   Zcryptography.hazmat.primitivesr   ÚTYPE_CHECKINGZ)cryptography.hazmat.backends.openssl.cmacr   r   r   r   r   r   Ú<module>   s   