Ë
    zñ�jQ  ã                   ó  — 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© ó    úU/var/www/api.ozpay.ru/ozpay/venv/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ÐØ	�f—o‘o×+Ñ+Ð,Ø	�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Ó 2°3Ð7Ð8€Hä×ÑØÔ#¤W×%MÑ%MÓ%Oó€Eð 
ñ Ø�‰�CÔä—k‘k #¤q¨£{´YÑ'>Ó?ˆØ0;×0GÑ0GÓ0IÑ-ÐÐ-äÜÐ 0Ð2Eó
ˆô —=‘=×'Ñ'×4Ñ4ØÔ&¬¯©°cÓ(:¼F¿L¹LÈÓ<Mó
ˆð �aŠ<Ø�J‰J�qŒMØ—j‘j “mˆGÜ—]‘] 4¨Ó1°!Ñ4ˆFØ˜UŸZ™Z¨Ó/Ñ/÷%ñ ð& ÷'÷ ñ ú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   € Ø�>‰>Ð!ØØ�n‰n˜R˜aÐ ˆØŸ™¨¨Ð+ˆŒØ�>‰>˜RÒØ!ˆDŒNØˆ
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   