HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: sport3497 (1034)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/lib64/python3.10/site-packages/asyncssh/__pycache__/sk_ecdsa.cpython-310.pyc
o

�h�!�@s&dZddlmZddlmZmZmZddlmZm	Z	ddl
mZddlm
Z
mZmZmZmZddlmZmZmZdd	lmZmZdd
lmZddlmZmZddlmZmZmZmZee e e!e"e e fZ#ee e e!fZ$Gd
d�de�Z%dZ&dZ'eee%d�ee&e%de&de&f�ede&e'e%ed�dS)z'U2F ECDSA public key encryption handler�)�sha256)�Optional�Tuple�cast�)�
der_encode�
der_decode)�ECDSAPublicKey)�Byte�MPInt�String�UInt32�	SSHPacket)�KeyExportError�SSHKey�SSHOpenSSHCertificateV01)�register_public_key_alg�register_certificate_alg)�register_sk_alg)�SSH_SK_ECDSA�SSH_SK_USER_PRESENCE_REQD)�	sk_enroll�sk_sign�sk_webauthn_prefix�sk_use_webauthncs`eZdZUdZeed<dZ		d6deded	ed
e	de
edef�fd
d�
Zdede
fdd�Zde	fdd�Zedddddd�ded	edede
ede
de
ddfdd��Zed edefd!d"��Zed edefd#d$��Zed%edefd&d'��Zed%edefd(d)��Zdefd*d+�Zdefd,d-�Zdefd.d/�Zd0ed1edefd2d3�Zd0ed1ed%ede
fd4d5�Z�ZS)7�_SKECDSAKeyz+Handler for U2F ECDSA public key encryption�_keyTrN��curve_id�public_value�application�flags�
key_handle�reservedcsvt��t�||��d|d|_|jd|jf|_t|j�|_t|_	||_
t|�d���
�|_||_||_||_dS)Nssk-ecdsa-sha2-s@openssh.com�	webauthn-�utf-8)�super�__init__r	�	construct�	algorithm�sig_algorithms�set�all_sig_algorithmsr�use_webauthn�_applicationr�encode�digest�	_app_hash�_flags�_key_handle�	_reserved)�selfrrr r!r"r#��	__class__��D/usr/local/CyberCP/lib/python3.10/site-packages/asyncssh/sk_ecdsa.pyr'/s
z_SKECDSAKey.__init__�other�returncCs^t|t|��o.|jj|jjko.|jj|jjko.|j|jko.|j|jko.|j|jko.|j|jkS�N)	�
isinstance�typerrrr.r2r3r4)r5r:r8r8r9�__eq__@s��
�
�
�
�z_SKECDSAKey.__eq__cCs$t|jj|jj|j|j|j|jf�Sr<)�hashrrrr.r2r3r4�r5r8r8r9�__hash__Ls�z_SKECDSAKey.__hash__zssh:�AsyncSSHF)r �user�pin�resident�touch_requiredr)rDrErFrGc
Cs:|rtnd}tt||||�\}}	||dd�||||	d�S)z#Generate a new SK ECDSA private keyr�i�r)rrr)
�clsr)r rDrErFrGr!rr"r8r8r9�generateQs	��z_SKECDSAKey.generate�
key_paramscCs(tt|�\}}}}}}|||||||�S)z!Construct a U2F ECDSA private key)r�_PrivateKeyArgs)rIrKrrr r!r"r#r8r8r9�make_privatecs
��z_SKECDSAKey.make_privatecCstt|�\}}}||||�S)z Construct a U2F ECDSA public key)r�_PublicKeyArgs)rIrKrrr r8r8r9�make_publicmsz_SKECDSAKey.make_public�packetcCsF|��}|��}|���d�}|��}|��}|��}||||||fS)z)Decode an SSH format SK ECDSA private keyr%)�
get_string�decode�get_byte)rIrPrrr r!r"r#r8r8r9�decode_ssh_privateusz_SKECDSAKey.decode_ssh_privatecCs(|��}|��}|���d�}|||fS)z(Decode an SSH format SK ECDSA public keyr%)rQrR)rIrPrrr r8r8r9�decode_ssh_public�s
z_SKECDSAKey.decode_ssh_publicc	CsP|jdur	td��d�t|jj�t|jj�t|j�t|j	�t|j�t|j
�f�S)z)Encode an SSH format SK ECDSA private keyN�Key is not privater)r3r�joinrrrrr.r
r2r4rAr8r8r9�encode_ssh_private�s

�z_SKECDSAKey.encode_ssh_privatecCs&d�t|jj�t|jj�t|j�f�S)z(Encode an SSH format SK ECDSA public keyr)rWrrrrr.rAr8r8r9�encode_ssh_public�s
�z_SKECDSAKey.encode_ssh_publiccCs<|jdur	td��d�t|j�t|j�t|j�t|j�f�S)z7Encode U2F ECDSA certificate private key data for agentNrVr)r3rrWrr.r
r2r4rAr8r8r9�encode_agent_cert_private�s

�z%_SKECDSAKey.encode_agent_cert_private�data�
sig_algorithmc
Cs�|jdur	td��|�d�}t||j|j|j|�\}}}}ttttft	|��\}}	t
t|�t|	��t|�t
|�}|rM|t
|j�t
|�t
d�7}|S)z6Compute an SSH-encoded signature of the specified dataNzKey handle needed for signing�webauthn�)r3�
ValueError�
startswithrr.r2rr�intrrrr
r
)
r5r[r\�is_webauthnr!�counter�sig�client_data�r�sr8r8r9�sign_ssh�s

�$z_SKECDSAKey.sign_sshc
Cs�|�d�}|��}|��}|��}|r.|��}|��}	|��}t||j�}
|	�|
�s,dS|	}|��|jr;|t@s;dSt	|�}|�
�}|�
�}|��t||f�}|j�
|jt|�t|�t|���|d�S)z5Verify an SSH-encoded signature of the specified datar]Fr)r`rQrS�
get_uint32rr.�	check_end�_touch_requiredrr�	get_mpintrr�verifyr1r
r
rr0)
r5r[r\rPrbrdr!rc�_re�prefixrfrgr8r8r9�
verify_ssh�s6

�
��z_SKECDSAKey.verify_ssh)rNr) �__name__�
__module__�__qualname__�__doc__r	�__annotations__�use_executor�bytes�strrarr'�object�boolr?rB�classmethodrJrrMrOrrLrTrNrUrXrYrZrhrp�
__classcell__r8r8r6r9r(sb
����
�������			
��rs"sk-ecdsa-sha2-nistp256@openssh.coms+sk-ecdsa-sha2-nistp256-cert-v01@openssh.comsnistp256Tr$N)(rt�hashlibr�typingrrr�asn1rr�cryptor	rPr
rrr
r�
public_keyrrrrrr�skrrrrrrrwrxrarLrNr�
_algorithm�_cert_algorithmr8r8r8r9�<module>s0<
��