
    Vh                         d Z ddlZddlmZmZmZ ddlmZmZ ddl	m
Z
  G d dej                        Z G d d	ej                        Z G d
 dej                        Zy)zJ
Accesses the key agent for user authentication.

Maintainer: Paul Swartz
    N)agentchannelkeys)protocolreactor)Loggerc                   2    e Zd Z e       Zd Zd Zd Zd Zy)SSHAgentClientc                 P    t         j                  j                  |        g | _        y N)r   r
   __init__blobsselfs    J/home/dcms/DCMS/lib/python3.12/site-packages/twisted/conch/client/agent.pyr   zSSHAgentClient.__init__   s    %%d+
    c                 T    | j                         j                  | j                        S r   )requestIdentitiesaddCallback_cbPublicKeysr   s    r   getPublicKeyszSSHAgentClient.getPublicKeys   s"    %%'33D4F4FGGr   c                     | j                   j                  dt        |             |D cg c]  }|d   	 c}| _        y c c}w )Nzgot {num_keys} public keys)num_keysr   )_logdebuglenr   )r   blobcommxs      r   r   zSSHAgentClient._cbPublicKeys   s4    		4s8}M$,-qad-
-s   A c                     | j                   r8t        j                  j                  | j                   j	                  d            S y)zj
        Return a L{Key} from the first blob in C{self.blobs}, if any, or
        return L{None}.
        r   N)r   r   Key
fromStringpopr   s    r   getPublicKeyzSSHAgentClient.getPublicKey    s0    
 ::88&&tzz~~a'899r   N)	__name__
__module____qualname__r   r   r   r   r   r#    r   r   r
   r
      s    8DH.r   r
   c                   $    e Zd Zd Zd Zd Zd Zy)SSHAgentForwardingChannelc                      t        j                  t        t              }|j	                  t
        j                  d         }|j                   j                         |j                   fd       d _
        y )NSSH_AUTH_SOCKc                 $    j                         S r   )loseConnection)r   r   s    r   <lambda>z7SSHAgentForwardingChannel.channelOpen.<locals>.<lambda>/   s    t224 r    )r   ClientCreatorr   SSHAgentForwardingLocalconnectUNIXosenvironr   _cbGotLocal
addErrbackbuf)r   specificDataccds   `   r   channelOpenz%SSHAgentForwardingChannel.channelOpen+   sS    ##G-DENN2::o67	d&&'	45r   c                     || _         | j                   j                  j                  | _        | j                  | j                   _        y r   )local	transportwritedataReceived)r   r=   s     r   r5   z%SSHAgentForwardingChannel._cbGotLocal2   s1    
 JJ0066"&**

r   c                 .    | xj                   |z  c_         y r   )r7   )r   datas     r   r@   z&SSHAgentForwardingChannel.dataReceived7   s    Dr   c                 `    | j                   r"| j                   j                          d | _         y y r   )r=   r-   r   s    r   closedz SSHAgentForwardingChannel.closed:   s%    ::JJ%%'DJ r   N)r$   r%   r&   r;   r5   r@   rD   r'   r   r   r)   r)   *   s    -
r   r)   c                       e Zd Zy)r1   N)r$   r%   r&   r'   r   r   r1   r1   @   s    r   r1   )__doc__r3   twisted.conch.sshr   r   r   twisted.internetr   r   twisted.loggerr   r
   
SSHChannelr)   Protocolr1   r'   r   r   <module>rL      sQ   
 
 2 2 . !U)) 0 2 2 ,	h// 	r   