
    \d                         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dS )zJ
Accesses the key agent for user authentication.

Maintainer: Paul Swartz
    N)agentchannelkeys)protocolreactor)Loggerc                   :    e Zd Z e            Zd Zd Zd Zd ZdS )SSHAgentClientc                 R    t           j                            |            g | _        d S N)r   r
   __init__blobsselfs    :lib/python3.11/site-packages/twisted/conch/client/agent.pyr   zSSHAgentClient.__init__   s$    %%d+++


    c                 Z    |                                                      | j                  S r   )requestIdentitiesaddCallback_cbPublicKeysr   s    r   getPublicKeyszSSHAgentClient.getPublicKeys   s%    %%''33D4FGGGr   c                 z    | j                             dt          |                     d |D             | _        d S )Nzgot {num_keys} public keys)num_keysc                     g | ]
}|d          S )r    ).0xs     r   
<listcomp>z0SSHAgentClient._cbPublicKeys.<locals>.<listcomp>   s    ---qad---r   )_logdebuglenr   )r   blobcomms     r   r   zSSHAgentClient._cbPublicKeys   s:    	4s8}}MMM--H---


r   c                     | j         r7t          j                            | j                             d                    S dS )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    s7    
 : 	:8&&tz~~a'8'8999tr   N)	__name__
__module____qualname__r   r   r   r   r   r'   r   r   r   r
   r
      s^        688D  H H H. . .    r   r
   c                   &    e Zd Zd Zd Zd Zd ZdS )SSHAgentForwardingChannelc                     t          j        t          t                    }|                    t
          j        d                   }|                     j                   |	                     fd           d _
        d S )NSSH_AUTH_SOCKc                 ,                                     S r   )loseConnection)r   r   s    r   <lambda>z7SSHAgentForwardingChannel.channelOpen.<locals>.<lambda>/   s    t2244 r    )r   ClientCreatorr   SSHAgentForwardingLocalconnectUNIXosenvironr   _cbGotLocal
addErrbackbuf)r   specificDataccds   `   r   channelOpenz%SSHAgentForwardingChannel.channelOpen+   sj    #G-DEENN2:o677	d&'''	4444555r   c                 b    || _         | j         j        j        | _        | j        | j         _        d S r   )local	transportwritedataReceived)r   r@   s     r   r8   z%SSHAgentForwardingChannel._cbGotLocal2   s+    
 J06"&*
r   c                 &    | xj         |z  c_         d S r   )r:   )r   datas     r   rC   z&SSHAgentForwardingChannel.dataReceived7   s    Dr   c                 X    | j         r"| j                                          d | _         d S d S r   )r@   r0   r   s    r   closedz SSHAgentForwardingChannel.closed:   s5    : 	J%%'''DJJJ	 	r   N)r(   r)   r*   r>   r8   rC   rG   r   r   r   r,   r,   *   sP          - - -
      r   r,   c                       e Zd ZdS )r4   N)r(   r)   r*   r   r   r   r4   r4   @   s        Dr   r4   )__doc__r6   twisted.conch.sshr   r   r   twisted.internetr   r   twisted.loggerr   r
   
SSHChannelr,   Protocolr4   r   r   r   <module>rO      s   
  
			 2 2 2 2 2 2 2 2 2 2 . . . . . . . . ! ! ! ! ! !    U)   0     2   ,	 	 	 	 	h/ 	 	 	 	 	r   