
    Yf                         d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZ d
ZdZ ed          rddlmZ ndZdZ eed          sdZdZ eee           G d de                      ZdS )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                   :    e Zd ZdZd	dZd	dZd	dZd	dZd	dZdS )
OpenSSHFactoryTestsz&
    Tests for L{OpenSSHFactory}.
    returnNc                    t                      | _        t          |                                           | _        | j                                         | j        j        | j        _        t          |                                           | _        | j                                         | j        j        | j        _	        | j        
                    d                              d           | j        
                    d                              d           | j        
                    d                              t          j                   | j        
                    d                              t          j                   | j        
                    d                              d           | j        
                    d                              t          j                   | j        
                    d	                              d
           t!                      | _        |                     t&          d| j        j                   |                     t&          d| j        j                   d S )N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setegid)r   factoryr   mktempkeysDirmakedirspathdataRoot	moduliDir
moduliRootchild
setContentr   privateRSA_opensshprivateDSA_opensshpublicRSA_opensshr   mockospatchosr   r   )selfs    X/var/www/html/env/lib/python3.11/site-packages/twisted/conch/test/test_openssh_compat.pysetUpzOpenSSHFactoryTests.setUp%   s   %''.. $ 1!$++--00!!!"&."5>**55f===9%%00888-..99':TUUU-..99':TUUU/00;;<PQQQ122==g>WXXXX&&11	
 	
 	
  hh

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

2y$+"566666    c                     | j                                         }|                     t          |          d           |                                }|                     t          |          dg           dS )zw
        L{OpenSSHFactory.getPublicKeys} should return the available public keys
        in the data directory
              ssh-rsaN)r   getPublicKeysassertEquallenkeyslistr*   r4   keyTypess      r+   test_getPublicKeysz&OpenSSHFactoryTests.test_getPublicKeysJ   sd    
 |))++TA&&&99;;h*66666r-   c                 p   | j                                         }|                     t          |          d           |                                }|                     t          |          ddh           |                     | j        j        g            |                     | j        j        g            dS )z
        Will return the available private keys in the data directory, ignoring
        key files which failed to be loaded.
           r0      ssh-dssN)	r   getPrivateKeysr2   r3   r4   setr'   seteuidCallssetegidCallsr6   s      r+   test_getPrivateKeysz'OpenSSHFactoryTests.test_getPrivateKeysT   s    
 |**,,TA&&&99;;XZ(@AAA126661266666r-   c                    | j                             d                              d           |                     j        d           t          j        dt          ddffd}|                     t          d|           | j        	                                }| 
                    t          |          d	           |                                }| 
                    t          |          d
dh           | 
                    | j        j        dt	          j                    g           | 
                    | j        j        dt	          j                    g           dS )z
        L{OpenSSHFactory.getPrivateKeys} should switch to root if the keys
        aren't readable by the current user.
        r   r     euidr   Nc                 D                         d            |           S )NrB   )chmod)rC   keyFilesavedSeteuids    r+   r   z>OpenSSHFactoryTests.test_getPrivateKeysAsRoot.<locals>.seteuidl   s%    MM%   <%%%r-   r   r:   r0   r;   )r   r"   rE   
addCleanupr)   r   intr(   r   r<   r2   r3   r4   r=   r'   r>   r   r?   getegid)r*   r   r4   r7   rF   rG   s       @@r+   test_getPrivateKeysAsRootz-OpenSSHFactoryTests.test_getPrivateKeysAsRoot`   sC   
 ,$$%788du---z	&# 	&$ 	& 	& 	& 	& 	& 	& 	& 	

2y'***|**,,TA&&&99;;XZ(@AAA1Arz||3DEEE1Arz||3DEEEEEr-   c                     | j                                         }|                     |dt          d          gi           dS )zq
        L{OpenSSHFactory.getPrimes} should return the available primes
        in the moduli directory.
        i   s   diffie-hellman-group14-sha1N)r   	getPrimesr2   r   )r*   primess     r+   test_getPrimesz"OpenSSHFactoryTests.test_getPrimesx   sS    
 ''))-.LMMN	
 	
 	
 	
 	
r-   )r   N)	__name__
__module____qualname____doc__r,   r8   r@   rK   rO    r-   r+   r   r      s         #7 #7 #7 #7J7 7 7 7
7 
7 
7 
7F F F F0
 
 
 
 
 
r-   r   )rS   r)   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   rT   r-   r+   <module>r`      sH    
			       9 9 9 9 9 9 & & & & & & , , , , , , 0 0 0 0 0 0 , , , , , , + + + + + +	
=   3CCCCCCCF2Jwr9 1F0J 
c
 c
 c
 c
 c
( c
 c
 c
 c
 c
r-   