HOME


Mini Shell 1.0
DIR: /usr/lib/python3/dist-packages/twisted/conch/scripts/__pycache__/
Upload File :
Current File : //usr/lib/python3/dist-packages/twisted/conch/scripts/__pycache__/ckeygen.cpython-312.pyc
�

Ϫ�f�0��~�dZddlmZddlZddlZddlZddlZddlZddlm	Z	ddl
mZddlm
Z
ddlmZmZmZddlmZdd	lmZmZmZmZejej2k(r	ddlZej6ej8fe �Z!d�Z"Gd�d
ejF�Z$d�Z%d�Z&d�Z'e"d�d��Z(e"d�d��Z)e"d�d��Z*e"d�d��Z+d�Z,		d!							d"d�Z-d#d�Z.d�Z/d�Z0d$d�Z1	d%							d&d�Z2e3d k(re%�yy#eef$rdej>d
<e
e�Y��wxYw)'z2
Implementation module for the `ckeygen` command.
�)�annotationsN)�Callable)�wraps)�reload)�Any�Dict�Optional)�keys)�failure�filepath�log�usage�termiosc����fd�}|S)Nc�B���t���fd��}|t�<|S)Nc����|i|��S�N�)�args�kwargs�keygenerators  ��?/usr/lib/python3/dist-packages/twisted/conch/scripts/ckeygen.py�wrapperz:_keyGenerator.<locals>.assignkeygenerator.<locals>.wrapper%s�����0��0�0�)r�supportedKeyTypes)rr�keyTypes` �r�assignkeygeneratorz)_keyGenerator.<locals>.assignkeygenerator$s,���	�|�	�	1�
�	1�&-��'�"��rr)rrs` r�
_keyGeneratorr#s�����rc	��eZdZdZdZgd�gd�gd�gd�gd�gd�gd	�gd
�gZgd�gd�gd
�gd�gd�gZejeje
ej���ejddg�d���Z
y)�GeneralOptionszUsage:    ckeygen [options]
 z8ckeygen manipulates public/private keys in various ways.)�bits�bNz$Number of bits in the key to create.)�filename�fNzFilename of the key file.)�type�tNzSpecify type of key to create.)�comment�CNzProvide new comment.)�newpass�NNzProvide new passphrase.)�pass�PNzProvide old passphrase.)�format�o�
sha256-base64zFingerprint format of key file.)�private-key-subtypeNNz5OpenSSH private key subtype to write ("PEM" or "v1").)�fingerprint�lzShow fingerprint of key file.)�
changepass�pz&Change passphrase of private key file.)�quiet�qzQuiet.)�
no-passphraseNz"Create the key with no passphrase.)�showpub�yz+Read private key file and print public key.�PEM�v1)r%r0)�
optActionsN)�__name__�
__module__�__qualname__�synopsis�longdesc�
optParameters�optFlagsr�Completions�CompleteList�listrr
�compDatarrrr r /s����H�J�H�	D�<�=�6�9�6�K�	
��M�"	>�E� �E�G��H�!�u� � �&�E�&�&�t�,=�,B�,B�,D�'E�F�#5�5�#5�#5�u�d�m�#D�
��Hrr c	��t�}	|jtjdd�tj�tt_|dr�|dj�tvr1t
d|dz�t|dj�|�ytjd|d�ddjtj!�����y|drt#|�y|d	rt%|�y|d
rt'|�y|j�tjd�y#tj
$r>}t
d|z�|j�tjd�Yd}~��Wd}~wwxYw)N�z	ERROR: %sr%z&Generating public/private %s key pair.z
Key type was z, must be one of z, r1r3r8)r �parseOptions�sys�argvr�
UsageError�print�opt_help�exitr
�discardLogs�handleError�deferr�lowerr�joinr
�printFingerprint�changePassPhrase�displayPublicKey)�options�us  r�runr[Us7����G�����S�X�X�a�b�\�*�
�O�O���C�J��v���6�?� � �"�&7�7��:�g�f�o�N�O��g�f�o�3�3�5�6�w�?��H�H��6�?�D�I�I�.?�.D�.D�.F�$G�I�
�
��	���!�	��	���!�	��	���!�����������/����
�k�A�o��������������s�"D9�9F
�3F�F
c���|ddk(rtjj|d<|S|ddk(rtjj|d<|Stjd|d����)Nr-zmd5-hexr/z Unsupported fingerprint format: )r
�FingerprintFormats�MD5_HEX�
SHA256_BASE64�BadFingerPrintFormat)rYs r�enumrepresentationrassu���x��I�%� �3�3�;�;������	��	�o�	-� �3�3�A�A�������'�'�.�w�x�/@�.A�B�
�	
rc�V�datjtj���)N�)�
exitStatusr
�errr�FailurerrrrRrR�s���J��G�G�G�O�O���	r�rsac��ddlm}ddlm}|dsd|d<|j	t|d�d|���}t
j|�}t||�y)Nr��default_backend)rgr!ii)�key_size�public_exponent�backend)	�cryptography.hazmat.backendsrj�)cryptography.hazmat.primitives.asymmetricrg�generate_private_key�intr
�Key�_saveKey)rYrjrg�keyPrimitive�keys     r�generateRSAkeyrv�s\��<�=��6�?������+�+��W�V�_�%���!�,��L�
�(�(�<�
 �C��S�'�r�dsac��ddlm}ddlm}|dsd|d<|j	t|d�|���}t
j|�}t||�y)Nrri)rwr!i)rkrm)	rnrjrorwrprqr
rrrs)rYrjrwrtrus     r�generateDSAkeyry�sY��<�=��6�?������+�+��W�V�_�%��!�,��L��(�(�<�
 �C��S�'�r�ecdsac��ddlm}ddlm}|dsd|d<dt	|d�jd�z}|j
tj||���}tj|�}t||�y)	Nrri)�ecr!�secdsa-sha2-nistp�ascii)�curverm)rnrjror|�str�encoderpr
�_curveTablerrrs)rYrjr|rrtrus      r�generateECDSAkeyr��sz��<�<��6�?�����
 �#�g�f�o�"6�"=�"=�g�"F�F�E��*�*����u�%��/@�+��L��(�(�<�
 �C��S�'�r�ed25519c��tjj�}tj|�}t	||�yr)r
�Ed25519PrivateKey�generaterrrs)rYrtrus   r�generateEd25519keyr��s.���)�)�2�2�4�L�
�(�(�<�
 �C��S�'�rc��|dk(ryy)a
    Return a reasonable default private key subtype for a given key type.

    @type keyType: L{str}
    @param keyType: A key type, as returned by
        L{twisted.conch.ssh.keys.Key.type}.

    @rtype: L{str}
    @return: A private OpenSSH key subtype (C{'PEM'} or C{'v1'}).
    �Ed25519r;r:r)rs r�_defaultPrivateKeySubtyper��s���)���rc�
�|�t}|d}|sjtjjd|���}t	j
�dk(r"tjjd|���}|d|z�xs|}t
|�S)a
    If C{options["filename"]} is None, prompt the user to enter a path
    or attempt to set it to .ssh/id_rsa
    @param options: command line options
    @param inputCollector: dependency injection for testing
    @param keyTypeName: key type or "rsa"
    r#z
~/.ssh/id_�Windowsz%HOMEPATH %\.ssh\id_z%Enter file in which the key is (%s): )�input�os�path�
expanduser�platform�systemr�)rY�inputCollector�keyTypeNamer#s    r�_getKeyOrDefaultr��s��������z�"�H���7�7�%�%�
�;�-�&@�A���?�?��	�)��w�w�)�)�-A�+��*O�P�H��B�X�M�N�
��	��x�=�rc	��t|�}tjj|dz�r|dz
}t	|�}	t
jj|�}t|j��d|j|d��dtjj|����y#t
j$rtjd�Yyt$rtj|�d��YywxYw)N�.pub� r-zbad key�, could not be opened, please specify a file.)r�r�r��existsrar
rr�fromFilerN�sizer1�basename�BadKeyErrorrKrP�FileNotFoundError)rYr#rus   rrVrV�s�����(�H�	�w�w�~�~�h��'�(��F��� ��)�G�
L��h�h����)��
����
������ 1�2���� � ��*�	
�	
������������L����H�:�I�J�K�L�s�A/B/�/(C<� C<�;C<c��t|�}	tjj|�}|jd�sB	t
jd�}t
jd	�}||k(rntd
��<||d<|jd��tj��|d<	jd|d|d�
�}	tjj!|d��t#|d�5}|j%�ddd�td�y#tj$r�|jd�st
jd�|d<	tjj||d��}na#tj$rtjd�Yn7tj$r"}tjd|���Yd}~nd}~wwxYwY���tj$r#}tjd|���Yd}~���d}~wt$rtj|�d��Y��wxYw#t$r#}tjd|���Yd}~���d}~wwxYw#tjtjf$r#}tjd|���Yd}~���d}~wwxYw#1swY���xYw)Nr+zEnter old passphrase: ��
passphrasez1Could not change passphrase: old passphrase errorzCould not change passphrase: r�r)z0Enter new passphrase (empty for no passphrase): �Enter same passphrase again: �%Passphrases do not match.  Try again.r0�openssh��subtyper��wbz;Your identification has been saved with the new passphrase.)r�r
rrr��EncryptedKeyError�get�getpassr�rKrPr�rNr�r%�toString�	Exception�
fromString�open�write)rYr#ru�e�p1�p2�
newkeydata�fds        rrWrW�sm����(�H�L��h�h����)�� �;�;�y�!�����!S�T�B����!@�A�B��R�x���9�:�� ��	���{�{�(�)�1�)B�3�8�8�:�)N��%�&�6��\�\���1�2��y�)�"�
�
�6������J�7�9�3E��F�
�h��	���
������
�
G�H��Y�!�!�	:��{�{�6�"�%�o�o�.F�G�G�F�O�	:��(�(�#�#�H����#�I�C�����	J��H�H�H�I��%�%�	:��H�H�4�Q�C�8�9�9��	:�����6����0���4�5�5���L����H�:�I�J�K�L��*�6����0���4�5�5��6��

�"�"�D�$4�$4�5�6����0���4�5�5��6����s��D�-H?�$I.�8J7�<H<�$F�?H<�(G�(H<�*G�<G�H<�G�H<�$H<�6H�$H<�;H<�?	I+�I&�&I+�.#J4�J/�/J4�7Kc���t|�}	tjj|�}j�jd�jd�}t|�y#t$rtj|�d��Y�]tj$rP|jd�stjd�|d<tjj||d��}Y��wxYw)Nr�r+zEnter passphrase: r�r�r~)r�r
rrr�r�rKrPr�r�r��publicr��decoderN)rYr#ru�
displayKeys    rrXrX2s�����(�H�F��h�h����)������&�&�y�1�8�8��A�J�	�*����L����H�:�I�J�K��!�!�F��{�{�6�"�%�o�o�.B�C�G�F�O��h�h����W�V�_��E��F�s�A&�&!C+�	AC+�*C+c��t|�S)zv
    Ask the user where to save the key.

    This needs to be a separate function so the unit test can patch it.
    )r�)�prompts r�_inputSaveFiler�@s����=�rc��|�t}ddddd�}||j�}|d}|s0t|||�}td|�d	��}|j	�xs|}t
jj|�r@t|�d
��|d�}|dj�d
k7rtj�|jd�rd|d<nG|dsB	tjd�}	tjd�}
|	|
k(rntd��<|	|d<|jd��t|j��|d<tj��dt!j"���}t%j&|�}|j)|j+d|d|d���|j-d�t%j&|dz�j)|j/�j+d|���t1|�}td|���td|�d��td|d�d��t|j3|d��y) z�
    Persist a SSH key on local filesystem.

    @param key: Key which is persisted on local filesystem.

    @param options:

    @param inputCollector: Dependency injection for testing.
    Nrzr�rgrw)�ECr��RSA�DSAr#z%Enter file in which to save the key (z): z already exists.zOverwrite (y/n)? rr9r7rr+z,Enter passphrase (empty for no passphrase): r�r�r0�@r�r�i��r�)r'z&Your identification has been saved in z"Your public key has been saved in zThe key fingerprint in r-z is:)r�r%r�r��stripr�r�r�rNrTrKrPr�r�r��getuser�socket�gethostnamer�FilePath�
setContentr��chmodr�rar1)
rurYr��KeyTypeMappingr�r#�defaultPath�newPath�ynr�r�r'�fps
             rrsrsIs@������#�	�%�PU�V�N� �����,�K��z�"�H��&�w���L�� �3�K�=��D�
���=�=�?�1�k��	�w�w�~�~�h��
��
�*�+�,�
�/�
0��
�a�5�;�;�=�C���H�H�J��{�{�?�#�����
�V�_�����!O�P�B����!@�A�B��R�x���9�:�������{�{�(�)�1�)B�3�8�8�:�)N��%�&����"�#�1�V�%7�%7�%9�$:�;�G�	�	�	�8�	$�B��M�M������1�2��v��	�	
���H�H�X�����h��'�(�3�3��
�
����i���9��!��)�G�	�2�8�*�
=�>�	�.�x�j��
=�>�	�#�G�H�$5�#6�d�
;�<�	�#�/�/�'�(�+�
,�-r�__main__)Nrg)rY�Dict[Any, Any]r��Optional[Callable[[str], str]]r�r��returnr�)rYr�r��None)r�r�r�r�r)ruzkeys.KeyrYr�r�r�r�r�)4�__doc__�
__future__rr�r�r�r�rK�collections.abcr�	functoolsr�	importlibr�typingrrr	�twisted.conch.sshr
�twisted.pythonrrr
r�unix_getpassr�	tcgetattr�	tcsetattr�ImportError�AttributeError�modules�dictrr�Optionsr r[rarRrvryr�r�r�r�rVrWrXr�rsr=rrr�<module>r�s���
�#��	��
�
�$���&�&�"�8�8�
�?�?�g�*�*�*������7�,�,�,�
�F��	�#�U�]�]�#�L�<

�
��u������u������w��
��
� �y������(6:���
��2����	�	�4L�*0I�f��6:�C.�	�C.�
�C.�3�C.�
�	C.�L�z���E���g
��(��!%����I���w���s�%D�D<�;D<