+
    üÐj  ã                   óô   € R t ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHt R	tR
t]! R4      '       d   ^ RIHt MRtRt]! ]R4      '       g   RtRt]! ]]4       ! R R]4      4       tR# )z,
Tests for L{twisted.conch.openssh_compat}.
N)ÚskipIf)ÚgetDHGeneratorAndPrime)Úkeydata)ÚFilePath)ÚrequireModule)ÚMockOS)ÚTestCaseFÚ Úcryptography)ÚOpenSSHFactoryTzCannot run without cryptographyÚgeteuidzgeteuid/seteuid not availablec                   ó~   a € ] tR t^t o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	Rt
V tR# )ÚOpenSSHFactoryTestsz
Tests for L{OpenSSHFactory}.
c                ó   <€ V ^8„  d   QhRR/# ©é   ÚreturnN© )ÚformatÚ__classdict__s   "€ÚH/usr/lib/python3/dist-packages/twisted/conch/test/test_openssh_compat.pyÚ__annotate__Ú OpenSSHFactoryTests.__annotate__%   s   ø€ ÷ #7ñ #7�tñ #7ó    c                ó  € \        4       V n        \        V P                  4       4      V n        V P                  P                  4        V P                  P                  V P                  n        \        V P                  4       4      V n        V P                  P                  4        V P                  P                  V P                  n	        V P                  P                  R 4      P                  R4       V P                  P                  R4      P                  R4       V P                  P                  R4      P                  \        P                  4       V P                  P                  R4      P                  \        P                  4       V P                  P                  R4      P                  R4       V P                  P                  R4      P                  \        P                  4       V P                  P                  R4      P                  R	4       \!        4       V n        V P%                  \&        R
V P"                  P(                  4       V P%                  \&        RV P"                  P*                  4       R# )Ússh_host_foos   fooÚbar_keyÚssh_host_one_keyÚssh_host_two_keyÚssh_host_three_keys   not a key contentzssh_host_one_key.pubÚmodulis�  
#    $OpenBSD: moduli,v 1.xx 2016/07/26 12:34:56 jhacker Exp $i
# Time Type Tests Tries Size Generator Modulus
20030501000000 2 6 100 2047 2 FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AACAA68FFFFFFFFFFFFFFFF
ÚseteuidÚsetegidN)r   Úfactoryr   ÚmktempÚkeysDirÚmakedirsÚpathÚdataRootÚ	moduliDirÚ
moduliRootÚchildÚ
setContentr   ÚprivateRSA_opensshÚprivateDSA_opensshÚpublicRSA_opensshr   ÚmockosÚpatchÚosr!   r"   )Úselfs   &r   ÚsetUpÚOpenSSHFactoryTests.setUp%   s¢  € Ü%Ó'ˆŒÜ §¡£Ó.ˆŒØ�‰×ÑÔØ $§¡× 1Ñ 1ˆ�‰ÔÜ! $§+¡+£-Ó0ˆŒØ�‰×ÑÔ!Ø"&§.¡.×"5Ñ"5ˆ�‰Ôà�‰×Ñ˜>Ó*×5Ñ5°fÔ=Ø�‰×Ñ˜9Ó%×0Ñ0°Ô8Ø�‰×ÑÐ-Ó.×9Ñ9¼'×:TÑ:TÔUØ�‰×ÑÐ-Ó.×9Ñ9¼'×:TÑ:TÔUØ�‰×ÑÐ/Ó0×;Ñ;Ð<PÔQà�‰×ÑÐ1Ó2×=Ñ=¼g×>WÑ>WÔXà�‰×Ñ˜XÓ&×1Ñ1ðô	
ô  “hˆŒØ�
‰
”2�y $§+¡+×"5Ñ"5Ô6Ø�
‰
”2�y $§+¡+×"5Ñ"5Ö6r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   J   s   ø€ ÷ 7ñ 7 Dñ 7r   c                óÈ   € V P                   P                  4       pV P                  \        V4      ^4       VP	                  4       pV P                  \        V4      R.4       R# )z_
L{OpenSSHFactory.getPublicKeys} should return the available public keys
in the data directory
ó   ssh-rsaN)r#   ÚgetPublicKeysÚassertEqualÚlenÚkeysÚlist©r3   r<   ÚkeyTypess   &  r   Útest_getPublicKeysÚ&OpenSSHFactoryTests.test_getPublicKeysJ   sK   € ð
 �|‰|×)Ñ)Ó+ˆØ×Ñœ˜T› AÔ&Ø—9‘9“;ˆØ×Ñœ˜h›¨*¨Ö6r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   T   s   ø€ ÷ 
7ñ 
7 Tñ 
7r   c                ób  € V P                   P                  4       pV P                  \        V4      ^4       VP	                  4       pV P                  \        V4      RR04       V P                  V P                  P                  . 4       V P                  V P                  P                  . 4       R# )zm
Will return the available private keys in the data directory, ignoring
key files which failed to be loaded.
r8   ó   ssh-dssN)	r#   ÚgetPrivateKeysr:   r;   r<   Úsetr0   ÚseteuidCallsÚsetegidCallsr>   s   &  r   Útest_getPrivateKeysÚ'OpenSSHFactoryTests.test_getPrivateKeysT   s‚   € ð
 �|‰|×*Ñ*Ó,ˆØ×Ñœ˜T› AÔ&Ø—9‘9“;ˆØ×Ñœ˜X›¨°ZÐ(@ÔAØ×Ñ˜Ÿ™×1Ñ1°2Ô6Ø×Ñ˜Ÿ™×1Ñ1°2Ö6r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   `   s   ø€ ÷ Fñ F¨4ñ Fr   c                ó¬  aa€ V P                   P                  R4      oSP                  ^ 4       V P                  SP                  R4       \        P
                  oR VV3R llpV P                  \        RV4       V P                  P                  4       pV P                  \        V4      ^4       VP                  4       pV P                  \        V4      RR04       V P                  V P                  P                  ^ \        P                  ! 4       .4       V P                  V P                  P                   ^ \        P"                  ! 4       .4       R# )	zi
L{OpenSSHFactory.getPrivateKeys} should switch to root if the keys
aren't readable by the current user.
r   éÿ  c                ó(   € V ^8„  d   QhR\         RR/# )r   Úeuidr   N)Úint)r   s   "r   r   ÚCOpenSSHFactoryTests.test_getPrivateKeysAsRoot.<locals>.__annotate__l   s   € ÷ 	&ñ 	&œ#ð 	& $ñ 	&r   c                 ó6   <€ SP                  R 4       S! V 4      # )rM   )Úchmod)rO   ÚkeyFileÚsavedSeteuids   &€€r   r!   Ú>OpenSSHFactoryTests.test_getPrivateKeysAsRoot.<locals>.seteuidl   s   ø€ Ø�M‰M˜%Ô Ù Ó%Ð%r   r!   r8   rD   N)r%   r+   rS   Ú
addCleanupr2   r!   r1   r#   rE   r:   r;   r<   rF   r0   rG   r   rH   Úgetegid)r3   r!   r<   r?   rT   rU   s   &   @@r   Útest_getPrivateKeysAsRootÚ-OpenSSHFactoryTests.test_getPrivateKeysAsRoot`   sñ   ù€ ð
 —,‘,×$Ñ$Ð%7Ó8ˆà�‰�dÔØ�‰˜Ÿ™ uÔ-ä—z‘zˆ÷	&ñ 	&ð 	�
‰
”2�y 'Ô*Ø�|‰|×*Ñ*Ó,ˆØ×Ñœ˜T› AÔ&Ø—9‘9“;ˆØ×Ñœ˜X›¨°ZÐ(@ÔAØ×Ñ˜Ÿ™×1Ñ1°A´r·z²z³|Ð3DÔEØ×Ñ˜Ÿ™×1Ñ1°A´r·z²z³|Ð3DÖEr   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   x   s   ø€ ÷ 
ñ 
 ñ 
r   c                óv   € V P                   P                  4       pV P                  VR\        R4      ./4       R# )zY
L{OpenSSHFactory.getPrimes} should return the available primes
in the moduli directory.
i   s   diffie-hellman-group14-sha1N)r#   Ú	getPrimesr:   r   )r3   Úprimess   & r   Útest_getPrimesÚ"OpenSSHFactoryTests.test_getPrimesx   s;   € ð
 —‘×'Ñ'Ó)ˆØ×ÑØàÔ-Ð.LÓMÐNðö	
r   )r#   r%   r0   r)   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r4   r@   rI   rY   r_   Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r      s?   ø‡ € ñ÷#7ð #7÷J7ð 7÷
7ð 
7÷Fð F÷0
ö 
r   r   )re   r2   Úunittestr   Útwisted.conch.ssh._kexr   Útwisted.conch.testr   Útwisted.python.filepathr   Útwisted.python.reflectr   Útwisted.test.test_processr   Útwisted.trial.unittestr   ÚdoSkipÚ
skipReasonÚ$twisted.conch.openssh_compat.factoryr   Úhasattrr   r   r   r   Ú<module>rs      s‚   ðñó 
Ý å 9Ý &Ý ,Ý 0Ý ,Ý +à	€Ø€
Ù�× Ò ÞCà€FØ2€Jáˆr�9×ÒØ€FØ0€Jñ ˆ�
Óôc
˜(ó c
ó òc
r   