PHP WebShell

Текущая директория: /usr/lib/python3/dist-packages/cryptography/hazmat/primitives/twofactor/__pycache__

Просмотр файла: hotp.cpython-310.pyc

o

�)%a
�@s�ddlZddlZddlmZmZddlmZddlmZddl	m
Z
mZddlm
Z
mZmZddlmZddlmZeje
eefZGd	d
�d
e�ZdS)�N)�UnsupportedAlgorithm�_Reasons)�_get_backend)�HMACBackend)�
constant_time�hmac)�SHA1�SHA256�SHA512)�InvalidToken)�
_generate_uric	@s�eZdZ		ddedededefdd�Zd	ed
efdd�Zd
ed	ed
dfdd�Z	d	ed
efdd�Z
ded	edej
ed
efdd�ZdS)�HOTPNT�key�length�	algorithm�enforce_key_lengthcCs�t|�}t|t�stdtj��t|�dkr|durtd��t|t�s&t	d��|dks.|dkr2td��t|t
ttf�s>t	d	��||_
||_||_||_dS)
Nz.Backend object does not implement HMACBackend.�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.)r�
isinstancerrr�BACKEND_MISSING_INTERFACE�len�
ValueError�int�	TypeErrorrr	r
�_key�_length�
_algorithm�_backend)�selfrrr�backendr�r!�O/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/twofactor/hotp.py�__init__s$
�

z
HOTP.__init__�counter�returncCs*|�|�}|d|j}d�||j���S)N�
z{0:0{1}})�_dynamic_truncater�format�encode)rr$�truncated_value�hotpr!r!r"�generate6s
z
HOTP.generater+cCst�|�|�|�s
td��dS)Nz#Supplied HOTP value does not match.)r�bytes_eqr,r)rr+r$r!r!r"�verify;s�zHOTP.verifycCsft�|j|j|j�}|�t�d|��|��}|t	|�dd@}|||d�}t�
d|�dd@S)Nz>Q���z>Iri���)r�HMACrrr�update�struct�pack�finalizer�unpack)rr$�ctx�
hmac_value�offset�pr!r!r"r'?szHOTP._dynamic_truncate�account_name�issuercCst|d||dt|�fg�S)Nr+r$)rr)rr<r$r=r!r!r"�get_provisioning_uriHs�zHOTP.get_provisioning_uri)NT)�__name__�
__module__�__qualname__�bytesr�_ALLOWED_HASH_TYPES�boolr#r,r.r'�str�typing�Optionalr>r!r!r!r"r
s0����
� 	����r
)r4rF�cryptography.exceptionsrr�cryptography.hazmat.backendsr�'cryptography.hazmat.backends.interfacesr�cryptography.hazmat.primitivesrr�%cryptography.hazmat.primitives.hashesrr	r
�(cryptography.hazmat.primitives.twofactorr�.cryptography.hazmat.primitives.twofactor.utilsr�UnionrC�objectr
r!r!r!r"�<module>s

Выполнить команду


Для локальной разработки. Не используйте в интернете!