o
    Df                     @  sR   d dl mZ 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 )    )annotationsN)constant_time)InvalidToken)HOTPHOTPHashTypes_generate_uric                   @  s:   e Zd Z		dd ddZd!ddZd"ddZd#ddZdS )$TOTPNTkeybyteslengthint	algorithmr   	time_stepbackend
typing.Anyenforce_key_lengthboolc                 C  s   || _ t||||d| _d S )N)r   )
_time_stepr   _hotp)selfr	   r   r   r   r   r    r   f/home/ubuntu/webapp/venv/lib/python3.10/site-packages/cryptography/hazmat/primitives/twofactor/totp.py__init__   s   	zTOTP.__init__timeint | floatreturnc                 C  s   t || j }| j|S )N)r   r   r   generate)r   r   counterr   r   r   r   !   s   zTOTP.generatetotpNonec                 C  s   t | ||stdd S )Nz#Supplied TOTP value does not match.)r   bytes_eqr   r   )r   r   r   r   r   r   verify%   s   zTOTP.verifyaccount_namestrissuer
str | Nonec                 C  s   t | jd||dt| jfgS )Nr   period)r   r   r   r   )r   r"   r$   r   r   r   get_provisioning_uri)   s   zTOTP.get_provisioning_uri)NT)r	   r
   r   r   r   r   r   r   r   r   r   r   )r   r   r   r
   )r   r
   r   r   r   r   )r"   r#   r$   r%   r   r#   )__name__
__module____qualname__r   r   r!   r'   r   r   r   r   r      s    

r   )
__future__r   typingcryptography.hazmat.primitivesr   (cryptography.hazmat.primitives.twofactorr   -cryptography.hazmat.primitives.twofactor.hotpr   r   r   r   r   r   r   r   <module>   s   