§
    Âi·
  ã                   ó„   — 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    úh/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/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d¬¦  «        }|j        d d…         }t          j        d|¦  «        d         }|j        dd …         }	|t          |	¦  «        k    r5t          j	        d 
                    |t          |	¦  «        ¦  «        ¦  «        ‚|	                     ¦   «         S )Nz<IT)ÚinputÚcapture_outputÚchecké   r   z0Plugin response length {} does not match data {})ÚlenÚstructÚpackÚencodeÚ
subprocessÚrunÚstdoutÚunpackr   ÚMalformedErrorÚformatÚdecode)
r   r&   r(   Úinput_lengthÚlength_bytes_leÚrequestÚprocess_resultÚresponse_len_leÚresponse_lenÚresponses
             r   r#   zPluginHandler._call_plugin5   sç   € å˜:‘”ˆÝ œ+ d¨LÑ9Ô9ˆØ! J×$5Ò$5Ñ$7Ô$7Ñ7ˆõ $œØˆE˜°¸Tð
ñ 
ô 
ˆð
 )Ô/°°°Ô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   ÚInvalidResourcer7   )r   Ú
plugin_cmds     r   r   zPluginHandler._find_pluginL   sO   € Ý”Z—^’^¥MÔ$:Ñ;Ô;ˆ
ØÐÝÔ,Ø'×.Ò.­}Ô/EÑFÔFñô ð ð Ðr   N)r   r   r   Ú__doc__rC   r   r   r   r   r   Ústrr#   r   r   r   r   r   r      s¦   € € € € € ðð ð -€Hð˜dð ð ð ð ð4˜zð 4¨kð 4ð 4ð 4ð 4ð! ð !°ð !¸ð !ð !ð !ð !ð.˜cð ð ð ð ð ð r   r   )r   rA   r/   r2   Úgoogle.authr   Úgoogle.oauth2.webauthn_typesr   r   ÚABCr   r   r   r   r   ú<module>rK      s¾   ðØ 
€
€
€
Ø 	€	€	€	Ø €€€Ø Ð Ð Ð à "Ð "Ð "Ð "Ð "Ð "Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @ð	Dð 	Dð 	Dð 	Dð 	D�c”gñ 	Dô 	Dð 	Dð<ð <ð <ð <ð <�Oñ <ô <ð <ð <ð <r   