+
    |w¼jZ  ã                  ó®   € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
HtHt ]! RR7       ! R R4      4       tR	 R
 ltR R ltRR/R R lltR# )a  Fail-closed, read-only SSH authentication and server-identity probe.

The probe never opens an SSH channel or executes a command.  It verifies a
pinned server host key before presenting the vault-decrypted password, then
reports only public SSH identity metadata.
)ÚannotationsN)Ú	dataclass)ÚCredentialDecryptionErrorÚCredentialKeyMissingErrorÚdecrypt_secretT)Úfrozenc                  óH   € ] tR t^t$ R]R&   R]R&   RtR]R&   RtR]R&   R	tR# )
ÚSSHIdentityTestResultÚboolÚokÚstrÚmessageNú
str | NoneÚserver_fingerprintÚserver_banner© )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__r   r   Ú__static_attributes__r   ó    Ú./var/www/html/bestweb/app/core/ssh_identity.pyr	   r	      s!   ‡ àƒHØƒLØ%)Ð˜
Ó)Ø $€M�:×$r   r	   c               ó    € V ^8„  d   QhRRRR/# )é   Úvaluer   Úreturnr   )Úformats   "r   Ú__annotate__r      s   € ÷ Añ A¨ð A¸
ñ Ar   c                ó¨  € V '       g   R# V P                  4       pVP                  R4      '       d
   VR,          pVP                  R4      pV'       g   R#  \        P                  ! VR\        V4      ) ^,          ,          ,           RR7      p\        P                  ! T4      P                  R4      P                  R4      #   \         d     R# i ; i)zHReturn canonical SSH SHA256 fingerprint text, or None for invalid input.NúSHA256::é   NNÚ=T)ÚvalidateÚascii)	ÚstripÚ
startswithÚrstripÚbase64Ú	b64decodeÚlenÚ	ExceptionÚ	b64encodeÚdecode)r   Ú	candidateÚdecodeds   &  r   Ú_normalize_sha256_fingerprintr1      s­   € çÙØ—‘“€IØ×Ñ˜I×&Ò&Ø˜b•Mˆ	Ø× Ñ  Ó%€IßÙðÜ×"Ò" 9°¼¸I»°ÈÕ7JÕ0KÕ#LÐW[Ô\ˆô ×Ò˜GÓ$×+Ñ+¨GÓ4×;Ñ;¸CÓ@Ð@øô ô Úðús   Á7C ÃCÃCc               ó    € V ^8„  d   QhRRRR/# )r   ÚkeyÚobjectr   r   r   )r   s   "r   r   r   /   s   € ÷ \ñ \˜fð \¨ñ \r   c                óÎ   € V P                  4       p\        P                  ! \        P                  ! V4      P                  4       4      P                  R 4      P                  R4      # )r%   r#   )Úasbytesr)   r-   ÚhashlibÚsha256Údigestr.   r(   )r3   Ú	key_bytess   & r   Ú_fingerprint_for_keyr;   /   sG   € Ø—‘“€IÜ×ÒœGŸNšN¨9Ó5×<Ñ<Ó>Ó?×FÑFÀwÓO×VÑVÐWZÓ[Ð[r   Útimeout_secondsg      @c               ó4   € V ^8„  d   QhRRRRRRRRRRR	R
RR/# )r   Úhostr   ÚportÚintÚusernameÚencrypted_secretÚexpected_host_key_fingerprintr   r<   Úfloatr   r	   r   )r   s   "r   r   r   4   sP   € ÷ >ñ >à
ð>ð ð>ð ð	>ð
 ð>ð $.ð>ð ð>ð ñ>r   c                óª  € \        V4      pVf   \        RR4      # V '       d   ^Tu;8:  d   R8:  g   M \        RR4      # RpRp ^ RIp	\        P                  ! W3VR7      pV	P                  V4      pWWn        WWn        VP                  VR7       VP                  4       p
\        V
4      p\        P                  ! W¶4      '       g7   \        RR4      Ve   VP                  4        # Ve   VP                  4        # # \        V4      p VP                  W,RR7       R	pVP!                  4       '       g7   \        RR
4      Ve   VP                  4        # Ve   VP                  4        # # VP"                  ;'       g    Rp\        RRRV 2VR7      Ve   VP                  4        # Ve   VP                  4        # #   R	pi ; i  \$        \&        3 d:    \        RR4      u Te   TP                  4        # Te   TP                  4        # # \(        \        P*                  3 d:    \        RR4      u Te   TP                  4        # Te   TP                  4        # # \,         d:    \        RR4      u Te   TP                  4        # Te   TP                  4        # # i ; i  Te   TP                  4        i Te   TP                  4        i i ; i)zKAuthenticate only after strict host-key pin verification; send no commands.NFzJTes SSH diblokir: fingerprint host key SSH yang dipin belum dikonfigurasi.iÿÿ  z8Tes SSH diblokir: host atau port management tidak valid.)ÚtimeoutzLTes SSH diblokir: fingerprint server tidak cocok dengan host key yang dipin.)ÚfallbackÚ zFAutentikasi SSH ditolak. Tidak ada perintah perangkat yang dijalankan.TzpAutentikasi SSH dan identitas host key terverifikasi. Tidak ada channel atau perintah perangkat yang dijalankan.r!   )r   r   zETes SSH diblokir: credential vault tidak dapat digunakan oleh server.z?Tes SSH gagal: host atau port management tidak dapat dijangkau.zUTes SSH gagal atau autentikasi ditolak. Tidak ada perintah perangkat yang dijalankan.)r1   r	   ÚparamikoÚsocketÚcreate_connectionÚ	TransportÚbanner_timeoutÚauth_timeoutÚstart_clientÚget_remote_server_keyr;   ÚhmacÚcompare_digestÚcloser   Úauth_passwordÚis_authenticatedÚremote_versionr   r   ÚOSErrorrF   r,   )r>   r?   rA   rB   rC   r<   ÚexpectedÚ	transportÚsockrI   Ú
server_keyÚobservedÚsecretÚbanners   $$$$$$        r   Útest_pinned_ssh_identityr_   4   s¹  € ô -Ð-JÓK€HØÒÜ$ UÐ,xÓyÐyß˜˜TÖ* UÖ*Ü$ UÐ,fÓgÐgà€IØ€Dð,ãä×'Ò'¨¨¸oÔNˆØ×&Ñ& tÓ,ˆ	Ø#2Ô Ø!0ÔØ×Ñ ÐÔ7à×4Ñ4Ó6ˆ
Ü'¨
Ó3ˆÜ×"Ò" 8×6Ò6Ü(¨Ð0~Óð8 Ò Ø�O‰OÕØÒØ�J‰J�Lð ô5  Ð 0Ó1ˆð	Ø×#Ñ# H¸uÐ#ÔEàˆFØ×)Ñ)×+Ò+Ü(¨Ð0xÓyð$ Ò Ø�O‰OÕØÒØ�J‰J�Lð ð% ×)Ñ)×1Ð1¨TˆÜ$ØØ~Ø!(¨¨
Ð3Ø ô	
ð Ò Ø�O‰OÕØÒØ�J‰J�Lð øð- ‰Fûô &Ô'@ÐAô uÜ$ UÐ,sÓtÑtð Ò Ø�O‰OÕØÒØ�J‰J�Lð ô ”V—^‘^Ð$ô oÜ$ UÐ,mÓnÑnð Ò Ø�O‰OÕØÒØ�J‰J�Lð ô ô Eô % Uð  -Dó  Eñ  	EàÒ Ø�O‰OÕØÒØ�J‰J�Lð ðEûð
 Ò Ø�O‰OÕØÒØ�J‰J�Lð úsy   ÁBG Ã?G ÄF> ÄG Ä6G Å,G Å?G Æ>GÇG ÇJ#Ç"J& ÈJ#È'J#È4J& É J#É)J#É6J& Ê"J#Ê#J& Ê&,K)Ú__doc__Ú
__future__r   r)   r7   rQ   rJ   Údataclassesr   Úapp.core.device_credentialsr   r   r   r	   r1   r;   r_   r   r   r   Ú<module>rd      sf   ðñõ #ã Û Û Û Ý !÷ñ ñ �$Ô÷%ð %ó ð%õAõ"\ð
>ð !÷>ñ >r   