
    tniq
                         d Z ddlZddlZddlZddlZddlmZmZ ej        	                    d          Z
d Zd Zd Zd ZdS )	z 
Runpod | CLI | SSH | Functions
    N)get_userupdate_user_settingsz~/.runpod/sshc                 h   |                                  }t          |          dk     rt          d          t          j        |d                   }t          j        |                                          }dt          j        |          	                    d          
                    d          z   S )z+
    Get the fingerprint of an SSH key
       zInvalid SSH public key   zSHA256:zutf-8=)splitlen
ValueErrorbase64	b64decodehashlibsha256digest	b64encodedecodestrip)
public_keypartskey_datafingerprints       \/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/runpod/cli/groups/ssh/functions.pyget_ssh_key_fingerprintr      s     E
5zzA~~1222a))H.**1133Kv'44;;GDDJJ3OOOO    c                     t                      } | d         dn| d         }|                    d          }d |D             }g }|D ]}|                    d          }t          |          dk     r+i }|d         |d	<   |d
         |d<   t          |          |d<   t          |          dk    r|d         nd|d<   |                    |           |S )z)
    Get the current user's SSH keys
    pubKeyN 
c                     g | ]
}|d k    |S )r    ).0keys     r   
<listcomp>z%get_user_pub_keys.<locals>.<listcomp>&   s    ---C3"99C999r    r   r   typer   r"   r   zN/Aname)r   r	   r
   r   append)userkeyskey_listr"   	key_partskey_dicts         r   get_user_pub_keysr-      s     ::Dh'22T(^D ::dD--4---DH " "IIcNN	 y>>A$Q<#A,"9#">">+.y>>A+=+=9Q<<5!!!!Or   c                    t          j        t           j                            t                    d           t
          j                            d          }|                    t           j                            t          |                      t          j	        t           j                            t          |           d           t          t           d|  ddd	
          5 }|                                 d|                                 d|  }|                    |           ddd           n# 1 swxY w Y   t          |           ||fS )z
    Generate an RSA SSH key pair and save it to disk.

    Args:
    - filename (str):   The base filename to save the key pair.
                        The public key will have '.pub' appended to it.
    T)exist_oki   )bitsi  /z.pubwzUTF-8)encodingr$   N)osmakedirspathjoin	SSH_FILESparamikoRSAKeygeneratewrite_private_key_filechmodopenget_name
get_base64writeadd_ssh_key)filenameprivate_keypublic_filer   s       r   generate_ssh_key_pairrF   :   se    KY''$7777 /***55K&&rw||Ix'H'HIII HRW\\)X..666 
++X+++S7	C	C	C &{#,,..VV1G1G1I1IVVHVV
*%%%& & & & & & & & & & & & & & & 

""s   &AD66D:=D:c                     t                      }|d         dn|d         }| |v rt          d           dS ||rdndz   | z   }t          |            dS )zwAdd an SSH public key to the current user's Runpod account.
    Checks if the key already exists before adding it.
    r   Nr   zKey already existsz

)r   printr   )r   r(   current_keysupdated_keyss       r   rB   rB   U   su     ::Dh/22T(^L \!!"###\#A66rBZOL L*+++++r   )__doc__r   r   r4   r9   runpod.api.ctl_commandsr   r   r6   
expanduserr8   r   r-   rF   rB   r    r   r   <module>rN      s       				  B B B B B B B BG//	
P 
P 
P  :# # #6, , , , ,r   