§
    8?Äj7  ã                   ó„   — 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mZ  G d„ de j	        ¦  «        Z
 G d„ de
¦  «        ZdS )é    N)Ú
exceptions)Ú
GetRequestÚGetResponsec                   ó^   — e Zd Zej        defd„¦   «         Zej        dedefd„¦   «         Z	dS )ÚWebAuthnHandlerÚreturnc                 ó    — t          d¦  «        ‚)z0Check whether this WebAuthn handler is availablez'is_available method must be implemented©ÚNotImplementedError©Úselfs    úOC:\Projects\Historical\venv\Lib\site-packages\google/oauth2/webauthn_handler.pyÚis_availablezWebAuthnHandler.is_available   s   € õ "Ð"KÑLÔLÐLó    Úget_requestc                 ó    — t          d¦  «        ‚)zWebAuthn get (assertion)zget method must be implementedr
   )r   r   s     r   ÚgetzWebAuthnHandler.get   s   € õ "Ð"BÑCÔCÐCr   N)
Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractmethodÚboolr   r   r   r   © r   r   r   r   
   s|   € € € € € ØÔðM˜dð Mð Mð Mñ ÔðMð 	ÔðD˜zð D¨kð Dð Dð Dñ ÔðDð Dð Dr   r   c                   óR   — e Zd ZdZdZdefd„Zdedefd„Z	de
de
de
fd	„Zde
fd
„ZdS )ÚPluginHandlerañ  Offloads WebAuthn get request to a pluggable command-line tool.

    Offloads WebAuthn get to a plugin which takes the form of a
    command-line tool. The command-line tool is configurable via the
    PluginHandler._ENV_VAR environment variable.

    The WebAuthn plugin should implement the following interface:

    Communication occurs over stdin/stdout, and messages are both sent and
    received in the form:

    [4 bytes - payload size (little-endian)][variable bytes - json payload]
    ÚGOOGLE_AUTH_WEBAUTHN_PLUGINr   c                 óR   — 	 |                       ¦   «          dS # t          $ r Y dS w xY w)NTF)Ú_find_pluginÚ	Exceptionr   s    r   r   zPluginHandler.is_available'   sD   € ð	Ø×ÒÑÔÐð �4øõ ð 	ð 	ð 	Ø�5�5ð	øøøs   ‚ ˜
&¥&r   c                 ó¦   — |                      ¦   «         }|                      ¦   «         }|                      ||¦  «        }t          j        |¦  «        S )N)Úto_jsonr   Ú_call_pluginr   Ú	from_json)r   r   Úrequest_jsonÚcmdÚresponse_jsons        r   r   zPluginHandler.get/   sJ   € Ø"×*Ò*Ñ,Ô,ˆØ×ÒÑ!Ô!ˆØ×)Ò)¨#¨|Ñ<Ô<ˆÝÔ$ ]Ñ3Ô3Ð3r   r&   Ú
input_jsonc                 ó¢  — t          |¦  «        }t          j        d|¦  «        }||                     ¦   «         z   }t	          j        |g|d¬¦  «        }|j        dk    rÝ|j        }t          |¦  «        dk    rAt          j        d|d d…         ¦  «        d         t          |¦  «        dz
  k    r
|dd …         }d 	                    ||j        | 
                    d¬¦  «                             ¦   «         |j         
                    d¬¦  «                             ¦   «         ¦  «        }t          j        |¦  «        ‚|j        d d…         }	t          j        d|	¦  «        d         }
|j        dd …         }|
t          |¦  «        k    r5t          j        d	 	                    |
t          |¦  «        ¦  «        ¦  «        ‚| 
                    ¦   «         S )
Nz<IT)ÚinputÚcapture_outputr   é   zDCommand '{}' returned non-zero exit status {}.
Stdout: {}
Stderr: {}Úreplace)Úerrorsz0Plugin response length {} does not match data {})ÚlenÚstructÚpackÚencodeÚ
subprocessÚrunÚ
returncodeÚstdoutÚunpackÚformatÚdecodeÚstripÚstderrr   ÚGoogleAuthErrorÚMalformedError)r   r&   r(   Úinput_lengthÚlength_bytes_leÚrequestÚprocess_resultÚstdout_bytesÚ	error_msgÚresponse_len_leÚresponse_lenÚresponses               r   r#   zPluginHandler._call_plugin5   s¼  € å˜:‘”ˆÝ œ+ d¨LÑ9Ô9ˆØ! J×$5Ò$5Ñ$7Ô$7Ñ7ˆõ $œ¨¨°WÈTÐRÑRÔRˆàÔ$¨Ò)Ð)Ø)Ô0ˆLå�LÑ!Ô! QÒ&Ð&Ý”M $¨°R°a°RÔ(8Ñ9Ô9¸!Ô<ÅÀLÑ@QÔ@QÐTUÑ@UÒUÐUà+¨A¨B¨BÔ/�à`×gÒgØØÔ)Ø×#Ò#¨9Ð#Ñ5Ô5×;Ò;Ñ=Ô=ØÔ%×,Ò,°IÐ,Ñ>Ô>×DÒDÑFÔFñ	ô ˆIõ Ô,¨YÑ7Ô7Ð7ð )Ô/°°°Ô3ˆÝ”} T¨?Ñ;Ô;¸AÔ>ˆØ!Ô(¨¨¨Ô,ˆØ�3˜x™=œ=Ò(Ð(ÝÔ+ØB×IÒIØ ¥# h¡-¤-ñô ñô ð ð
 �ŠÑ Ô Ð r   c                 ó¾   — t           j                             t          j        ¦  «        }|€1t          j        d                     t          j        ¦  «        ¦  «        ‚|S )Nz{} env var is not set)ÚosÚenvironr   r   Ú_ENV_VARr   ÚInvalidResourcer8   )r   Ú
plugin_cmds     r   r   zPluginHandler._find_plugin[   sO   € Ý”Z—^’^¥MÔ$:Ñ;Ô;ˆ
ØÐÝÔ,Ø'×.Ò.­}Ô/EÑFÔFñô ð ð Ðr   N)r   r   r   Ú__doc__rJ   r   r   r   r   r   Ústrr#   r   r   r   r   r   r      s§   € € € € € ðð ð -€Hð˜dð ð ð ð ð4˜zð 4¨kð 4ð 4ð 4ð 4ð$! ð $!°ð $!¸ð $!ð $!ð $!ð $!ðL˜cð ð ð ð ð ð r   r   )r   rH   r0   r3   Úgoogle.authr   Úgoogle.oauth2.webauthn_typesr   r   ÚABCr   r   r   r   r   ú<module>rR      sÈ   ðØ 
€
€
€
Ø 	€	€	€	Ø €€€Ø Ð Ð Ð à "Ð "Ð "Ð "Ð "Ð "Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @ð	Dð 	Dð 	Dð 	Dð 	D�c”gñ 	Dô 	Dð 	DðKð Kð Kð Kð K�Oñ Kô Kð Kð Kð Kr   