
    ohQ                        d Z ddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
ZddlmZ dZdZd	Zd
 Zd Z ej&                         d   dk(  rej(                  Znej,                  Z G d dej.                        Zd Z G d d      Zy)zP
Functions for communicating with Pageant, the basic windows ssh agent program.
    N)	zero_byte)b   )_winapil   P  i    J   c                  V    t         j                  j                  j                  dd      S )Ns   Pageant)ctypeswindlluser32FindWindowA     f/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/paramiko/win_pageant.py_get_pageant_window_objectr   +   s    ==++J
CCr   c                  (    t        t                     S )z
    Check to see if there is a "Pageant" agent we can talk to.

    This checks both if we have the required libraries (win32all or ctypes)
    and if there is a Pageant currently running.
    )boolr   r   r   r   can_talk_to_agentr   /   s     *,--r   64bitc                   b    e Zd ZdZdefdej                  j                  fdej                  fgZ	y)COPYDATASTRUCTzy
    ctypes implementation of
    http://msdn.microsoft.com/en-us/library/windows/desktop/ms649010%28v=vs.85%29.aspx
    num_data	data_sizedata_locN)
__name__
__module____qualname____doc__	ULONG_PTRr	   wintypesDWORDc_void_p_fields_r   r   r   r   r   ?   s6     
Y	foo++,	V__%Hr   r   c           	         t               }|sydt        j                         d}t        j                  |t
        t        j                               }|5  |j                  |        t        j                  dt        |      t        z         }|j                         \  }}t        t        ||      }t        j                  j                   j#                  |t$        t        j&                  |      t        j(                  |            }|dkD  rX|j+                  d       |j-                  d      }	t/        j0                  d|	      d   }
|	|j-                  |
      z   cddd       S 	 ddd       y# 1 sw Y   yxY w)za
    Communication with the Pageant process is done through a shared
    memory-mapped file.
    NPageantRequest08xr   r      z>I)r   thread	get_identr   	MemoryMap_AGENT_MAX_MSGLEN get_security_attributes_for_userwritearrayr   r   buffer_infor   _AGENT_COPYDATA_IDr	   r
   r   SendMessageAwin32con_WM_COPYDATAsizeofbyrefseekreadstructunpack)msghwndmap_namepymapchar_bufferchar_buffer_addresschar_buffer_sizecdsresponsedatalenretlens              r   _query_pageantrC   L   sB   
 &'D   0 0 2378H#W%M%M%OE 
 Ckk#q{Y'>?0;0G0G0I-- 02E
 ==''44&c(:FLL<M
 a<JJqMjjmG]]41!4FUZZ//% & '  s   DE.$E..E7c                   (    e Zd ZdZd Zd Zd Zd Zy)PageantConnectiona  
    Mock "connection" to an agent which roughly approximates the behavior of
    a unix local-domain socket (as used by Agent).  Requests are sent to the
    pageant daemon via special Windows magick, and responses are buffered back
    for subsequent reads.
    c                     d | _         y N	_responseselfs    r   __init__zPageantConnection.__init__z   s	    r   c                 $    t        |      | _        y rG   )rC   rI   )rK   datas     r   sendzPageantConnection.send}   s    '-r   c                     | j                   y| j                   d | }| j                   |d  | _         | j                   dk(  rd | _         |S )N rH   )rK   nrets      r   recvzPageantConnection.recv   sI    >>!nnRa +>>R!DN
r   c                      y rG   r   rJ   s    r   closezPageantConnection.close   s    r   N)r   r   r   r   rL   rO   rT   rV   r   r   r   rE   rE   r   s    .r   rE   )r   r-   ctypes.wintypesr	   platformr6   paramiko.commonr   paramiko.utilr   _threadr'   rQ   r   r/   r*   r1   r   r   architecturec_uint64r   c_uint32	Structurer   rC   rE   r   r   r   <module>r`      s   (     %         D. 81(II
V%% 
#L r   