
    tf!
                         d Z ddlZddlZddlmZmZmZmZ ddlm	Z	 ddl
mZmZmZ ddlmZ  G d dej                  ZdS )	z^
Factory for reading openssh configuration files: public keys, private keys, and
moduli file.
    N)DictListOptionalTuple)primes)commonfactorykeys)runAsEffectiveUserc                   f    e Zd ZdZdZd Zd Zdeee	e
ee	e	f                  f                  fdZdS )OpenSSHFactoryz/usr/local/etcc                    i }t          j        | j                  D ]}|dd         dk    r|dd         dk    r	 t          j                            t           j                            | j        |                    }t          j	        |
                                          d         }|||<   # t          $ r'}| j                            d||           Y d}~d}~ww xY w|S )	z0
        Return the server public keys.
        N	   	ssh_host_iz_key.pubr   'bad public key file {filename}: {error}filenameerror)oslistdirdataRootr
   KeyfromFilepathjoinr   getNSblob	Exception_logr   )selfksr   ktes         c/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/conch/openssh_compat/factory.pygetPublicKeyszOpenSSHFactory.getPublicKeys   s    
4=11 	 	H|{**x}
/J/J	))"',,t}h*O*OPPAQVVXX..q1ABqEE    IOOA!) $         	s   A3B//
C 9CC c                 f   i }t          j        | j                  D ]}|dd         dk    r|dd         dk    rt           j                            | j        |          }	 t
          j                            |          }|||                                <   }# t          $ rY}|j
        t          j        k    r9t          ddt
          j        j        |          }|||                                <   n Y d}~d}~wt          $ r(}| j                            d||           Y d}~d}~ww xY w|S )	z1
        Return the server private keys.
        Nr   r   _keyr   r   r   )r   r   r   r   r   r
   r   r   sshTypeOSErrorerrnoEACCESr   r   r   r   )r    privateKeysr   fullPathkeyr$   s         r%   getPrivateKeyszOpenSSHFactory.getPrivateKeys+   sb    
4=11 	5 	5H|{**x}/F/F7<<x@@5(++H55C 25K..    w%,..0Atx7H(SS58CKKMM22 32222 !   IOOA!) $         s%   "B
D,#AC77D,D''D,returnc                 ^    	 t          j        | j        dz             S # t          $ r Y d S w xY w)Nz/moduli)r   parseModuliFile
moduliRootr+   )r    s    r%   	getPrimeszOpenSSHFactory.getPrimesF   sA    	)$/I*EFFF 	 	 	44	s    
,,N)__name__
__module____qualname__r   r5   r&   r1   r   r   intr   r   r6        r%   r   r      ss        H!J  &  68Dd5c?.C)C$DE      r<   r   )__doc__r,   r   typingr   r   r   r   twisted.conch.openssh_compatr   twisted.conch.sshr   r	   r
   twisted.python.utilr   
SSHFactoryr   r;   r<   r%   <module>rC      s   
 
  				 . . . . . . . . . . . . / / / / / / 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 27 7 7 7 7W' 7 7 7 7 7r<   