§
    ÌtºfÁ  ã                   óì   — d dl mZmZ d dlmZmZ dgZer8	 d dlmZ d dl	m
Z
 d dlmZ dZe                     d¦  «         n# e$ r d	ZY nw xY wer$d d
lZd dlmZ d dl mZmZmZ  G d„ de¦  «        Zd
S d
S )é    )ÚHAS_CRYPTOSIGNÚCryptosignKey)ÚinlineCallbacksÚreturnValueÚHAS_CRYPTOSIGN_SSHAGENT)ÚFactory)ÚUNIXClientEndpoint)ÚSSHAgentClientTÚSSHAgentCryptosignKeyFN)Úsigning)Ú_read_ssh_ed25519_pubkeyÚ_unpackÚ_packc                   ó8   — e Zd ZdZdd„Zedd„¦   «         Zd„ ZdS )r   aA  
        A WAMP-cryptosign signing key that is a proxy to a private Ed25510 key
        actually held in SSH agent.

        An instance of this class must be create via the class method new().
        The instance only holds the public key part, whereas the private key
        counterpart is held in SSH agent.
        Nc                 óP   — t          j        | ||¦  «         |sddlm} || _        d S )Nr   ©Úreactor)r   Ú__init__Útwisted.internetr   Ú_reactor)ÚselfÚkeyÚcommentr   s       úZ/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/autobahn/twisted/cryptosign.pyr   zSSHAgentCryptosignKey.__init__C   s<   € ÝÔ" 4¨¨gÑ6Ô6Ð6Øð 5Ø4Ð4Ð4Ð4Ð4Ð4Ø#ˆDŒMˆMˆMó    c                 ó   ‡ ‡‡— t           st          d¦  «        ‚t          ‰¦  «        \  Š}‰sddlmŠ dt
          j        vrt          d¦  «        ‚t          ¦   «         }d|_        t          |_
        t          ‰t
          j        d         ¦  «        }|                     |¦  «        }t          ˆ ˆˆfd„¦   «         }|                     |¦  «        S )zµ
            Create a proxy for a key held in SSH agent.

            :param pubkey: A string with a public Ed25519 key in SSH format.
            :type pubkey: unicode
            z7SSH agent integration is not supported on this platformr   r   ÚSSH_AUTH_SOCKúno ssh-agent is running!Fc              3   ó¨  •K  — |                       ¦   «         V —}d }d }|D ]Y\  }}t          |¦  «        }|d                              d¦  «        }|dk    r$|\  }}|‰k    r|}|                     d¦  «        } nŒZ| j                             ¦   «          |r0t          j        |¦  «        }	t           ‰
|	|‰¦  «        ¦  «         d S t          d¦  «        ‚)Nr   Úutf8ússh-ed25519z!Ed25519 key not held in ssh-agent)	ÚrequestIdentitiesr   ÚdecodeÚ	transportÚloseConnectionr   Ú	VerifyKeyr   Ú	Exception)ÚagentÚkeysÚkey_dataÚkey_commentÚblobr   ÚrawÚalgoÚ_pubkeyr   ÚclsÚpubkeyr   s             €€€r   Ú
on_connectz-SSHAgentCryptosignKey.new.<locals>.on_connectb   sö   øè è € à"×4Ò4Ñ6Ô6Ð6Ð6�ð  �Ø"�à%)ð "ð "‘M�D˜'Ý! $™-œ-�CØ˜qœ6Ÿ=š=¨Ñ0Ô0�DØ˜}Ò,Ð,Ø(+™˜˜gØ" fÒ,Ð,Ø'.˜HØ*1¯.ª.¸Ñ*@Ô*@˜KØ!˜Eøà”×.Ò.Ñ0Ô0Ð0àð IÝ!Ô+¨HÑ5Ô5�CÝ   C¨°gÑ >Ô >Ñ?Ô?Ð?Ð?Ð?å#Ð$GÑHÔHÐHr   )r   r'   r   r   r   ÚosÚenvironr   Únoisyr
   Úprotocolr	   Úconnectr   ÚaddCallback)r0   r1   r   Ú_ÚfactoryÚendpointÚdr2   s   ```     r   ÚnewzSSHAgentCryptosignKey.newI   sï   øøø€ õ +ð [ÝÐ YÑZÔZÐZå0°Ñ8Ô8‰IˆF�Aàð 5Ø4Ð4Ð4Ð4Ð4Ð4à¥b¤jÐ0Ð0ÝÐ :Ñ;Ô;Ð;å‘i”iˆGØ!ˆGŒMÝ-ˆGÔÝ)¨'µ2´:¸oÔ3NÑOÔOˆHØ× Ò  Ñ)Ô)ˆAåðIð Ið Ið Ið Ið Iñ Œ_ðIð4 —=’= Ñ,Ô,Ð,r   c                 óF  ‡ ‡— dt           j        vrt          d¦  «        ‚t          ¦   «         }d|_        t
          |_        t          ‰ j        t           j        d         ¦  «        }| 	                    |¦  «        }t          ˆˆ fd„¦   «         }|                     |¦  «        S )Nr   r   Fc              3   ó  •K  — t          d                     ¦   «         ‰                     d¬¦  «        g¦  «        }|                      |‰¦  «        V —}t	          |¦  «        \  }}| j                             ¦   «          t          |¦  «         d S )Nr!   T)Úbinary)r   ÚencodeÚ
public_keyÚsignDatar   r$   r%   r   )r(   r,   Úsignature_blobr.   Ú	signatureÚ	challenger   s        €€r   r2   z.SSHAgentCryptosignKey.sign.<locals>.on_connect‰   s‰   øè è € õ
 ˜m×2Ò2Ñ4Ô4°d·o²oÈT°oÑ6RÔ6RÐSÑTÔT�ð (-§~¢~°d¸IÑ'FÔ'FÐ!FÐ!F�Ý")¨.Ñ"9Ô"9‘��ià”×.Ò.Ñ0Ô0Ð0å˜IÑ&Ô&Ð&Ð&Ð&r   )r3   r4   r'   r   r5   r
   r6   r	   r   r7   r   r8   )r   rF   r:   r;   r<   r2   s   ``    r   ÚsignzSSHAgentCryptosignKey.sign   sŸ   øø€ Ø¥b¤jÐ0Ð0ÝÐ :Ñ;Ô;Ð;å‘i”iˆGØ!ˆGŒMÝ-ˆGÔÝ)¨$¬-½¼ÀOÔ9TÑUÔUˆHØ× Ò  Ñ)Ô)ˆAåð'ð 'ð 'ð 'ð 'ñ Œ_ð'ð —=’= Ñ,Ô,Ð,r   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úclassmethodr=   rG   © r   r   r   r   9   sb   € € € € € ð	ð 	ð	$ð 	$ð 	$ð 	$ð 
ð3	-ð 3	-ð 3	-ñ 
Œð3	-ðj	-ð 	-ð 	-ð 	-ð 	-r   )Úautobahn.wamp.cryptosignr   r   Útwisted.internet.deferr   r   Ú__all__Útwisted.internet.protocolr   Útwisted.internet.endpointsr	   Útwisted.conch.ssh.agentr
   r   ÚappendÚImportErrorr3   Únaclr   r   r   r   r   rM   r   r   ú<module>rW      s`  ðð8 CÐ BÐ BÐ BÐ BÐ BÐ BÐ Bà ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ð ð€ð ð 0ð0ð 	6Ð5Ð5Ð5Ð5Ð5ØAÐAÐAÐAÐAÐAØ:Ð:Ð:Ð:Ð:Ð:ð
 #'ÐØ�ŠÐ.Ñ/Ô/Ð/Ð/øð ð (ð (ð (à"'ÐÐÐð(øøøð ð e-à€I€I€IØÐÐÐÐÐØQÐQÐQÐQÐQÐQÐQÐQÐQÐQð_-ð _-ð _-ð _-ð _- ñ _-ô _-ð _-ð _-ð _-ðe-ð e-s   —A ÁAÁ
A