HEX
Server: Apache
System: Linux 185.122.168.184.host.secureserver.net 5.14.0-570.60.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Nov 5 05:00:59 EST 2025 x86_64
User: barbeatleanalyti (1024)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //var/opt/nydus/ops/cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-39.pyc
a

�,�h��@s�ddlZddlZddlmZmZddlmZmZddlm	Z	m
Z
mZddlm
Z
eje	e
efZdeeejeejejeefed�dd	�ZGd
d�d�ZdS)�N)�quote�	urlencode)�
constant_time�hmac)�SHA1�SHA256�SHA512)�InvalidToken�HOTP)�hotp�	type_name�account_name�issuer�extra_parameters�returncCs�d|jfdt�|j�fd|jj��fg}|dur>|�d|f�|�|�|rbt	|��dt	|���nt	|�}d|�d|�dt
|���S)	N�digits�secret�	algorithmr�:z
otpauth://�/�?)�_length�base64�	b32encode�_key�
_algorithm�name�upper�append�extendrr)rrr
rr�
parameters�label�r"�`/opt/nydus/tmp/pip-target-wkfpz8uv/lib64/python/cryptography/hazmat/primitives/twofactor/hotp.py�
_generate_uris�
��r$c@steZdZdeeeejedd�dd�Z	eed�dd�Z
eedd	�d
d�Zeed�dd
�Ze
eeje
e
d�dd�ZdS)r
NT)�key�lengthr�backend�enforce_key_lengthrcCstt|�dkr|durtd��t|t�s.td��|dks>|dkrFtd��t|tttf�s^td��||_||_	||_
dS)	N�Tz'Key length has to be at least 128 bits.z)Length parameter must be an integer type.��z(Length of HOTP has to be between 6 to 8.z)Algorithm must be SHA1, SHA256 or SHA512.)�len�
ValueError�
isinstance�int�	TypeErrorrrrrrr)�selfr%r&rr'r(r"r"r#�__init__-s
z
HOTP.__init__)�counterrcCs*|�|�}|d|j}d�||j���S)N�
z{0:0{1}})�_dynamic_truncater�format�encode)r1r3Ztruncated_valuerr"r"r#�generateEs
z
HOTP.generate)rr3rcCst�|�|�|�std��dS)Nz#Supplied HOTP value does not match.)rZbytes_eqr8r	)r1rr3r"r"r#�verifyJszHOTP.verifycCsbt�|j|j�}|�|jddd��|��}|t|�dd@}|||d�}tj	|dd�d@S)	Nr+�big)r&�	byteorder���)r;i���)
r�HMACrr�update�to_bytes�finalizer,r/�
from_bytes)r1r3�ctxZ
hmac_value�offset�pr"r"r#r5NszHOTP._dynamic_truncate)r
r3rrcCst|d||dt|�fg�S)Nrr3)r$r/)r1r
r3rr"r"r#�get_provisioning_uriWs�zHOTP.get_provisioning_uri)NT)�__name__�
__module__�__qualname__�bytesr/�_ALLOWED_HASH_TYPES�typing�Any�boolr2r8r9r5�str�OptionalrGr"r"r"r#r
,s ��
�)rrM�urllib.parserrZcryptography.hazmat.primitivesrrZ%cryptography.hazmat.primitives.hashesrrrZ(cryptography.hazmat.primitives.twofactorr	�UnionrLrPrQ�List�Tupler/r$r
r"r"r"r#�<module>s�