PHP WebShell

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

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

o

�)%aW�@s.ddlZddlZddlZddlZddlZddlmZddlm	Z	ddl
mZddlm
Z
ddlmZmZmZmZddlmZmZmZddlmZmZmZmZz
dd	lmZd
ZWne yvdZ	d[de!d
e!de"de"de#de!fdd�ZYnwdZ$dZ%dZ&dZ'dZ(dZ)dZ*e�+d�Z,dZ-dZ.dZ/dZ0d Z1d!Z2d"Z3d#Z4e�+e.d$e/ej5�Z6e7e8e9d%d&���Z:ej;d'ej<d"fej;d'ej=d"fd(�Z>e'e(e)d)�Z?e�@d*�ZAe�@d+�ZBd,d-�ZCe.d.e/d.fd/d0�ZDd1d2�ZEd3d4�ZFd5d6�ZGd7d8�ZHd9d:�ZId;d<�ZJd=d>�ZKd?d@�ZLGdAdB�dBeM�ZNGdCdD�dDeM�ZOGdEdF�dFeM�ZPGdGdH�dHeM�ZQGdIdJ�dJeM�ZRe%eO�e&eP�e$eR�e'eQdKe�S��e(eQdLe�T��e)eQdMe�U��iZVdNdO�ZWejXejYejZej[ej\fZ]	d\dPe!dej^e!de]fdQdR�Z_	d\dSe]dej^e!fdTdU�Z`ejXejaejbejcejdfZed\dPe!deefdVdW�ZfdXeede!fdYdZ�ZgdS)]�N)�encodebytes)�utils��UnsupportedAlgorithm)�_get_backend)�dsa�ec�ed25519�rsa)�Cipher�
algorithms�modes)�Encoding�NoEncryption�
PrivateFormat�PublicFormat)�kdfTF�password�salt�desired_key_bytes�rounds�ignore_few_rounds�returncCstd��)NzNeed bcrypt moduler)rrrrr�r�R/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/serialization/ssh.py�_bcrypt_kdf srsssh-ed25519sssh-rsasssh-dsssecdsa-sha2-nistp256secdsa-sha2-nistp384secdsa-sha2-nistp521s-cert-v01@openssh.coms\A(\S+)[ \t]+(\S+)sopenssh-key-v1s#-----BEGIN OPENSSH PRIVATE KEY-----s!-----END OPENSSH PRIVATE KEY-----sbcryptsnone�
aes256-ctr��Hs(.*?)��� )rs
aes256-cbc)�	secp256r1�	secp384r1�	secp521r1s>Is>QcCs(|j}|jtvrtd|j��t|jS)z3Return SSH key_type and curve_name for private key.z)Unsupported curve for ssh private key: %r)�curve�name�_ECDSA_KEY_TYPE�
ValueError)�
public_keyr%rrr�_ecdsa_key_typeSs
�
r*�
cCsd�|t|�|g�S)N�)�join�_base64_encode)�data�prefix�suffixrrr�_ssh_pem_encode]sr2cCs |r
t|�|dkrtd��dS)zRequire data to be full blocksrzCorrupt data: missing paddingN)�lenr()r/�	block_lenrrr�_check_block_sizeas�r5cCs|rtd��dS)z!All data should have been parsed.zCorrupt data: unparsed dataN)r(�r/rrr�_check_emptygs�r7c
CsT|std��t|\}}}}t|||||d�}	t||	d|��||	|d��|�S)z$Generate key + iv and return cipher.zKey is password-protected.TN)r(�_SSH_CIPHERSrr)
�
ciphernamerrr�backend�algo�key_len�mode�iv_len�seedrrr�_init_cipherms
$r@cC�6t|�dkr
td��t�|dd��d|dd�fS)�Uint32��Invalid dataNr)r3r(�_U32�unpackr6rrr�_get_u32w�"rGcCrA)�Uint64�rDNr)r3r(�_U64rFr6rrr�_get_u64~rHrLcCs8t|�\}}|t|�krtd��|d|�||d�fS)zBytes with u32 length prefixrDN)rGr3r()r/�nrrr�_get_sshstr�srNcCs4t|�\}}|r|ddkrtd��t�|d�|fS)zBig integer.r�rD�big)rNr(�int�
from_bytes)r/�valrrr�
_get_mpint�srTcCs4|dkrtd��|sdS|��dd}t�||�S)z!Storage format for signed bigint.rznegative mpint not allowedr,rJ)r(�
bit_lengthr�int_to_bytes)rS�nbytesrrr�	_to_mpint�srXc@sTeZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	ddd�Z
dd�ZdS)�	_FragListz,Build recursive structure without data copy.NcCsg|_|r
|j�|�dSdS�N)�flist�extend)�self�initrrr�__init__�s�z_FragList.__init__cCs|j�|�dS)zAdd plain bytesN)r[�append�r]rSrrr�put_raw��z_FragList.put_rawcCs|j�t�|��dS)zBig-endian uint32N)r[r`rE�packrarrr�put_u32�sz_FragList.put_u32cCsNt|tttf�r|�t|��|j�|�dS|�|���|j�	|j�dS)zBytes prefixed with u32 lengthN)
�
isinstance�bytes�
memoryview�	bytearrayrer3r[r`�sizer\rarrr�
put_sshstr�s
z_FragList.put_sshstrcCs|�t|��dS)z*Big-endian bigint prefixed with u32 lengthN)rkrXrarrr�	put_mpint�sz_FragList.put_mpintcCsttt|j��S)zCurrent number of bytes)�sum�mapr3r[)r]rrrrj�rcz_FragList.sizercCs2|jD]}t|�}|||}}||||�<q|S)zWrite into bytearray)r[r3)r]�dstbuf�pos�frag�flen�startrrr�render�s

z_FragList.rendercCs"tt|����}|�|�|��S)zReturn as bytes)rhrirjrt�tobytes)r]�bufrrrru�s
z_FragList.tobytesrZ)r)�__name__�
__module__�__qualname__�__doc__r_rbrerkrlrjrtrurrrrrY�s
	
rYc@�8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�
_SSHFormatRSAzhFormat for RSA keys.

    Public:
        mpint e, n
    Private:
        mpint n, e, d, iqmp, p, q
    cCs$t|�\}}t|�\}}||f|fS)zRSA public fields�rT)r]r/�erMrrr�
get_public�sz_SSHFormatRSA.get_publiccCs0|�|�\\}}}t�||�}|�|�}||fS)zMake RSA public key from data.)rr
�RSAPublicNumbersr))r]�key_typer/r:r~rM�public_numbersr)rrr�load_public�s
z_SSHFormatRSA.load_publicc	Cs�t|�\}}t|�\}}t|�\}}t|�\}}t|�\}}t|�\}	}||f|kr.td��t�||�}
t�||	�}t�||�}t�||	||
|||�}
|
�|�}||fS)zMake RSA private key from data.z Corrupt data: rsa field mismatch)rTr(r
�rsa_crt_dmp1�rsa_crt_dmq1r��RSAPrivateNumbers�private_key)r]r/�	pubfieldsr:rMr~�d�iqmp�p�q�dmp1�dmq1r��private_numbersr�rrr�load_private�s �
z_SSHFormatRSA.load_privatecCs$|��}|�|j�|�|j�dS)zWrite RSA public keyN)r�rlr~rM)r]r)�f_pub�pubnrrr�
encode_public�sz_SSHFormatRSA.encode_publiccCsZ|��}|j}|�|j�|�|j�|�|j�|�|j�|�|j�|�|j�dS)zWrite RSA private keyN)	r�r�rlrMr~r�r�r�r�)r]r��f_privr�r�rrr�encode_private�sz_SSHFormatRSA.encode_privateN�	rwrxryrzrr�r�r�r�rrrrr|�sr|c@�@eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)�
_SSHFormatDSAzhFormat for DSA keys.

    Public:
        mpint p, q, g, y
    Private:
        mpint p, q, g, y, x
    cCs@t|�\}}t|�\}}t|�\}}t|�\}}||||f|fS)zDSA public fieldsr})r]r/r�r��g�yrrrrs
z_SSHFormatDSA.get_publiccCsL|�|�\\}}}}}t�|||�}t�||�}	|�|	�|	�|�}
|
|fS)zMake DSA public key from data.)rr�DSAParameterNumbers�DSAPublicNumbers�	_validater))r]r�r/r:r�r�r�r��parameter_numbersr�r)rrrr�s

z_SSHFormatDSA.load_publicc
Cs||�|�\\}}}}}t|�\}}||||f|krtd��t�|||�}	t�||	�}
|�|
�t�||
�}|�|�}||fS)zMake DSA private key from data.z Corrupt data: dsa field mismatch)	rrTr(rr�r�r��DSAPrivateNumbersr�)
r]r/r�r:r�r�r�r��xr�r�r�r�rrrr�'s

z_SSHFormatDSA.load_privatecCsL|��}|j}|�|�|�|j�|�|j�|�|j�|�|j�dS)zWrite DSA public keyN)r�r�r�rlr�r�r�r�)r]r)r�r�r�rrrr�5s
z_SSHFormatDSA.encode_publiccCs$|�|��|�|�|��j�dS)zWrite DSA private keyN)r�r)rlr�r�)r]r�r�rrrr�@sz_SSHFormatDSA.encode_privatecCs |j}|j��dkrtd��dS)Niz#SSH supports only 1024 bit DSA keys)r�r�rUr()r]r�r�rrrr�Es�z_SSHFormatDSA._validateN)
rwrxryrzrr�r�r�r�r�rrrrr�
s	r�c@r�)�_SSHFormatECDSAz�Format for ECDSA keys.

    Public:
        str curve
        bytes point
    Private:
        str curve
        bytes point
        mpint secret
    cCs||_||_dSrZ)�ssh_curve_namer%)r]r�r%rrrr_Ws
z_SSHFormatECDSA.__init__cCsJt|�\}}t|�\}}||jkrtd��|ddkrtd��||f|fS)zECDSA public fieldszCurve name mismatchrrCzNeed uncompressed point)rNr�r(�NotImplementedError)r]r/r%�pointrrrr[s
z_SSHFormatECDSA.get_publiccCs.|�|�\\}}}tj�|j|���}||fS)z Make ECDSA public key from data.)rr�EllipticCurvePublicKey�from_encoded_pointr%ru)r]r�r/r:�
curve_namer�r)rrrr�es

�z_SSHFormatECDSA.load_publiccCsJ|�|�\\}}}t|�\}}||f|krtd��t�||j|�}||fS)z!Make ECDSA private key from data.z"Corrupt data: ecdsa field mismatch)rrTr(r�derive_private_keyr%)r]r/r�r:r�r��secretr�rrrr�msz_SSHFormatECDSA.load_privatecCs*|�tjtj�}|�|j�|�|�dS)zWrite ECDSA public keyN)�public_bytesr�X962r�UncompressedPointrkr�)r]r)r�r�rrrr�ws
�z_SSHFormatECDSA.encode_publiccCs,|��}|��}|�||�|�|j�dS)zWrite ECDSA private keyN)r)r�r�rl�
private_value)r]r�r�r)r�rrrr�sz_SSHFormatECDSA.encode_privateN)
rwrxryrzr_rr�r�r�r�rrrrr�Ks

r�c@r{)
�_SSHFormatEd25519z~Format for Ed25519 keys.

    Public:
        bytes point
    Private:
        bytes point
        bytes secret_and_point
    cCst|�\}}|f|fS)zEd25519 public fields)rN)r]r/r�rrrr�s
z_SSHFormatEd25519.get_publiccCs(|�|�\\}}tj�|���}||fS)z"Make Ed25519 public key from data.)rr	�Ed25519PublicKey�from_public_bytesru)r]r�r/r:r�r)rrrr��s
�z_SSHFormatEd25519.load_publicc	Csb|�|�\\}}t|�\}}|dd�}|dd�}||ks#|f|kr'td��tj�|�}||fS)z#Make Ed25519 private key from data.Nr!z$Corrupt data: ed25519 field mismatch)rrNr(r	�Ed25519PrivateKey�from_private_bytes)	r]r/r�r:r��keypairr��point2r�rrrr��sz_SSHFormatEd25519.load_privatecCs|�tjtj�}|�|�dS)zWrite Ed25519 public keyN)r�r�Rawrrk)r]r)r��raw_public_keyrrrr��s�z_SSHFormatEd25519.encode_publiccCsR|��}|�tjtjt��}|�tjtj�}t||g�}|�	||�|�
|�dS)zWrite Ed25519 private keyN)r)�
private_bytesrr�rrr�rrYr�rk)r]r�r�r)�raw_private_keyr��	f_keypairrrrr��s��z _SSHFormatEd25519.encode_privateNr�rrrrr��s	r�snistp256snistp384snistp521cCs2t|t�st|���}|tvrt|Std|��)z"Return valid format or throw errorzUnsupported key type: %r)rfrgrhru�_KEY_FORMATSr)r�rrr�_lookup_kformat�s

r�r/cCsJt�d|�t|�}|durt�d|�t�|�}|std��|�d�}|�d�}t	�
t|�||��}|�t
�s=td��t|�tt
�d�}t|�\}}t|�\}}t|�\}}t|�\}	}|	dkrgtd��t|�\}
}t|
�\}}
t|�}|�|
�\}
}
t|
�t|�\}}t|�||fttfkr�|��}|tvr�td|��|tkr�td|��t|d	}t||�t|�\}}t|�\}}t|�t|||��||�}t|���|��}nd
}t||�t|�\}}t|�\}}||kr�td��t|�\}}||k�rtd��|�||
|�\}}t|�\}}|tdt|��k�r#td
��|S)z.Load private key from OpenSSH custom encoding.r/NrzNot OpenSSH private key formatrzOnly one key supportedzUnsupported cipher: %rzUnsupported KDF: %r�rJzCorrupt data: broken checksumzCorrupt data: key type mismatchzCorrupt data: invalid padding)r�_check_bytesliker�_check_bytes�_PEM_RC�searchr(rs�end�binascii�
a2b_base64rh�
startswith�	_SK_MAGICr3rNrGr�rr7�_NONErur8r�_BCRYPTr5r@�	decryptor�updater��_PADDING)r/rr:�m�p1�p2r9�kdfname�
kdfoptions�nkeys�pubdata�pub_key_type�kformatr��edata�blklenr�kbufr�ciph�ck1�ck2r�r��commentrrr�load_ssh_private_key�sn




�

r�r�cCs>|dur
t�d|�|rt|�tkrtd��t|tj�r#t|�	��}nt|t
j�r,t}nt|t
j�r5t}n
t|tj�r>t}ntd��t|�}t�}|rst}t|d}t}t}t�d�}	|�|	�|�|�td�}
t|||	||
�}nt}}d}d}d}t�d	�}
d
}t�}|�|�|� |�	�|�t|
|
g�}|�|�|�!||�|�|�|�"t#d||�$�|��t�}|�"t%�|�|�|�|�|�|�|�|�|�|�|�|�|�$�}|�$�}t&t'||��}|�(|�||}|du�r
|�)��*|||�||d��t+|d|��}t'|�|||�<|S)z3Serialize private key with OpenSSH custom encoding.NrzNPasswords longer than 72 bytes are not supported by OpenSSH private key format�Unsupported key typer�rrJrrCr,),rr�r3�
_MAX_PASSWORDr(rfr�EllipticCurvePrivateKeyr*r)r
�
RSAPrivateKey�_SSH_RSAr�
DSAPrivateKey�_SSH_DSAr	r��_SSH_ED25519r�rY�_DEFAULT_CIPHERr8r��_DEFAULT_ROUNDS�os�urandomrkrerr@r�r�r�rbr�rjr�rhrirt�	encryptor�update_intor2)r�rr�r��f_kdfoptionsr9r�r�rrr:r�r��checkvalr��f_public_key�	f_secrets�f_main�slen�mlenrv�ofs�txtrrr�serialize_ssh_private_key(sv�















 r�c	Cs|t|�}t�d|�t�|�}|std��|�d�}}|�d�}d}t|tt�d�kr9d}|dtt��}t	|�}z	t
t�|��}Wnt
tjfyTtd��wt|�\}}||krctd��|rkt|�\}	}|�|||�\}
}|r�t|�\}}t|�\}}t|�\}
}t|�\}}t|�\}}t|�\}}t|�\}}t|�\}}t|�\}}t|�\}}t|�\}}t|�|
S)	z-Load public key from OpenSSH one-line format.r/zInvalid line formatr�FNTzInvalid key format)rrr��_SSH_PUBKEY_RC�matchr(�group�_CERT_SUFFIXr3r�rhr�r��	TypeError�ErrorrNr�rLrGr7)r/r:r�r��
orig_key_type�key_body�	with_certr��inner_key_type�noncer)�serial�cctype�key_id�
principals�valid_after�valid_before�crit_options�
extensions�reserved�sig_key�	signaturerrr�load_ssh_public_key�sJ

�rr)cCs�t|tj�rt|�}nt|tj�rt}nt|tj�rt	}n
t|t
j�r&t}nt
d��t|�}t�}|�|�|�||�t�|�����}d�|d|g�S)z&One-line public key format for OpenSSHr�r,� )rfrr�r*r
�RSAPublicKeyr�r�DSAPublicKeyr�r	r�r�r(r�rYrkr�r��
b2a_base64ru�stripr-)r)r�r�r��pubrrr�serialize_ssh_public_key�s

r)FrZ)hr�r��re�struct�typing�base64rr.�cryptographyr�cryptography.exceptionsr�cryptography.hazmat.backendsr�)cryptography.hazmat.primitives.asymmetricrrr	r
�&cryptography.hazmat.primitives.ciphersrrr
�,cryptography.hazmat.primitives.serializationrrrr�bcryptrr�_bcrypt_supported�ImportErrorrgrQ�boolr�r�r��_ECDSA_NISTP256�_ECDSA_NISTP384�_ECDSA_NISTP521r��compiler�r��	_SK_START�_SK_ENDr�r�r�r�r��DOTALLr�rhri�ranger��AES�CTR�CBCr8r'�StructrErKr*r2r5r7r@rGrLrNrTrX�objectrYr|r�r�r��	SECP256R1�	SECP384R1�	SECP521R1r�r��Unionr�r�r�r��_SSH_PRIVATE_KEY_TYPES�Optionalr�r�r�r
rr��_SSH_PUBLIC_KEY_TYPESrrrrrr�<module>s���������

��




0>>=:�
	��	���
�N��
�U��+

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


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