ó
    Ö›‘h-  ã                   óÔ  • S r SSKrSSKJr  SSKJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  SS	KJr  SS
KJr  SSKJr  SrSr\" S5      (       a  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  OSrSr\r \RB                  " 5       (       a  SrSr\RD                  RG                  5       (       d  SrSr\RH                  RG                  5       (       d  SrSr " S S\5      r% " S S\5      r&g)z,
Tests for L{twisted.conch.client.default}.
é    N)ÚskipIf)Ú
ConchError)Úkeydata)ÚStringTransport)ÚnativeString)ÚFilePath)ÚrequireModule)Úplatform)ÚTestCaseFÚ Úcryptography)Údefault)ÚSSHAgentClient)ÚSSHUserAuthClient)ÚConchOptions)ÚKeyTz7cryptography required for twisted.conch.client.default.zlgenericAnswers and getPassword does not work on Windows. Should be fixed as part of fixing bug 6409 and 6410z#sys.stdin is not an interactive ttyz$sys.stdout is not an interactive ttyc                   óÀ   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 r\" \\5      S 5       r\" \\5      S 5       r\" \\5      S 5       r\" \\5      S 5       rSrg)ÚSSHUserAuthClientTestsé2   z]
Tests for L{SSHUserAuthClient}.

@type rsaPublic: L{Key}
@ivar rsaPublic: A public RSA key.
c                 óÈ  • [         R                  " [        R                  5      U l        [        U R                  5       5      U l        U R                  R                  5         U R                  R                  S5      U l
        U R                  R                  [        R                  5        U R                  R                  S5      R                  [        R                  5        g )NÚid_rsaú
id_rsa.pub)r   Ú
fromStringr   ÚpublicRSA_opensshÚ	rsaPublicr   ÚmktempÚtmpdirÚmakedirsÚchildÚrsaFileÚ
setContentÚprivateRSA_openssh©Úselfs    ÚcC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/conch/test/test_default.pyÚsetUpÚSSHUserAuthClientTests.setUp:   s‹   € ÜŸš¬×(AÑ(AÓBˆŒÜ˜tŸ{™{›}Ó-ˆŒØ�‰×ÑÔØ—{‘{×(Ñ(¨Ó2ˆŒØ�‰×Ñ¤× :Ñ :Ô;Ø�‰×Ñ˜,Ó'×2Ñ2´7×3LÑ3LÕMó    c                 óH  • [        S[        5       S5      n[        5       n[        5       nUR	                  U5        X!l        SnUR                  U R                  U5        U R                  UR                  5       SU R                  R                  5       -   S-   U-   S-   5        g)z€
When connected to an agent, L{SSHUserAuthClient} can use it to
request signatures of particular data with a particular L{Key}.
ó   userNs	   Sign heres	     -  s      	s       )r   r   r   r   ÚmakeConnectionÚkeyAgentÚsignDatar   ÚassertEqualÚvalueÚblob)r$   ÚclientÚagentÚ	transportÚ	cleartexts        r%   Útest_signDataWithAgentÚ-SSHUserAuthClientTests.test_signDataWithAgentB   sš   € ô
 # 7¬L«N¸DÓAˆÜÓ ˆÜ#Ó%ˆ	Ø×Ñ˜YÔ'ØŒØ ˆ	Ø�‰˜Ÿ™¨	Ô2Ø×ÑØ�O‰OÓØ1Ø�n‰n×!Ñ!Ó#ñ$àñ ð ñð "ñ	"õ	
r(   c                 ó*  • [        5       nU R                  R                  5       /Ul        UR	                  5       nU R                  UR                  5       5        U R                  X R                  5        U R                  UR	                  5       5        g)zö
L{SSHUserAuthClient} looks up public keys from the agent using the
L{SSHAgentClient} class.  That L{SSHAgentClient.getPublicKey} returns a
L{Key} object with one of the public keys in the agent.  If no more
keys are present, it returns L{None}.
N)	r   r   r0   ÚblobsÚgetPublicKeyÚ
assertTrueÚisPublicr.   ÚassertIsNone)r$   r2   Úkeys      r%   Útest_agentGetPublicKeyÚ-SSHUserAuthClientTests.test_agentGetPublicKeyW   sl   € ô Ó ˆØ—~‘~×*Ñ*Ó,Ð-ˆŒØ× Ñ Ó"ˆØ�‰˜Ÿ™›Ô'Ø×Ñ˜Ÿn™nÔ-Ø×Ñ˜%×,Ñ,Ó.Õ/r(   c                 óþ   • [        5       nU R                  R                  /Ul        [	        SUS5      nUR                  5       nU R                  UR                  5       5        U R                  X0R                  5        g)zµ
L{SSHUserAuthClient.getPublicKey()} is able to get a public key from
the first file described by its options' C{identitys} list, and return
the corresponding public L{Key} object.
r*   N)
r   r    ÚpathÚ	identitysr   r9   r:   r;   r.   r   )r$   Úoptionsr1   r=   s       r%   Útest_getPublicKeyFromFileÚ0SSHUserAuthClientTests.test_getPublicKeyFromFilee   s`   € ô “.ˆØ!Ÿ\™\×.Ñ.Ð/ˆÔÜ" 7¨G°TÓ:ˆØ×!Ñ!Ó#ˆØ�‰˜Ÿ™›Ô'Ø×Ñ˜Ÿn™nÕ-r(   c                 ó  • [        5       nU R                  R                  /Ul        [	        5       n[        SUS5      nX#l        UR                  5       nU R                  UR                  5       5        U R                  X@R                  5        g)zz
If an agent is present, but doesn't return a key,
L{SSHUserAuthClient.getPublicKey} continue with the normal key lookup.
r*   N)r   r    rA   rB   r   r   r,   r9   r:   r;   r.   r   )r$   rC   r2   r1   r=   s        r%   Útest_getPublicKeyAgentFallbackÚ5SSHUserAuthClientTests.test_getPublicKeyAgentFallbackr   sm   € ô
 “.ˆØ!Ÿ\™\×.Ñ.Ð/ˆÔÜÓ ˆÜ" 7¨G°TÓ:ˆØŒØ×!Ñ!Ó#ˆØ�‰˜Ÿ™›Ô'Ø×Ñ˜Ÿn™nÕ-r(   c                 óö  • [        5       nU R                  R                  S5      R                  [        R
                  5        U R                  R                  S5      nUR                  [        R                  5        U R                  R                  UR                  /Ul	        U R                  R                  S5      R                  S5        [        SUS5      nUR                  5       nU R                  UR                  5       5        U R                  U[        R                   " [        R
                  5      5        U R                  UR"                  U R                  R                  UR                  /5        g)zœ
If L{keys.Key.fromFile} raises a L{keys.BadKeyError}, the
L{SSHUserAuthClient.getPublicKey} tries again to get a public key by
calling itself recursively.
z
id_dsa.pubÚid_dsar   s
   not a key!r*   N)r   r   r   r!   r   ÚpublicDSA_opensshÚprivateDSA_opensshr    rA   rB   r   r9   r:   r;   r.   r   r   Ú	usedFiles)r$   rC   ÚdsaFiler1   r=   s        r%   Útest_getPublicKeyBadKeyErrorÚ3SSHUserAuthClientTests.test_getPublicKeyBadKeyError€   s  € ô “.ˆØ�‰×Ñ˜,Ó'×2Ñ2´7×3LÑ3LÔMØ—+‘+×#Ñ# HÓ-ˆØ×Ñœ7×5Ñ5Ô6Ø!Ÿ\™\×.Ñ.°·±Ð=ˆÔØ�‰×Ñ˜,Ó'×2Ñ2°=ÔAÜ" 7¨G°TÓ:ˆØ×!Ñ!Ó#ˆØ�‰˜Ÿ™›Ô'Ø×Ñ˜œcŸnšn¬W×-FÑ-FÓGÔHØ×Ñ˜×)Ñ)¨D¯L©L×,=Ñ,=¸w¿|¹|Ð+LÕMr(   c                 ó   ^ ^• [         R                  " [        R                  5      m[	        5       nT R
                  R                  /Ul        [        SUS5      nUR                  5         UU 4S jnUR                  5       R                  U5      $ )zÐ
L{SSHUserAuthClient.getPrivateKey} will load a private key from the
last used file populated by L{SSHUserAuthClient.getPublicKey}, and
return a L{Deferred} which fires with the corresponding private L{Key}.
r*   Nc                 óh   >• TR                  U R                  5       5        TR                  U T5        g ©N©ÚassertFalser;   r.   ©r=   Ú
rsaPrivater$   s    €€r%   Ú_cbGetPrivateKeyÚCSSHUserAuthClientTests.test_getPrivateKey.<locals>._cbGetPrivateKeyŸ   ó'   ø€ Ø×Ñ˜SŸ\™\›^Ô,Ø×Ñ˜S *Õ-r(   )r   r   r   r"   r   r    rA   rB   r   r9   ÚgetPrivateKeyÚaddCallback)r$   rC   r1   rX   rW   s   `   @r%   Útest_getPrivateKeyÚ)SSHUserAuthClientTests.test_getPrivateKey’   sq   ù€ ô —^’^¤G×$>Ñ$>Ó?ˆ
Ü“.ˆØ!Ÿ\™\×.Ñ.Ð/ˆÔÜ" 7¨G°TÓ:ˆà×ÑÔö	.ð ×#Ñ#Ó%×1Ñ1Ð2BÓCÐCr(   c                 ó¬  ^ ^^• [         R                  " [        R                  5      mSmT R                  R                  TR                  STS95        [        5       nT R                  R                  /Ul	        [        SUS5      nUR                  5         UU 4S jnUU 4S jnT R                  USU5        UR                  5       R                  U5      $ )	z—
L{SSHUserAuthClient} can get a private key from a file, and return a
Deferred called back with a private L{Key} object, even if the key is
encrypted.
s   this is the passphraseÚopenssh)Ú
passphraser*   Nc                 ón   >• TR                  U STR                  R                   S35        [        T5      $ )NzEnter passphrase for key 'z': )r.   r    rA   r   )Úpromptra   r$   s    €€r%   Ú_getPasswordÚISSHUserAuthClientTests.test_getPrivateKeyPassphrase.<locals>._getPassword´   s8   ø€ Ø×ÑØÐ4°T·\±\×5FÑ5FÐ4GÀsÐKôô   
Ó+Ð+r(   c                 óh   >• TR                  U R                  5       5        TR                  U T5        g rS   rT   rV   s    €€r%   rX   ÚMSSHUserAuthClientTests.test_getPrivateKeyPassphrase.<locals>._cbGetPrivateKeyº   rZ   r(   rd   )r   r   r   r"   r    r!   ÚtoStringr   rA   rB   r   r9   Úpatchr[   r\   )r$   rC   r1   rd   rX   ra   rW   s   `    @@r%   Útest_getPrivateKeyPassphraseÚ3SSHUserAuthClientTests.test_getPrivateKeyPassphrase¥   s­   ú€ ô —^’^¤G×$>Ñ$>Ó?ˆ
Ø.ˆ
Ø�‰×Ñ 
× 3Ñ 3°IÈ*Ð 3Ð UÔVÜ“.ˆØ!Ÿ\™\×.Ñ.Ð/ˆÔÜ" 7¨G°TÓ:ˆà×ÑÔö	,ö	.ð 	�
‰
�6˜>¨<Ô8Ø×#Ñ#Ó%×1Ñ1Ð2BÓCÐCr(   c                 ó
  ^ •  " S S5      n[        5       n[        SUS5      nU" S5      Ul        U 4S jnT R                  [        R
                  SU5        UR                  5       nUR                  T R                  S5        U$ )	zV
Get the password using
L{twisted.conch.client.default.SSHUserAuthClient.getPassword}
c                   ó    • \ rS rSrS rS rSrg)Ú>SSHUserAuthClientTests.test_getPassword.<locals>.FakeTransportéÈ   c                 ó   • X l         Xl        g rS   )r3   Úhost)r$   rq   s     r%   Ú__init__ÚGSSHUserAuthClientTests.test_getPassword.<locals>.FakeTransport.__init__É   s   € Ø!%”Ø •	r(   c                 ó   • U $ rS   © r#   s    r%   ÚgetPeerÚFSSHUserAuthClientTests.test_getPassword.<locals>.FakeTransport.getPeerÍ   s   € Ø�r(   )rq   r3   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rr   rv   Ú__static_attributes__ru   r(   r%   ÚFakeTransportrn   È   s   † ò!õr(   r}   r*   Nz	127.0.0.1c                 ó*   >• TR                  U S5        g)Nzuser@127.0.0.1's password: úbad password©r.   ©rc   r$   s    €r%   ÚgetpassÚ8SSHUserAuthClientTests.test_getPassword.<locals>.getpassÔ   s   ø€ Ø×Ñ˜VÐ%BÔCØ!r(   r‚   ó   bad password)	r   r   r3   ri   r   r‚   ÚgetPasswordr\   r.   )r$   r}   rC   r1   r‚   Úds   `     r%   Útest_getPasswordÚ'SSHUserAuthClientTests.test_getPasswordÁ   ss   ø€ ÷	ñ 	ô “.ˆÜ" 7¨G°TÓ:ˆÙ(¨Ó5ˆÔõ	"ð 	�
‰
”7—?‘? I¨wÔ7Ø×ÑÓ ˆØ	�‰�d×&Ñ&¨Ô8Øˆr(   c                 óæ   ^ ^• [        5       n[        SUS5      nSmUU 4S jnT R                  [        R                  SU5        UR                  T5      nUR                  T R                  S5        U$ )zp
Get the password using
L{twisted.conch.client.default.SSHUserAuthClient.getPassword}
using a different prompt.
r*   Ns   Give up your passwordc                 ó<   >• TR                  U [        T5      5        g)Nr   )r.   r   )Úprc   r$   s    €€r%   r‚   Ú>SSHUserAuthClientTests.test_getPasswordPrompt.<locals>.getpassè   s   ø€ Ø×Ñ˜Q¤¨VÓ 4Ô5Ø!r(   r‚   r„   )r   r   ri   r   r‚   r…   r\   r.   )r$   rC   r1   r‚   r†   rc   s   `    @r%   Útest_getPasswordPromptÚ-SSHUserAuthClientTests.test_getPasswordPromptÝ   sc   ù€ ô “.ˆÜ" 7¨G°TÓ:ˆØ)ˆö	"ð 	�
‰
”7—?‘? I¨wÔ7Ø×Ñ˜vÓ&ˆØ	�‰�d×&Ñ&¨Ô8Øˆr(   c                 ó>  ^ ^^• [        5       n[        SUS5      nS nT R                  [        R                  SU5        [
        R                  [
        R                  smmUR                  S5      nUR                  U UU4S j5       nT R                  U[        5        g)z�
Get the password using
L{twisted.conch.client.default.SSHUserAuthClient.getPassword}
and trigger a {twisted.conch.error import ConchError}.
r*   Nc                 ó   • [        S5      e)NzUser pressed CTRL-C)ÚKeyboardInterrupt)rc   s    r%   r‚   ÚBSSHUserAuthClientTests.test_getPasswordConchError.<locals>.getpassû   s   € Ü#Ð$9Ó:Ð:r(   r‚   ó   ?c                 ól   >• TR                  TT/[        R                  [        R                  /5        U $ rS   )r.   ÚsysÚstdoutÚstdin)Úfailr$   r—   r–   s    €€€r%   Ú	check_sysÚDSSHUserAuthClientTests.test_getPasswordConchError.<locals>.check_sys  s)   ø€ à×Ñ˜f e˜_¬s¯z©z¼3¿9¹9Ð.EÔFØˆKr(   )r   r   ri   r   r‚   r•   r–   r—   r…   Ú
addErrbackÚassertFailurer   )r$   rC   r1   r‚   r†   r™   r—   r–   s   `     @@r%   Útest_getPasswordConchErrorÚ1SSHUserAuthClientTests.test_getPasswordConchErrorñ   s€   ú€ ô “.ˆÜ" 7¨G°TÓ:ˆò	;ð 	�
‰
”7—?‘? I¨wÔ7ÜŸ
™
¤C§I¡Iˆˆ�Ø×Ñ˜tÓ$ˆà	
�‰ö	ó 
ð	ð 	×Ñ˜1œjÕ)r(   c                 ó$  ^ • [        5       n[        SUS5      nU 4S jnT R                  [        R                  SU5        U 4S jnT R                  [        SU5        UR                  SSS	S
/5      nUR                  T R                  SS/5        U$ )zE
L{twisted.conch.client.default.SSHUserAuthClient.getGenericAnswers}
r*   Nc                 ó*   >• TR                  U S5        g)Nzpass promptr‚   r€   r�   s    €r%   r‚   Ú>SSHUserAuthClientTests.test_getGenericAnswers.<locals>.getpass  s   ø€ Ø×Ñ˜V ]Ô3Ør(   r‚   c                 ó*   >• TR                  U S5        g)Nzraw_input promptÚ	raw_inputr€   r�   s    €r%   r£   Ú@SSHUserAuthClientTests.test_getGenericAnswers.<locals>.raw_input  s   ø€ Ø×Ñ˜VÐ%7Ô8Ør(   Ú_inputs   Names   Instruction)s   pass promptF)s   raw_input promptTr£   )r   r   ri   r   r‚   ÚgetGenericAnswersr\   ÚassertListEqual)r$   rC   r1   r‚   r£   r†   s   `     r%   Útest_getGenericAnswersÚ-SSHUserAuthClientTests.test_getGenericAnswers	  s‹   ø€ ô
 “.ˆÜ" 7¨G°TÓ:ˆõ	ð 	�
‰
”7—?‘? I¨wÔ7õ	ð 	�
‰
”7˜H iÔ0Ø×$Ñ$ØØØ$Ð&AÐBó
ˆð
 	
�‰�d×*Ñ*¨Y¸Ð,DÔEØˆr(   )r    r   r   N)rx   ry   rz   r{   Ú__doc__r&   r5   r>   rD   rG   rO   r]   rj   r   ÚdoSkipÚ
skipReasonr‡   r�   r�   r¨   r|   ru   r(   r%   r   r   2   sŸ   † ñòNò
ò*0ò.ò.òNò$Dò&Dñ8 ˆF�JÓñó  ðñ6 ˆF�JÓñó  ðñ& ˆF�JÓñ*ó  ð*ñ. ˆF�JÓñó  ór(   r   c                   ó$   • \ rS rSrSrS rS rSrg)ÚConchOptionsParsingi%  z
Options parsing.
c                 ó’  • [        5       nU R                  [        UR                  S5      nU R	                  SUR
                  5        [        5       nUR                  S5        U R                  US   S/5        UR                  S5        U R                  US   S/5        UR                  S5        U R                  US   / SQ5        g)	z
Specify MAC algorithms.
zinvalid-maczUnknown mac typezhmac-sha2-512Úmacss   hmac-sha2-512z hmac-sha2-256,hmac-sha1,hmac-md5)s   hmac-sha2-256s	   hmac-sha1s   hmac-md5N)r   ÚassertRaisesÚ
SystemExitÚopt_macsÚassertInÚcoder.   ©r$   ÚoptsÚes      r%   Ú	test_macsÚConchOptionsParsing.test_macs*  s¨   € ô ‹~ˆØ×Ñœj¨$¯-©-¸ÓGˆØ�‰Ð(¨!¯&©&Ô1Ü‹~ˆØ�‰�oÔ&Ø×Ñ˜˜f™Ð(8Ð'9Ô:Ø�‰Ð&Ô'Ø×Ñ˜˜f™Ð(8Ð'9Ô:Ø�‰Ð8Ô9Ø×Ñ˜˜f™Ò'TÕUr(   c                 ó’  • [        5       nU R                  [        UR                  S5      nU R	                  SUR
                  5        [        5       nUR                  S5        U R                  US   S/5        UR                  S5        U R                  US   S/5        UR                  S5        U R                  US   SS/5        g)	z
Specify host key algorithms.
zinvalid-keyzUnknown host key typezssh-rsazhost-key-algorithmss   ssh-rsas   ssh-dsszssh-rsa,ssh-dssN)r   r±   r²   Úopt_host_key_algorithmsr´   rµ   r.   r¶   s      r%   Útest_host_key_algorithmsÚ,ConchOptionsParsing.test_host_key_algorithms9  sµ   € ô ‹~ˆØ×Ñœj¨$×*FÑ*FÈÓVˆØ�‰Ð-¨q¯v©vÔ6Ü‹~ˆØ×$Ñ$ YÔ/Ø×Ñ˜Ð3Ñ4°z°lÔCØ×$Ñ$ ZÔ0Ø×Ñ˜Ð3Ñ4°z°lÔCØ×$Ñ$Ð%6Ô7Ø×Ñ˜Ð3Ñ4°zÀ:Ð6NÕOr(   ru   N)rx   ry   rz   r{   rª   r¹   r½   r|   ru   r(   r%   r®   r®   %  s   † ñòVõPr(   r®   )'rª   r•   Úunittestr   Útwisted.conch.errorr   Útwisted.conch.testr   Útwisted.internet.testingr   Útwisted.python.compatr   Útwisted.python.filepathr   Útwisted.python.reflectr	   Útwisted.python.runtimer
   Útwisted.trial.unittestr   r«   r¬   Útwisted.conch.clientr   Útwisted.conch.client.agentr   Útwisted.conch.client.defaultr   Útwisted.conch.client.optionsr   Útwisted.conch.ssh.keysr   ÚskipÚ	isWindowsr—   Úisattyr–   r   r®   ru   r(   r%   Ú<module>rÐ      sÔ   ðñó
 Ý å *Ý &Ý 4Ý .Ý ,Ý 0Ý +Ý +à	€Ø€
á�× Ñ Ý,Ý9Ý>Ý9Þ*à€FØJ€JØ€Dà×Ò×ÑØ€Fð	?ð ð
 ‡y�y×Ñ×ÑØ€FØ6€JØ
‡z�z×Ñ×ÑØ€FØ7€Jôp˜Xô pôf!P˜(õ !Pr(   