o
    >h!
                     @   sn   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 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                   @   sJ   e Zd ZdZdZdd Zdd Zdeee	e
ee	e	f  f  fddZd	S )
OpenSSHFactoryz/usr/local/etcc                 C   s   i }t | jD ]I}|dd dkrQ|dd dkrQztjt j| j|}t	|
 d }|||< W q tyP } z| jjd||d W Y d}~qd}~ww q|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e r"   /var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/site-packages/twisted/conch/openssh_compat/factory.pygetPublicKeys   s"    zOpenSSHFactory.getPublicKeysc                 C   s   i }t | jD ]l}|dd dkrt|dd dkrtt j| j|}ztj|}W nC tyS } z|j	t	j
krHtddtjj|}||| < n W Y d}~qd}~w tym } z| jjd||d W Y d}~qd}~ww ||| < q|S )	z1
        Return the server private keys.
        Nr   r   _keyr   r   r   )r   r   r   r   r   r	   r   r   OSErrorerrnoEACCESr
   sshTyper   r   r   )r   privateKeysr   fullPathkeyr!   r"   r"   r#   getPrivateKeys+   s0    zOpenSSHFactory.getPrivateKeysreturnc                 C   s(   z	t | jd W S  ty   Y d S w )Nz/moduli)r   parseModuliFile
moduliRootr'   )r   r"   r"   r#   	getPrimesF   s
   zOpenSSHFactory.getPrimesN)__name__
__module____qualname__r   r1   r$   r.   r   r   intr   r   r2   r"   r"   r"   r#   r      s    *r   )__doc__r(   r   typingr   r   r   r   twisted.conch.openssh_compatr   twisted.conch.sshr   r   r	   twisted.python.utilr
   
SSHFactoryr   r"   r"   r"   r#   <module>   s   