§
    <[j  ã                  ó|   — d dl mZ d dlZd dlmZmZ d dlmZ ddlm	Z	 ddl
mZmZ dd	lmZmZ  G d
„ d¦  «        ZdS )é    )ÚannotationsN)ÚIntEnumÚunique)ÚAnyé   )Úcboré   )ÚCtap2ÚInfo)ÚPinProtocolÚ_PinUvc                  óº   — e Zd ZdZe G d„ de¦  «        ¦   «         Ze G d„ de¦  «        ¦   «         Zedd
„¦   «         Z		 	 d d!d„Z
d"d„Zd#d„Zd#d„Z	 	 	 	 d$d%d„ZdS )&ÚConfigzþImplementation of the CTAP2.1 Authenticator Config API.

    :param ctap: An instance of a CTAP2 object.
    :param pin_uv_protocol: An instance of a PinUvAuthProtocol.
    :param pin_uv_token: A valid PIN/UV Auth Token for the current CTAP session.
    c                  ó   — e Zd ZdZdZdZdZdS )ú
Config.CMDr	   r   é   éÿ   N)Ú__name__Ú
__module__Ú__qualname__ÚENABLE_ENTERPRISE_ATTÚTOGGLE_ALWAYS_UVÚSET_MIN_PIN_LENGTHÚVENDOR_PROTOTYPE© ó    úZ/home/thesage/.hermes/hermes-agent/venv/lib/python3.11/site-packages/fido2/ctap2/config.pyÚCMDr   /   s(   € € € € € à $ÐØÐØ!ÐØÐÐÐr   r   c                  ó   — e Zd ZdZdZdZdZdS )úConfig.PARAMr	   r   r   é   N)r   r   r   ÚNEW_MIN_PIN_LENGTHÚMIN_PIN_LENGTH_RPIDSÚFORCE_CHANGE_PINÚPIN_COMPLEXITY_POLICYr   r   r   ÚPARAMr    6   s(   € € € € € à!ÐØ#ÐØÐØ $ÐÐÐr   r&   Úinfor   ÚreturnÚboolc                ó:   — | j                              d¦  «        du S )NÚ	authnrCfgT)ÚoptionsÚget)r'   s    r   Úis_supportedzConfig.is_supported=   s   € àŒ|×Ò Ñ,Ô,°Ð4Ð4r   NÚctapr
   Úpin_uv_protocolúPinProtocol | NoneÚpin_uv_tokenúbytes | Nonec                óÈ   — |                       |j        ¦  «        st          d¦  «        ‚|| _        |r|rt	          ||¦  «        nd | _        | j        j        j        | _        d S )Nz%Authenticator does not support Config)r.   r'   Ú
ValueErrorr/   r   Úpin_uvÚauthenticator_config_commandsÚ_subcommands)Úselfr/   r0   r2   s       r   Ú__init__zConfig.__init__A   su   € ð × Ò  ¤Ñ+Ô+ð 	FÝÐDÑEÔEÐEàˆŒ	ð ðØ#/ðF? LÑ1Ô1Ð1àð 	Œð
 !œIœNÔHˆÔÐÐr   c                ór  — | j         || j         vrt          d|› d¦  «        ‚| j        rmdt          j        d|¦  «        z   }||t          j        |¦  «        z  }| j        j        j        }| j        j         	                    | j        j
        |¦  «        }nd }d }| j                             ||||¦  «        S )NzConfig command z not supported by Authenticators!   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿz<B)r8   r5   r6   ÚstructÚpackr   ÚencodeÚprotocolÚVERSIONÚauthenticateÚtokenr/   Úconfig)r9   Úsub_cmdÚparamsÚmsgr0   Úpin_uv_params         r   Ú_callzConfig._callR   sÁ   € ØÔÐ(¨W¸DÔ<MÐ-MÐ-MÝÐW¨wÐWÐWÐWÑXÔXÐXàŒ;ð 	 Ø(­6¬;°t¸WÑ+EÔ+EÑEˆCØÐ!Ø•t”{ 6Ñ*Ô*Ñ*Ø"œkÔ2Ô:ˆOØœ;Ô/×<Ò<¸T¼[Ô=NÐPSÑTÔTˆLˆLà"ˆOØˆLØŒy×Ò ¨°À,ÑOÔOÐOr   ÚNonec                óN   — |                       t          j        j        ¦  «         dS )z^Enables Enterprise Attestation.

        If already enabled, this command is ignored.
        N)rH   r   r   r   ©r9   s    r   Úenable_enterprise_attestationz$Config.enable_enterprise_attestationa   s!   € ð
 	
Š
•6”:Ô3Ñ4Ô4Ð4Ð4Ð4r   c                óN   — |                       t          j        j        ¦  «         dS )zxToggle the alwaysUV setting.

        When true, the Authenticator always requires UV for credential assertion.
        N)rH   r   r   r   rK   s    r   Útoggle_always_uvzConfig.toggle_always_uvh   s!   € ð
 	
Š
•6”:Ô.Ñ/Ô/Ð/Ð/Ð/r   FÚmin_pin_lengthú
int | NoneÚrp_idsúlist[str] | NoneÚforce_change_pinÚpin_complexity_policyc                ó:  — t           j        j        |i}|||t           j        j        <   |||t           j        j        <   |r4| j        j        j        €t          d¦  «        ‚d|t           j        j	        <   |  
                    t           j        j        |¦  «         dS )a$  Set the minimum PIN length allowed when setting/changing the PIN.

        :param min_pin_length: The minimum PIN length the Authenticator should allow.
        :param rp_ids: A list of RP IDs which should be allowed to get the current
            minimum PIN length.
        :param force_change_pin: True if the Authenticator should enforce changing the
            PIN before the next use.
        :param pin_complexity_policy: True if the Authenticator should enforce an
            additional PIN complexity policy beyond minPINLength.
        Nz<Authenticator does not support setting PIN complexity policyT)r   r&   r$   r"   r#   r/   r'   rT   r5   r%   rH   r   r   )r9   rO   rQ   rS   rT   rE   s         r   Úset_min_pin_lengthzConfig.set_min_pin_lengtho   s˜   € õ" #)¤,Ô"?ÐAQÐ!RˆØÐ%Ø6DˆF•6”<Ô2Ñ3ØÐØ8>ˆF•6”<Ô4Ñ5Ø ð 	>ØŒyŒ~Ô3Ð;Ý ØRñô ð ð :>ˆF•6”<Ô5Ñ6Ø
Š
•6”:Ô0°&Ñ9Ô9Ð9Ð9Ð9r   )r'   r   r(   r)   )NN)r/   r
   r0   r1   r2   r3   )N)r(   rI   )NNFF)
rO   rP   rQ   rR   rS   r)   rT   r)   r(   rI   )r   r   r   Ú__doc__r   r   r   r&   Ústaticmethodr.   r:   rH   rL   rN   rV   r   r   r   r   r   '   s7  € € € € € ðð ð ð ð  ð  ð  ð  ˆgñ  ô  ñ „Vð ð ð%ð %ð %ð %ð %ñ %ô %ñ „Vð%ð ð5ð 5ð 5ñ „\ð5ð /3Ø%)ð	Ið Ið Ið Ið Ið"Pð Pð Pð Pð5ð 5ð 5ð 5ð0ð 0ð 0ð 0ð &*Ø#'Ø!&Ø&+ð:ð :ð :ð :ð :ð :ð :r   r   )Ú
__future__r   r<   Úenumr   r   Útypingr   Ú r   Úbaser
   r   Úpinr   r   r   r   r   r   ú<module>r_      sÊ   ðð8 #Ð "Ð "Ð "Ð "Ð "à €€€Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $ðd:ð d:ð d:ð d:ð d:ñ d:ô d:ð d:ð d:ð d:r   