o
    àý°jt  ã                   @  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   ú /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/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   