§
    AxÅjq
  ã                   ó†   — 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       úPC:\Projects\Historical\venv\Lib\site-packages\runpod/cli/groups/ssh/functions.pyÚget_ssh_key_fingerprintr      s”   € ð ×ÒÑÔ€EÝ
ˆ5�z„z�A‚~€~ÝÐ1Ñ2Ô2Ð2åÔ  a¤Ñ)Ô)€HÝ”. Ñ*Ô*×1Ò1Ñ3Ô3€KØ•vÔ'¨Ñ4Ô4×;Ò;¸GÑDÔD×JÒJÈ3Ñ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   € Ð-Ð-Ð-�C 3¨"¢9 9ˆC 9 9 9r   ú 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”Ð'ˆ2ˆ2¨T°(¬^€Dð �:Š:�dÑÔ€DØ-Ð-˜4Ð-Ñ-Ô-€Dà€HØð "ð "ˆØ—I’I˜c‘N”Nˆ	õ ˆy‰>Œ>˜AÒÐØàˆØ$ Qœ<ˆ�ÑØ# Aœ,ˆ�‰Ý"9¸#Ñ">Ô">ˆ�ÑÝ+.¨y©>¬>¸AÒ+=Ð+=˜9 Qœ<˜<À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Ô5€KØ×&Ò&¥r¤w§|¢|µI¸xÑ'HÔ'HÑIÔIÐIõ „H�RŒW�\Š\�) XÑ.Ô.°Ñ6Ô6Ð6õ 
•Ð+Ð+˜XÐ+Ð+Ð+¨S¸7Ð	CÑ	CÔ	Cð &À{Ø#×,Ò,Ñ.Ô.ÐVÐV°×1GÒ1GÑ1IÔ1IÐVÐVÈHÐ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œÐ/�2�2°T¸(´^€Lð �\Ð!Ð!ÝÐ"Ñ#Ô#Ð#Øˆà¨\Ð#A 6 6¸rÑBÀZÑO€Lõ ˜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   