U
vù¾fT ã @ s˜ d dl Z d dlZd dlmZ d dlmZmZ d dlmZm Z d dl
mZ d dlm
Z
d dlmZ edd ƒ\ZZd
d„ edd ƒD ƒ\ZZG dd
„ d
ƒZdS )é N)ÚUnsupportedAlgorithm)Ú
constant_timeÚ
serialization)ÚX25519PrivateKeyÚX25519PublicKey)ÚMessage©Úbyte_chr)ÚSSHExceptioné é c C s g | ]}t |ƒ‘qS © r )Ú.0Úcr
r
úH/opt/alt/python38/lib/python3.8/site-packages/paramiko/kex_curve25519.pyÚ
s r c @ sN e Zd ZejZdd„ Zedd„ ƒZdd„ Z dd„ Z
d d
„ Zdd„ Zd
d„ Z
dS )Ú
KexCurve25519c C s || _ d | _d S ©N)Ú transportÚkey)Úselfr r
r
r Ú__init__ s zKexCurve25519.__init__c C s, zt ¡ W n tk
r" Y dS X dS d S )NFT)r Úgenerater )Úclsr
r
r Úis_available s
zKexCurve25519.is_availablec C s$ | j |¡}t |d¡r tdƒ‚|S )Ns z.peer's curve25519 public value has wrong order)r Zexchanger Zbytes_eqr
)r Úpeer_keyÚsecretr
r
r Ú_perform_exchange$ s ÿzKexCurve25519._perform_exchangec C sn t ¡ | _| jjr"| j t¡ d S tƒ }| t ¡ |
| j ¡ t
jjt
jj¡¡ | j |¡ | j t¡ d S r )r r r r Úserver_modeZ_expect_packetÚ_MSG_KEXECDH_INITr Úadd_byteÚc_MSG_KEXECDH_INITÚ
add_stringÚ
public_keyÚpublic_bytesr ÚEncodingÚRawÚPublicFormatÚ
_send_messageÚ_MSG_KEXECDH_REPLY)r Úmr
r
r Ú start_kex, s
ÿÿzKexCurve25519.start_kexc C sF | j jr|tkr| |¡S | j js4|tkr4| |¡S td |¡ƒ‚d S )Nz.KexCurve25519 asked to handle packet type {:d})r r r Ú_parse_kexecdh_initr) Ú_parse_kexecdh_replyr
Úformat)r Úptyper* r
r
r Ú
parse_next<