+
    Df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 #7t #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5f=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

2y$++"5"56

2y$++"5"56r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r   J   s     7 7D 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&99;h*6r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r   T   s     
7 
7T 
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&99;XZ(@A1126112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    MM% %%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-zz	& 	& 	

2y'*||**,TA&99;XZ(@A11Arzz|3DE11Arzz|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 #7J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2Jr9F0J 
c
( c
 c
r   