U
    EZh                     @   sF   d dl Z d dlmZ d dlmZ d dlmZmZmZ G dd dZ	dS )    N)constant_time)InvalidToken)HOTPHOTPHashTypes_generate_uric                   @   sl   e Zd ZdeeeeejedddZ	ej
eef edddZeedd	d
dZeeje edddZdS )TOTPNT)keylength	algorithm	time_stepbackendenforce_key_lengthc                 C   s   || _ t||||d| _d S )N)r   )
_time_stepr   _hotp)selfr   r	   r
   r   r   r    r   t/home/aprabhat/apps/x.techxrdev.in/venv/lib/python3.8/site-packages/cryptography/hazmat/primitives/twofactor/totp.py__init__   s    	   zTOTP.__init__)timereturnc                 C   s   t || j }| j|S )N)intr   r   generate)r   r   counterr   r   r   r      s    zTOTP.generate)totpr   r   c                 C   s   t | ||stdd S )Nz#Supplied TOTP value does not match.)r   Zbytes_eqr   r   )r   r   r   r   r   r   verify#   s    zTOTP.verify)account_nameissuerr   c                 C   s   t | jd||dt| jfgS )Nr   Zperiod)r   r   r   r   )r   r   r   r   r   r   get_provisioning_uri'   s    zTOTP.get_provisioning_uri)NT)__name__
__module____qualname__bytesr   r   typingAnyboolr   Unionfloatr   r   strOptionalr   r   r   r   r   r      s       r   )
r"   Zcryptography.hazmat.primitivesr   Z(cryptography.hazmat.primitives.twofactorr   Z-cryptography.hazmat.primitives.twofactor.hotpr   r   r   r   r   r   r   r   <module>   s   