File: //usr/local/CyberPanel/lib64/python3.10/site-packages/pyotp/__pycache__/hotp.cpython-310.pyc
o
��hp
� @ sD d dl Z d dlmZmZ ddlmZ ddlmZ G dd� de�ZdS )� N)�Any�Optional� )�utils)�OTPc s� e Zd ZdZ ddedededee d ee d
eddf� fdd
�
Zdedefdd�Z dedede
fdd�Z ddee d
ee dee dee def
dd�Z� Z
S )�HOTPz.
Handler for HMAC-based OTP counters.
� Nr �s�digits�digest�name�issuer�
initial_count�returnc s. |du rt j}|| _t� j|||||d� dS )a}
:param s: secret in base32 format
:param initial_count: starting HMAC counter value, defaults to 0
:param digits: number of integers in the OTP. Some apps expect this to be 6 digits, others support more.
:param digest: digest function to use in the HMAC (expected to be SHA1)
:param name: account name
:param issuer: issuer
N)r r
r r r
)�hashlib�sha1r �super�__init__)�selfr r
r r r
r �� __class__� �@/usr/local/CyberPanel/lib/python3.10/site-packages/pyotp/hotp.pyr
s z
HOTP.__init__�countc C s | � | j| �S )zz
Generates the OTP for the given count.
:param count: the OTP HMAC counter
:returns: OTP
)�generate_otpr )r r r r r �at$ s zHOTP.at�otp�counterc C s t �t|�t| �|���S )z�
Verifies the OTP passed in against the current counter OTP.
:param otp: the OTP to check against
:param counter: the OTP HMAC counter
)r �
strings_equal�strr )r r r r r r �verify- s zHOTP.verify�issuer_name�imagec C s@ t j| j|r|n| j|r|n| j|r|n| j| �� j| j|d�S )a5
Returns the provisioning URI for the OTP. This can then be
encoded in a QR Code and used to provision an OTP app like
Google Authenticator.
See also:
https://github.com/google/google-authenticator/wiki/Key-Uri-Format
:param name: name of the user account
:param initial_count: starting HMAC counter value, defaults to 0
:param issuer_name: the name of the OTP issuer; this will be the
organization title of the OTP entry in Authenticator
:returns: provisioning URI
)r r r
� algorithmr
r"