+
    ]ˆ¦j  c                   óÈ   € ^ RI t^ RIHu Ht ^ RIt^ RIHt ^ RI	t	 ! R R4      t
 ! R R4      t ! R R4      tR	 tR
 tR tR t]	P"                  P$                  R 4       tR# )é    N)ÚSimpleNamespacec                   ó,   a € ] tR t^t o R tR tRtV tR# )Ú_Socketc                ó   € R V n         R# )FN©Úclosed©Úselfs   &Ú7C:\Users\MF Sangadji\bestweb\tests\test_ssh_identity.pyÚ__init__Ú_Socket.__init__   s	   € ØˆŽó    c                ó   € R V n         R# ©TNr   r   s   &r
   ÚcloseÚ_Socket.close   ó	   € ØˆŽr   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r
   r   r      s   ø‡ € ò÷ð r   r   c                   ó&   a € ] tR t^t o R tRtV tR# )Ú_Keyc                ó   € R # )s   pinned-server-key© r   s   &r
   ÚasbytesÚ_Key.asbytes   s   € Ù#r   r   N)r   r   r   r   r   r   r   r   s   @r
   r   r      s   ø‡ € ÷$ð $r   r   c                   óH   a € ] tR t^t o RtR tR tR tR tR t	R t
RtV tR# )	Ú
_TransportNc                ó†   € Wn         R V n        R V n        RV n        RV n        RV n        R V n        V \        V 4      n        R # )NúSSH-2.0-test-serverF)	ÚsockÚbanner_timeoutÚauth_timeoutÚremote_versionÚauthenticatedr   Ú	auth_callÚtypeÚlast)r	   r%   s   &&r
   r   Ú_Transport.__init__   s@   € ØŒ	Ø"ˆÔØ ˆÔØ3ˆÔØ"ˆÔØˆŒØˆŒØŒˆT‹
Žr   c                ó   € Wn         R # ©N)Ústart_timeout)r	   Útimeouts   &&r
   Ústart_clientÚ_Transport.start_client!   s   € Ø$Ör   c                ó   € \        4       # r/   )r   r   s   &r
   Úget_remote_server_keyÚ _Transport.get_remote_server_key$   s	   € Ü‹vˆr   c                ó&   € WV3V n         R V n        R# r   )r*   r)   )r	   ÚusernameÚpasswordÚfallbacks   &&&&r
   Úauth_passwordÚ_Transport.auth_password'   s   € Ø"¨hÐ7ˆŒØ!ˆÖr   c                ó   € V P                   # r/   )r)   r   s   &r
   Úis_authenticatedÚ_Transport.is_authenticated+   s   € Ø×!Ñ!Ð!r   c                ó   € R V n         R# r   r   r   s   &r
   r   Ú_Transport.close.   r   r   )r*   r'   r)   r&   r   r(   r%   r0   )r   r   r   r   r,   r   r2   r5   r;   r>   r   r   r   r   s   @r
   r"   r"      s-   ø‡ € Ø€Dòò%òò"ò"÷ð r   r"   c                  ó<   € ^ RI Hp  RV ! \        4       4      ,           # )r   ©Ú_fingerprint_for_keyúSHA256:)Úapp.core.ssh_identityrD   r   rC   s    r
   Ú_pinned_fingerprintrG   2   s   € Ý:àÑ+¬D«FÓ3Õ3Ð3r   c           	      ó.  € ^ RI Hp V P                  VP                  RR 4       V P                  VRR 4       VP	                  R^RRR	R
7      pVP
                  pRqCVJ qU'       gÇ   \        P                  ! RV3RW434      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR	;p;rTRq‚P                  qHV9   q™'       gÇ   \        P                  ! RV	3RW„34      R\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR	;p;r”R	# )r   ©Ússh_identityÚcreate_connectionc                  ó.   € \         P                  ! R 4      # )znetwork must not open©ÚpytestÚfail©Ú_s   *r
   Ú<lambda>Ú=test_probe_blocks_without_a_pinned_host_key.<locals>.<lambda>;   s   € ÌVÏ[Ê[ÐYpÔMqr   Údecrypt_secretc                 ó.   € \         P                  ! R 4      # ©zsecret must not decryptrM   rP   s   &r
   rR   rS   <   ó   € Ä&Ç+Â+ÐNgÔBhr   ú
192.0.2.10ÚadminÚ
ciphertextN©ÚhostÚportr8   Úencrypted_secretÚexpected_host_key_fingerprintFÚpy0ÚresultÚpy2Úpy5úassert %(py7)sÚpy7ÚdiblokirÚpy1Úpy3©Úis©z*%(py2)s
{%(py2)s = %(py0)s.ok
} is %(py5)s©Úin©z/%(py1)s in %(py5)s
{%(py5)s = %(py3)s.message
})Úapp.corerJ   ÚsetattrÚsocketÚtest_pinned_ssh_identityÚokÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚmessage)
ÚmonkeypatchrJ   ra   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8Ú@py_assert0Ú@py_assert2s
   &         r
   Ú+test_probe_blocks_without_a_pinned_host_keyr…   8   s8  € Ý%à×Ñ˜×+Ñ+Ð-@ÑBqÔrØ×Ñ˜Ð&6Ñ8hÔià×2Ñ2Ø ¨WÀ|Ðswð 3ó €Fð �9‰9Ð˜Ð˜Ð×××Óˆ9××××××ˆ6×××Òˆ6××Öˆ9××Ô˜×××××××ÒØÐ'Ÿ™Ð'˜Ñ'×'×'×'Ó'ˆ:×'×'Õ'ˆ:×'×'×'×'×'Ö'˜×'×'×'Ò'˜×'×'Ö'˜×'×'×'×'×'×'×'Ô'r   c                 óŠ  a€ ^ RI Hp \        4       oV P                  VP                  RV3R l4       V P                  \        P                  R\        \        R7      4       V P                  VRR 4       VP                  R^R	R
\        4       R7      pVP                  pRqCVJ qU'       gÇ   \        P                  ! RV3RW434      RR\        P                   ! 4       9   g   \        P"                  ! V4      '       d   \        P$                  ! V4      MRR\        P$                  ! V4      R\        P$                  ! V4      /,          pRRV/,          p\'        \        P(                  ! V4      4      hR;p;rTVP*                  p\        4       qƒV8H  qU'       Eg   \        P                  ! RV3R W834      RR\        P                   ! 4       9   g   \        P"                  ! V4      '       d   \        P$                  ! V4      MRR\        P$                  ! V4      RR\        P                   ! 4       9   g!   \        P"                  ! \        4      '       d   \        P$                  ! \        4      MRR\        P$                  ! V4      /,          p	RRV	/,          p
\'        \        P(                  ! V
4      4      hR;p;rXVP,                  pRqCV8H  qU'       gÇ   \        P                  ! RV3R!W434      RR\        P                   ! 4       9   g   \        P"                  ! V4      '       d   \        P$                  ! V4      MRR\        P$                  ! V4      R\        P$                  ! V4      /,          pRRV/,          p\'        \        P(                  ! V4      4      hR;p;rT\        P.                  q3P0                  pR"qµV8H  qˆ'       gå   \        P                  ! RV3R#W[34      RR\        P                   ! 4       9   g!   \        P"                  ! \        4      '       d   \        P$                  ! \        4      MRR\        P$                  ! V4      R\        P$                  ! V4      R\        P$                  ! V4      /,          pRRV/,          p\'        \        P(                  ! V4      4      hR;p;p;r‹\        P.                  q3P2                  pRqµVJ qˆ'       gå   \        P                  ! RV3R$W[34      RR\        P                   ! 4       9   g!   \        P"                  ! \        4      '       d   \        P$                  ! \        4      MRR\        P$                  ! V4      R\        P$                  ! V4      R\        P$                  ! V4      /,          pRRV/,          p\'        \        P(                  ! V4      4      hR;p;p;r‹R# )%r   rI   rK   c                 ó   <€ S# r/   r   )Útargetr1   r%   s   &&€r
   rR   ÚQtest_probe_verifies_pin_before_decrypting_and_sends_no_commands.<locals>.<lambda>J   s   ø€ ÑZ^r   Úparamiko©Ú	TransportrT   c                 ó   € R # )útest-only-passwordr   )Ú	encrypteds   &r
   rR   r‰   L   s   € ÑJ^r   rX   rY   rZ   r[   Tr`   ra   rb   rc   rd   re   NÚpy4rG   Úpy6zassert %(py8)sÚpy8r$   r"   úassert %(py9)sÚpy9ri   rk   ©ú==)zQ%(py2)s
{%(py2)s = %(py0)s.server_fingerprint
} == %(py6)s
{%(py6)s = %(py4)s()
})z5%(py2)s
{%(py2)s = %(py0)s.server_banner
} == %(py5)s)rY   rŽ   F)zK%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.last
}.auth_call
} == %(py7)s©zH%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.last
}.closed
} is %(py7)s)ro   rJ   r   rp   rq   ÚsetitemÚsysÚmodulesr   r"   rr   rG   rs   rt   ru   rv   rw   rx   ry   rz   r{   Úserver_fingerprintÚserver_bannerr,   r*   r   )r}   rJ   ra   r~   r   r€   r�   r‚   Ú@py_assert5Ú@py_format7Ú@py_format9Ú@py_assert6Ú@py_format10r%   s   &            @r
   Ú?test_probe_verifies_pin_before_decrypting_and_sends_no_commandsr¢   F   s"  ø€ Ý%ä‹9€DØ×Ñ˜×+Ñ+Ð-@ÔB^Ô_Ø×ÑœŸ™ Z´Ì:Ô1VÔWØ×Ñ˜Ð&6Ñ8^Ô_à×2Ñ2Ø ¨WÀ|ô  tGó  tIð 3ó €Fð �9‰9Ð˜Ð˜Ð×××Óˆ9××××××ˆ6×××Òˆ6××Öˆ9××Ô˜×××××××ÒØ×$Ñ$Ð=Ô(;Ó(=Ð=Ð(=Ñ=×=×=×=Ô=Ð$×=×=×=×=×=×=ˆ6×=×=×=Ò=ˆ6×=×=Ö=Ð$×=×=×=×=×=Ö=Ô(;×=×=×=Ò=Ô(;×=×=Ö=Ð(=×=×=×=×=×=×=×=Ò=Ø×ÑÐ8Ð#8Ð8Ð#8Ñ8×8×8×8Ó8Ð×8×8×8×8×8×8ˆ6×8×8×8Ò8ˆ6×8×8Ö8Ð×8×8Ô8Ð#8×8×8×8×8×8×8×8Ò8Ü�?‰?ÐN×$Ñ$ÐNÐ(NÐNÐ(NÑN×N×N×NÓNÐ$×N×N×N×N×N×NŒ:×N×N×NÒNŒ:×N×NÖNˆ?×N×NÔNÐ$×N×NÔNÐ(N×N×N×N×N×N×N×NÔNÜ�?‰?Ð)×!Ñ!Ð) TÐ) TÐ)×)×)×)Ó)Ð!×)×)×)×)×)×)Œ:×)×)×)Ò)Œ:×)×)Ö)ˆ?×)×)Ô)Ð!×)×)Ô) T×)×)×)×)×)×)×)Ö)r   c                 ó°  € ^ RI Hp V P                  VP                  RR 4       V P	                  \
        P                  R\        \        R7      4       V P                  VRR 4       VP                  R^R	R
RR7      pVP                  pRqCVJ qU'       gÇ   \        P                  ! RV3RW434      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MRR\        P                   ! V4      R\        P                   ! V4      /,          pRRV/,          p\#        \        P$                  ! V4      4      hR;p;rTRq‚P&                  qHV9   q™'       gÇ   \        P                  ! RV	3R W„34      R\        P                   ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MRR\        P                   ! V4      /,          pRRV/,          p\#        \        P$                  ! V4      4      hR;p;r”\        P(                  q3P*                  pRq¥V
J q»'       gå   \        P                  ! RV3R!WZ34      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                   ! \        4      MRR\        P                   ! V4      R\        P                   ! V4      R\        P                   ! V
4      /,          pRRV/,          p\#        \        P$                  ! V4      4      hR;p;p;rºR# )"r   rI   rK   c                 ó   € \        4       # r/   )r   )rˆ   r1   s   &&r
   rR   ÚPtest_probe_rejects_an_unpinned_server_before_secret_decryption.<locals>.<lambda>\   s   € ÔZaÔZcr   rŠ   r‹   rT   c                 ó.   € \         P                  ! R 4      # rV   rM   rP   s   &r
   rR   r¥   ^   rW   r   rX   rY   rZ   ú2SHA256:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr[   Fr`   ra   rb   rc   rd   re   Nztidak cocokrg   rh   Tr"   r�   r“   r”   ri   rk   rl   rn   r—   )ro   rJ   rp   rq   r˜   r™   rš   r   r"   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r,   r   )r}   rJ   ra   r~   r   r€   r�   r‚   rƒ   r„   r    r�   r¡   s   &            r
   Ú>test_probe_rejects_an_unpinned_server_before_secret_decryptionr¨   Y   sß  € Ý%à×Ñ˜×+Ñ+Ð-@ÑBcÔdØ×ÑœŸ™ Z´Ì:Ô1VÔWØ×Ñ˜Ð&6Ñ8hÔià×2Ñ2Ø ¨WÀ|ð  thð 3ó €Fð �9‰9Ð˜Ð˜Ð×××Óˆ9××××××ˆ6×××Òˆ6××Öˆ9××Ô˜×××××××ÒØÐ*ŸN™NÐ*˜NÑ*×*×*×*Ó*ˆ=×*×*Õ*ˆ=×*×*×*×*×*Ö*˜F×*×*×*Ò*˜F×*×*Ö*˜N×*×*×*×*×*×*×*Ò*Ü�?‰?Ð)×!Ñ!Ð) TÐ) TÐ)×)×)×)Ó)Ð!×)×)×)×)×)×)Œ:×)×)×)Ò)Œ:×)×)Ö)ˆ?×)×)Ô)Ð!×)×)Ô) T×)×)×)×)×)×)×)Ö)r   c              ƒ   ó:  aaaa"  € ^ RI Hp ^ RIHo \	        ^RRRRR^^RR	7	      o\	        ^RRR
RR7      o ! VV3R lR4      p/ oVV3R lpV P                  VRV4       V P                  RR4       VP                  V! 4       4      G Rj  x€L
 pVP                  p^ÈqeV8H  qw'       gÇ   \        P                  ! R$V3R%WV34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p	\        \        P                   ! V	4      4      hR;p;rvRq¤P"                  qjV9   q»'       gÇ   \        P                  ! R&V3R'W¦34      R\        P                  ! V
4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      /,          pRRV/,          p	\        \        P                   ! V	4      4      hR;p
;r¶SR,          qªP$                  pRqk! V4      qÌ'       g�   RR\        P                  ! V
4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          p	\        \        P                   ! V	4      4      hR;p
;p;rlSR ,          p
RqzV8H  q»'       gy   \        P                  ! R$V3R(W§34      R\        P                  ! V
4      R!\        P                  ! V4      /,          pR"R#V/,          p\        \        P                   ! V4      4      hR;p
;r·R#  EL5i))r   )Údevices)ÚSSHIdentityTestResultzOLT-UJIzC-DATAz
FD1601S-B1rX   ÚsshT)	ÚidÚnameÚvendorÚmodelr\   Úmanagement_protocolÚapi_portÚcredential_idÚ	is_activerY   rZ   )r­   Úprotocolr´   r8   r^   c                   ó0   <a € ] tR t^tt o VV3R ltRtV tR# )ÚMtest_assigned_olt_endpoint_requires_the_pinned_identity_probe.<locals>.FakeDBc              “  ó"   <"  € V^8X  d   S# S# 5i)é   r   )r	   r°   Úitem_idÚ
credentialÚdevices   &&&€€r
   ÚgetÚQtest_assigned_olt_endpoint_requires_the_pinned_identity_probe.<locals>.FakeDB.getu   s   øé € Ø$¨œ\�6Ð9¨zÐ9ùs   ƒr   N)r   r   r   r   r½   r   r   )r   r»   r¼   s   @€€r
   ÚFakeDBr·   t   s   ù‡ € ÷	:ô 	:r   r¿   c                  ó<   <€ SP                  V 4       S! R RRR4      # )TÚverifiedzSHA256:testzSSH-2.0-test)Úupdate)Úkwargsr«   Úseens   ,€€r
   Ú
fake_probeÚQtest_assigned_olt_endpoint_requires_the_pinned_identity_probe.<locals>.fake_probez   s    ø€ Ø�‰�FÔÙ$ T¨:°}ÀnÓUÐUr   rr   ÚOLT_1_SSH_HOST_KEY_SHA256r§   Nr`   Úresponserb   rc   rd   re   s	   "ok":truerg   rh   r_   rE   zLassert %(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.startswith
}(%(py5)s)
}r^   r�   zassert %(py6)sr‘   r•   )z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)srl   )z,%(py1)s in %(py5)s
{%(py5)s = %(py3)s.body
})z%(py1)s == %(py4)s)Ú
app.routesrª   rF   r«   r   rp   ÚsetenvÚ test_assigned_cdata_ssh_identityÚstatus_codert   ru   rv   rw   rx   ry   rz   r{   ÚbodyÚ
startswith)r}   rª   r¿   rÅ   rÈ   r~   r   r€   r�   r‚   rƒ   r„   r    Ú@py_format5rž   r«   r»   r¼   rÄ   s   &              @@@@r
   Ú=test_assigned_olt_endpoint_requires_the_pinned_identity_proberÐ   i   s?  ûé € å"Ý;äØ�9 X°\ÈØ!¨B¸aÈ4ô€Fô ! A°ÀÐPWÐjvÔw€J÷:õ :ð €DöVð ×Ñ˜Ð!;¸ZÔHØ×ÑÐ2Ð4hÔià×=Ñ=¹f»hÓG×G€Hà×ÑÐ& 3Ð& 3Ñ&×&×&×&Ó&Ð×&×&×&×&×&×&ˆ8×&×&×&Ò&ˆ8×&×&Ö&Ð×&×&Ô& 3×&×&×&×&×&×&×&Ò&ØÐ(Ÿ=™=Ð(˜=Ñ(×(×(×(Ó(ˆ<×(×(Õ(ˆ<×(×(×(×(×(Ö(˜8×(×(×(Ò(˜8×(×(Ö(˜=×(×(×(×(×(×(×(Ò(ØÐ/Õ0ÐF×;Ñ;ÐF¸IÐFÐ;¸IÓFÐFÖF×F×FÑFÐ0×F×FÔFÐ;×F×FÔF¸I×F×FÔFÐF×F×F×F×F×F×FÑFØÐ"Õ#Ð3 |Ð3 |Ñ3×3×3×3Ó3Ð#×3×3Õ3Ð#×3×3Ô3 |×3×3×3×3×3×3×3Ô3ò Hùs!   †BNÂNÂA-NÃ;C8NÇ4F%N)Úbuiltinsrv   Ú_pytest.assertion.rewriteÚ	assertionÚrewritert   r™   Útypesr   rN   r   r   r"   rG   r…   r¢   r¨   ÚmarkÚasynciorÐ   r   r   r
   Ú<module>rØ      sb   ðß  „ ƒ
Ý !ã ÷ñ ÷$ñ $÷
ñ ò<4ò(ò*ò&*ð  ‡�×Ññ4ó ò4r   