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: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/lib/python3.10/site-packages/asyncssh/crypto/__pycache__/ed.cpython-310.pyc
o

�h�+�
@sdZddlZddlZddlmZmZmZmZddlm	Z	ddl
mZddlm
Z
mZddlmZmZddlmZdd	lmZdd
lmZddlmZdd
lmZmZee
jejfZee
jejfZe��Z e�!�Z"e�#�Z$e�%�Z&e sve"r�Gdd�de�Z'Gdd�de'�Z(Gdd�de'�Z)n;Gdd�d�Z*Gdd�de*�Z(Gdd�de*�Z)zddl+Z+e+j,Z-e+j.Z/e+j0Z1e+j2Z3e+j4Z5dZ Wne6e7e8fy�Ynwe$r�Gdd�d�Z9n,Gdd�d�Z9zddl+m:Z:e:�;�Z<e:�=�Z>e:j?Z@e:jAZBdZ$Wne6e7e8fy�YnwGdd�d�ZCdS)zFA shim around PyCA and libnacl for Edwards-curve keys and key exchange�N)�Dict�Optional�Union�cast)�InvalidSignature)�backend)�ed25519�ed448)�x25519�x448)�Encoding)�
PrivateFormat)�PublicFormat)�NoEncryption�)�	CryptoKey�PyCAKeycs^eZdZdZ	d
dededeef�fdd�
Zedefd	d
��Z	edeefdd��Z
�ZS)�	_EdDSAKeyz.Base class for shim around PyCA for EdDSA keysN�pyca_key�pub�privcst��|�||_||_dS�N)�super�__init__�_pub�_priv)�selfrrr��	__class__��E/usr/local/CyberCP/lib/python3.10/site-packages/asyncssh/crypto/ed.pyr5s
z_EdDSAKey.__init__�returncC�|jS�z0Return the public value encoded as a byte string�r�rrrr �public_value<�z_EdDSAKey.public_valuecCr")�1Return the private value encoded as a byte string)rr%rrr �
private_valueBr'z_EdDSAKey.private_valuer)�__name__�
__module__�__qualname__�__doc__r�bytesrr�propertyr&r)�
__classcell__rrrr r2s��rc@s�eZdZUdZiZeeefed<e	re
jed<ere
jed<edededdfdd	��Zededdfd
d��Zdd
ededefdd�ZdS)�EdDSAPrivateKeyz)A shim around PyCA for EdDSA private keys�
_priv_classes�ed25519�ed448�curve_idrr!cCs>td|j|�}|�|�}|��}|�tjtj�}||||�S)�Construct an EdDSA private key�
_EdPrivateKey)rr2�from_private_bytes�
public_key�public_bytesr�Rawr)�clsr5r�priv_cls�priv_key�pub_keyrrrr �	constructTs

�EdDSAPrivateKey.constructcCsPtd|j|�}|��}|�tjtjt��}|��}|�	tjt
j�}||||�S)� Generate a new EdDSA private keyr7)rr2�generate�
private_bytesrr;r
rr9r:r)r<r5r=r>rr?rrrr rC_s��EdDSAPrivateKey.generate��data�	hash_namecCstd|j�}|�|�S)�Sign a block of datar7)rr�sign)rrGrHr>rrr rJms
�EdDSAPrivateKey.signN�rF)r*r+r,r-r2rr.�object�__annotations__�ed25519_availabler�Ed25519PrivateKey�ed448_availabler	�Ed448PrivateKey�classmethodr@rC�strrJrrrr r1Is




r1c	@sfeZdZUdZejejd�Ze	e
efed<e
de
de
ddfdd��Zdd
e
de
dedefd
d�ZdS)�EdDSAPublicKeyz(A shim around PyCA for EdDSA public keys)r3r4�_pub_classesr5rr!cCs$td|j|�}|�|�}|||�S)�Construct an EdDSA public key�_EdPublicKey)rrV�from_public_bytes)r<r5r�pub_clsr?rrr r@~s

�EdDSAPublicKey.constructrFrG�sigrHcCs4ztd|j�}|�||�WdStyYdSw)�'Verify the signature on a block of datarXTF)rr�verifyr)rrGr\rHr?rrr r^�s��EdDSAPublicKey.verifyNrL)r*r+r,r-r�Ed25519PublicKeyr	�Ed448PublicKeyrVrr.rMrNrSr@rT�boolr^rrrr rUvs
� rUc@sPeZdZdZddedeefdd�Zedefdd	��Zedeefd
d��Z	dS)
�
_EdDSANaclKeyz1Base class for shim around libnacl for EdDSA keysNrrcCs||_||_dSr)rr)rrrrrr r�s
z_EdDSANaclKey.__init__r!cCr"r#r$r%rrr r&�r'z_EdDSANaclKey.public_valuecCs |jr|jdt|j��SdS)r(N)r�lenrr%rrr r)�s z_EdDSANaclKey.private_valuer)
r*r+r,r-r.rrr/r&r)rrrr rc�srcc@sXeZdZdZedededdfdd��Zededdfdd��Zdd
ededefdd
�Z	dS)r1z,A shim around libnacl for EdDSA private keysr5rr!cCs|t|��S)r6)�_ed25519_construct_keypair)r<r5rrrr r@�srAcCs
|t��S)rB)�_ed25519_generate_keypair)r<r5rrr rC�s
rErFrGrHcCs(|jdusJ�t||j�dt|��S)rIN)r�
_ed25519_signrd)rrGrHrrr rJ�srKNrL)
r*r+r,r-rSr.r@rTrCrJrrrr r1�sc	@sFeZdZdZedededdfdd��Zdded	ed
edefdd�Z	d
S)rUz+A shim around libnacl for EdDSA public keysr5rr!cCst|�tkr
td��||�S)rWzInvalid EdDSA public key)rd�_ED25519_PUBLIC_BYTES�
ValueError)r<r5rrrr r@�sr[rFrGr\rHcCs,zt|||j�|kWStyYdSw)r]F)�_ed25519_verifyrri)rrGr\rHrrr r^�s
�r_NrL)
r*r+r,r-rSr.r@rTrbr^rrrr rU�s
 
Tc@�LeZdZdZd
dd�Zdefdd�Zdedefd	d
�Zdedefdd�Z	dS)�Curve25519DHz6Curve25519 Diffie Hellman implementation based on PyCAr!NcC�tj��|_dSr)r
�X25519PrivateKeyrC�	_priv_keyr%rrr r���Curve25519DH.__init__cC�|j���tjtj�S��.Return the public key to send in the handshake�ror9r:rr;rr%rrr �
get_public����Curve25519DH.get_public�peer_publiccCstj�|�}|j�|�S)�9Return the shared key from the peer's public key as bytes)r
�X25519PublicKeyrYro�exchange)rry�peer_keyrrr �get_shared_bytes�s�Curve25519DH.get_shared_bytescC�t�|�|�d�S�z0Return the shared key from the peer's public key�big��int�
from_bytesr~�rryrrr �
get_shared���Curve25519DH.get_shared�r!N�
r*r+r,r-rr.rvr~r�r�rrrr rl�s
rlc@rk)rlz9Curve25519 Diffie Hellman implementation based on libnaclr!NcCst�t�|_dSr)�os�urandom�_CURVE25519_SCALARBYTES�_privater%rrr rrprqcCs(t�t�}t||j�dkrtd��|jS)rtr�Curve25519 failed)�ctypes�create_string_buffer�_CURVE25519_BYTES�_curve25519_baser�ri�raw)r�publicrrr rvs
rxrycCs>t|�tkr
td��t�t�}t||j|�dkrtd��|jS)rzz"Invalid curve25519 public key sizerr�)rdr�rir�r��_curve25519r�r�)rry�sharedrrr r~s
rcCr�r�r�r�rrr r� r�r�r�r�rrrr rls

)�naclc@s:eZdZdZddd�Zdefdd�Zdedefd	d
�ZdS)�
Curve448DHz4Curve448 Diffie Hellman implementation based on PyCAr!NcCrmr)r�X448PrivateKeyrCror%rrr r7rpzCurve448DH.__init__cCrrrsrur%rrr rv:rwzCurve448DH.get_publicrycCs$tj�|�}|j�|�}t�|d�Sr�)r�
X448PublicKeyrYror|r�r�)rryr}r�rrr r�@szCurve448DH.get_sharedr�)	r*r+r,r-rr.rvr�r�rrrr r�4s

r�)Dr-r�r��typingrrrr�cryptography.exceptionsr�$cryptography.hazmat.backends.opensslr�)cryptography.hazmat.primitives.asymmetricrr	r
r�,cryptography.hazmat.primitives.serializationrr
rr�miscrrrPrRr7r`rarX�ed25519_supportedrO�ed448_supportedrQ�x25519_supported�curve25519_available�x448_supported�curve448_availablerr1rUrc�libnacl�"crypto_sign_ed25519_PUBLICKEYBYTESrh�crypto_sign_seed_keypairre�crypto_sign_keypairrf�crypto_signrg�crypto_sign_openrj�ImportError�OSError�AttributeErrorrlr��"crypto_scalarmult_curve25519_bytesr��(crypto_scalarmult_curve25519_scalarbytesr��crypto_scalarmult_curve25519r��!crypto_scalarmult_curve25519_baser�r�rrrr �<module>sh-�#��