§
    Ètºf  ã                   óú   — 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    úe/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/conch/test/test_openssh_compat.pyÚsetUpzOpenSSHFactoryTests.setUp%   sß  € Ý%Ñ'Ô'ˆŒÝ §¢¡¤Ñ.Ô.ˆŒØŒ×ÒÑÔÐØ $¤Ô 1ˆŒÔÝ! $§+¢+¡-¤-Ñ0Ô0ˆŒØŒ×ÒÑ!Ô!Ð!Ø"&¤.Ô"5ˆŒÔàŒ×Ò˜>Ñ*Ô*×5Ò5°fÑ=Ô=Ð=ØŒ×Ò˜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ðñ	
ô 	
ð 	
õ  ‘h”hˆŒØ�
Š
•2�y $¤+Ô"5Ñ6Ô6Ð6Ø�
Š
•2�y $¤+Ô"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Ñ&Ô&Ð&Ø—9’9‘;”;ˆØ×Ò�˜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Ñ&Ô&Ð&Ø—9’9‘;”;ˆØ×Ò�˜X™œ¨°ZÐ(@ÑAÔAÐAØ×Ò˜œÔ1°2Ñ6Ô6Ð6Ø×Ò˜œÔ1°2Ñ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%   ø€ Ø�MŠM˜%Ñ Ô Ð Ø�< Ñ%Ô%Ð%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ˆð	&�#ð 	& $ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	�
Š
•2�y 'Ñ*Ô*Ð*ØŒ|×*Ò*Ñ,Ô,ˆØ×Ò�˜T™œ AÑ&Ô&Ð&Ø—9’9‘;”;ˆØ×Ò�˜X™œ¨°ZÐ(@ÑAÔAÐAØ×Ò˜œÔ1°Aµr´z±|´|Ð3DÑEÔEÐEØ×Ò˜œÔ1°Aµr´z±|´|Ð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ð #7ðJ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Ø2€Jà€wˆr�9ÑÔð 1Ø€FØ0€Jð €ˆ�
ÑÔðc
ð c
ð c
ð c
ð c
˜(ñ c
ô c
ñ Ôðc
ð c
ð c
r-   