
    ӝght                    d    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      Zy)	    )annotationsN)constant_time)InvalidToken)HOTPHOTPHashTypes_generate_uri)Bufferc                  T    e Zd Z	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZddZd	dZ	 	 	 	 	 	 d
dZy)TOTPNc                :    || _         t        ||||      | _        y )N)enforce_key_length)
_time_stepr   _hotp)selfkeylength	algorithm	time_stepbackendr   s          q/var/www/enzed_healthcare/enzed_env/lib/python3.12/site-packages/cryptography/hazmat/primitives/twofactor/totp.py__init__zTOTP.__init__   s!     $7I

    c                    t        |t        t        f      st        d      t        || j                  z        }| j
                  j                  |      S )Nz5Time parameter must be an integer type or float type.)
isinstanceintfloat	TypeErrorr   r   generate)r   timecounters      r   r   zTOTP.generate"   sJ    $e-G  dT__,-zz""7++r   c                d    t        j                  | j                  |      |      st        d      y )Nz#Supplied TOTP value does not match.)r   bytes_eqr   r   )r   totpr   s      r   verifyzTOTP.verify+   s-    %%dmmD&94@DEE Ar   c           
     `    t        | j                  d||dt        | j                        fg      S )Nr#   period)r   r   r   r   )r   account_nameissuers      r   get_provisioning_urizTOTP.get_provisioning_uri/   s5     JJDOO,-.
 	
r   )NT)r   r	   r   r   r   r   r   r   r   z
typing.Anyr   bool)r   zint | floatreturnbytes)r#   r,   r   r   r+   None)r'   strr(   z
str | Noner+   r.   )__name__
__module____qualname__r   r   r$   r)    r   r   r   r      sq     ##'

 
 !	

 
 
 !
,F	
	
)3	
		
r   r   )
__future__r   typingcryptography.hazmat.primitivesr   (cryptography.hazmat.primitives.twofactorr   -cryptography.hazmat.primitives.twofactor.hotpr   r   r   cryptography.utilsr	   r   r2   r   r   <module>r9      s,   
 #  8 A 
 &%
 %
r   