
    h                     V   S SK r S SKrS SKJrJrJr  SSKJr  \ R                  " \	5      r
 " S S5      r " S S\5      rS	S
SSSSS.r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rS\S\4S jrS\S \S\4S! jr " S" S#\5      rg)$    N)ClassVarMatchSequence   )AskpassHandlerc                       \ rS rSr% Sr\\S'   \\S'   \\S'   S\S\S\SS4S jrS	\SS4S
 jrSS jr	SS jr
SS jrSrg)AskpassPrompt
   az  An askpass prompt resulting from a call to ferny-askpass.

stderr: the contents of stderr from before ferny-askpass was called.
        Likely related to previous failed operations.
messages: all but the last line of the prompt as handed to ferny-askpass.
          Usually contains context about the question.
prompt: the last line handed to ferny-askpass.  The prompt itself.
stderrmessagespromptreturnNc                 (    X0l         X l        Xl        g N)r   r   r   )selfr   r   r   s       C/usr/lib/python3/dist-packages/cockpit/_vendor/ferny/ssh_askpass.py__init__AskpassPrompt.__init__   s         responsec                     g r    )r   r   s     r   replyAskpassPrompt.reply       r   c                     g r   r   )r   s    r   closeAskpassPrompt.close   r   r   c                    #     U R                  U5      I S h  vN nUb  U R                  U5        U R                  5         g  N)! U R                  5         f = f7fr   )dispatchr   r   )r   	responderr   s      r   
handle_viaAskpassPrompt.handle_via"   sG     	!]]955H#

8$JJL	 6 JJLs+   AA AA AA AAc                 @   #    UR                  U 5      I S h  vN $  N7fr   	do_promptr   r!   s     r   r    AskpassPrompt.dispatch*   s     ((....   )r   r   r   )r   N)r!   SshAskpassResponderr   Nr!   r*   r   
str | None)__name__
__module____qualname____firstlineno____doc__str__annotations__r   r   r   r"   r    __static_attributes__r   r   r   r	   r	   
   s[     KMKs c 3 4 
c d /r   r	   c            
       z   ^  \ rS rSr% SrS\S'   \\   \S'   Sr\\	\      \S'   S\S	\S
\S\
SS4
U 4S jjrSrU =r$ )SSHAskpassPrompt.   NzClassVar[Sequence[str] | None]answers_patternr   _extra_patternsr   r   r   matchr   c                 X  > [         TU ]  XU5        U R                  R                  UR	                  5       5        U R
                   H`  n[        R                  " [        U5      U[        R                  5      nUc  M7  U R                  R                  UR	                  5       5        Mb     g r   )
superr   __dict__update	groupdictr:   researchwith_helpersM)r   r   r   r   r;   patternextra_match	__class__s          r   r   SSHAskpassPrompt.__init__:   sw    62U__./++G))L$98RTTJK&$$[%:%:%<= ,r   )r-   r.   r/   r0   r8   r3   r   r2   r:   r   r   r   r4   __classcell__)rG   s   @r   r6   r6   .   s]    
 15G-4 sm/1OXhsm,1>s >c >3 >u >QU > >r   r6   z(?P<algorithm>\b[-\w]+\b)z(?P<filename>.+)z)(?P<fingerprint>SHA256:[0-9A-Za-z+/]{43})z(?P<hostname>[^ @']+)z(?P<pkcs11_id>.+)z(?P<username>[^ @']+))z%{algorithm}z%{filename}z%{fingerprint}z%{hostname}z%{pkcs11_id}z%{username}c                   @    \ rS rSr% SrSrS\S'   SrS\S'   S	S jrSr	g)
SshPasswordPromptO   z$%{username}@%{hostname}'s password: Nr,   usernamehostnamec                 @   #    UR                  U 5      I S h  vN $  N7fr   )do_password_promptr'   s     r   r    SshPasswordPrompt.dispatchT        11$7777r)   r   r+   )
r-   r.   r/   r0   r9   rM   r3   rN   r    r4   r   r   r   rK   rK   O   s     6H!Hl!!Hl!8r   rK   c                   .    \ rS rSr% Sr\\S'   SS jrSrg)SshPassphrasePromptX   z(Enter passphrase for key '%{filename}': filenamec                 @   #    UR                  U 5      I S h  vN $  N7fr   )do_passphrase_promptr'   s     r   r    SshPassphrasePrompt.dispatch\        33D9999r)   r   Nr+   	r-   r.   r/   r0   r9   r2   r3   r    r4   r   r   r   rT   rT   X   s    :HM:r   rT   c                   8    \ rS rSr% Sr\\S'   \\S'   SS jrSrg)	SshFIDOPINPrompt`   z,Enter PIN for %{algorithm} key %{filename}: 	algorithmrV   c                 @   #    UR                  U 5      I S h  vN $  N7fr   )do_fido_pin_promptr'   s     r   r    SshFIDOPINPrompt.dispatche   rR   r)   r   N)r!   r*   r   zstr  | Noner[   r   r   r   r]   r]   `   s    >HNM8r   r]   c                   <    \ rS rSr% SrSr\\S'   \\S'   SS jrSr	g)	SshFIDOUserPresencePrompti   z9Confirm user presence for key %{algorithm} %{fingerprint}r   r_   fingerprintc                 @   #    UR                  U 5      I S h  vN $  N7fr   )do_fido_user_presence_promptr'   s     r   r    "SshFIDOUserPresencePrompt.dispatcho   s     ;;DAAAAr)   Nr+   )
r-   r.   r/   r0   r9   r8   r2   r3   r    r4   r   r   r   rd   rd   i   s    KHGNBr   rd   c                   .    \ rS rSr% Sr\\S'   SS jrSrg)SshPKCS11PINPrompts   zEnter PIN for '%{pkcs11_id}': 	pkcs11_idc                 @   #    UR                  U 5      I S h  vN $  N7fr   )do_pkcs11_pin_promptr'   s     r   r    SshPKCS11PINPrompt.dispatchw   rZ   r)   r   Nr+   r[   r   r   r   rk   rk   s   s    0HN:r   rk   c                   D    \ rS rSr% Sr/ SQrSr\\S'   \\S'   S
S jr	Sr
g	)SshHostKeyPrompt{   zMAre you sure you want to continue connecting \(yes/no(/\[fingerprint\])?\)\? )z%{fingerprint}[.]$z ^%{algorithm} key fingerprint iszE^The fingerprint for the %{algorithm} key sent by the remote host is$)yesnor_   rf   c                 @   #    UR                  U 5      I S h  vN $  N7fr   )do_host_key_promptr'   s     r   r    SshHostKeyPrompt.dispatch   rR   r)   r   Nr+   )r-   r.   r/   r0   r9   r:   r8   r2   r3   r    r4   r   r   r   rr   rr   {   s%    _HO
 GN8r   rr   rE   r   c                 r    [         R                  5        H  u  pU R                  X5      n M     SU ;  d   eU $ )Nz%{)HELPERSitemsreplace)rE   namehelpers      r   rC   rC      s7    //$/ ( wNr   stringr   c                 8   [         [        [        [        [        [
        /nU R                  SSS5      nUS:  a  XS-   S  nU S US-    nOU nSnU H<  n[        UR                  5      n[        R                  " Xt5      nUc  M3  U" XEX5      s  $    [        XEU5      $ )N
r   r    )r]   rd   rr   rk   rT   rK   rfindrC   r9   rA   	fullmatchr	   )	r   r   classessecond_last_newline	last_lineextrasclsrE   r;   s	            r   categorize_ssh_promptr      s    !G !,,tQ3a234	0,q01	s||,W0y&88	  F33r   c                       \ rS rSrS\S\S\SS4S jrS\SS4S jrS\SS4S	 jr	S\
SS4S
 jrS\SS4S jrS\SS4S jrS\SS4S jrS\SS4S jrSrg)r*      r   r   hintr   r,   c                 R   #    [        X!5      R                  U 5      I S h  vN $  N7fr   )r   r    )r   r   r   r   s       r   
do_askpassSshAskpassResponder.do_askpass   s!     *6:CCDIIIIs   '%'c                    #    g 7fr   r   r   r   s     r   r&   SshAskpassResponder.do_prompt   s     s   c                 @   #    U R                  U5      I S h  vN $  N7fr   r%   r   s     r   ra   &SshAskpassResponder.do_fido_pin_prompt        ^^F++++r)   c                 @   #    U R                  U5      I S h  vN $  N7fr   r%   r   s     r   rh   0SshAskpassResponder.do_fido_user_presence_prompt   r   r)   c                 @   #    U R                  U5      I S h  vN $  N7fr   r%   r   s     r   rw   &SshAskpassResponder.do_host_key_prompt   r   r)   c                 @   #    U R                  U5      I S h  vN $  N7fr   r%   r   s     r   ro   (SshAskpassResponder.do_pkcs11_pin_prompt   r   r)   c                 @   #    U R                  U5      I S h  vN $  N7fr   r%   r   s     r   rX   (SshAskpassResponder.do_passphrase_prompt   r   r)   c                 @   #    U R                  U5      I S h  vN $  N7fr   r%   r   s     r   rP   &SshAskpassResponder.do_password_prompt   r   r)   r   N)r-   r.   r/   r0   r2   r   r	   r&   r]   ra   rd   rh   rr   rw   rk   ro   rT   rX   rK   rP   r4   r   r   r   r*   r*      s    Js JC Js J| Jm  ,/? ,L ,,9R ,Wc ,,/? ,L ,,1C , ,,1D , ,,/@ ,\ ,r   r*   )loggingrA   typingr   r   r   interaction_agentr   	getLoggerr-   loggerr	   r6   rz   rK   rT   r]   rd   rk   rr   r2   rC   r   r*   r   r   r   <module>r      s     	 , , -			8	$!/ !/H>} >0 1&B+(+8( 8:* :8' 8B 0 B:) :8' 8# # 4# 4s 4} 4:,. ,r   