File: //usr/local/CyberPanel/lib64/python3.10/site-packages/asyncssh/__pycache__/sk.cpython-310.pyc
o
�hC. � @ s< d Z ddlmZ ddlZddlmZ ddlZddlZddlm Z m
Z
mZmZm
Z
ddlmZmZmZmZ ed�Zeeeeef ZdZd Zd
ZdZdZd
edeeef defdd�Zdedefdd�Zdede def dedefdd�Z ddd
ededeeef fdd �Z!ddd
eded!ed"e
e d#e"deeef fd$d%�Z#d
eded!edeeef fd&d'�Z$ddd(eded)edeeeef f
d*d+�Z%ddd(eded)ed,e"deeeef fd-d.�Z&d/eded)edeeeeef fd0d1�Z'd/ededefd2d3�Z(d
eded!ed"e
e d#e"deeef fd4d5�Z) 6dHd/eded)ed7ed8e"deeeeef fd9d:�Z*ded!e
e d"edee fd;d<�Z+zCdd=l,m-Z- dd>l.m/Z/ dd?l0m1Z1m2Z2m3Z3 dd@l4m5Z5m6Z6m7Z7 ddAl4m8Z8 ddBl9m:Z: dCZ;e-�<� �owe=edD��owej>j?�@� ZAW dS eBeCeDf�y� d6Z;d6ZAdedEedefdFdG�ZEeEZ)eEZ*eEZ+Y dS w )IzU2F security key handler� )�urlsafe_b64encodeN)�sha256)�Callable�List�Mapping�NoReturn�Optional)�Sequence�Tuple�TypeVar�cast�_PollResultg�������?s � i����i�����alg�
public_key�returnc C s0 t t|d �}| tkr
|S d| t t|d � S )z8Decode algorithm and public value from a CTAP public key���� ���)r �bytes�SSH_SK_ED25519)r r �result� r �A/usr/local/CyberPanel/lib/python3.10/site-packages/asyncssh/sk.py�_decode_public_key0 s r �_rp_id�_originc C s dS )z@Allow any relying party name -- SSH encodes the application hereTr )r r r r r �
_verify_rp_id; s r �
poll_interval�func.�argsc
G sL z||� W S t y$ } z|jtjkr� t�| � W Y d}~nd}~ww q)z'Poll until a CTAP1 response is receivedTN)� ApduError�code�APDU�USE_NOT_SATISFIED�time�sleep)r r r �excr r r �_ctap1_pollA s
���r( �dev�
CtapHidDevice�applicationc C sF t | �}|tkrtd��t|�d���� }tt|jt |�}|j
|jfS )z.Enroll a new security key using CTAP version 1zUnsupported algorithm�utf-8)�Ctap1�SSH_SK_ECDSA�
ValueErrorr �encode�digestr( �_CTAP1_POLL_INTERVAL�register�_dummy_hashr �
key_handle)r) r r+ �ctap1�app_hash�registrationr r r �
_ctap1_enrollO s �r9 �user�pin�residentc C s� t | �}||d�}|�d�|d�}d|d�g} d|i}
|r6t� }t||��|�}t�|tt�� � dd� }
nd}d}
|r?|j
nd}|jt||| |
|
|d�}|jj
}t||j�|jfS ) z.Enroll a new security key using CTAP version 2��id�namer, �
public-key��typer �rkN� )�options�pin_uv_param�pin_uv_protocol)�Ctap2r0 �
PinProtocolV1� ClientPin�
get_pin_token�hmac�newr4 r r1 �VERSION�make_credential� auth_data�credential_datar r �
credential_id)r) r r+ r: r; r<