
    Dj}|                    	   U d Z ddlmZ ddlZddlmZmZmZmZm	Z	m
Z
 ddlmZmZ ddlmZmZmZmZ dZ ej        ej                  Zej        Zej        Z G d d	          Z G d
 dej                  Z G d d          Ze G d dee                      Ze G d dee                      Z e G d dee                      Z!e G d dee                      Z"e G d dee                      Z#e G d dee                      Z$e G d dee                      Z%e G d dee                      Z& G d dej                  Z' G d  d!ej                  Z( G d" d#ej                  Z) G d$ d%ej                  Z* G d& d'ej                  Z+ G d( d)ej                  Z, G d* d+ej                  Z- G d, d-ej                  Z. G d. d/ej                  Z/ G d0 d1ej                  Z0 G d2 d3ej                  Z1 G d4 d5ej                  Z2 G d6 d7ej                  Z3 G d8 d9ej                  Z4 G d: d;ej                  Z5 G d< d=ej                  Z6 G d> d?ej                  Z7 G d@ dAej                  Z8 G dB dCej                  Z9 G dD dEej                  Z: G dF dGej                  Z; eee          j<        Z< eee          =                    dHeI          Z>e>?                                Z@ ej        ejA                  ge>jB        _C        e<e>jB        _D        e ej        e*           ej        e+           ej        e(           ej        e)           ej        e:           ej         ej        e;                    ge>jE        _C        e<e>jE        _D        ee	 ej        e)           ej        e8           ej         ej        e9                    ge>jF        _C        e<e>jF        _D         ej        e;          ge>jG        _C         ej        e9          ge>jH        _C         ej        e          ge>jI        _C        e<e>jI        _D         ej        e          ge>jJ        _C        e<e>jJ        _D        e<ge>jK        _C        ee>jK        _D        dJdJdJdJdJdJdKdLdJdKdJdMi dLdNdLdOdPdNdQdKdJdRdSdOidQdNdLdTdUdUdQdNdPdVdKdUdVdWdXdXdQdLdVdJdYdZ	ZLd[eMd\<   dbdaZNdS )cz
Structs based on Microsoft's WebAuthN API.
https://github.com/microsoft/webauthn

Definitions taken from https://github.com/microsoft/webauthn/blob/master/webauthn.h
    )annotationsN)BOOLDWORDHWNDLONGLPCWSTRWORD)IntEnumunique)AnyMappingSequencecasti   c                  (    e Zd ZdZd
dZd ZddZd	S )BytesPropertyzProperty for structs storing byte arrays as DWORD + PBYTE.

    Allows for easy reading/writing to struct fields using Python bytes objects.
    namestrc                .    d|z   | _         d|z   | _        d S )Ncbpb)cbNamepbName)selfr   s     O/home/thesage/.hermes/venv/lib/python3.11/site-packages/fido2/client/win_api.py__init__zBytesProperty.__init__@   s    TkTk    c           
         t          t          t          || j                  d t          || j                                               S N)bytes	bytearraygetattrr   r   )r   instanceowners      r   __get__zBytesProperty.__get__D   sB    gh445Uwx7U7U5UVWW
 
 	
r   valuebytes | Nonec                    |rt          |          nd}|rt          j        |          nd}t          || j        |           t          || j        t          j        |t                               d S )Nr   )lenctypescreate_string_buffersetattrr   r   r   PBYTE)r   r"   r%   lnbuffers        r   __set__zBytesProperty.__set__I   sj     'SZZZa7<C,U333!$+r***$+v{65'A'ABBBBBr   N)r   r   )r%   r&   )__name__
__module____qualname____doc__r   r$   r/    r   r   r   r   :   s[         
" " " "
 
 

C C C C C Cr   r   c                  b    e Zd ZdZdej        fdej        fdej        fdej        dz  fgZd Z	dS )	GUIDzGUID Type in C++.Data1Data2Data3Data4   c                ,   d| j         | j        | j        | j        d         dz  | j        d         z   | j        d         dz  | j        d         dz  z   | j        d	         d
z  z   | j        d         dz  z   | j        d         dz  z   | j        d         z   fz  S )Nz{%08X-%04X-%04X-%04X-%012X}r            l           l           i      i         )r7   r8   r9   r:   r   s    r   __str__zGUID.__str__Z   s    ,JJJJqMC$*Q-/JqMV$jmv&'jmv&' jmv&' jmc!	"
 jm0
 
 	
r   N)
r0   r1   r2   r3   r)   c_ulongc_ushortc_ubyte_fields_rF   r4   r   r   r6   r6   P   s_         
&.!	&/"	&/"	&.1$%	H
 
 
 
 
r   r6   c                  &    e Zd Zedd            ZdS )_FromStringr%   r   c                n    t          | |                                                    dd                    S )N-_)r!   upperreplace)clsr%   s     r   from_stringz_FromString.from_stringj   s*    sEKKMM11#s;;<<<r   N)r%   r   )r0   r1   r2   classmethodrS   r4   r   r   rL   rL   i   s2        = = = [= = =r   rL   c                  "    e Zd ZdZdZdZdZdZdS )#WebAuthNUserVerificationRequirementz1Maps to WEBAUTHN_USER_VERIFICATION_REQUIREMENT_*.r   r>   r?   r@   N)r0   r1   r2   r3   ANYREQUIRED	PREFERREDDISCOURAGEDr4   r   r   rV   rV   o   s(        ;;
CHIKKKr   rV   c                  "    e Zd ZdZdZdZdZdZdS )'WebAuthNAttestationConveyancePreferencez5Maps to WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_*.r   r>   r?   r@   N)r0   r1   r2   r3   rW   NONEINDIRECTDIRECTr4   r   r   r\   r\   y   s(        ??
CDHFFFr   r\   c                  "    e Zd ZdZdZdZdZdZdS )WebAuthNAuthenticatorAttachmentz,Maps to WEBAUTHN_AUTHENTICATOR_ATTACHMENT_*.r   r>   r?   r@   N)r0   r1   r2   r3   rW   PLATFORMCROSS_PLATFORMCROSS_PLATFORM_U2F_V2r4   r   r   ra   ra      s+        66
CHNr   ra   c                  6    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS )WebAuthNCTAPTransportz"Maps to WEBAUTHN_CTAP_TRANSPORT_*.r   r>   r?   rA   r;          @      N)r0   r1   r2   r3   rW   USBNFCBLETESTINTERNALHYBRID
SMART_CARD
FLAGS_MASKr4   r   r   rf   rf      sA        ,,
C
C
C
CDHFJJJJr   rf   c                      e Zd ZdZdZdZdZdS )WebAuthNEnterpriseAttestationz*Maps to WEBAUTHN_ENTERPRISE_ATTESTATION_*.r   r>   r?   N)r0   r1   r2   r3   r]   VENDOR_FACILITATEDPLATFORM_MANAGEDr4   r   r   rt   rt      s'        44Dr   rt   c                      e Zd ZdZdZdZdZdS )WebAuthNLargeBlobSupportz&Maps to WEBAUTHN_LARGE_BLOB_SUPPORT_*.r   r>   r?   N)r0   r1   r2   r3   r]   rX   rY   r4   r   r   rx   rx      s#        00DHIIIr   rx   c                  "    e Zd ZdZdZdZdZdZdS )WebAuthNLargeBlobOperationz(Maps to WEBAUTHN_LARGE_BLOB_OPERATION_*.r   r>   r?   r@   N)r0   r1   r2   r3   r]   GETSETDELETEr4   r   r   rz   rz      s(        22D
C
CFFFr   rz   c                  "    e Zd ZdZdZdZdZdZdS )WebAuthNUserVerificationz%Maps to WEBAUTHN_USER_VERIFICATION_*.r   r>   r?   r@   N)r0   r1   r2   r3   rW   OPTIONAL OPTIONAL_WITH_CREDENTIAL_ID_LISTrX   r4   r   r   r   r      s)        //
CH'($HHHr   r   c                  0    e Zd ZdZdefdefdefgZd	dZdS )
WebAuthNCoseCredentialParameterzoMaps to WEBAUTHN_COSE_CREDENTIAL_PARAMETER Struct.

    :param cred_params: Dict of Credential parameters.
    	dwVersionpwszCredentialTypelAlgcred_paramsMapping[str, Any]c                v    t          | j        j                  | _        |d         | _        |d         | _        d S )Ntypealg)get_version	__class__r0   r   r   r   )r   r   s     r   r   z(WebAuthNCoseCredentialParameter.__init__   s3    $T^%<=="-f"5&			r   N)r   r   )	r0   r1   r2   r3   r   r   r   rJ   r   r4   r   r   r   r      sR          
e	w'	H' ' ' ' ' 'r   r   c                  F    e Zd ZdZdefd ej        e          fgZddZ	dS )	 WebAuthNCoseCredentialParameterszpMaps to WEBAUTHN_COSE_CREDENTIAL_PARAMETERS Struct.

    :param params: List of Credential parameter dicts.
    cCredentialParameterspCredentialParametersparamsSequence[Mapping[str, Any]]c                ~    t          |          | _        t          t          |          z  d |D              | _        d S )Nc              3  4   K   | ]}t          |          V  d S r   )r   ).0params     r   	<genexpr>z<WebAuthNCoseCredentialParameters.__init__.<locals>.<genexpr>   s+      II-e44IIIIIIr   )r(   r   r   r   )r   r   s     r   r   z)WebAuthNCoseCredentialParameters.__init__   s?    %([["&EF&SII&III&
"""r   N)r   r   )
r0   r1   r2   r3   r   r)   POINTERr   rJ   r   r4   r   r   r   r      sX          
!%(	 .&.1P"Q"QRH

 
 
 
 
 
r   r   c                  L    e Zd ZdZdefdefdefdefgZ ed          Z	dd	Z
d
S )WebAuthNClientDatazlMaps to WEBAUTHN_CLIENT_DATA Struct.

    :param client_data_json: ClientData serialized as JSON bytes.
    r   cbClientDataJSONpbClientDataJSONpwszHashAlgIdClientDataJSONclient_data_jsonr   c                ^    t          | j        j                  | _        || _        d| _        d S )NzSHA-256)r   r   r0   r   r   r   )r   r   s     r   r   zWebAuthNClientData.__init__   s,    $T^%<== 0&r   N)r   r   )r0   r1   r2   r3   r   r,   r   rJ   r   r   r   r4   r   r   r   r      sn          
e	U#	U#	'"	H %}%566' ' ' ' ' 'r   r   c                  6    e Zd ZdZdefdefdefdefgZd
dZd	S )WebAuthNRpEntityInformationz[Maps to WEBAUTHN_RP_ENTITY_INFORMATION Struct.

    :param rp: Dict of RP information.
    r   pwszIdpwszNamepwszIconrpr   c                    t          | j        j                  | _        |d         | _        |d         | _        |                    d          | _        d S )Nidr   icon)r   r   r0   r   r   r   getr   )r   r   s     r   r   z$WebAuthNRpEntityInformation.__init__  sA    $T^%<==h6
vr   N)r   r   )r0   r1   r2   r3   r   PCWSTRrJ   r   r4   r   r   r   r      s[          
e	6	V	V	H' ' ' ' ' 'r   r   c                  X    e Zd ZdZdefdefdefdefdefdefgZ ed          Z	ddZ
dS )WebAuthNUserEntityInformationzaMaps to WEBAUTHN_USER_ENTITY_INFORMATION Struct.

    :param user: Dict of User information.
    r   cbIdpbIdr   r   pwszDisplayNameIduserr   c                    t          | j        j                  | _        |d         | _        |d         | _        |                    d          | _        |                    d          | _        d S )Nr   r   r   displayName)	r   r   r0   r   r   r   r   r   r   )r   r   s     r   r   z&WebAuthNUserEntityInformation.__init__   sY    $T^%<==t*V((#xx66r   N)r   r   )r0   r1   r2   r3   r   r,   r   rJ   r   r   r   r4   r   r   r   r     sz          
e			V	V	F#H 
t		B7 7 7 7 7 7r   r   c                  R    e Zd ZdZdefdefdefdefdefgZ ed          Z	dd
Z
dS )WebAuthNCredentialExzaMaps to WEBAUTHN_CREDENTIAL_EX Struct.

    :param cred: Dict of Credential Descriptor data.
    r   r   r   r   dwTransportsr   credr   c                    t          | j        j                  | _        |d         | _        |d         | _        t          |                    dd                   | _        d S )Nr   r   	transportrW   )	r   r   r0   r   r   r   rf   r   r   r   r   s     r   r   zWebAuthNCredentialEx.__init__8  sN    $T^%<==t*"&v,1$((;2N2NOr   Nr   r   r0   r1   r2   r3   r   r,   r   rJ   r   r   r   r4   r   r   r   r   (  sx          
e			w'	H 
t		BP P P P P Pr   r   c                  b    e Zd ZdZdefd ej         ej        e                    fgZddZ	dS )	WebAuthNCredentialListzrMaps to WEBAUTHN_CREDENTIAL_LIST Struct.

    :param credentials: List of dict of Credential Descriptor data.
    cCredentialsppCredentialscredentialsr   c                    t          |          | _         t          j        t                    t          |          z  d |D              | _        d S )Nc              3  X   K   | ]%}t          j        t          |                    V  &d S r   )r)   pointerr   r   r   s     r   r   z2WebAuthNCredentialList.__init__.<locals>.<genexpr>M  s5      QQTfn1$7788QQQQQQr   )r(   r   r)   r   r   r   r   r   s     r   r   zWebAuthNCredentialList.__init__J  sP    ,,Ufn-ABBSEUEUUQQ[QQQ
r   Nr   r   )
r0   r1   r2   r3   r   r)   r   r   rJ   r   r4   r   r   r   r   ?  sd          
	.&.8L)M)MNNOH

 
 
 
 
 
r   r   c                  `    e Zd ZdefdefdefdefgZ ed          Z ed          ZdddZ	dS )WebAuthNHmacSecretSaltcbFirstpbFirstcbSecondpbSecondFirstSecondNfirstr   secondr&   c                "    || _         || _        d S r   )r   r   )r   r   r   s      r   r   zWebAuthNHmacSecretSalt.__init__\  s    
r   r   )r   r   r   r&   )
r0   r1   r2   r   r,   rJ   r   r   r   r   r4   r   r   r   r   Q  st        	E	E	U	U	H M'""E]8$$F      r   r   c                  ^    e Zd Zdefdefd ej        e          fgZ e	d          Z
dd	Zd
S )WebAuthNCredWithHmacSecretSaltcbCredIDpbCredIDpHmacSecretSaltCredIDcred_idr   saltr   c                F    || _         t          j        |          | _        d S r   )r   r)   r   r   )r   r   r   s      r   r   z'WebAuthNCredWithHmacSecretSalt.__init__j  s!    %~d33r   N)r   r   r   r   )r0   r1   r2   r   r,   r)   r   r   rJ   r   r   r   r4   r   r   r   r   a  se        	U	U	NFN+ABBCH mH%%G4 4 4 4 4 4r   r   c                  h    e Zd Zd ej        e          fdefd ej        e          fgZg fd
dZ	d	S )WebAuthNHmacSecretSaltValuespGlobalHmacSaltcCredWithHmacSecretSaltListpCredWithHmacSecretSaltListglobal_saltWebAuthNHmacSecretSalt | Nonecredential_salts(Sequence[WebAuthNCredWithHmacSecretSalt]c                    |rt          j        |          | _        t          |          | _        t          t          |          z  | | _        d S r   )r)   r   r   r(   r   r   r   )r   r   r   s      r   r   z%WebAuthNHmacSecretSaltValues.__init__v  sS    
  	?#)>+#>#>D +./?+@+@(*S1A-B-BB,(((r   N)r   r   r   r   )
r0   r1   r2   r)   r   r   r   r   rJ   r   r4   r   r   r   r   o  sm        	NFN+ABBC	&.	&7U(V(VWH FH      r   r   c                  *    e Zd ZdZdefdefgZd
dZd	S )WebAuthNCredProtectExtensionInz2Maps to WEBAUTHN_CRED_PROTECT_EXTENSION_IN Struct.dwCredProtectbRequireCredProtectcred_protectr   require_cred_protectboolc                "    || _         || _        d S r   )r   r   )r   r   r   s      r   r   z'WebAuthNCredProtectExtensionIn.__init__  s     *#7   r   N)r   r   r   r   )r0   r1   r2   r3   r   r   rJ   r   r4   r   r   r   r     sG        << 
% 	%H
8 8 8 8 8 8r   r   c                  <    e Zd ZdefdefgZ ed          ZddZdS )	WebAuthNCredBlobExtension
cbCredBlob
pbCredBlobCredBlobblobr   c                    || _         d S r   )	cred_blob)r   r   s     r   r   z"WebAuthNCredBlobExtension.__init__  s    r   N)r   r   )	r0   r1   r2   r   r,   rJ   r   r   r   r4   r   r   r   r     sP        	u	uH
 j))I     r   r   c                  0    e Zd ZdZdefdefdefgZdd	Zd
S )WebAuthNExtensionz"Maps to WEBAUTHN_EXTENSION Struct.pwszExtensionIdentifiercbExtensionpvExtension
identifierr   r%   r   c                    || _         t          j        |          | _        t          j        t          j        |          t                    | _        d S r   )r   r)   sizeofr   r   r   PVOIDr   )r   r   r%   s      r   r   zWebAuthNExtension.__init__  s@    '1$!=//!;v~e'<'<eDDr   N)r   r   r%   r   )	r0   r1   r2   r3   r   r   r   rJ   r   r4   r   r   r   r     sU        ,, 
#G,		HE E E E E Er   r   c                  F    e Zd ZdZdefd ej        e          fgZddZ	dS )	WebAuthNExtensionsz#Maps to WEBAUTHN_EXTENSIONS Struct.cExtensionspExtensions
extensionsSequence[WebAuthNExtension]c                j    t          |          | _        t          t          |          z  | | _        d S r   )r(   r  r   r  )r   r  s     r   r   zWebAuthNExtensions.__init__  s.    z??-J?*Mr   N)r  r  )
r0   r1   r2   r3   r   r)   r   r   rJ   r   r4   r   r   r  r    sZ        -- 
	'899:H
N N N N N Nr   r  c                  L    e Zd ZdZdefdefdefdefgZ ed          Z	dd	Z
d
S )WebAuthNCredentialz^Maps to WEBAUTHN_CREDENTIAL Struct.

    :param cred: Dict of Credential Descriptor data.
    r   r   r   r   r   r   r   c                :    |d         | _         |d         | _        d S )Nr   r   )r   r   r   s     r   r   zWebAuthNCredential.__init__  s    t*"&v,r   Nr   r   r4   r   r   r	  r	    sj          
e			w'	H 
t		B/ / / / / /r   r	  c                  F    e Zd ZdZdefd ej        e          fgZddZ	dS )	WebAuthNCredentialsznMaps to WEBAUTHN_CREDENTIALS Struct.

    :param credentials: List of dict of Credential Descriptor data.
    r   pCredentialsr   r   c                ~    t          |          | _        t          t          |          z  d |D              | _        d S )Nc              3  4   K   | ]}t          |          V  d S r   )r	  r   s     r   r   z/WebAuthNCredentials.__init__.<locals>.<genexpr>  s+      ??4 &&??????r   )r(   r   r	  r  r   s     r   r   zWebAuthNCredentials.__init__  sC    ,,/#k2B2BB??;???
r   Nr   )
r0   r1   r2   r3   r   r)   r   r	  rJ   r   r4   r   r   r  r    sX          
	(:;;<H

 
 
 
 
 
r   r  c                      e Zd ZdZdefdefdefdefdefdefdefd	efd
efdefdefgZ e	d          Z
 e	d          Z e	d          Z e	d          ZdS )CtapCborHybridStorageLinkedDataz3Maps to CTAPCBOR_HYBRID_STORAGE_LINKED_DATA Struct.r   cbContactIdpbContactIdcbLinkIdpbLinkIdcbLinkSecretpbLinkSecretcbPublicKeypbPublicKeypwszAuthenticatorNamewEncodedTunnelServerDomain	ContactIdLinkId
LinkSecret	PublicKeyN)r0   r1   r2   r3   r   r,   r   r	   rJ   r   
contact_idlink_idlink_secret
public_keyr4   r   r   r  r    s        == 
e			U	U					 &)	%t,H {++JmH%%G---K{++JJJr   r  c                      e Zd ZdZdefdefdefdefdefdefdefd	efd
 ej	        e
          fd ej	        e          fd ej	        e          fdefdefdefd ej	        e          fde
fd ej	        e          fde
fdefdefdefd ej	        e          fdefdefdefdefdefgZ ed          Z ed          Z ed          Z ed           Zd!ej        ej        g d"ej        d"d"g d!d"d"d"d"d"d"fd=d<Zd"S )>WebAuthNGetAssertionOptionsa  Maps to WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS Struct.

    :param timeout: Time that the operation is expected to complete within.
        This is used as guidance, and can be overridden by the platform.
    :param attachment: Platform vs Cross-Platform
        Authenticators.
    :param uv_requirement: User Verification Requirement.
    :param credentials: Allowed Credentials List.
    r   dwTimeoutMillisecondsCredentialList
ExtensionsdwAuthenticatorAttachmentdwUserVerificationRequirementdwFlagspwszU2fAppId
pbU2fAppIdpCancellationIdpAllowCredentialListdwCredLargeBlobOperationcbCredLargeBlobpbCredLargeBlobpHmacSecretSaltValuesbBrowserInPrivateModepLinkedDevice	bAutoFill	cbJsonExt	pbJsonExtcCredentialHintsppwszCredentialHintspwszRemoteWebOrigin'cbPublicKeyCredentialRequestOptionsJSON'pbPublicKeyCredentialRequestOptionsJSONcbAuthenticatorIdpbAuthenticatorIdCredLargeBlobJsonExt%PublicKeyCredentialRequestOptionsJSONAuthenticatorIdr   Ntimeoutint
attachmentuv_requirementr   r   cancellationIdGUID | Nonecred_large_blob_operationcred_large_blobr&   hmac_secret_salts#WebAuthNHmacSecretSaltValues | Noner  r  flags	u2f_appid
str | Noneu2f_appid_usedBOOL | Nonecredential_hintsSequence[str] | Noneremote_web_origin*public_key_credential_request_options_jsonauthenticator_idc                4   t          | j        j                  | _        || _        || _        || _        |
| _        |	rt          |	          | _	        | j        dk    r"|| _
        |t          j        |          | _        | j        dk    r|rt          j        |          | _        | j        dk    r)t          |          }t          j        |          | _        nt#          |          | _        | j        dk    r|| _        || _        | j        dk    r|rt          j        |          | _        | j        dk    r@|r>t-          |          | _        t1          t-          |          z  | | _        | j        | _        | j        dk    r|| _        || _        || _        d S d S )Nr?   r@   rA   rB   rC   r;   	   )r   r   r0   r   r&  r)  r*  r+  r  r(  r,  r)   r   r-  r.  r   r/  r  r'  r0  rK  r3  r(   r9  r   _credential_hints_arrayr:  r;  rV  rW  )r   rD  rF  rG  r   rH  rJ  rK  rL  r  rN  rO  rQ  rS  rU  rV  rW  clists                     r   r   z$WebAuthNGetAssertionOptions.__init__0  s   & %T^%<==%,")3&-;* 	=0<<DO>Q )D)"(."@"@>Q>#)>.#A#AD >Q*;77E(.u(=(=D%%"5k"B"BD>Q,ED)#2D >Q#4)/8I)J)JD&>Q#3$'(8$9$9D!,2S9I5J5J,J!,D( )-(DD%>Q'8D$: ; %5D!!! r   ) rD  rE  rF  rE  rG  rE  r   r   rH  rI  rJ  rE  rK  r&   rL  rM  r  r  rN  rE  rO  rP  rQ  rR  rS  rT  rU  rP  rV  r&   rW  r&   )r0   r1   r2   r3   r   r  r  r   r)   r   r   r6   r   r,   r   r  rJ   r   rK  json_extrV  rW  ra   rW   rV   rZ   rz   r]   r   r4   r   r   r%  r%    s         
e	 %(	./	)*	$e,	(%0	E	 	~v~d++,	NFN4001	0F!G!GH	#U+	E"	E"	 .&.1M"N"NO	 $'	.&.)HIIJ	d	e	e	U#	!7!78	'	2E:	2E:	e$	e$G$HL $mO44O}Y''H1>/2 2. %}%677 9=AM35&*)C)H(,AE24 $&*15(,CG)-#>5 >5 >5 >5 >5 >5 >5r   r%  c                  J   e Zd ZdZdefdefdefdefdefdefdefd	efd
efdefdefdefd ej	        e
          fdefdefdefdefdefdefdefgZ ed          Z ed          Z ed          Z ed          Z ed          Z ed          Z ed          Zd ZdS )WebAuthNAssertionz"Maps to WEBAUTHN_ASSERTION Struct.r   cbAuthenticatorDatapbAuthenticatorDatacbSignaturepbSignature
CredentialcbUserIdpbUserIdr(  r1  r2  dwCredLargeBlobStatuspHmacSecretdwUsedTransportscbUnsignedExtensionOutputspbUnsignedExtensionOutputsr   r   cbAuthenticationResponseJSONpbAuthenticationResponseJSONAuthenticatorData	SignatureUserIdr@  UnsignedExtensionOutputsr   AuthenticationResponseJSONc                ^    t                               t          j        |                      d S r   )WEBAUTHNWebAuthNFreeAssertionr)   byrefrE   s    r   __del__zWebAuthNAssertion.__del__  s&    &&v|D'9'9:::::r   N)r0   r1   r2   r3   r   r,   r	  r  r)   r   r   rJ   r   	auth_data	signatureuser_idrK  unsigned_extension_outputsr   authentication_response_jsonrv  r4   r   r   r^  r^  q  sS       ,, 
e	&	&			)*	U	U	)*	E"	E"	 %(	'=>>?	U#	%u-	%u-	U#	U#	'/	'/3H8 122Ik**ImH%%G#mO44O!./I!J!J$}%566#0=1M#N#N ; ; ; ; ;r   r^  c                     e Zd ZdZdefdefdefdefdefdefdefd	efd
efd ej	        e
          fd ej	        e          fdefdefdefdefdefd ej	        e          fdefdefd ej	        e          fdefd ej	        e          fdefdefdefdefdefdefgZ ed          Z ed          Z ed           Zd!d"ej        ej        ej        g d#ej        ej        d"d"g d#d#d"d#d#d#fd@d?Zd#S )AWebAuthNMakeCredentialOptionsa=  maps to WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS Struct.

    :param timeout: Time that the operation is expected to complete within.This
        is used as guidance, and can be overridden by the platform.
    :param require_resident_key: Require key to be resident or not.
    :param attachment: Platform vs Cross-Platform
        Authenticators.
    :param user_verification_requirement: User
        Verification Requirement.
    :param attestation_convoyence:
        Attestation Conveyance Preference.
    :param credentials: Credentials used for exclusion.
    r   r&  r'  r(  r)  bRequireResidentKeyr*  !dwAttestationConveyancePreferencer+  r.  pExcludeCredentialListdwEnterpriseAttestationdwLargeBlobSupportbPreferResidentKeyr4  
bEnablePrfr5  r7  r8  pPRFGlobalEvalr9  r:  bThirdPartyPaymentr;  (cbPublicKeyCredentialCreationOptionsJSON(pbPublicKeyCredentialCreationOptionsJSONr>  r?  rA  &PublicKeyCredentialCreationOptionsJSONrC  r   FNrD  rE  require_resident_keyr   rF  rG  attestation_convoyencer   r   rH  rI  enterprise_attestationlarge_blob_supportprefer_resident_key
enable_prfr  r  prf_global_evalr   rS  rT  third_party_paymentrU  rP  +public_key_credential_creation_options_jsonr&   rW  c                   t          | j        j                  | _        || _        || _        || _        || _        || _        |rt          |          | _
        | j        dk    r|rt          j        |          | _        | j        dk    r't          j        t          |                    | _        nt!          |          | _        | j        dk    r|| _        |	| _        |
| _        | j        dk    r|| _        | j        dk    rb|t          j        |          | _        |r>t/          |          | _        t3          t/          |          z  | | _        | j        | _        || _        | j        dk    r|| _        || _        || _        d S d S )Nr?   r@   rA   rC   r;   rY  ) r   r   r0   r   r&  r~  r)  r*  r  r  r(  r)   r   r.  r   r  r  r'  r  r  r  r  r  r(   r9  r   rZ  r:  r  r;  r  rW  )r   rD  r  rF  rG  r  r   rH  r  r  r  r  r  r  rS  r  rU  r  rW  s                      r   r   z&WebAuthNMakeCredentialOptions.__init__  s   * %T^%<==%,"#7 )3&-;*1G. 	=0<<DO>Q>#)>.#A#AD >Q*0.&{33+ +D'' #6k"B"BD>Q+AD(&8D#&9D#>Q(DO>Q*&,n_&E&E# I(+,<(=(=%06=M9N9N0N%0, -1,H)&9D#>Q'8D$; < %5D!!! r   )$rD  rE  r  r   rF  rE  rG  rE  r  rE  r   r   rH  rI  r  rE  r  rE  r  r   r  r   r  r  r  r   rS  rT  r  r   rU  rP  r  r&   rW  r&   )r0   r1   r2   r3   r   r  r  r   r)   r   r6   r   r  r,   r   r   rJ   r   r\  r  rW  ra   rW   rV   rZ   r\   rt   r]   rx   r   r4   r   r   r}  r}    s         
e	 %(	./	)*	$e,	%	(%0	,e4	E	NFN4001	!>6>2H#I#IJ	"E*	u%	t$	 $'	t	.&.)HIIJ	e	e	>6>*@AAB	U#	!7!78	t$	'	3U;	3U;	e$	e$I%HN }Y''H2?-03 3/ %}%677 %*9=AM&M&Q35&*&C&H":"?$) 249=15$)(,DH)-'A5 A5 A5 A5 A5 A5 A5r   r}  c                  t   e Zd ZdZdefdefdefdefdefdefdefd	efd
efdefdefdefdefdefdefdefdefdefdefdefd e	j
        e          fdefdefdefdefdefdefgZ ed          Z ed          Z ed          Z ed           Z ed!          Z ed"          Z ed#          Zd$ Zd%S )&WebAuthNCredentialAttestationz/Maps to WEBAUTHN_CREDENTIAL_ATTESTATION Struct.r   pwszFormatTyper_  r`  cbAttestationpbAttestationdwAttestationDecodeTypepvAttestationDecodecbAttestationObjectpbAttestationObjectcbCredentialIdpbCredentialIdr(  dwUsedTransportbEpAttbLargeBlobSupportedbResidentKeybPrfEnabledri  rj  rg  r  r   r   r   cbRegistrationResponseJSONpbRegistrationResponseJSONrm  AttestationAttestationObjectCredentialIdrp  r   RegistrationResponseJSONc                ^    t                               t          j        |                      d S r   )rs  !WebAuthNFreeCredentialAttestationr)   ru  rE   s    r   rv  z%WebAuthNCredentialAttestation.__del__L  s&    226<3E3EFFFFFr   N)r0   r1   r2   r3   r   r   r,   r  r   r)   r   r   rJ   r   rw  attestationattestation_objectcredential_idrz  r   registration_response_jsonrv  r4   r   r   r  r    s       99 
e	7#	&	&	% 	% 	"E*	&	&	&	5!	5!	)*	E"	4	%			%u-	%u-	'=>>?	t$		U#	U#	%u-	%u-E#HJ 122I-..K&':;;!M.11M!./I!J!J$}%566!./I!J!JG G G G Gr   r  webauthn)winmoder>   r@   rA   )r   r   r   r   r	  r   r}  r%  WebAuthNCommonAttestationr  r^  rB   r?   )r}  r%  r  r^  rC   )r}  r%  r^  WebAuthNCredentialDetailsr  )r}  r  r^  rD   r;   )r}  r  r  r%  rY  )r}  r%  r^  r  r  WebAuthNAuthenticatorDetails)	r>   r?   r@   rA   rB   rC   rD   r;   rY  zMapping[int, Mapping[str, int]]WEBAUTHN_STRUCT_VERSIONS
class_namer   returnrE  c                    t          t          dd          D ]/}|t          v r$| t          |         v rt          |         |          c S 0t          d          )zGet version of struct.

    :param str class_name: Struct class name.
    :returns: Version of Struct to use.
    :rtype: int
    r   zUnknown class name)rangeWEBAUTHN_API_VERSIONr  
ValueError)r  api_versions     r   r   r     se     11b99 E E3336{CCC+K8DDDD
)
*
**r   )r  r   r  rE  )Or3   
__future__r   r)   ctypes.wintypesr   r   r   r   r   r	   enumr
   r   typingr   r   r   r   LOAD_LIBRARY_SEARCH_SYSTEM32r   rI   r,   	c_wchar_pr   c_void_pr   r   	Structurer6   rL   rV   r\   ra   rf   rt   rx   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r%  r^  r}  r  HRESULTWinDLLrs  WebAuthNGetApiVersionNumberr  c_bool5WebAuthNIsUserVerifyingPlatformAuthenticatorAvailableargtypesrestype#WebAuthNAuthenticatorMakeCredential!WebAuthNAuthenticatorGetAssertionr  rt  WebAuthNGetCancellationIdWebAuthNCancelCurrentOperationWebAuthNGetErrorNamer  __annotations__r   r4   r   r   <module>r     s
  :   # " " " " "  B B B B B B B B B B B B B B B B                 / / / / / / / / / / / /  * v~&&		C C C C C C C C,
 
 
 
 
6 
 
 
2= = = = = = = =     +w        k7        k7        K        K        {G        g        {G   ' ' ' ' 'f&6 ' ' '$
 
 
 
 
v'7 
 
 
$' ' ' ' ') ' ' '*' ' ' ' '&"2 ' ' '(7 7 7 7 7F$4 7 7 72P P P P P6+ P P P.
 
 
 
 
V- 
 
 
$    V-    4 4 4 4 4V%5 4 4 4    6#3   *8 8 8 8 8V%5 8 8 8	 	 	 	 	 0 	 	 	E E E E E( E E E
N 
N 
N 
N 
N) 
N 
N 
N/ / / / /) / / /(
 
 
 
 
&* 
 
 
$, , , , ,f&6 , , ,.v5 v5 v5 v5 v5&"2 v5 v5 v5r(; (; (; (; (;( (; (; (;V}5 }5 }5 }5 }5F$4 }5 }5 }5@1G 1G 1G 1G 1GF$4 1G 1G 1Gh $sF


#4V##J8T#UU;;==  FN6=!!K > G JQ > F 	FN.//FN011FN344FN%&&FN011FN>6>"?@@AA9 , 5 8? , 4 	FN%&&FN.//FN>6>"344557 * 3 6= * 2 FN0117 * 3 ,:6>:K+L+L*M  '/=v~d/C/C.D " +-4 " *4BFN44H4H3I ' 029 ' /*1  &(.  %
 ())*+, !)*'(%&)*  
)*'()*	  *+'(%&	  	$Q *+)*  *+'()*	  *+%&)*'(	  *+'(%&)*() _7= 7=  7 7 7 7t+ + + + + +r   