HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //lib/python3/dist-packages/twisted/conch/scripts/__pycache__/ckeygen.cpython-38.pyc
U


W[^'�	@shdZddlmZddlZddlZddlZddlZddlmZddl	m
Z
ejejkr�zddlZej
ejfWn*eefk
r�dejd<e
e�YnXddlmZddlmZmZmZmZdd	lmZmZe�Zd
d�ZGdd
�d
ej�Z dd�Z!dd�Z"dd�Z#ed�dd��Z$ed�dd��Z%ed�dd��Z&dd�Z'dd �Z(d!d"�Z)d#d$�Z*e+d%k�rde!�dS)&z2
Implementation module for the `ckeygen` command.
�)�print_functionN)�wraps)�reload�termios)�keys)�failure�filepath�log�usage)�	raw_input�_PY3cs�fdd�}|S)Ncs t���fdd��}|t�<|S)Ncs
�||�S)N�)�args�kwargs��keygeneratorr
�?/usr/lib/python3/dist-packages/twisted/conch/scripts/ckeygen.py�wrapper sz:_keyGenerator.<locals>.assignkeygenerator.<locals>.wrapper)r�supportedKeyTypes)rr��keyTyperr�assignkeygeneratorsz)_keyGenerator.<locals>.assignkeygeneratorr
)rrr
rr�
_keyGeneratorsrc
@s�eZdZdZdZddddgdddd	gd
dddgd
dddgddddgddddgddddggZdddgdddgd d!d"gd#dd$gd%d&d'ggZejd
e�	e
e����id(�Z
dS))�GeneralOptionszUsage:    ckeygen [options]
 z8ckeygen manipulates public/private keys in various ways.�bits�bNz$Number of bits in the key to create.�filename�fzFilename of the key file.�type�tzSpecify type of key to create.�comment�CzProvide new comment.�newpass�NzProvide new passphrase.�pass�PzProvide old passphrase.�format�o�
sha256-base64zFingerprint format of key file.�fingerprint�lzShow fingerprint of key file.�
changepass�pz&Change passphrase of private key file.�quiet�qzQuiet.�
no-passphrasez"Create the key with no passphrase.�showpub�yz+Read private key file and print public key.)Z
optActions)�__name__�
__module__�__qualname__ZsynopsisZlongdescZ
optParametersZoptFlagsr
ZCompletionsZCompleteList�listrrZcompDatar
r
r
rr)s&






���rc
Cst�}z|�tjdd��WnBtjk
r`}z"td|�|��t�d�W5d}~XYnXt	�
�tt	_|dr�|d�
�tkr�td|d�t|d�
�|�n t�d|dd�t���f�nJ|dr�t|�n8|dr�t|�n&|d	�rt|�n|��t�d�dS)
N�z	ERROR: %srz&Generating public/private %s key pair.z"Key type was %s, must be one of %sz, r)r+r0)rZparseOptions�sys�argvr
Z
UsageError�printZopt_help�exitr	ZdiscardLogs�handleErrorZdeferr�lowerr�joinr�printFingerprint�changePassPhrase�displayPublicKey)�options�ur
r
r�runBs4��



rCcCsP|ddkrtjj|d<|S|ddkr8tjj|d<|St�d|df��dS)Nr&zmd5-hexr(z"Unsupported fingerprint format: %s)rZFingerprintFormatsZMD5_HEXZ
SHA256_BASE64ZBadFingerPrintFormat)rAr
r
r�enumrepresentation_s�rDcCsdat�t����dS)N�)Z
exitStatusr	�errrZFailurer
r
r
rr;lsr;�rsacCsZddlm}ddlm}|ds(d|d<|jt|d�d|�d�}t�|�}t||�dS)Nr��default_backend)rGr�i)�key_sizeZpublic_exponent�backend)	�cryptography.hazmat.backendsrI�)cryptography.hazmat.primitives.asymmetricrG�generate_private_key�intr�Key�_saveKey)rArIrG�keyPrimitive�keyr
r
r�generateRSAkeyss
�
rU�dsacCsXddlm}ddlm}|ds(d|d<|jt|d�|�d�}t�|�}t||�dS)NrrH)rVrrJ)rKrL)	rMrIrNrVrOrPrrQrR)rArIrVrSrTr
r
r�generateDSAkey�s
�
rW�ecdsacCslddlm}ddlm}|ds(d|d<dt|d��d�}|jtj||�d�}t�	|�}t
||�dS)	NrrH)�ecr�secdsa-sha2-nistp�ascii)�curverL)rMrIrNrY�str�encoderOrZ_curveTablerQrR)rArIrYr\rSrTr
r
r�generateECDSAkey�s�
r_cCs�|ds$tj�d�}td|�|d<tj�|dd�rH|dd7<t|�}z@tj�|d�}t	d|�
�|�|d�tj�|d�f�Wn tj
k
r�t�d�YnXdS)Nr�
~/.ssh/id_rsa�%Enter file in which the key is (%s): �.pubz%s %s %sr&zbad key)�os�path�
expanduserr�existsrDrrQ�fromFiler9�sizer)�basename�BadKeyErrorr7r:)rArrTr
r
rr>�s�r>c
Cs |ds$tj�d�}td|�|d<ztj�|d�}Wn�tjk
r�|�d�sbt	�	d�|d<ztjj|d|dd�}WnRtj
k
r�t�d�Yn4tjk
r�}zt�d|f�W5d}~XYnXYn6tj
k
�r
}zt�d|f�W5d}~XYnX|�d	��sNt	�	d
�}t	�	d�}||k�r:�qFt
d��q||d	<z|jd
|d	d�}Wn4tk
�r�}zt�d|f�W5d}~XYnXztjj||d	d�Wn<tjtj
fk
�r�}zt�d|f�W5d}~XYnXt|dd��}|�|�W5QRXt
d�dS)Nrr`rar$zEnter old passphrase: �Z
passphrasez1Could not change passphrase: old passphrase errorzCould not change passphrase: %sr"z0Enter new passphrase (empty for no passphrase): �Enter same passphrase again: �%Passphrases do not match.  Try again.�openssh)Zextra�wbz;Your identification has been saved with the new passphrase.)rcrdrerrrQrg�EncryptedKeyError�get�getpassrjr7r:r9�toString�	ExceptionZ
fromString�open�write)rArrT�e�p1�p2Z
newkeydata�fdr
r
rr?�sR�
�
&"�

""r?cCs�|ds$tj�d�}td|�|d<ztj�|d�}WnFtjk
r~|�d�sbt	�	d�|d<tjj|d|dd�}YnX|�
��d�}tr�|�
d�}t|�dS)	Nrr`rar$zEnter passphrase: rkrnr[)rcrdrerrrQrgrprqrr�publicrsr�decoder9)rArrTZ
displayKeyr
r
rr@�s 
�
r@c
Cs�dddd�}||��}|dsPtj�d|f�}td|f�}|��pJ||d<tj�|d�r�td|df�td	�}|d
��dkr�t	�
�|�d�r�d
|d<n8|ds�t�d�}t�d�}||kr�q�td�q�||d<dt�
�t��f}	t�|d��|�d|d��t�|dd�t�|dd��|���d|	��t|�}td|df�td|df�td|df�t|�|d��dS)z�
    Persist a SSH key on local filesystem.

    @param key: Key which is persisted on local filesystem.
    @type key: C{keys.Key} implementation.

    @param options:
    @type options: L{dict}
    rXrGrV)ZECZRSAZDSArz~/.ssh/id_%sz*Enter file in which to save the key (%s): z%s already exists.zOverwrite (y/n)? rr1r/�r$z,Enter passphrase (empty for no passphrase): rlrmz%s@%srni��rbz(Your identification has been saved in %sz(Your public key has been saved in %s.pubzThe key fingerprint in %s is:r&N)rrcrdrer�striprfr9r<r7r:rqrrZgetuser�socketZgethostnamerZFilePathZ
setContentrs�chmodr{rDr))
rTrAZKeyTypeMappingZkeyTypeNameZdefaultPathZnewPathZynrxryr r
r
rrR�sF
�




��rR�__main__),�__doc__Z
__future__rr7rcrrr�	functoolsr�imprZunix_getpassrZ	tcgetattrZ	tcsetattr�ImportError�AttributeError�modulesZtwisted.conch.sshrZtwisted.pythonrrr	r
Ztwisted.python.compatrr�dictrrZOptionsrrCrDr;rUrWr_r>r?r@rRr2r
r
r
r�<module>s@ 




05