AnonSec Shell
Server IP : 209.38.156.173  /  Your IP : 216.73.216.122   [ Reverse IP ]
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux lakekumayuhotel 5.15.0-136-generic #147-Ubuntu SMP Sat Mar 15 15:53:30 UTC 2025 x86_64
User : root ( 0)
PHP Version : 8.1.2-1ubuntu2.22
Disable Function : NONE
Domains : 2 Domains
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib/python3/dist-packages/twisted/conch/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /lib/python3/dist-packages/twisted/conch/test/__pycache__/test_keys.cpython-310.pyc
o

�b7��@s�dZddlZddlZddlmZddlmZddlmZddl	m
Z
ddlmZddl
mZed	�Zedur8d
Zed�ZerVerVddlmZdd
lmZmZmZe���ZndZdd�ZGdd�dej�ZGdd�dej�ZdS)z&
Tests for L{twisted.conch.ssh.keys}.
�N)�dedent)�keydata)�	randbytes)�FilePath)�
requireModule)�unittest�cryptographyz Cannot run without cryptography.�pyasn1)�default_backend)�common�keys�sexpyFcCstsd|_|S)Nz$ed25519 not supported on this system)�ED25519_SUPPORTED�skip)�f�r�>/usr/lib/python3/dist-packages/twisted/conch/test/test_keys.py�skipWithoutEd25519$src@s�eZdZedur
eZedurdZdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Z d7d8�Z!d9d:�Z"d;d<�Z#d=d>�Z$d?d@�Z%dAdB�Z&dCdD�Z'dEdF�Z(dGdH�Z)dIdJ�Z*e+dKdL��Z,dMdN�Z-dOdP�Z.dQdR�Z/dSdT�Z0e+dUdV��Z1dWdX�Z2dYdZ�Z3d[d\�Z4e+d]d^��Z5d_d`�Z6dadb�Z7dcdd�Z8dedf�Z9e+dgdh��Z:didj�Z;dkdl�Z<dmdn�Z=dodp�Z>dqdr�Z?dsdt�Z@dudv�ZAe+dwdx��ZBe+dydz��ZCd{d|�ZDd}d~�ZEdd��ZFd�d��ZGd�d��ZHd�d��ZId�d��ZJd�d��ZKd�d��ZLe+d�d���ZMd�d��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRd�d��ZSd�d��ZTe+d�d���ZUe+d�d���ZVdS)��KeyTestsNzCannot run without PyASN1cCs�tjjtjdtjdtjdtjdtjdtjdd�j|_tjjtjdtjdtjdtjd	tjd
d�j|_	tjj
tjd
tjdtjdtjd
d�j|_tjj
tj
d
tj
dtj
dtj
d
d�j|_tjj
tjd
tjdtjdtjd
d�j|_tr�tjjtjdtjdd�j|_d|_d|_|�tddd��|��|_t|jd��}|�tj�Wd�dS1s�wYdS)N�n�e�d�p�q�u)rrrrrr�y�g�x)rrrrr�privateValue�curve)rrrr�a�k)r r!sssh-rsa~Y��W�pu@�1�S�O�E�/x��G3��U��������d���,'=Qg�x�j�I�ޯb�@�rΣzM1q5�{wjKN��C��i����}�RT�DJH�l�[�������|�^n���ъ�aY�B��Ǿ7�9j�.������9p�?�N��/)
>Aµj�UWԮ�B�t�y����fˆ�k���u�N�ɓY�.V�L44`CǦ6��Y���%� 4^�rY� �.�%H��A�s7ssh-dss(?��;�TFA���E@4,d�	ٮ�[�-�nQ�f���jrg�p<�secureRandomcSsd|S)N��r)rrrr�<lambda>ksz KeyTests.setUp.<locals>.<lambda>�wb)r�Key�_fromRSAComponentsr�RSAData�
_keyObject�rsaObj�_fromDSAComponents�DSAData�dsaObj�_fromECComponents�ECDatanistp256�ecObj�ECDatanistp384�ecObj384�ECDatanistp521�ecObj521r�_fromEd25519Components�Ed25519Data�
ed25519Obj�rsaSignature�dsaSignature�patchr�mktemp�keyFile�open�write�privateRSA_lsh)�selfrrrr�setUp1st��������������
"�zKeyTests.setUpcCst�|j�dS�N)�os�unlinkr<�r@rrr�tearDownpszKeyTests.tearDowncCs�|�t�|j���d�|�t�|j���d�|�t�|j���d�|�t�|j���d�|�t�|j���d�t	rL|�t�|j
���d�dSdS)zU
        The L{keys.Key.size} method returns the size of key object in bits.
        i��i�i	N)�assertEqualrr&r*�sizer-r0r2r4rr7rErrr�	test_sizess�zKeyTests.test_sizecCs�|�tj�tj�d�|�tj�tj�d�|�tj�tj�d�tr.|�tj�tj	�d�|�tj�tj
�d�|�tj�tj�d�|�tj�tj�d�|�tj�tj
�d�|�tj�tj�d�|�tj�tj�d�tr}|�tj�tj�d�|�tj�tj�d�|�tj�tj�d�|�tj�tj�d�|�tj�tj�d�|�tj�tj�d�|�tj�tj�d�|�tj�d�d�|�tj�d�d�|�tj�d	�d
�d
S)z_
        Test that the _guessStringType method guesses string types
        correctly.
        �public_openssh�private_openssh�
public_lsh�private_lsh�agentv3sssh-rsa�blobsssh-dsss	not a keyN)rIrr&�_guessStringTyper�publicRSA_openssh�publicDSA_openssh�publicECDSA_opensshr�publicEd25519_openssh�privateRSA_openssh�privateRSA_openssh_new�privateDSA_openssh�privateDSA_openssh_new�privateECDSA_openssh�privateECDSA_openssh_new�privateEd25519_openssh_new�
publicRSA_lsh�
publicDSA_lshr?�privateDSA_lsh�privateRSA_agentv3�privateDSA_agentv3rErrr�test__guessStringTypesz���������������
�
�zKeyTests.test__guessStringTypec	Cs�tj�tj�}tj�tj�}|�|��|���tj�tj�}tj�tj	�}|�|��|���tj�tj
�}tj�tj�}|�|��|���trdtj�tj
�}tj�tj�}|�|��|���dSdS)zn
        The L{keys.Key.public} method returns a public key for both
        public and private keys.
        N)rr&�
fromStringrrWrSrI�publicrYrTr[rUrr]rV)	r@�
privateRSAKey�publicRSAKey�
privateDSAKey�publicDSAKey�privateECDSAKey�publicECDSAKey�privateEd25519Key�publicEd25519Keyrrr�test_public�s�zKeyTests.test_publiccCs�tj�tj�}tj�tj�}tj�tj�}|�|���	��|�
|�	��|�|���	��|�
|�	��|�|���	��|�
|�	��tr`tj�tj�}|�|���	��|�
|�	��dSdS)zg
        The L{keys.Key.isPublic} method returns True for public keys
        otherwise False.
        N)
rr&rdrrWrYr[�
assertTruere�isPublic�assertFalserr])r@�rsaKey�dsaKey�ecdsaKey�
ed25519Keyrrr�
test_isPublic�s�zKeyTests.test_isPubliccCs |�|||�|�|||�dSrB)�_testPublicFromString�_testPrivateFromString)r@re�private�type�datarrr�_testPublicPrivateFromString�sz%KeyTests._testPublicPrivateFromStringcCsTtj�|�}|�|���|�|��|�|����D]\}}|�|||�qdSrB)	rr&rdrorprIrzr{�items)r@rerzr{�	publicKeyr!�vrrrrw�s�zKeyTests._testPublicFromStringcCsTtj�|�}|�|���|�|��|�|��D]\}}|�|��||�qdSrB)	rr&rdrqrprIrzr}r{)r@ryrzr{�
privateKeyr!rrrrrx�s�zKeyTests._testPrivateFromStringcCs�|�tjtjdtj�|�tjtjdtj�|�t	j
jtjdd�t	j
�tj��|�t	j
�tj
�t	j
�tj��|�tjtjdtj�trR|�tjtjdtj�dSdS)zN
        Test that keys are correctly generated from OpenSSH strings.
        �EC�RSA�	encrypted��
passphrase�DSA�Ed25519N)r|rrUr[r/rSrWr(rIrr&rd�privateRSA_openssh_encrypted�privateRSA_openssh_alternaterTrYr,rrVr]r6rErrr�test_fromOpenSSHsH��������zKeyTests.test_fromOpenSSHcCsd}|�tjtjj|d�dS)z.
        Tests for invalid key types.
        s -----BEGIN FOO PRIVATE KEY-----
MIGkAgEBBDAtAi7I8j73WCX20qUM5hhHwHuFzYWYYILs2Sh8UZ+awNkARZ/Fu2LU
LLl5RtOQpbWgBwYFK4EEACKhZANiAATU17sA9P5FRwSknKcFsjjsk0+E3CeXPYX0
Tk/M0HK3PpWQWgrO8JdRHP9eFE9O/23P8BumwFt7F/AvPlCzVd35VfraFT0o4cCW
G0RqpQ+np31aKmeJshkcYALEchnU+tQ=
-----END EC PRIVATE KEY-----N)�assertRaisesr�BadKeyErrorr&�_fromString_PRIVATE_OPENSSH�r@�badKeyrrr�test_fromOpenSSHErrors)s�zKeyTests.test_fromOpenSSHErrorscCs(d}|�tj�|�tj�|d��dS)zP
        If key strings have trailing whitespace, it should be ignored.
        �-----BEGIN DSA PRIVATE KEY-----
MIIBuwIBAAKBgQDylESNuc61jq2yatCzZbenlr9llG+p9LhIpOLUbXhhHcwC6hrh
EZIdCKqTO0USLrGoP5uS9UHAUoeN62Z0KXXWTwOWGEQn/syyPzNJtnBorHpNUT9D
Qzwl1yUa53NNgEctpo4NoEFOx8PuU6iFLyvgHCjNn2MsuGuzkZm7sI9ZpQIVAJiR
9dPc08KLdpJyRxz8T74b4FQRAoGAGBc4Z5Y6R/HZi7AYM/iNOM8su6hrk8ypkBwR
a3Dbhzk97fuV3SF1SDrcQu4zF7c4CtH609N5nfZs2SUjLLGPWln83Ysb8qhh55Em
AcHXuROrHS/sDsnqu8FQp86MaudrqMExCOYyVPE7jaBWW+/JWFbKCxmgOCSdViUJ
esJpBFsCgYEA7+jtVvSt9yrwsS/YU1QGP5wRAiDYB+T5cK4HytzAqJKRdC5qS4zf
C7R0eKcDHHLMYO39aPnCwXjscisnInEhYGNblTDyPyiyNxAOXuC8x7luTmwzMbNJ
/ow0IqSj0VF72VJN9uSoPpFd4lLT0zN8v42RWja0M8ohWNf+YNJluPgCFE0PT4Vm
SUrCyZXsNh6VXwjs3gKQ
-----END DSA PRIVATE KEY-----�
N)rIrr&rd�r@�privateDSADatarrr� test_fromOpenSSH_with_whitespace7s

�z)KeyTests.test_fromOpenSSH_with_whitespacecCsHtjjtjdd�}|�|��d�tjjtjddd�}|�||�dS)z�
        Newer versions of OpenSSH generate encrypted keys which have a longer
        IV than the older versions.  These newer keys are also loaded.
        stestxpr�r�r�N)rr&rdr� privateRSA_openssh_encrypted_aesrIrz)r@�key�key2rrr�test_fromNewerOpenSSHNs�
�zKeyTests.test_fromNewerOpenSSHcCs�tjtjftjtjftjtjftjtjftj	tj
ffD]\}}|�tj
�|�tj
�|��q|�tj
jtjdd�tj
jtjdd��dS)z�
        OpenSSH 6.5 introduced a newer "openssh-key-v1" private key format
        (made the default in OpenSSH 7.8).  Loading keys in this format
        produces identical results to loading the same keys in the old
        PEM-based format.
        r�r�N)rrWrXrYrZr[r\�privateECDSA_openssh384�privateECDSA_openssh384_new�privateECDSA_openssh521�privateECDSA_openssh521_newrIrr&rd� privateRSA_openssh_encrypted_newr�)r@�old�newrrr�test_fromOpenSSH_v1_format\s




����z#KeyTests.test_fromOpenSSH_v1_formatc	Cs,d}|�tj�|�tj�|�dd���dS)zp
        Test that keys are correctly generated from OpenSSH strings with
        Windows line endings.
        r�r�s
N)rIrr&rd�replacer�rrr�%test_fromOpenSSH_windows_line_endingsts

�z.KeyTests.test_fromOpenSSH_windows_line_endingscCs@t�ddddgggg�}|jtjtjjdt�|�dd�dS)	za
        C{BadKeyError} exception is raised when public key has an unknown
        type.
        s
public-key�bad-key�p�2�{�})r{N)	r
�packr�rr�r&rd�base64�	b64encode�r@�sexprrr�!test_fromLSHPublicUnsupportedType�s
�z*KeyTests.test_fromLSHPublicUnsupportedTypecCs0t�ddddgggg�}|�tjtjj|�dS)zb
        C{BadKeyError} exception is raised when private key has an unknown
        type.
        sprivate-keyr�r�r�N)r
r�r�rr�r&rdr�rrr�"test_fromLSHPrivateUnsupportedType�s�z+KeyTests.test_fromLSHPrivateUnsupportedTypecC�|�tjtjdtj�dS)zR
        RSA public and private keys can be generated from a LSH strings.
        r�N)r|rr^r?r(rErrr�test_fromLSHRSA���zKeyTests.test_fromLSHRSAcCr�)zH
        DSA public and private key can be generated from LSHs.
        r�N)r|rr_r`r,rErrr�test_fromLSHDSA�r�zKeyTests.test_fromLSHDSAcCs<|�tjdtj�|�tjdtj�|�tjtj	j
d�dS)zO
        Test that keys are correctly generated from Agent v3 strings.
        r�r�s$ssh-fooN)rxrrar(rbr,r�rr�r&rdrErrr�test_fromAgentv3�s�zKeyTests.test_fromAgentv3cCsRt�|j�}|jdd��d�}|�tjj|dd�|�|jtjtjj|dd�dS)zf
        L{keys.Key.fromString} applies Normalization Form KC to Unicode
        passphrases.
        �openssh�verschlüsseltr��verschlüsselt�unassigned ￿N)	rr&r*�toString�encoderIrdr��PassphraseNormalizationError�r@r��key_datarrr�*test_fromStringNormalizesUnicodePassphrase�s�
�z3KeyTests.test_fromStringNormalizesUnicodePassphrasecCs�|�tjtjjd�|�tjtjjdd�|jtjtjjtjdd�|�tjtjjt�|j�j	ddd��|�tjtjjd�|jtjtjjdd	d�|jtjtjjd
d	d�|jtjtjjdd	d�|jtjtjjdd	d�d
S)zW
        keys.Key.fromString should raise BadKeyError when the key is invalid.
        ��bad_typesunencryptedr�r�r�s-----BEGIN RSA KEY-----
wA==
s�-----BEGIN ENCRYPTED RSA KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: weird type

4Ed/a9OgJWHJsne7yOGWeWMzHYKsxuP9w1v0aYcp+puS75wvhHLiUnNwxz0KDi6n
T3YkKLBsoCWS68ApR2J9yeQ6R+EyS+UQDrO9nwqo3DB5BT3Ggt8S1wE7vjNLQD0H
g/SJnlqwsECNhh8aAx+Ag0m3ZKOZiRD5mCkcDQsZET7URSmFytDKOjhFn3u6ZFVB
sXrfpYc6TJtOQlHd/52JB6aAbjt6afSv955Z7enIi+5yEJ5y7oYQTaE5zrFMP7N5
9LbfJFlKXxEddy/DErRLxEjmC+t4svHesoJKc2jjjyNPiOoGGF3kJXea62vsjdNV
gMK5Eged3TBVIk2dv8rtJUvyFeCUtjQ1UJZIebScRR47KrbsIpCmU8I4/uHWm5hW
0mOwvdx1L/mqx/BHqVU9Dw2COhOdLbFxlFI92chkovkmNk4P48ziyVnpm7ME22sE
vfCMsyirdqB1mrL4CSM7FXONv+CgfBfeYVkYW8RfJac9U1L/O+JNn7yee414O/rS
hRYw4UdWnH6Gg6niklVKWNY0ZwUZC8zgm2iqy8YCYuneS37jC+OEKP+/s6HSKuqk
2bzcl3/TcZXNSM815hnFRpz0anuyAsvwPNRyvxG2/DacJHL1f6luV4B0o6W410yf
qXQx01DLo7nuyhJqoH3UGCyyXB+/QUs0mbG2PAEn3f5dVs31JMdbt+PrxURXXjKk
4cexpUcIpqqlfpIRe3RD0sDVbH4OXsGhi2kiTfPZu7mgyFxKopRbn1KwU1qKinfY
EU9O4PoTak/tPT+5jFNhaP+HrURoi/pU8EAUNSktl7xAkHYwkN/9Cm7DeBghgf3n
8+tyCGYDsB5utPD0/Xe9yx0Qhc/kMm4xIyQDyA937dk3mUvLC9vulnAP8I+Izim0
fZ182+D1bWwykoD0997mUHG/AUChWR01V1OLwRyPv2wUtiS8VNG76Y2aqKlgqP1P
V+IvIEqR4ERvSBVFzXNF8Y6j/sVxo8+aZw+d0L1Ns/R55deErGg3B8i/2EqGd3r+
0jps9BqFHHWW87n3VyEB3jWCMj8Vi2EJIfa/7pSaViFIQn8LiBLf+zxG5LTOToK5
xkN42fReDcqi3UNfKNGnv4dsplyTR2hyx65lsj4bRKDGLKOuB1y7iB0AGb0LtcAI
dcsVlcCeUquDXtqKvRnwfIMg+ZunyjqHBhj3qgRgbXbT6zjaSdNnih569aTg0Vup
VykzZ7+n/KVcGLmvX0NesdoI7TKbq4TnEIOynuG5Sf+2GpARO5bjcWKSZeN/Ybgk
gccf8Cqf6XWqiwlWd0B7BR3SymeHIaSymC45wmbgdstrbk7Ppa2Tp9AZku8M2Y7c
8mY9b+onK075/ypiwBm4L4GRNTFLnoNQJXx0OSl4FNRWsn6ztbD+jZhu8Seu10Jw
SEJVJ+gmTKdRLYORJKyqhDet6g7kAxs4EoJ25WsOnX5nNr00rit+NkMPA7xbJT+7
CfI51GQLw7pUPeO2WNt6yZO/YkzZrqvTj5FEwybkUyBv7L0gkqu9wjfDdUw0fVHE
xEm4DxjEoaIp8dW/JOzXQ2EF+WaSOgdYsw3Ac+rnnjnNptCdOEDGP6QBkt+oXj4P
-----END RSA PRIVATE KEY-----�	encrypteds�-----BEGIN ENCRYPTED RSA KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: FOO-123-BAR,01234567

4Ed/a9OgJWHJsne7yOGWeWMzHYKsxuP9w1v0aYcp+puS75wvhHLiUnNwxz0KDi6n
T3YkKLBsoCWS68ApR2J9yeQ6R+EyS+UQDrO9nwqo3DB5BT3Ggt8S1wE7vjNLQD0H
g/SJnlqwsECNhh8aAx+Ag0m3ZKOZiRD5mCkcDQsZET7URSmFytDKOjhFn3u6ZFVB
sXrfpYc6TJtOQlHd/52JB6aAbjt6afSv955Z7enIi+5yEJ5y7oYQTaE5zrFMP7N5
9LbfJFlKXxEddy/DErRLxEjmC+t4svHesoJKc2jjjyNPiOoGGF3kJXea62vsjdNV
gMK5Eged3TBVIk2dv8rtJUvyFeCUtjQ1UJZIebScRR47KrbsIpCmU8I4/uHWm5hW
0mOwvdx1L/mqx/BHqVU9Dw2COhOdLbFxlFI92chkovkmNk4P48ziyVnpm7ME22sE
vfCMsyirdqB1mrL4CSM7FXONv+CgfBfeYVkYW8RfJac9U1L/O+JNn7yee414O/rS
hRYw4UdWnH6Gg6niklVKWNY0ZwUZC8zgm2iqy8YCYuneS37jC+OEKP+/s6HSKuqk
2bzcl3/TcZXNSM815hnFRpz0anuyAsvwPNRyvxG2/DacJHL1f6luV4B0o6W410yf
qXQx01DLo7nuyhJqoH3UGCyyXB+/QUs0mbG2PAEn3f5dVs31JMdbt+PrxURXXjKk
4cexpUcIpqqlfpIRe3RD0sDVbH4OXsGhi2kiTfPZu7mgyFxKopRbn1KwU1qKinfY
EU9O4PoTak/tPT+5jFNhaP+HrURoi/pU8EAUNSktl7xAkHYwkN/9Cm7DeBghgf3n
8+tyCGYDsB5utPD0/Xe9yx0Qhc/kMm4xIyQDyA937dk3mUvLC9vulnAP8I+Izim0
fZ182+D1bWwykoD0997mUHG/AUChWR01V1OLwRyPv2wUtiS8VNG76Y2aqKlgqP1P
V+IvIEqR4ERvSBVFzXNF8Y6j/sVxo8+aZw+d0L1Ns/R55deErGg3B8i/2EqGd3r+
0jps9BqFHHWW87n3VyEB3jWCMj8Vi2EJIfa/7pSaViFIQn8LiBLf+zxG5LTOToK5
xkN42fReDcqi3UNfKNGnv4dsplyTR2hyx65lsj4bRKDGLKOuB1y7iB0AGb0LtcAI
dcsVlcCeUquDXtqKvRnwfIMg+ZunyjqHBhj3qgRgbXbT6zjaSdNnih569aTg0Vup
VykzZ7+n/KVcGLmvX0NesdoI7TKbq4TnEIOynuG5Sf+2GpARO5bjcWKSZeN/Ybgk
gccf8Cqf6XWqiwlWd0B7BR3SymeHIaSymC45wmbgdstrbk7Ppa2Tp9AZku8M2Y7c
8mY9b+onK075/ypiwBm4L4GRNTFLnoNQJXx0OSl4FNRWsn6ztbD+jZhu8Seu10Jw
SEJVJ+gmTKdRLYORJKyqhDet6g7kAxs4EoJ25WsOnX5nNr00rit+NkMPA7xbJT+7
CfI51GQLw7pUPeO2WNt6yZO/YkzZrqvTj5FEwybkUyBv7L0gkqu9wjfDdUw0fVHE
xEm4DxjEoaIp8dW/JOzXQ2EF+WaSOgdYsw3Ac+rnnjnNptCdOEDGP6QBkt+oXj4P
-----END RSA PRIVATE KEY-----s�-----BEGIN ENCRYPTED RSA KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,01234

4Ed/a9OgJWHJsne7yOGWeWMzHYKsxuP9w1v0aYcp+puS75wvhHLiUnNwxz0KDi6n
T3YkKLBsoCWS68ApR2J9yeQ6R+EyS+UQDrO9nwqo3DB5BT3Ggt8S1wE7vjNLQD0H
g/SJnlqwsECNhh8aAx+Ag0m3ZKOZiRD5mCkcDQsZET7URSmFytDKOjhFn3u6ZFVB
sXrfpYc6TJtOQlHd/52JB6aAbjt6afSv955Z7enIi+5yEJ5y7oYQTaE5zrFMP7N5
9LbfJFlKXxEddy/DErRLxEjmC+t4svHesoJKc2jjjyNPiOoGGF3kJXea62vsjdNV
gMK5Eged3TBVIk2dv8rtJUvyFeCUtjQ1UJZIebScRR47KrbsIpCmU8I4/uHWm5hW
0mOwvdx1L/mqx/BHqVU9Dw2COhOdLbFxlFI92chkovkmNk4P48ziyVnpm7ME22sE
vfCMsyirdqB1mrL4CSM7FXONv+CgfBfeYVkYW8RfJac9U1L/O+JNn7yee414O/rS
hRYw4UdWnH6Gg6niklVKWNY0ZwUZC8zgm2iqy8YCYuneS37jC+OEKP+/s6HSKuqk
2bzcl3/TcZXNSM815hnFRpz0anuyAsvwPNRyvxG2/DacJHL1f6luV4B0o6W410yf
qXQx01DLo7nuyhJqoH3UGCyyXB+/QUs0mbG2PAEn3f5dVs31JMdbt+PrxURXXjKk
4cexpUcIpqqlfpIRe3RD0sDVbH4OXsGhi2kiTfPZu7mgyFxKopRbn1KwU1qKinfY
EU9O4PoTak/tPT+5jFNhaP+HrURoi/pU8EAUNSktl7xAkHYwkN/9Cm7DeBghgf3n
8+tyCGYDsB5utPD0/Xe9yx0Qhc/kMm4xIyQDyA937dk3mUvLC9vulnAP8I+Izim0
fZ182+D1bWwykoD0997mUHG/AUChWR01V1OLwRyPv2wUtiS8VNG76Y2aqKlgqP1P
V+IvIEqR4ERvSBVFzXNF8Y6j/sVxo8+aZw+d0L1Ns/R55deErGg3B8i/2EqGd3r+
0jps9BqFHHWW87n3VyEB3jWCMj8Vi2EJIfa/7pSaViFIQn8LiBLf+zxG5LTOToK5
xkN42fReDcqi3UNfKNGnv4dsplyTR2hyx65lsj4bRKDGLKOuB1y7iB0AGb0LtcAI
dcsVlcCeUquDXtqKvRnwfIMg+ZunyjqHBhj3qgRgbXbT6zjaSdNnih569aTg0Vup
VykzZ7+n/KVcGLmvX0NesdoI7TKbq4TnEIOynuG5Sf+2GpARO5bjcWKSZeN/Ybgk
gccf8Cqf6XWqiwlWd0B7BR3SymeHIaSymC45wmbgdstrbk7Ppa2Tp9AZku8M2Y7c
8mY9b+onK075/ypiwBm4L4GRNTFLnoNQJXx0OSl4FNRWsn6ztbD+jZhu8Seu10Jw
SEJVJ+gmTKdRLYORJKyqhDet6g7kAxs4EoJ25WsOnX5nNr00rit+NkMPA7xbJT+7
CfI51GQLw7pUPeO2WNt6yZO/YkzZrqvTj5FEwybkUyBv7L0gkqu9wjfDdUw0fVHE
xEm4DxjEoaIp8dW/JOzXQ2EF+WaSOgdYsw3Ac+rnnjnNptCdOEDGP6QBkt+oXj4P
-----END RSA PRIVATE KEY-----s�-----BEGIN ENCRYPTED RSA KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,01234

4Ed/a9OgJWHJsne7yOGWeWMzHYKsxuP9w1v0aYcp+puS75wvhHLiUnNwxz0KDi6n
T3YkKLBsoCWS68ApR2J9yeQ6R+EyS+UQDrO9nwqo3DB5BT3Ggt8S1wE7vjNLQD0H
g/SJnlqwsECNhh8aAx+Ag0m3ZKOZiRD5mCkcDQsZET7URSmFytDKOjhFn3u6ZFVB
sXrfpYc6TJtOQlHd/52JB6aAbjt6afSv955Z7enIi+5yEJ5y7oYQTaE5zrFMP7N5
9LbfJFlKXxEddy/DErRLxEjmC+t4svHesoJKc2jjjyNPiOoGGF3kJXea62vsjdNV
gMK5Eged3TBVIk2dv8rtJUvyFeCUtjQ1UJZIebScRR47KrbsIpCmU8I4/uHWm5hW
0mOwvdx1L/mqx/BHqVU9Dw2COhOdLbFxlFI92chkovkmNk4P48ziyVnpm7ME22sE
vfCMsyirdqB1mrL4CSM7FXONv+CgfBfeYVkYW8RfJac9U1L/O+JNn7yee414O/rS
hRYw4UdWnH6Gg6niklVKWNY0ZwUZC8zgm2iqy8YCYuneS37jC+OEKP+/s6HSKuqk
2bzcl3/TcZXNSM815hnFRpz0anuyAsvwPNRyvxG2/DacJHL1f6luV4B0o6W410yf
qXQx01DLo7nuyhJqoH3UGCyyXB+/QUs0mbG2PAEn3f5dVs31JMdbt+PrxURXXjKk
4cexpUcIpqqlfpIRe3RD0sDVbH4OXsGhi2kiTfPZu7mgyFxKopRbn1KwU1qKinfY
EU9O4PoTak/tPT+5jFNhaP+HrURoi/pU8EAUNSktl7xAkHYwkN/9Cm7DeBghgf3n
8+tyCGYDsB5utPD0/Xe9yx0Qhc/kMm4xIyQDyA937dk3mUvLC9vulnAP8I+Izim0
fZ182+D1bWwykoD0997mUHG/AUChWR01V1OLwRyPv2wUtiS8VNG76Y2aqKlgqP1P
V+IvIEqR4ERvSBVFzXNF8Y6j/sVxo8+aZw+d0L1Ns/R55deErGg3B8i/2EqGd3r+
0jps9BqFHHWW87n3VyEB3jWCMj8Vi2EJIfa/7pSaViFIQn8LiBLf+zxG5LTOToK5
xkN42fReDcqi3UNfKNGnv4dsplyTR2hyx65lsj4bRKDGLKOuB1y7iB0AGb0LtcAI
dcsVlcCeUquDXtqKvRnwfIMg+ZunyjqHBhj3qgRgbXbT6zjaSdNnih569aTg0Vup
VykzZ7+n/KVcGLmvX0NesdoI7TKbq4TnEIOynuG5Sf+2GpARO5bjcWKSZeN/Ybgk
gccf8Cqf6XWqiwlWd0B7BR3SymeHIaSymC45wmbgdstrbk7Ppa2Tp9AZku8M2Y7c
8mY9b+onK075/ypiwBm4L4GRNTFLnoNQJXx0OSl4FNRWsn6ztbD+jZhu8Seu10Jw
SEJVJ+gmTKdRLYORJKyqhDet6g7kAxs4EoJ25WsOnX5nNr00rit+NkMPA7xbJT+7
CfI51GQLw7pUPeO2WNt6yZO/YkzZrqvTj5FEwybkUyBv7L0gkqu9wjfDdUw0fVHE
xEm4DxjEoaIp8dW/JOzXQ2EF+WaSOgdYsw3Ac+rnnjnNptCdOEDGP6QBkt+oXj4P
-----END RSA PRIVATE KEY-----N)
r�rr�r&rdrr^�EncryptedKeyErrorr*r�rErrr�test_fromStringErrors�sP����$�$�$
�zKeyTests.test_fromStringErrorscCsV|�tj�|j�tj�tj��|�tj	tjj|jd�|jtj	tjj|jdd�dS)z5
        Test that fromFile works correctly.
        r��unencryptedr�N)
rIrr&�fromFiler<rdrr?r�r�rErrr�
test_fromFile�s�
�zKeyTests.test_fromFilecCs.tjjddd�j}t�|�}|�|j|�dS)zJ
        Test that the PublicKey object is initialized correctly.
        ���rrN)rr&r'r)rI)r@�objr�rrr�	test_init�s
zKeyTests.test_initcCs�t�|j�}t�|j�}t�tjjddd�j�}t�|j�}|�||k�|�||k�|�||k�|�|tk�|�|dk�dS)z?
        Test that Key objects are compared correctly.
        r�r�r�N)	rr&r*r'r)r-rorq�object�r@�rsa1�rsa2�rsa3�dsarrr�
test_equal��zKeyTests.test_equalcCs�t�|j�}t�|j�}t�tjjddd�j�}t�|j�}|�||k�|�||k�|�||k�|�|tk�|�|dk�dS)zC
        Test that Key objects are not-compared correctly.
        r�r�r�N)	rr&r*r'r)r-rqror�r�rrr�
test_notEqual�r�zKeyTests.test_notEqualcCst�d�}|�t|j�dS)zO
        The L{keys.Key.data} method raises RuntimeError for bad keys.
        r�N)rr&r��RuntimeErrorr{r�rrr�test_dataError�s
zKeyTests.test_dataErrorcCs4|�t�|j���d�|�t�|j���d�dS)z�
        Test that the fingerprint method returns fingerprint in
        L{FingerprintFormats.MD5-HEX} format by default.
        �/85:25:04:32:58:55:96:9f:57:ee:fb:a8:1a:ea:69:da�/63:15:b3:0e:e6:4f:50:de:91:48:3d:01:6b:b3:13:c1N)rIrr&r*�fingerprintr-rErrr�test_fingerprintdefault�s��z KeyTests.test_fingerprintdefaultcC�@|�t�|j��tjj�d�|�t�|j��tjj�d�dS)z�
        fingerprint method generates key fingerprint in
        L{FingerprintFormats.MD5-HEX} format if explicitly specified.
        r�r�N)rIrr&r*r��FingerprintFormats�MD5_HEXr-rErrr�test_fingerprint_md5_hex����z!KeyTests.test_fingerprint_md5_hexcCr�)z�
        fingerprint method generates key fingerprint in
        L{FingerprintFormats.SHA256-BASE64} format if explicitly specified.
        z,FBTCOoknq0mHy+kpfnY9tDdcAJuWtCpuQMaV3EsvbUI=z,Wz5o2YbKyxOEcJn1au/UaALSVruUzfz0vaLI1xiIGyY=N)rIrr&r*r�r��
SHA256_BASE64r-rErrr�test_fingerprintsha256�r�zKeyTests.test_fingerprintsha256cCsV|�tj��}t�|j��d�Wd�n1swY|�d|jjd�dS)zk
        A C{BadFingerPrintFormat} error is raised when unsupported
        formats are requested.
        zsha256-baseNz+Unsupported fingerprint format: sha256-baser)	r�r�BadFingerPrintFormatr&r*r�rI�	exception�args)r@�emrrr�test_fingerprintBadFormat�s��z"KeyTests.test_fingerprintBadFormatcCs|�t�|j���d�|�t�|j���d�|�t�|j���d�|�t�|j���d�|�t�|j���d�|�t�|j���tj	d�t
re|�t�|j���d�|�t�|j���d�|�t
t�d	�j�|�t
t�d	�j�|�t
t�|�j�|�t
t�|�j�d	S)
zS
        Test that the type method returns the correct type for an object.
        r��ssh-rsar��ssh-dssr�rr��ssh-ed25519N)rIrr&r*rz�sshTyper-r0rr/rr7r�r�rErrr�	test_type�s�zKeyTests.test_typecC�"t�d�}|�tjtjj|�dS)ze
        A C{BadKeyError} error is raised whey the blob has an unsupported
        key type.
        �ssh-badN)r�NSr�rr�r&rd�r@�badBlobrrr�test_fromBlobUnsupportedType�
z%KeyTests.test_fromBlobUnsupportedTypecCsjtjdtjdd�}t�d�t�|d�t�|d�}tj�|�}|�|�	��|�
||���dS)zQ
        A public RSA key is correctly generated from a public key blob.
        rrr�r�N)rr(rr��MPrr&rdrorprIr{)r@�
rsaPublicData�rsaBlobrrrrr�test_fromBlobRSAs����zKeyTests.test_fromBlobRSAcCs�tjdtjdtjdtjdd�}t�d�t�|d�t�|d�t�|d�t�|d�}tj�|�}|�|�	��|�
||���dS)zQ
        A public DSA key is correctly generated from a public key blob.
        rrrr)rrrrr�N)rr,rr�r�rr&rdrorprIr{)r@�
dsaPublicData�dsaBlobrsrrr�test_fromBlobDSAs$������zKeyTests.test_fromBlobDSAcCs�ddlm}tjdtjdtjdd�}t�|d�t�|ddd��t�d	|�|dd
�|�|dd
��}tj�	|�}|�
|���|�||�
��dS)zA
        Key.fromString generates ECDSA keys from blobs.
        r��utilsrrr�rrr���N�� )rr�rr/rr��int_to_bytesrr&rdrorprIr{)r@r��ecPublicData�ecblob�eckeyrrr�test_fromBlobECDSA5s(�������
zKeyTests.test_fromBlobECDSAcCsTdtjdi}t�d�t�|d�}tj�|�}|�|���|�	||�
��dS)zU
        A public Ed25519 key is correctly generated from a public key blob.
        r r�N)rr6rr�rr&rdrorprIr{)r@�ed25519PublicData�ed25519Blobrurrr�test_fromBlobEd25519Os
�zKeyTests.test_fromBlobEd25519cCr�)zh
        C{BadKeyError} is raised when loading a private blob with an
        unsupported type.
        r�N)rr�r�rr�r&�_fromString_PRIVATE_BLOBr�rrr�#test_fromPrivateBlobUnsupportedType_r�z,KeyTests.test_fromPrivateBlobUnsupportedTypecCs�t�d�t�tjd�t�tjd�t�tjd�t�tjd�t�tjd�t�tjd�}tj�|�}|�|�	��|�
tj|���|�
|tj�|����dS)	zS
        A private RSA key is correctly generated from a private key blob.
        r�rrrrrrN)
rr�r�rr(rr&rrqrprIr{�privateBlob)r@r�rrrrr�test_fromPrivateBlobRSAhs(�������
�z KeyTests.test_fromPrivateBlobRSAcCs�t�d�t�tjd�t�tjd�t�tjd�t�tjd�t�tjd�}tj�|�}|�|�	��|�
tj|���|�
|tj�|����dS)zS
        A private DSA key is correctly generated from a private key blob.
        r�rrrrrN)
rr�r�rr,rr&rrqrprIr{r
)r@r�rsrrr�test_fromPrivateBlobDSA~s$������	�z KeyTests.test_fromPrivateBlobDSAcCs�ddlm}ddlm}|jtjdtjd|��d�}t�	tjd�t�	tjddd	��t�	|�
t���|j
j|jj��t�tjd
�}tj�|�}|�|���|�tj|���|�|tj�|����d	S)zR
        A private EC key is correctly generated from a private key blob.
        r��
serialization)�ecrrr�rr�Nr)�cryptography.hazmat.primitivesr�)cryptography.hazmat.primitives.asymmetricr�EllipticCurvePublicNumbersrr/�	SECP256R1rr��
public_keyr
�public_bytes�Encoding�X962�PublicFormat�UncompressedPointr�rr&rrqrprIr{r
)r@rr�
publicNumbersrrrrr�test_fromPrivateBlobECDSA�s0�������z"KeyTests.test_fromPrivateBlobECDSAcCs|t�d�t�tjd�t�tjdtjd�}tj�|�}|�|���|�	tj|�
��|�	|tj�|����dS)zW
        A private Ed25519 key is correctly generated from a private key blob.
        r�r r!N)rr�rr6rr&rrqrprIr{r
)r@rrurrr�test_fromPrivateBlobEd25519�s����z$KeyTests.test_fromPrivateBlobEd25519cCsJ|�t�|j���t�d�t�|j��j	j
�t�|j��j	j��dS)zL
        Return the over-the-wire SSH format of the RSA public key.
        r�N)rIrr&r*rQrr�r��private_numbers�public_numbersrrrErrr�test_blobRSA�s���zKeyTests.test_blobRSAcCsd|j��j}|�t�|j���t�d�t�	|j
j�t�	|j
j�t�	|j
j
�t�	|j��dS)zL
        Return the over-the-wire SSH format of the DSA public key.
        r�N)r-rrrIrr&rQrr�r��parameter_numbersrrrr�r@rrrr�test_blobDSA�s���
��zKeyTests.test_blobDSAcCs�ddlm}|jjjdd}|�t�|j���t	�
tjd�t	�
tjddd��t	�
d|�
|j��jj|�|�
|j��jj|���dS)	zK
        Return the over-the-wire SSH format of the EC public key.
        rr���rr�Nr�)rr�r0r�key_sizerIrr&rQrr�rr/rrrrr)r@r��
byteLengthrrr�test_blobEC�s(��������zKeyTests.test_blobECcCsRddlm}|j���|jj|jj�}|�t	�
|j���t�
d�t�
|��dS)zP
        Return the over-the-wire SSH format of the Ed25519 public key.
        rr
r�N)rrr7rrr�RawrrIrr&rQrr�)r@r�publicBytesrrr�test_blobEd25519�s
��zKeyTests.test_blobEd25519cC�t�d�}|�t|j�dS)zx
        C{RuntimeError} is raised when the blob is requested for a Key
        which is not wrapping anything.
        N)rr&r�r�rQr�rrr�test_blobNoKeys
zKeyTests.test_blobNoKeycCsx|j��}|�t�|j���t�d�t�|j	j
�t�|j	j�t�|j�t�|j
�t�|j�t�|j��dS)zn
        L{keys.Key.privateBlob} returns the SSH protocol-level format of an
        RSA private key.
        r�N)r*rrIrr&r
rr�r�rrrr�iqmprr)r@�numbersrrr�test_privateBlobRSA
s"
��
�
�
�
��zKeyTests.test_privateBlobRSAcCsv|j��j}|�t�|j���t�d�t�	|j
j�t�	|j
j�t�	|j
j
�t�	|j�t�	|j��j��dS)zm
        L{keys.Key.privateBlob} returns the SSH protocol-level format of a DSA
        private key.
        r�N)r-rrrIrr&r
rr�r�r rrrrrr!rrr�test_privateBlobDSAs���
���zKeyTests.test_privateBlobDSAc
Cs~ddlm}|�t�|j���t�t	j
d�t�t	j
ddd��t�|j���|j
j|jj��t�|j��j��dS)zj
        L{keys.Key.privateBlob} returns the SSH ptotocol-level format of EC
        private key.
        rr
rr�N)rrrIrr&r0r
rr�rr/rrrrrrr�r�
private_value)r@rrrr�test_privateBlobEC/s �
�����zKeyTests.test_privateBlobECcCs|ddlm}|j���|jj|jj�}|j�|jj|j	j|�
��}|�t�
|j���t�d�t�|�t�||��dS)zr
        L{keys.Key.privateBlob} returns the SSH protocol-level format of an
        Ed25519 private key.
        rr
r�N)rrr7rrrr(r�
private_bytes�
PrivateFormat�NoEncryptionrIrr&r
rr�)r@rr)�privateBytesrrr�test_privateBlobEd25519Cs"
�����z KeyTests.test_privateBlobEd25519cCr+)zV
        Raises L{RuntimeError} if the underlying key object does not exists.
        N)rr&r�r�r
r�rrr�test_privateBlobNoKeyObject[s
z$KeyTests.test_privateBlobNoKeyObjectcCsztj�tj�}|�|�d�tj�|�|jddd�tj�|�|�	��d�tj
dd��|�|�	�jddd�tj
�dS)zO
        L{keys.Key.toString} serializes an RSA key in OpenSSH format.
        r�r�r�Nr��comment��comment)rr&rdrrarIr�rWr�rerS�r@r�rrr�test_toOpenSSHRSAcs���zKeyTests.test_toOpenSSHRSAcC�tj�tj�}|jddd�}|jdddd�}|�d|��d�|�d|��d�|�|tj�|��|�|tjj|dd��d	S)
zT
        L{keys.Key.toString} serializes an RSA key in OpenSSH's v1 format.
        r��v1��subtyper��rAr��#-----BEGIN OPENSSH PRIVATE KEY-----rr�N)rr&rdrrWr�rI�
splitlines�r@r��new_key_data�new_enc_key_datarrr�test_toOpenSSHRSA_v1_formatu����z$KeyTests.test_toOpenSSHRSA_v1_formatcCsbtj�tj�}|�|�d�tj�|�|��jddd�tj	�|�|���d�tj	dd��dS)zN
        L{keys.Key.toString} serializes a DSA key in OpenSSH format.
        r�r9r:Nr�)
rr&rdrr`rIr�rYrerTr<rrr�test_toOpenSSHDSA�s��zKeyTests.test_toOpenSSHDSAcCr>)
zS
        L{keys.Key.toString} serializes a DSA key in OpenSSH's v1 format.
        r�r?r@r�rBrCrr�N)rr&rdrrYr�rIrDrErrr�test_toOpenSSHDSA_v1_format�rIz$KeyTests.test_toOpenSSHDSA_v1_formatcCsNtj�tj�}|�|��jddd�tj�|�|���d�tjdd��dS)zQ
        L{keys.Key.toString} serializes an ECDSA key in OpenSSH format.
        r�r9r:Nr�)	rr&rdrr[rIrer�rUr<rrr�test_toOpenSSHECDSA�s��zKeyTests.test_toOpenSSHECDSAcCr>)
zV
        L{keys.Key.toString} serializes an ECDSA key in OpenSSH's v1 format.
        r�r?r@r�rBrCrr�N)rr&rdrr[r�rIrDrErrr�test_toOpenSSHECDSA_v1_format�rIz&KeyTests.test_toOpenSSHECDSA_v1_formatcCs�tj�tj�}|�d�}|jddd�}|�d|��d�|�d|��d�|�|tj�|��|�|tjj|dd��|�||jddd��dS)	zX
        L{keys.Key.toString} serializes an Ed25519 key in OpenSSH's v1 format.
        r�r�r�rCrr?r@N)rr&rdrr]r�rIrDrErrr�test_toOpenSSHEd25519�s
���zKeyTests.test_toOpenSSHEd25519cCs&tj�tj�}|jt|jddd�dS)z�
        L{keys.Key.toString} refuses to serialize an Ed25519 key in
        OpenSSH's old PEM format, as no encoding of Ed25519 is defined for
        that format.
        r��PEMr@N)rr&rdrr]r��
ValueErrorr�r<rrr� test_toOpenSSHEd25519_PEM_format�sz)KeyTests.test_toOpenSSHEd25519_PEM_formatcC�>tj�tj�}|�|�d�tj�|�|���d�tj	�dS)zK
        L{keys.Key.toString} serializes an RSA key in LSH format.
        �lshN)
rr&rdrrWrIr�r?rer^r<rrr�
test_toLSHRSA��zKeyTests.test_toLSHRSAcCrR)zJ
        L{keys.Key.toString} serializes a DSA key in LSH format.
        rSN)
rr&rdrrYrIr�r`rer_r<rrr�
test_toLSHDSA�rUzKeyTests.test_toLSHDSAcC�&tj�tj�}|�|�d�tj�dS)zP
        L{keys.Key.toString} serializes an RSA key in Agent v3 format.
        rPN)rr&rdrrWrIr�rar<rrr�test_toAgentv3RSA��zKeyTests.test_toAgentv3RSAcCrW)zO
        L{keys.Key.toString} serializes a DSA key in Agent v3 format.
        rPN)rr&rdrrYrIr�rbr<rrr�test_toAgentv3DSA�rYzKeyTests.test_toAgentv3DSAcCsPt�|j�}|jddd�}|�tjj|d��d�|�|jtj|jddd�dS)zd
        L{keys.Key.toString} applies Normalization Form KC to Unicode
        passphrases.
        r�r�r�r�r�N)	rr&r*r�rIrdr�r�r�r�rrr�(test_toStringNormalizesUnicodePassphrases�
�z1KeyTests.test_toStringNormalizesUnicodePassphrasecCs|�tjt�|j�jd�dS)zm
        L{keys.Key.toString} raises L{keys.BadKeyError} when passed an invalid
        format type.
        r�N)r�rr�r&r*r�rErrr�test_toStringErrorsszKeyTests.test_toStringErrorscC�Hd}tj�tj�}|�|�}|�|���||��|�|�||��dS)z8
        Signed data can be verified using RSA.
        �	some-dataN)	rr&rdrrW�signrore�verify�r@r{r��	signaturerrr�test_signAndVerifyRSA�

zKeyTests.test_signAndVerifyRSAcCr])z8
        Signed data can be verified using DSA.
        r^N)	rr&rdrrYr_rorer`rarrr�test_signAndVerifyDSA'rdzKeyTests.test_signAndVerifyDSAcCs�d}tj�tj�}|�|�}tj�tj�}|�|�}tj�tj�}|�|�}|�|�	��
||��|�|�
||��|�|�	��
||��|�|�
||��|�|�	��
||��|�|�
||��dS)z7
        Signed data can be verified using EC.
        r^N)rr&rdrr[r_r�r�rorer`)r@r{r�rb�key384�signature384�key521�signature521rrr�test_signAndVerifyEC1s


zKeyTests.test_signAndVerifyECcCr])z<
        Signed data can be verified using Ed25519.
        r^N)	rr&rdrr]r_rorer`rarrr�test_signAndVerifyEd25519Fs

z"KeyTests.test_signAndVerifyEd25519cC�Ntj�tj�}|�|�|jd��|�|�|jd��|�|�|j	d��dS)zC
        A known-good RSA signature verifies successfully.
        r��aN)
rr&rdrrSror`r8rqr9r<rrr�test_verifyRSAQ�zKeyTests.test_verifyRSAcCrl)zC
        A known-good DSA signature verifies successfully.
        r�rmN)
rr&rdrrTror`r9rqr8r<rrr�test_verifyDSAZrozKeyTests.test_verifyDSAcCs.tj�tj�}|�|�|jdd�d��dS)z�
        Some commercial SSH servers send DSA keys as 2 20-byte numbers;
        they are still verified as valid keys.
        i���Nr�)rr&rdrrTror`r9r<rrr�test_verifyDSANoPrefixcs zKeyTests.test_verifyDSANoPrefixcCs|�tt�|j��d�dS)zn
        The repr of a L{keys.Key} contains all of the RSA components for an RSA
        private key.
        a\<RSA Private Key (2048 bits)
attr d:
	21:4c:08:66:a2:28:d5:b4:fb:8e:0f:72:1b:85:09:
	00:b9:f2:4e:37:f0:1c:57:4b:e3:51:7f:9e:23:a7:
	e4:3a:98:55:1b:ea:8b:7a:98:1e:bc:d8:ba:b1:f9:
	89:12:18:60:ac:e8:cc:0b:4e:09:5a:40:6a:ba:2f:
	99:f8:b3:24:60:84:b9:ce:69:95:9a:f9:e2:fc:1f:
	51:4d:27:15:db:2b:27:ad:ef:b4:69:ac:be:7d:10:
	eb:86:47:70:73:b4:00:87:95:15:3b:37:f9:e7:14:
	e7:80:bb:68:1e:1b:e6:dd:bb:73:63:b9:67:e6:b2:
	27:7f:cf:cf:30:9b:c2:98:fd:d9:18:36:2f:36:2e:
	f1:3d:81:7a:9f:e1:03:2d:47:db:34:51:62:39:dd:
	4f:e9:ac:a8:8b:d9:d6:f3:84:c4:17:b9:71:9d:06:
	08:42:78:4d:bb:c5:2a:f4:c3:58:cd:55:2b:ed:be:
	33:5f:04:ea:7b:e6:04:24:63:f2:2d:d7:3d:1b:6c:
	d5:9c:63:43:2f:92:88:8d:3e:6e:da:18:37:d8:0f:
	25:67:89:1d:b9:46:34:5e:c9:ce:c4:8b:ed:92:5a:
	33:07:0f:df:86:08:f9:92:e9:db:eb:38:08:36:c9:
	cd:cd:0a:01:48:5b:39:3e:7a:ca:c6:80:a9:dc:d4:
	39
attr e:
	01:00:01
attr n:
	00:d5:6a:ac:78:23:d6:d6:1b:ec:25:a1:50:c4:77:
	63:50:84:45:01:55:42:14:2a:2a:e0:d0:60:ee:d4:
	e9:a3:ad:4a:fa:39:06:5e:84:55:75:5f:00:36:bf:
	6f:aa:2a:3f:83:26:37:c1:69:2e:5b:fd:f0:f3:d2:
	7d:d6:98:cd:3a:40:78:d5:ca:a8:18:c0:11:93:24:
	09:0c:81:4c:8f:f7:9c:ed:13:16:6a:a4:04:e9:49:
	77:c3:e4:55:64:b3:79:68:9e:2c:08:eb:ac:e8:04:
	2d:21:77:05:a7:8e:ef:53:30:0d:a5:e5:bb:3d:6a:
	e2:09:36:6f:fd:34:d3:7d:6f:46:ff:87:da:a9:29:
	27:aa:ff:ad:f5:85:e6:3e:1a:b8:7a:1d:4a:b1:ea:
	c0:5a:f7:30:df:1f:c2:a4:e4:ef:3f:91:49:96:40:
	d5:19:77:2d:37:c3:5e:ec:9d:a6:3a:44:a5:c2:a4:
	29:dd:d5:ba:9c:3d:45:b3:c6:2c:18:64:d5:ba:3d:
	df:ab:7f:cd:42:ac:a7:f1:18:0b:a0:58:15:62:0b:
	a4:2a:6e:43:c3:e4:04:9f:35:a3:47:8e:46:ed:33:
	a5:65:bd:bc:3b:29:6e:02:0b:57:df:74:e8:13:b4:
	37:35:7e:83:5f:20:26:60:a6:dc:ad:8b:c6:6c:79:
	98:f7
attr p:
	00:d9:70:06:d8:e2:bc:d4:78:91:50:94:d4:c1:1b:
	89:38:6c:46:64:5a:51:a0:9a:07:3d:48:8f:03:51:
	cc:6b:12:8e:7d:1a:b1:65:e7:71:75:39:e0:32:05:
	75:8d:18:4c:af:93:b1:49:b1:66:5f:78:62:7a:d1:
	0c:ca:e6:4d:43:b3:9c:f4:6b:7d:e6:0c:98:dc:cf:
	21:62:8e:d5:2e:12:de:04:ae:d7:24:6e:83:31:a2:
	15:a2:44:3d:22:a9:62:26:22:b9:b2:ed:54:0a:9d:
	08:83:a7:07:0d:ff:19:18:8e:d8:ab:1d:da:48:9c:
	31:68:11:a1:66:6d:e3:d8:1d
attr q:
	00:fb:44:17:8b:a4:36:be:1e:37:1d:a7:f6:61:6c:
	04:c4:aa:dd:78:3e:07:8c:1e:33:02:ae:03:14:87:
	83:7a:e5:9e:7d:08:67:a8:f2:aa:bf:12:70:cf:72:
	a9:a7:c7:0b:1d:88:d5:20:fd:9c:63:ca:47:30:55:
	4e:8b:c4:cf:f4:7f:16:a4:92:12:74:a1:09:c2:c4:
	6e:9c:8c:33:ef:a5:e5:f7:e0:2b:ad:4f:5c:11:aa:
	1a:84:37:5b:fd:7a:ea:c3:cd:7c:b0:c8:e4:1f:54:
	63:b5:c7:af:df:f4:09:a7:fc:c7:25:fc:5c:e9:91:
	d7:92:c5:98:1e:56:d3:b1:23
attr u:
	00:85:4b:1b:7a:9b:12:10:37:9e:1f:ad:5e:da:fe:
	c6:96:fe:df:35:6b:b9:34:e2:16:97:92:26:09:bd:
	bd:70:20:03:a7:35:bd:2d:1b:a0:d2:07:47:2b:d4:
	de:a8:a8:07:07:1b:b8:04:20:a7:27:41:3c:6c:39:
	39:e9:41:ce:e7:17:1d:d1:4c:5c:bc:3d:d2:26:26:
	fe:6a:d6:fd:48:72:ae:46:fa:7b:c3:d3:19:60:44:
	1d:a5:13:a7:80:f5:63:29:d4:7a:5d:06:07:16:5d:
	f6:8b:3d:cb:64:3a:e2:84:5a:4d:8c:06:2d:2d:9d:
	1c:eb:83:4c:78:3d:79:54:ce>N)rI�reprrr&r*rErrr�test_reprPrivateRSAks�zKeyTests.test_reprPrivateRSAcCs |�tt�|j����d�dS)zm
        The repr of a L{keys.Key} contains all of the RSA components for an RSA
        public key.
        a\<RSA Public Key (2048 bits)
attr e:
	01:00:01
attr n:
	00:d5:6a:ac:78:23:d6:d6:1b:ec:25:a1:50:c4:77:
	63:50:84:45:01:55:42:14:2a:2a:e0:d0:60:ee:d4:
	e9:a3:ad:4a:fa:39:06:5e:84:55:75:5f:00:36:bf:
	6f:aa:2a:3f:83:26:37:c1:69:2e:5b:fd:f0:f3:d2:
	7d:d6:98:cd:3a:40:78:d5:ca:a8:18:c0:11:93:24:
	09:0c:81:4c:8f:f7:9c:ed:13:16:6a:a4:04:e9:49:
	77:c3:e4:55:64:b3:79:68:9e:2c:08:eb:ac:e8:04:
	2d:21:77:05:a7:8e:ef:53:30:0d:a5:e5:bb:3d:6a:
	e2:09:36:6f:fd:34:d3:7d:6f:46:ff:87:da:a9:29:
	27:aa:ff:ad:f5:85:e6:3e:1a:b8:7a:1d:4a:b1:ea:
	c0:5a:f7:30:df:1f:c2:a4:e4:ef:3f:91:49:96:40:
	d5:19:77:2d:37:c3:5e:ec:9d:a6:3a:44:a5:c2:a4:
	29:dd:d5:ba:9c:3d:45:b3:c6:2c:18:64:d5:ba:3d:
	df:ab:7f:cd:42:ac:a7:f1:18:0b:a0:58:15:62:0b:
	a4:2a:6e:43:c3:e4:04:9f:35:a3:47:8e:46:ed:33:
	a5:65:bd:bc:3b:29:6e:02:0b:57:df:74:e8:13:b4:
	37:35:7e:83:5f:20:26:60:a6:dc:ad:8b:c6:6c:79:
	98:f7>N)rIrrrr&r*rerErrr�test_reprPublicRSA�s�zKeyTests.test_reprPublicRSAcCs2|�tt�|j����td�jditj	���dS)zl
        The repr of a L{keys.Key} contains all the OpenSSH format for an ECDSA
        public key.
        z�                <Elliptic Curve Public Key (256 bits)
                curve:
                	ecdsa-sha2-nistp256
                x:
                	{x}
                y:
                	{y}>
                Nr)
rIrrrr&r0rer�formatrr/rErrr�test_reprPublicECDSA�s�
�
��zKeyTests.test_reprPublicECDSAcCs.|�tt�|j��td�jditj���dS)zm
        The repr of a L{keys.Key} contains all the OpenSSH format for an ECDSA
        private key.
        a                <Elliptic Curve Private Key (256 bits)
                curve:
                	ecdsa-sha2-nistp256
                privateValue:
                	{privateValue}
                x:
                	{x}
                y:
                	{y}>
                Nr)	rIrrrr&r0rrurr/rErrr�test_reprPrivateECDSA�s����zKeyTests.test_reprPrivateECDSAcCs$|�tt�|j����td��dS)zn
        The repr of a L{keys.Key} contains all the OpenSSH format for an
        Ed25519 public key.
        z�                <Ed25519 Public Key (256 bits)
                attr a:
                	f1:16:d1:15:4a:1e:15:0e:19:5e:19:46:b5:f2:44:
                	0d:b2:52:a0:ae:2a:6b:23:13:73:45:fd:40:d9:57:
                	7b:8b>N)rIrrrr&r7rerrErrr�test_reprPublicEd25519s��zKeyTests.test_reprPublicEd25519cCs |�tt�|j��td��dS)zo
        The repr of a L{keys.Key} contains all the OpenSSH format for an
        Ed25519 private key.
        a�                <Ed25519 Private Key (256 bits)
                attr a:
                	f1:16:d1:15:4a:1e:15:0e:19:5e:19:46:b5:f2:44:
                	0d:b2:52:a0:ae:2a:6b:23:13:73:45:fd:40:d9:57:
                	7b:8b
                attr k:
                	37:2f:25:da:8d:d4:a8:9a:78:7c:61:f0:98:01:c6:
                	f4:5e:6d:67:05:69:31:37:4c:69:0d:05:55:bb:c9:
                	44:58>N)rIrrrr&r7rrErrr�test_reprPrivateEd25519s��z KeyTests.test_reprPrivateEd25519)W�__name__�
__module__�__qualname__r�skipCryptographyrr	rArFrKrcrnrvr|rwrxr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr	rrrrrr"r'r*r,r/r0r2r7r8r=rHrJrKrLrMrNrQrTrVrXrZr[r\rcrerjrkrnrprqrsrtrvrwrxryrrrrr*s�?C)

*	
	

	



	



		P
rc@s4eZdZdZedureZdd�Zdd�Zdd�Z	dS)	�PersistentRSAKeyTestsz1
    Tests for L{keys._getPersistentRSAKey}.
    NcCsFt|���}|�d�}tj|dd�}|�|��d�|�|���dS)z�
        L{keys._getPersistentRSAKey} will put the key in
        C{directory}/C{filename}, with the key length of C{keySize}.
        �	mykey.pem���keySizeN)	rr;�childr�_getPersistentRSAKeyrIrJro�exists�r@�tempDirr<r�rrr�test_providedArguments5s

z,PersistentRSAKeyTests.test_providedArgumentscCs|t|���}|�d�}tj|dd�}|�|��d�|�|���|�	�}tj|dd�}|�|��d�|�|�	�|�dS)zm
        L{keys._getPersistentRSAKey} will not regenerate the key if the key
        already exists.
        rr�r�rGN)
rr;r�rr�rIrJror��
getContent)r@r�r<r��
keyContentrrr�test_noRegenerationAs
z)PersistentRSAKeyTests.test_noRegenerationcCs>t|���}|�d�}tj|dd�}d|_|�|��d�dS)z
        If the key generated by L{keys.getPersistentRSAKey} is set to None
        the key size should then become 0.
        rr�r�Nr)rr;r�rr�r)rIrJr�rrr�test_keySizeZeroTs

z&PersistentRSAKeyTests.test_keySizeZero)
rzr{r|�__doc__rr}rr�r�r�rrrrr~-sr~)r�r�rC�textwrapr�twisted.conch.testr�twisted.pythonr�twisted.python.filepathr�twisted.python.reflectr�
twisted.trialrrr}r	�cryptography.hazmat.backendsr
�twisted.conch.sshrrr
�ed25519_supportedrr�TestCaserr~rrrr�<module>sB

Anon7 - 2022
AnonSec Team