o
    Z2ht                     @  s^   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
 d dlmZ G dd dZdS )	    )annotationsN)constant_time)InvalidToken)HOTPHOTPHashTypes_generate_uri)Bufferc                   @  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keyr   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   ~/home/skpark/git/infrasmart_work/infrasmart/venv/lib/python3.10/site-packages/cryptography/hazmat/primitives/twofactor/totp.py__init__   s   	zTOTP.__init__timeint | floatreturnbytesc                 C  s0   t |ttfstdt|| j }| j|S )Nz5Time parameter must be an integer type or float type.)
isinstancer   float	TypeErrorr   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   cryptography.utilsr   r	   r   r   r   r   <module>   s   