U
    EZhJ                     @   sN   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ G dd dej	Z
dS )    N)utils)AlreadyFinalized)_HMACContext)hashesc                   @   s   e Zd ZU eje ed< deej	ej
dddZeej	dddZedd	d
dZd dddZedddZeddddZdS )HMAC_ctxN)key	algorithmbackendc                 C   sP   t |tjstd|| _|| _|d krFddlm} ||| j	| _
n|| _
d S )Nz*Expected instance of hashes.HashAlgorithm.r   )r
   )
isinstancer   HashAlgorithm	TypeError
_algorithm_keyZ,cryptography.hazmat.backends.openssl.backendr
   Zcreate_hmac_ctxr	   r   )selfr   r	   r
   ctxZossl r   j/home/aprabhat/apps/x.techxrdev.in/venv/lib/python3.8/site-packages/cryptography/hazmat/primitives/hmac.py__init__   s    zHMAC.__init__)returnc                 C   s   | j S )N)r   r   r   r   r   r	   &   s    zHMAC.algorithm)datar   c                 C   s.   | j d krtdtd| | j | d S )NContext was already finalized.r   )r   r   r   Z_check_byteslikeupdate)r   r   r   r   r   r   *   s    
zHMAC.updatec                 C   s*   | j d krtdt| j| j| j  dS )Nr   )r   )r   r   r   r   r	   copyr   r   r   r   r   0   s    
z	HMAC.copyc                 C   s&   | j d krtd| j  }d | _ |S )Nr   )r   r   finalize)r   digestr   r   r   r   9   s
    

zHMAC.finalize)	signaturer   c                 C   s:   t d| | jd krtd| jd  }| _|| d S )Nr   r   )r   _check_bytesr   r   verify)r   r   r   r   r   r   r   @   s
    
zHMAC.verify)NN)__name__
__module____qualname__typingOptionalr   __annotations__bytesr   r   Anyr   propertyr	   r   r   r   r   r   r   r   r   r      s   
  	r   )r#   Zcryptographyr   Zcryptography.exceptionsr   Z)cryptography.hazmat.backends.openssl.hmacr   Zcryptography.hazmat.primitivesr   ZHashContextr   r   r   r   r   <module>   s
   