+
     h9]  c                  s   ^ RI Ht ^ RIt^ RIt^ RIHtHtHtHt ^ RI	H
t
Ht ^ RIHt ^ RIHtHtHt ^ RIHt ^ RIHt ^ R	IHtHtHt ^ R
IHt ^RIHt ^RIHt ^RI H!t!H"t" ^RI#H$t$H%t% ^RI&H't' ^RI(H)t)H*t* ]PV                  ! ],4      t-R R lt. ! R R]']/,          4      t0]! RRR7       ! R R]04      4       t1]! RRR7       ! R R]04      4       t2]! RRR7       ! R R]04      4       t3 ! R R4      t4R# ) i    )annotationsN)Field	dataclassfieldfields)IntEnumunique)Event)AnyCallableMapping)default_backend)hashes)Cipher
algorithmsmodes)HKDF)cbor)CoseKey)
CtapDevice	CtapError)
CAPABILITYCTAPHID)_DataClassMapping)AaguidAuthenticatorDatac                   V ^8  d   QhRR/# )   returnzdict[int, Any] Zformat   "5/usr/lib/python3.14/site-packages/fido2/ctap2/base.py__annotate__r!   4   s     D D^ D    c                 sZ    \        V ^4       UUu/ uF  w  rVf   K  WbK  	  upp# u uppi )zConstructs a dict from a list of arguments for sending a CBOR command.
None elements will be omitted.

:param params: Arguments, in order, to add to the command.
:return: The input parameters as a dict.
)Z	enumerate)ZparamsZiZvs   *  r    argsr#   4   s-     'vq1C1TQQDAD1CCCs   ''c                  s,    ] tR t^>t]R R l4       tRtR# )_CborDataObjectc                    V ^8  d   QhRRRR/# )r   r   r   r   intr   r   r   r    r!   Z_CborDataObject.__annotate__@   s     , ,5 ,S ,r"   c                	sD    \        V 4      P                  V4      ^,           # )   )r   Zindex)clsr   s   &&r    _get_field_keyZ_CborDataObject._get_field_key?   s    c{  '!++r"   r   N)__name__
__module____qualname____firstlineno__classmethodr)   __static_attributes__r   r"   r    r$   r$   >   s    , ,r"   r$   FT)ZeqZfrozenc                  sN   ] tR t^Dt$ RtR]R&   ]! ]R7      tR]R&   ]	P                  tR]R&   ]! ]R7      tR]R	&   R
tR]R&   ]! ]R7      tR]R&   ^ tR]R&   ^ tR]R&   ]! ]R7      tR]R&   ]! ]R7      tR]R&   ^ tR]R&   RtR]R&   ^tR]R&   ^ tR]R&   ^ tR]R&   ^ tR]R&   ^ tR]R&   ^ tR]R&   ]! ]R7      tR]R&   R tR!]R"&   ]! ]R7      tR]R#&   ]! R$ R7      tR]R%&   R t R!]R&&   Rt!R]R'&   R t"R(]R)&   ]! ]R7      t#R]R*&   R t$R+]R,&   R t%R(]R-&   ^?t&R]R.&   R/ R0 lt'R1t(R # )2Infoa  Binary CBOR encoded response data returned by the CTAP2 GET_INFO command.

See:
https://fidoalliance.org/specs/fido-v2.2-rd-20230321/fido-client-to-authenticator-protocol-v2.2-rd-20230321.html#authenticatorGetInfo
for descriptions of these fields.

Note that while many fields are optional when returned by the authenticator,
this dataclass uses defaults to represent a missing value such as empty lists
or dicts, or the integer value 0. These are used rather than None for omitted
values as long as this can be done without introducing any practical ambiguity.
This also means that several of these fields may have a 0 value even if the
specification states that they should be non-zero when returned from the
authenticator.

:param _: The binary content of the Info data.
z	list[str]ZversionsZdefault_factory
extensionsr   aaguidzdict[str, bool]optionsi   r&   max_msg_sizez	list[int]pin_uv_protocolsmax_creds_in_listmax_cred_id_length
transportszlist[dict[str, Any]]r   max_large_blobFboolforce_pin_changemin_pin_lengthfirmware_versionmax_cred_blob_lengthmax_rpids_for_min_pinpreferred_platform_uv_attemptsuv_modalitydictcertificationsN
int | Noneremaining_disc_creds vendor_prototype_config_commandsc                 	s    R .# )Zpackedr   r   r"   r    Z<lambda>ZInfo.<lambda>l   s    H:r"   attestation_formatsuv_count_since_pinlong_touch_for_resetbytes | Noneenc_identifiertransports_for_resetbool | Nonepin_complexity_policypin_complexity_policy_urlmax_pin_lengthc               r%   )r   	pin_tokenbytesr   rK   r   r   r   r    r!   ZInfo.__annotate__u   s     / / /, /r"   c                s   V P                   '       g   R# V P                   R,          V P                   R,          r2\        4       p\        \        P                  ! 4       ^RRVR7      P                  V4      p\        \        P                  ! V4      \        P                  ! V4      V4      P                  4       pVP                  V4      VP                  4       ,           # )z6Decrypt the device identifier using a persistent PUAT.N:N   N:rT   NNs   encIdentifier)Z	algorithmlengthZsaltinfoZbackends                                    )rL   r   r   r   ZSHA256Zderiver   r   ZAESr   ZCBCZ	decryptorZupdateZfinalize)selfrR   ZivZctZbeZsecretZdecs   &&     r    get_identifierZInfo.get_identifieru   s    """$$S)4+>+>s+CBmmo!
 &
 	 Z^^F+UYYr]B?IIKzz"~..r"   r   ))r*   r+   r,   r-   __doc____annotations__r   Zlistr2   r   ZNONEr3   rC   r4   r5   r6   r7   r8   r9   r   r:   r<   r=   r>   r?   r@   rA   rB   rD   rF   rG   rH   rI   rJ   rL   rM   rO   rP   rQ   rX   r/   r   r"   r    r0   r0   D   st   " !$7J	7[[FF $T:G_:L#"'"=i=s!$7J	7',T'BJ$BNC"d"NCc !#!!"3"*+"C+K 6ND6'+*+272M$iM%*;M%NN%)
)!&$&#'NL'&+D&A)A)-;-.2|2NC/ /r"   r0   c                  sr    ] tR t^t$ RtR]R&   R]R&   R]R&   RtR	]R
&   RtR]R&   ]! ]	R7      t
R]R&   RtR# )AttestationResponsea  Binary CBOR encoded attestation object.

:param _: The binary representation of the attestation object.
:ivar fmt: The type of attestation used.
:ivar auth_data: The attested authenticator data.
:ivar att_stmt: The attestation statement.
:ivar ep_att: Whether an enterprise attestation was returned for this credential.
:ivar large_blob_key: The largeBlobKey for the credential, if requested.
:ivar unsigned_extension_outputs: Any unsigned outputs of extensions.
strZfmtr   	auth_datazdict[str, Any]Zatt_stmtNrN   ep_attrK   large_blob_keyr1   unsigned_extension_outputsr   )r*   r+   r,   r-   rY   rZ   r^   r_   r   rC   r`   r/   r   r"   r    r[   r[      s>    	 
H  FK#'NL'16t1LLr"   r[   c                  s    ] tR t^t$ RtR]R&   R]R&   R]R&   RtR	]R
&   RtR]R&   RtR]R&   Rt	R]R&   R R lt
]R R l4       tRtR# )AssertionResponsea  Binary CBOR encoded assertion response.

:param _: The binary representation of the assertion response.
:ivar credential: The credential used for the assertion.
:ivar auth_data: The authenticator data part of the response.
:ivar signature: The digital signature of the assertion.
:ivar user: The user data of the credential.
:ivar number_of_credentials: The total number of responses available
    (only set for the first response, if > 1).
Mapping[str, Any]
credentialr   r]   rS   	signatureNzdict[str, Any] | NoneuserrE   number_of_credentialsrN   user_selectedrK   r_   c               r%   )r   client_paramrS   
public_keyr   r   r   r   r    r!   AssertionResponse.__annotate__   s     I I5 Ig Ir"   c                s`    VP                  V P                  V,           V P                  4       R# )zVerify the digital signature of the response with regard to the
client_param, using the given public key.

:param client_param: SHA256 hash of the ClientData used for the request.
:param public_key: The public key of the credential, to verify.
N)verifyr]   rd   )rW   rh   ri      &&&r    rk   ZAssertionResponse.verify   s!     	$..<7Hr"   c               $    V ^8  d   QhRRRRRR/# )r   	app_paramrS   rc   rb   r   z'AssertionResponse'r   r   r   r    r!   rj      s$     
 

+<
	
r"   c                s    V ! V\         P                  ! VVP                  \         P                  P                  ,          VP
                  4      VP                  R7      # )a.  Create an AssertionResponse from a CTAP1 SignatureData instance.

:param app_param: SHA256 hash of the RP ID used for the CTAP1 request.
:param credential: Credential used for the CTAP1 request (from the
    allowList).
:param authentication: The CTAP1 signature data.
:return: The assertion response.
)rc   r]   rd   )r   ZcreateZuser_presenceZFLAGZUPZcounterrd   )r(   rn   rc   Zauthentications   &&&&r    
from_ctap1ZAssertionResponse.from_ctap1   sT     !'..,,/@/E/E/H/HH&&
 %..
 	
r"   r   )r*   r+   r,   r-   rY   rZ   re   rf   rg   r_   rk   r.   ro   r/   r   r"   r    ra   ra      s_    	 "!  "&D
&(,:,!%M;%#'NL'I 
 
r"   ra   c                  sp   ] tR t^tRt] ! R R]4      4       tR&R R llt]	R R l4       t
R'R	RR
R/R R llltR R ltR(R	RR
R/R R llltR	RR
R/R R lltR(R	RR
R/R R llltR)R	RR
R/R R llltR R ltR R ltR*R R lltR(R	RR
R/R R llltR	RR
R/R R  lltR)R! R" lltR*R# R$ lltR%tR# )+Ctap2zImplementation of the CTAP2 specification.

:param device: A CtapHidDevice handle supporting CTAP2.
:param strict_cbor: Validate that CBOR returned from the Authenticator is
    canonical, defaults to True.
c                  sJ    ] tR t^t^t^t^t^t^t^t	^	t
^
t^t^t^t^@t^AtRtR# )	Ctap2.CMDr   N)r*   r+   r,   r-   MAKE_CREDENTIALGET_ASSERTIONGET_INFO
CLIENT_PINRESETGET_NEXT_ASSERTIONBIO_ENROLLMENTCREDENTIAL_MGMT	SELECTIONLARGE_BLOBSCONFIGBIO_ENROLLMENT_PRECREDENTIAL_MGMT_PREr/   r   r"   r    CMDrq      sF    
!	!"r"   r   c               r%   )r   devicer   strict_cborr;   r   r   r   r    r!   Ctap2.__annotate__   s     % %z % %r"   c                	s    VP                   \        P                  ,          '       g   \        R 4      hWn        W n        V P                  4       V n        R# )zDevice does not support CTAP2.N)Zcapabilitiesr   CBOR
ValueErrorr   _strict_cborget_info_info)rW   r   r   rl   r    __init__ZCtap2.__init__   s;    ""Z__44=>>']]_
r"   c               r   r   r   r0   r   r   r   r    r!   r      s      d r"   c                s    V P                   # )zGet a cached Info object which can be used to determine capabilities.

:rtype: Info
:return: The response of calling GetAuthenticatorInfo.
)r   rW      &r    rV   Z
Ctap2.info   s     zzr"   Neventon_keepalivec          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r   cmdr&   dataMapping[int, Any] | Noner   Event | Noner   Callable[[int], None] | Noner   Mapping[int, Any]r   r   r   r    r!   r      s<     $7 $7$7 '$7
 $7 3$7 
$7r"   c               sL   \         P                  ! RV4      pVe   V\        P                  ! V4      ,          pV P                  P                  \        P                  WSV4      pV^ ,          pV^ 8w  d   \        V4      hVR,          pV'       g   / # \        P                  ! V4      p	V P                  '       dJ   \        P                  ! V	4      p
W8w  d.   \        RVP                  4        RV
P                  4        24      h\        V	\        4      '       d   V	# \        R4      h)aF  Sends a CBOR message to the device, and waits for a response.

:param cmd: The command byte of the request.
:param data: The payload to send (to be CBOR encoded).
:param event: Optional threading.Event used to cancel the request.
:param on_keepalive: Optional function called when keep-alive is sent by
    the authenticator.
z>B:r'   NNz,Non-canonical CBOR from Authenticator.
Got: z
Expected: zDecoded value of wrong type)structZpackr   Zencoder   Zcallr   r   r   Zdecoder   r   ZhexZ
isinstancer
   Z	TypeError)rW   r   r   r   r   ZrequestZresponseZstatusZencZdecodedZexpecteds   &&&$$      r    	send_cborZCtap2.send_cbor   s      ++dC(t{{4((G;;##GLL',O!T>F##rlI++c"{{7+H GGI;l8<<>2BD  gw''N566r"   c               r   r   r   r   r   r    r!   r   !  s     B B$ Br"   c                z    \         P                  V P                  \        P                  P
                  4      4      # )zFCTAP2 getInfo command.

:return: Information about the authenticator.
)r0   	from_dictr   rp   r   rt   r   r   r    r   ZCtap2.get_info!  s&    
 ~~dnnUYY-?-?@AAr"   c               sD    V ^8  d   QhRRRRRRRRRRR	RR
RRRRRRRRR/# )r   pin_uv_protocolr&   sub_cmdkey_agreementr   pin_uv_paramrK   new_pin_encpin_hash_encpermissionsrE   permissions_rpidz
str | Noner   r   r   r   r   r   r   r   r   r    r!   r   (  sx     0
 0
0
 0
 0	0

 #0
 "0
 #0
  0
 %0
 0
 30
 
0
r"   c	               s    V P                  \        P                  P                  \	        VVVVVVRRVV4
      V	V
R7      # )a  CTAP2 clientPin command, used for various PIN operations.

This method is not intended to be called directly. It is intended to be used by
an instance of the PinProtocolV1 class.

:param pin_uv_protocol: The PIN/UV protocol version to use.
:param sub_cmd: A clientPin sub command.
:param key_agreement: The keyAgreement parameter.
:param pin_uv_param: The pinAuth parameter.
:param new_pin_enc: The newPinEnc parameter.
:param pin_hash_enc: The pinHashEnc parameter.
:param permissions: The permissions parameter.
:param permissions_rpid: The permissions RPID parameter.
:param event: Optional threading.Event used to cancel the request.
:param on_keepalive: Optional callback function to handle keep-alive
    messages from the authenticator.
:return: The response of the command, decoded.
Nr   r   )r   rp   r   ru   r#   )rW   r   r   r   r   r   r   r   r   r   r   s   &&&&&&&&&$$r    
client_pinZCtap2.client_pin(  sV    @ ~~II    %  
 	
r"   c               rm   r   r   r   r   r   r   ZNoner   r   r   r    r!   r   Z  s*     9 9 9 3	9
 
9r"   c               s    V P                  \        P                  P                  WR7       \        P                  R4       R# )zCTAP2 reset command, erases all credentials and PIN.

:param event: Optional threading.Event object used to cancel the request.
:param on_keepalive: Optional callback function to handle keep-alive
    messages from the authenticator.
r   z!Reset completed - All data erasedN)r   rp   r   rv   loggerrV   rW   r   r      &$$r    resetZCtap2.resetZ  s)     	uyyeO78r"   c               sL    V ^8  d   QhRRRRRRRRRR	R
RRRRRRRRRRRRRRR/# )r   client_data_hashrS   rprb   re   
key_paramszlist[Mapping[str, Any]]exclude_listlist[Mapping[str, Any]] | Noner2   Mapping[str, Any] | Noner4   r   rK   r   rE   enterprise_attestationr   r   r   r   r   r[   r   r   r   r    r!   r   i  s     4
 4
4
 4
  	4

 ,4
 54
 -4
 *4
 #4
 $4
 !+4
 4
 34
 
4
r"   c               s    \         P                  R4       \        P                  V P	                  \
        P                  P                  \        VVVVVVVVV	V
4
      VVR7      4      # )a0  CTAP2 makeCredential operation.

:param client_data_hash: SHA256 hash of the ClientData.
:param rp: PublicKeyCredentialRpEntity parameters.
:param user: PublicKeyCredentialUserEntity parameters.
:param key_params: List of acceptable credential types.
:param exclude_list: Optional list of PublicKeyCredentialDescriptors.
:param extensions: Optional dict of extensions.
:param options: Optional dict of options.
:param pin_uv_param: Optional PIN/UV auth parameter.
:param pin_uv_protocol: The version of PIN/UV protocol used, if any.
:param enterprise_attestation: Whether or not to request Enterprise Attestation.
:param event: Optional threading.Event used to cancel the request.
:param on_keepalive: Optional callback function to handle keep-alive
    messages from the authenticator.
:return: The new credential.
zCalling CTAP2 make_credentialr   )	r   debugr[   r   r   rp   r   rr   r#   )rW   r   r   re   r   r   r2   r4   r   r   r   r   r   s   &&&&&&&&&&&$$r    make_credentialZCtap2.make_credentiali  sq    B 	45",,NN		))$  #* )  
 	
r"   c               s@    V ^8  d   QhRRRRRRRRR	RR
RRRRRRRRR/
# )r   rp_idr\   r   rS   
allow_listr   r2   r   r4   r   rK   r   rE   r   r   r   r   r   ra   r   r   r   r    r!   r     sn     +
 +
+
  +
 3	+

 -+
 *+
 #+
 $+
 +
 3+
 
+
r"   c               s    \         P                  R4       \        P                  V P	                  \
        P                  P                  \        VVVVVVV4      VV	R7      4      # )af  CTAP2 getAssertion command.

:param rp_id: The RP ID of the credential.
:param client_data_hash: SHA256 hash of the ClientData used.
:param allow_list: Optional list of PublicKeyCredentialDescriptors.
:param extensions: Optional dict of extensions.
:param options: Optional dict of options.
:param pin_uv_param: Optional PIN/UV auth parameter.
:param pin_uv_protocol: The version of PIN/UV protocol used, if any.
:param event: Optional threading.Event used to cancel the request.
:param on_keepalive: Optional callback function to handle keep-alive messages
    from the authenticator.
:return: The new assertion.
zCalling CTAP2 get_assertionr   )	r   r   ra   r   r   rp   r   rs   r#   )
rW   r   r   r   r2   r4   r   r   r   r   s
   &&&&&&&&$$r    get_assertionZCtap2.get_assertion  sg    6 	23 **NN		''$ # )  
 	
r"   c               r   )r   r   ra   r   r   r   r    r!   r     s     Y Y$5 Yr"   c                r   )zQCTAP2 getNextAssertion command.

:return: The next available assertion response.
)ra   r   r   rp   r   rw   r   r   r    get_next_assertionZCtap2.get_next_assertion  s(    
 !**4>>%)):V:V+WXXr"   c               r   )r   r   zlist[AssertionResponse]r   r   r   r    r!   r     s     
 
1H 
r"   c                s    V P                   ! V/ VB p\        ^VP                  ;'       g    ^4       Uu. uF  pV P                  4       NK  	  ppV.V,           # u upi )zeConvenience method to get list of assertions.

See get_assertion and get_next_assertion for details.
)r   Zrangerf   r   )rW   r#   ZkwargsZfirstZ_Zrests   &*,   r    get_assertionsZCtap2.get_assertions  sl    
 ""D3F3 1e99>>Q?
? ##%? 	 
 w~	
s   Ac          
     r   r   r   r&   sub_cmd_paramsr   r   rE   r   rK   r   r   r   r   r   r    r!   r     s<      
  
 
 1 
 $	 

 # 
 
 
r"   c           	     s(   RV P                   P                  9   d   \        P                  P                  pMARV P                   P                  9   d   \        P                  P
                  pM\        R4      hV P                  V\        WW44      4      # )a  CTAP2 credentialManagement command, used to manage resident
credentials.

NOTE: This implements the current draft version of the CTAP2 specification and
should be considered highly experimental.

This method is not intended to be called directly. It is intended to be used by
an instance of the CredentialManagement class.

:param sub_cmd: A CredentialManagement sub command.
:param sub_cmd_params: Sub command specific parameters.
:param pin_uv_protocol: PIN/UV auth protocol version used.
:param pin_uv_param: PIN/UV Auth parameter.
ZcredMgmtZcredentialMgmtPreviewz9Credential Management not supported by this Authenticator)	rV   r4   rp   r   ry   r~   r   r   r#   )rW   r   r   r   r   r   s   &&&&& r    credential_mgmtZCtap2.credential_mgmt  sv    * ***))++C$		(9(99))//CK  ~~/H
 	
r"   c               s<    V ^8  d   QhRRRRRRRRRRR	R
RRRRRR/	# )r   modalityrE   r   r   r   r   r   rK   get_modalityrN   r   r   r   r   r   r   r   r   r   r    r!   r     sd     .
 .
.
 .
 1	.

 $.
 #.
 ".
 .
 3.
 
.
r"   c               s6   RV P                   P                  9   d   \        P                  P                  p	MARV P                   P                  9   d   \        P                  P
                  p	M\        R4      hV P                  V	\        VVVVVV4      VVR7      # )a  CTAP2 bio enrollment command. Used to provision/enumerate/delete bio
enrollments in the authenticator.

NOTE: This implements the current draft version of the CTAP2 specification and
should be considered highly experimental.

This method is not intended to be called directly. It is intended to be used by
an instance of the BioEnrollment class.

:param modality: The user verification modality being used.
:param sub_cmd: A BioEnrollment sub command.
:param sub_cmd_params: Sub command specific parameters.
:param pin_uv_protocol: PIN/UV protocol version used.
:param pin_uv_param: PIN/UV auth param.
:param get_modality: Get the user verification type modality.
Z	bioEnrollZuserVerificationMgmtPreviewz)Authenticator does not support Bio Enrollr   )	rV   r4   rp   r   rx   r}   r   r   r#   )
rW   r   r   r   r   r   r   r   r   r   s
   &&&&&&&$$ r    bio_enrollmentZCtap2.bio_enrollment  s    8 $))+++))**C*dii.?.??))..CHII~~ %  
 	
r"   c               rm   r   r   r   r   r    r!   r   1  s/     T T T 3	T
 
Tr"   c               s\    V P                  \        P                  P                  WR7       R# )aA  CTAP2 authenticator selection command.

This command allows the platform to let a user select a certain authenticator
by asking for user presence.

:param event: Optional threading.Event used to cancel the request.
:param on_keepalive: Optional callback function to handle keep-alive messages
    from the authenticator.
r   N)r   rp   r   rz   r   r   r    	selectionZCtap2.selection1  s     	uyy**%Sr"   c               s4    V ^8  d   QhRRRRRRRRRRR	RR
R/# )r   offsetr&   getrE   setrK   rU   r   r   r   r   r   r   r   r    r!   r   B  sP     
 

 
 	

 
 #
 $
 

r"   c                sl    V P                  \        P                  P                  \	        W#WWV4      4      # )a  CTAP2 authenticator large blobs command.

This command is used to read and write the large blob array.

This method is not intended to be called directly. It is intended to be used by
an instance of the LargeBlobs class.

:param offset: The offset of where to start reading/writing data.
:param get: Optional (max) length of data to read.
:param set: Optional data to write.
:param length: Length of the payload in set.
:param pin_uv_protocol: PIN/UV protocol version used.
:param pin_uv_param: PIN/UV auth param.
)r   rp   r   r{   r#   )rW   r   r   r   rU   r   r   s   &&&&&&&r    large_blobsZCtap2.large_blobsB  s.    . ~~II!!6<I
 	
r"   c          
     r   r   r   r   r   r    r!   r   ^  s<     
 

 1
 $	

 #
 

r"   c           	     sj    V P                  \        P                  P                  \	        WW44      4      # )a  CTAP2 authenticator config command.

This command is used to configure various authenticator features through the
use of its subcommands.

This method is not intended to be called directly. It is intended to be used by
an instance of the Config class.

:param sub_cmd: A Config sub command.
:param sub_cmd_params: Sub command specific parameters.
:param pin_uv_protocol: PIN/UV auth protocol version used.
:param pin_uv_param: PIN/UV Auth parameter.
)r   rp   r   r|   r#   )rW   r   r   r   r   s   &&&&&r    configZCtap2.config^  s,    ( ~~II/H
 	
r"   )r   r   r   )T)N)NNNNNN)NNNNN)NNN)r*   r+   r,   r-   rY   r   r   r   r   ZpropertyrV   r   r   r   r   r   r   r   r   r   r   r   r   r   r/   r   r"   r    rp   rp      s1    #g # # %  $7
 #$7 6:$7 $7LB0
 #0
 6:0
 0
d9 #9 6:	94
 #4
 6:4
 4
l+
 #+
 6:+
 +
ZY
 
D.
 #.
 6:.
 .
`T #T 6:	T"
8
 
r"   rp   )5Z
__future__r    Zloggingr   Zdataclassesr   r   r   r   Zenumr   r   Z	threadingr   Ztypingr   r	   r
   Zcryptography.hazmat.backendsr   Zcryptography.hazmat.primitivesr   Z&cryptography.hazmat.primitives.ciphersr   r   r   Z'cryptography.hazmat.primitives.kdf.hkdfr   Z r   Zcoser   Zctapr   r   Zhidr   r   Zutilsr   Zwebauthnr   r   Z	getLoggerr*   r   r#   r&   r$   r0   r[   ra   rp   r   r"   r    <module>r      s   8 #   7 7    ) ) 8 1 L L 8   ( % % 0			8	$D,', , eD!@/? @/ "@/F eD!M/ M "M( eD!1
 1
 "1
hc
 c
r"   