HEX
Server: LiteSpeed
System: Linux ratab.tasjeel.ae 4.18.0-553.30.1.lve.el8.x86_64 #1 SMP Tue Dec 3 01:21:19 UTC 2024 x86_64
User: arhamste (1605)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/ipapython/__pycache__/ssh.cpython-36.pyc
3

�d[e9�@srdZddlZddlZddlZddlmZddlmZddlZejrFe	Z
dgZejd�Z
ejd�ZGdd�d�ZdS)	z
SSH utilities.
�N)�sha1)�sha256�SSHPublicKeyzj^[\t ]*(?P<keytype>[^\x00\n\r]+?) [\t ]*(?P<key>[^\x00\n\r]+?)(?:[\t ]+(?P<comment>[^\x00\n\r]*?)[\t ]*)?$z?(?P<name>[-0-9A-Za-z]+)(?:="(?P<value>(?:\\"|[^\x00\n\r"])*)")?c@s�eZdZdZd$Zd%dd	�Zd
d�Zdd
�Zdd�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zd d!�Zd"d#�ZdS)&rz 
    SSH public key object.
    �_key�_keytype�_comment�_optionsN�utf-8cCs�t|t�r.|j|_|j|_|j|_|j|_dSt|ttf�sNtdt	|�j
��t|t�rr|dd�dkrr|j|�}|j|�p�|j
|�p�|j|�}|s�td��|dk	r�||_|dk	r�||_dS)Nz)argument must be bytes or unicode, got %s�sznot a valid SSH public key)�
isinstancerrrrr�bytes�unicode�	TypeError�type�__name__�decode�
_parse_raw�
_parse_base64�_parse_openssh�
ValueError)�self�key�comment�options�encodingZvalid�r�/usr/lib/python3.6/ssh.py�__init__1s"

zSSHPublicKey.__init__cCs�t|t�sdSytjd|dd��\}Wntjk
r>dSX|dksX|t|�dkr\dSy|d|d�jd�}Wntk
r�dSX||_||_	i|_
d|_dS)NFz>I���asciiT)rr�struct�unpack�error�lenr�UnicodeDecodeErrorrrrr)rrZktlen�keytyperrrrKs"
zSSHPublicKey._parse_rawcCs@t|t�sdSytj|�}Wnttfk
r4dSX|j|�S)NF)rr
�base64Z	b64decoderrr)rrrrrrcs
zSSHPublicKey._parse_base64cCsJtj|�}|sdS|j|jd��s&dS|j|jd�kr:dS|jd�|_dS)NFrr&rT)�OPENSSH_BASE_REGEX�matchr�grouprr)rrr)rrr�_parse_openssh_without_optionsns
z+SSHPublicKey._parse_openssh_without_optionscCs�|jd�}d
}i}x�tj|�}|s&dS|jd�j�}|jd�}|rN|jdd�}||krz||krn||j|�q�|g||<n|||<|t|jd	��d�}|dd
�|d
d�}}|dkrPqW|j|�s�dS||_	dS)Nz	 �
permitopen�permitlistenF�name�valuez\"�"rr�,T)r,r-)
�lstrip�OPENSSH_OPTIONS_REGEXr)r*�lower�replace�appendr$r+r)rrZmultiple_allowedrr)r.r/Zkey0rrr�_parse_openssh_with_options}s0



z(SSHPublicKey._parse_openssh_with_optionscCs*t|t�sdS|j|�rdS|j|�SdS)NFT)rr
r+r7)rrrrrr�s


zSSHPublicKey._parse_opensshcCs|jS)N)r)rrrrr&�szSSHPublicKey.keytypecCs|jS)N)r)rrrrr�szSSHPublicKey.commentcCs
t|j�S)N)�boolr)rrrr�has_options�szSSHPublicKey.has_optionscCs�tj|j�jd�}d|j|f}|jr�g}x�t|j�D]z}|j|}|dkrX|j|�q6t|�t	kr�xJ|D]"}|j
dd�}|jd||f�qjWq6|j
dd�}|jd||f�q6Wdj|�}d||f}|jr�d||jf}|S)Nr z%s %sr0z\"z%s="%s"r1)
r'�	b64encoderrrr�sortedr6r�listr5�joinr)rr�outrr.r/�vrrr�openssh�s&


zSSHPublicKey.opensshcCs,tjt|j�j��jd�}dj|jd�d�S)N�=zSHA256:{fp}zutf-8)�fp)r'r:rrZdigest�rstrip�formatr)rrBrrr�fingerprint_hex_sha256�sz#SSHPublicKey.fingerprint_hex_sha256cCsp|jdkrd}n@|jdkr d}n0|jjd�r<d|jkr<d}n|jdkrLd	}ndS||j�j�j�}d
|||fS)Nzssh-rsarzssh-dss�zecdsa-sha2-�@r
zssh-ed25519rz%d %d %s)r�
startswithrZ	hexdigest�upper)rZfpfuncZfptyper&rBrrr�_fingerprint_dns�s


zSSHPublicKey._fingerprint_dnscCs|jtd�S)Nr)rJr)rrrr�fingerprint_dns_sha1�sz!SSHPublicKey.fingerprint_dns_sha1cCs|jtd�S)NrF)rJr)rrrr�fingerprint_dns_sha256�sz#SSHPublicKey.fingerprint_dns_sha256)rrrr)NNr	)r�
__module__�__qualname__�__doc__�	__slots__rrrr+r7rr&rr9r@rErJrKrLrrrrr*s 
&	)rOr'�rer!ZhashlibrrZsixZPY3�strr
�__all__�compiler(r3rrrrr�<module>s