
    +h                    t    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y)	    )annotationsN)utils)AlreadyFinalized)ciphers)_CMACContextc                  ^    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y)CMACtyping.Optional[_CMACContext]_ctxciphers.BlockCipherAlgorithm
_algorithmNc                    t        |t        j                        st        d      || _        |'ddlm} |j                  | j                        | _        y || _        y )Nz*Expected instance of BlockCipherAlgorithm.r   )backend)	
isinstancer   BlockCipherAlgorithm	TypeErrorr   ,cryptography.hazmat.backends.openssl.backendr   create_cmac_ctxr   )self	algorithmr   ctxossls        V/var/www/html/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/cmac.py__init__zCMAC.__init__   sP     )W%A%ABHII#; ,,T__=DIDI    c                    | j                   t        d      t        j                  d|       | j                   j	                  |       y )NContext was already finalized.data)r   r   r   _check_bytesupdate)r   r   s     r   r    zCMAC.update(   s:    99"#CDD64(		r   c                v    | j                   t        d      | j                   j                         }d | _         |S )Nr   )r   r   finalize)r   digests     r   r"   zCMAC.finalize/   s6    99"#CDD##%	r   c                    t        j                  d|       | j                  t        d      | j                  d c}| _        |j	                  |       y )N	signaturer   )r   r   r   r   verify)r   r%   r   s      r   r&   zCMAC.verify6   sE    ;	299"#CDDDTY

9r   c                    | j                   t        d      t        | j                  | j                   j	                               S )Nr   )r   )r   r   r	   r   copy)r   s    r   r(   z	CMAC.copy>   s4    99"#CDDDOO)9::r   )NN)r   r   r   z
typing.Anyr   r
   returnNone)r   bytesr)   r*   )r)   r+   )r%   r+   r)   r*   )r)   r	   )	__name__
__module____qualname____annotations__r   r    r"   r&   r(    r   r   r	   r	      sU    
'',,
 #-1	/  +	
 
&;r   r	   )
__future__r   typingcryptographyr   cryptography.exceptionsr   cryptography.hazmat.primitivesr   TYPE_CHECKING)cryptography.hazmat.backends.openssl.cmacr   r	   r0   r   r   <module>r8      s,   
 #   4 2	F0; 0;r   