
    _f                    r    d dl mZ 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          ZdS )	    )annotationsN)utils)AlreadyFinalized)ciphers)_CMACContextc                  R    e Zd ZU ded<   ded<   	 	 dddZddZddZddZddZdS )CMACtyping.Optional[_CMACContext]_ctxciphers.BlockCipherAlgorithm
_algorithmN	algorithmbackend
typing.AnyctxreturnNonec                    t          |t          j                  st          d          || _        |'ddlm} |                    | j                  | _        d S || _        d S )Nz*Expected instance of BlockCipherAlgorithm.r   )r   )	
isinstancer   BlockCipherAlgorithm	TypeErrorr   ,cryptography.hazmat.backends.openssl.backendr   create_cmac_ctxr   )selfr   r   r   ossls        U/var/www/html/env/lib/python3.11/site-packages/cryptography/hazmat/primitives/cmac.py__init__zCMAC.__init__   s{     )W%ABB 	JHIII#;      ,,T_==DIIIDIII    databytesc                    | j         t          d          t          j        d|           | j                             |           d S )NContext was already finalized.r   )r   r   r   _check_bytesupdate)r   r   s     r   r$   zCMAC.update(   sH    9"#CDDD64(((	r   c                r    | j         t          d          | j                                         }d | _         |S )Nr"   )r   r   finalize)r   digests     r   r&   zCMAC.finalize/   s8    9"#CDDD##%%	r   	signaturec                    t          j        d|           | j        t          d          | j        d c}| _        |                    |           d S )Nr(   r"   )r   r#   r   r   verify)r   r(   r   s      r   r*   zCMAC.verify6   sS    ;	2229"#CDDDDTY

9r   c                    | j         t          d          t          | j        | j                                                   S )Nr"   )r   )r   r   r	   r   copy)r   s    r   r,   z	CMAC.copy>   s:    9"#CDDDDO)9)9::::r   )NN)r   r   r   r   r   r
   r   r   )r   r    r   r   )r   r    )r(   r    r   r   )r   r	   )	__name__
__module____qualname____annotations__r   r$   r&   r*   r,    r   r   r	   r	      s         '''',,,,
 #-1	    &         ; ; ; ; ; ;r   r	   )
__future__r   typingcryptographyr   cryptography.exceptionsr   cryptography.hazmat.primitivesr   TYPE_CHECKING)cryptography.hazmat.backends.openssl.cmacr   r	   r1   r   r   <module>r9      s   
 # " " " " "        4 4 4 4 4 4 2 2 2 2 2 2	 GFFFFFF0; 0; 0; 0; 0; 0; 0; 0; 0; 0;r   