HEX
Server: LiteSpeed
System: Linux shams.tasjeel.ae 5.14.0-611.5.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 08:09:09 EST 2025 x86_64
User: infowars (1469)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //usr/lib/python3.9/site-packages/ipapython/__pycache__/ssh.cpython-39.pyc
a

}�f9�@srdZddlZddlZddlZddlmZddlmZddlZejrFe	Z
dgZe�d�Z
e�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�eZdZdZdZd!dd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �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|�|�}|�|�p�|�
|�p�|�|�}|s�td��|dur�||_|dur�||_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�1/usr/lib/python3.9/site-packages/ipapython/ssh.py�__init__1s"

zSSHPublicKey.__init__cCs�t|t�sdSzt�d|dd��\}Wntjy>YdS0|dksX|t|�dkr\dSz|d|d��d�}Wnty�YdS0||_||_	i|_
d|_dS)NFz>I���asciiT)rr�struct�unpack�error�lenr�UnicodeDecodeErrorrrrr)rrZktlen�keytyperrrrKs"
zSSHPublicKey._parse_rawc	Cs@t|t�sdSzt�|�}Wnttfy4YdS0|�|�S)NF)rr
�base64Z	b64decoderrr�rrrrrrcs
zSSHPublicKey._parse_base64cCsJt�|�}|sdS|�|�d��s&dS|j|�d�kr:dS|�d�|_dS)NFrr&rT)�OPENSSH_BASE_REGEX�matchr�grouprr)rrr*rrr�_parse_openssh_without_optionsns
z+SSHPublicKey._parse_openssh_without_optionscCs�|�d�}d}i}t�|�}|s$dS|�d���}|�d�}|rL|�dd�}||vrx||vrl||�|�q�|g||<n|||<|t|�d��d�}|dd	�|d	d�}}|d
krq�q|�|�s�dS||_	dS)Nz	 )Z
permitopenZpermitlistenF�name�value�\"�"rr�,T)
�lstrip�OPENSSH_OPTIONS_REGEXr*r+�lower�replace�appendr$r,r)rrZmultiple_allowedrr*r-r.Zkey0rrr�_parse_openssh_with_options}s.



z(SSHPublicKey._parse_openssh_with_optionscCs*t|t�sdS|�|�rdS|�|�SdS)NFT)rr
r,r7r(rrrr�s


zSSHPublicKey._parse_opensshcCs|jS�N)r�rrrrr&�szSSHPublicKey.keytypecCs|jSr8)rr9rrrr�szSSHPublicKey.commentcCs
t|j�Sr8)�boolrr9rrr�has_options�szSSHPublicKey.has_optionscCs�t�|j��d�}d|j|f}|jr�g}t|j�D]v}|j|}|durV|�|�q4t|�t	ur�|D]"}|�
dd�}|�d||f�qfq4|�
dd�}|�d||f�q4d�|�}d||f}|jr�d||jf}|S)Nr z%s %sr0r/z%s="%s"r1)
r'�	b64encoderrrr�sortedr6r�listr5�joinr)rr�outrr-r.�vrrr�openssh�s&

zSSHPublicKey.opensshcCs,t�t|j�����d�}dj|�d�d�S)N�=zSHA256:{fp}r	)�fp)r'r<rrZdigest�rstrip�formatr)rrDrrr�fingerprint_hex_sha256�sz#SSHPublicKey.fingerprint_hex_sha256cCsp|jdkrd}n@|jdkr d}n0|j�d�r<d|jvr<d}n|jdkrLd	}ndS||j�����}d
|||fS)Nzssh-rsarzssh-dss�zecdsa-sha2-�@r
zssh-ed25519rz%d %d %s)r�
startswithrZ	hexdigest�upper)rZfpfuncZfptyper&rDrrr�_fingerprint_dns�s


zSSHPublicKey._fingerprint_dnscCs|�td�S)Nr)rLrr9rrr�fingerprint_dns_sha1�sz!SSHPublicKey.fingerprint_dns_sha1cCs|�td�S)NrH)rLrr9rrr�fingerprint_dns_sha256�sz#SSHPublicKey.fingerprint_dns_sha256)NNr	)r�
__module__�__qualname__�__doc__�	__slots__rrrr,r7rr&rr;rBrGrLrMrNrrrrr*s 
&	)rQr'�rer!ZhashlibrrZsixZPY3�strr
�__all__�compiler)r3rrrrr�<module>s