File: //usr/local/CyberCP/lib64/python3.10/site-packages/asyncssh/__pycache__/agent_win32.cpython-310.pyc
o
�h � @ s� d Z ddlZddlZddlZddlZddlmZmZmZm Z ddl
mZ er.ddlm
Z
mZ zddlZddlZddlZddlZdZW n eyM dZY nw d Zd
ZdZdZddd�ZG dd� dej�ZG dd� d�ZG dd� d�Zded
ed fdd�ZdS )z"SSH agent support code for Windows� N)�
TYPE_CHECKING�Tuple�Union�cast� )� open_file)�AgentReader�AgentWriterTFl �P� i �Pageantz\\.\pipe\openssh-ssh-agent�return�win32ui.PyCWndc C s@ t rzt�tt�W S tjy ttjd�d�w ttjd�d�)z"Find and return the Pageant windowzAgent not foundNzPyWin32 not installed)�_pywin32_available�win32ui�
FindWindow�_AGENT_NAME�error�OSError�errno�ENOENT� r r �G/usr/local/CyberCP/lib/python3.10/site-packages/asyncssh/agent_win32.py�_find_agent_window9 s �r c @ s0 e Zd ZdZdejjfdejjfdejffZ dS )�_CopyDataStructz7Windows COPYDATASTRUCT argument for WM_COPYDATA message�dwData�cbData�lpDataN)
�__name__�
__module__�__qualname__�__doc__�ctypes�wintypes�LPARAM�DWORD�c_char_p�_fields_r r r r r E s
�r c @ sR e Zd ZdZddd�Zdeddfdd�Zd edefd
d�Zddd
�Z ddd�Z
dS )�_PageantTransportz0Transport to connect to Pageant agent on Windowsr Nc
C s� t � t�� d��| _z
t�d| jtdd�| _W n tjy- } z tt j
t|��d �d }~ww tt
t| j�d | j�� �| _d| _d S )N�08x� r r F)r �win32api�GetCurrentThreadId�_mapname�mmapfile�_AGENT_MAX_MSGLEN�_mapfiler r r �EIO�strr �_AGENT_COPYDATA_ID�len�encode�_cds�_writing)�self�excr r r �__init__P s
����
z_PageantTransport.__init__�datac
C sV | j s| j�d� d| _ z | j�|� W dS ty* } z ttjt|��d�d}~ww )z#Write request data to Pageant agentr TN) r5 r. �seek�write�
ValueErrorr r r/ r0 )r6 r9 r7 r r r r; ^ s ��z_PageantTransport.write�nc � sl �| j r"t� }|�tjdtt| j��stt j
d��d| _ | j�d� | j�
|�}t|�|kr4t�||��|S )z%Read response data from Pageant agentr zUnable to send agent requestF)r5 r �SendMessage�win32con�WM_COPYDATAr �intr4 r r r/ r. r: �readr2 �asyncio�IncompleteReadError)r6 r= �cwnd�resultr r r �readexactlyj s �
�z_PageantTransport.readexactlyc C � | j r
| j �� dS dS )zClose the connection to PageantN)r. �close�r6 r r r rI ~ � �z_PageantTransport.closec � � �dS �zWait for the transport to closeNr rJ r r r �wait_closed� � z_PageantTransport.wait_closed�r N)r r r r r8 �bytesr; rA rG rI rN r r r r r&