zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

webauthn.h (13728B) - Raw


      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 
      7 #ifndef _WEBAUTHN_H_
      8 #define _WEBAUTHN_H_
      9 
     10 #include <winapifamily.h>
     11 
     12 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
     13 
     14 #ifdef __cplusplus
     15 extern "C" {
     16 #endif
     17 
     18 #ifndef WINAPI
     19 #if defined(_ARM_)
     20 #define WINAPI
     21 #else
     22 #define WINAPI __stdcall
     23 #endif
     24 #endif
     25 
     26 #ifndef INITGUID
     27 #define INITGUID
     28 #include <guiddef.h>
     29 #undef INITGUID
     30 #else
     31 #include <guiddef.h>
     32 #endif
     33 
     34 #define WEBAUTHN_API_VERSION_1 1
     35 #define WEBAUTHN_API_VERSION_2 2
     36 #define WEBAUTHN_API_VERSION_3 3
     37 #define WEBAUTHN_API_CURRENT_VERSION WEBAUTHN_API_VERSION_3
     38 
     39 #define WEBAUTHN_RP_ENTITY_INFORMATION_CURRENT_VERSION 1
     40 
     41 typedef struct _WEBAUTHN_RP_ENTITY_INFORMATION {
     42   DWORD dwVersion;
     43   PCWSTR pwszId;
     44   PCWSTR pwszName;
     45   PCWSTR pwszIcon;
     46 } WEBAUTHN_RP_ENTITY_INFORMATION, *PWEBAUTHN_RP_ENTITY_INFORMATION;
     47 typedef const WEBAUTHN_RP_ENTITY_INFORMATION *PCWEBAUTHN_RP_ENTITY_INFORMATION;
     48 
     49 #define WEBAUTHN_MAX_USER_ID_LENGTH 64
     50 
     51 #define WEBAUTHN_USER_ENTITY_INFORMATION_CURRENT_VERSION 1
     52 
     53 typedef struct _WEBAUTHN_USER_ENTITY_INFORMATION {
     54   DWORD dwVersion;
     55   DWORD cbId;
     56   PBYTE pbId;
     57   PCWSTR pwszName;
     58   PCWSTR pwszIcon;
     59   PCWSTR pwszDisplayName;
     60 } WEBAUTHN_USER_ENTITY_INFORMATION, *PWEBAUTHN_USER_ENTITY_INFORMATION;
     61 typedef const WEBAUTHN_USER_ENTITY_INFORMATION *PCWEBAUTHN_USER_ENTITY_INFORMATION;
     62 
     63 #define WEBAUTHN_HASH_ALGORITHM_SHA_256 L"SHA-256"
     64 #define WEBAUTHN_HASH_ALGORITHM_SHA_384 L"SHA-384"
     65 #define WEBAUTHN_HASH_ALGORITHM_SHA_512 L"SHA-512"
     66 
     67 #define WEBAUTHN_CLIENT_DATA_CURRENT_VERSION 1
     68 
     69 typedef struct _WEBAUTHN_CLIENT_DATA {
     70   DWORD dwVersion;
     71   DWORD cbClientDataJSON;
     72   PBYTE pbClientDataJSON;
     73   LPCWSTR pwszHashAlgId;
     74 } WEBAUTHN_CLIENT_DATA, *PWEBAUTHN_CLIENT_DATA;
     75 typedef const WEBAUTHN_CLIENT_DATA *PCWEBAUTHN_CLIENT_DATA;
     76 
     77 #define WEBAUTHN_CREDENTIAL_TYPE_PUBLIC_KEY L"public-key"
     78 
     79 #define WEBAUTHN_COSE_ALGORITHM_ECDSA_P256_WITH_SHA256 -7
     80 #define WEBAUTHN_COSE_ALGORITHM_ECDSA_P384_WITH_SHA384 -35
     81 #define WEBAUTHN_COSE_ALGORITHM_ECDSA_P521_WITH_SHA512 -36
     82 
     83 #define WEBAUTHN_COSE_ALGORITHM_RSASSA_PKCS1_V1_5_WITH_SHA256 -257
     84 #define WEBAUTHN_COSE_ALGORITHM_RSASSA_PKCS1_V1_5_WITH_SHA384 -258
     85 #define WEBAUTHN_COSE_ALGORITHM_RSASSA_PKCS1_V1_5_WITH_SHA512 -259
     86 
     87 #define WEBAUTHN_COSE_ALGORITHM_RSA_PSS_WITH_SHA256 -37
     88 #define WEBAUTHN_COSE_ALGORITHM_RSA_PSS_WITH_SHA384 -38
     89 #define WEBAUTHN_COSE_ALGORITHM_RSA_PSS_WITH_SHA512 -39
     90 
     91 #define WEBAUTHN_COSE_CREDENTIAL_PARAMETER_CURRENT_VERSION 1
     92 
     93 typedef struct _WEBAUTHN_COSE_CREDENTIAL_PARAMETER {
     94   DWORD dwVersion;
     95   LPCWSTR pwszCredentialType;
     96   LONG lAlg;
     97 } WEBAUTHN_COSE_CREDENTIAL_PARAMETER, *PWEBAUTHN_COSE_CREDENTIAL_PARAMETER;
     98 typedef const WEBAUTHN_COSE_CREDENTIAL_PARAMETER *PCWEBAUTHN_COSE_CREDENTIAL_PARAMETER;
     99 
    100 typedef struct _WEBAUTHN_COSE_CREDENTIAL_PARAMETERS {
    101   DWORD cCredentialParameters;
    102   PWEBAUTHN_COSE_CREDENTIAL_PARAMETER pCredentialParameters;
    103 } WEBAUTHN_COSE_CREDENTIAL_PARAMETERS, *PWEBAUTHN_COSE_CREDENTIAL_PARAMETERS;
    104 typedef const WEBAUTHN_COSE_CREDENTIAL_PARAMETERS *PCWEBAUTHN_COSE_CREDENTIAL_PARAMETERS;
    105 
    106 #define WEBAUTHN_CREDENTIAL_CURRENT_VERSION 1
    107 
    108 typedef struct _WEBAUTHN_CREDENTIAL {
    109   DWORD dwVersion;
    110   DWORD cbId;
    111   PBYTE pbId;
    112   LPCWSTR pwszCredentialType;
    113 } WEBAUTHN_CREDENTIAL, *PWEBAUTHN_CREDENTIAL;
    114 typedef const WEBAUTHN_CREDENTIAL *PCWEBAUTHN_CREDENTIAL;
    115 
    116 typedef struct _WEBAUTHN_CREDENTIALS {
    117   DWORD cCredentials;
    118   PWEBAUTHN_CREDENTIAL pCredentials;
    119 } WEBAUTHN_CREDENTIALS, *PWEBAUTHN_CREDENTIALS;
    120 typedef const WEBAUTHN_CREDENTIALS *PCWEBAUTHN_CREDENTIALS;
    121 
    122 #define WEBAUTHN_CTAP_TRANSPORT_USB 0x00000001
    123 #define WEBAUTHN_CTAP_TRANSPORT_NFC 0x00000002
    124 #define WEBAUTHN_CTAP_TRANSPORT_BLE 0x00000004
    125 #define WEBAUTHN_CTAP_TRANSPORT_TEST 0x00000008
    126 #define WEBAUTHN_CTAP_TRANSPORT_INTERNAL 0x00000010
    127 #define WEBAUTHN_CTAP_TRANSPORT_FLAGS_MASK 0x0000001F
    128 
    129 #define WEBAUTHN_CREDENTIAL_EX_CURRENT_VERSION 1
    130 
    131 typedef struct _WEBAUTHN_CREDENTIAL_EX {
    132   DWORD dwVersion;
    133   DWORD cbId;
    134   PBYTE pbId;
    135   LPCWSTR pwszCredentialType;
    136   DWORD dwTransports;
    137 } WEBAUTHN_CREDENTIAL_EX, *PWEBAUTHN_CREDENTIAL_EX;
    138 typedef const WEBAUTHN_CREDENTIAL_EX *PCWEBAUTHN_CREDENTIAL_EX;
    139 
    140 typedef struct _WEBAUTHN_CREDENTIAL_LIST {
    141   DWORD cCredentials;
    142   PWEBAUTHN_CREDENTIAL_EX *ppCredentials;
    143 } WEBAUTHN_CREDENTIAL_LIST, *PWEBAUTHN_CREDENTIAL_LIST;
    144 typedef const WEBAUTHN_CREDENTIAL_LIST *PCWEBAUTHN_CREDENTIAL_LIST;
    145 
    146 #define WEBAUTHN_EXTENSIONS_IDENTIFIER_HMAC_SECRET L"hmac-secret"
    147 
    148 #define WEBAUTHN_USER_VERIFICATION_ANY 0
    149 #define WEBAUTHN_USER_VERIFICATION_OPTIONAL 1
    150 #define WEBAUTHN_USER_VERIFICATION_OPTIONAL_WITH_CREDENTIAL_ID_LIST 2
    151 #define WEBAUTHN_USER_VERIFICATION_REQUIRED 3
    152 
    153 typedef struct _WEBAUTHN_CRED_PROTECT_EXTENSION_IN {
    154   DWORD dwCredProtect;
    155   WINBOOL bRequireCredProtect;
    156 } WEBAUTHN_CRED_PROTECT_EXTENSION_IN, *PWEBAUTHN_CRED_PROTECT_EXTENSION_IN;
    157 typedef const WEBAUTHN_CRED_PROTECT_EXTENSION_IN *PCWEBAUTHN_CRED_PROTECT_EXTENSION_IN;
    158 
    159 #define WEBAUTHN_EXTENSIONS_IDENTIFIER_CRED_PROTECT L"credProtect"
    160 
    161 typedef struct _WEBAUTHN_CRED_BLOB_EXTENSION {
    162   DWORD cbCredBlob;
    163   PBYTE pbCredBlob;
    164 } WEBAUTHN_CRED_BLOB_EXTENSION, *PWEBAUTHN_CRED_BLOB_EXTENSION;
    165 typedef const WEBAUTHN_CRED_BLOB_EXTENSION *PCWEBAUTHN_CRED_BLOB_EXTENSION;
    166 
    167 #define WEBAUTHN_EXTENSIONS_IDENTIFIER_CRED_BLOB L"credBlob"
    168 
    169 #define WEBAUTHN_EXTENSIONS_IDENTIFIER_MIN_PIN_LENGTH L"minPinLength"
    170 
    171 typedef struct _WEBAUTHN_EXTENSION {
    172   LPCWSTR pwszExtensionIdentifier;
    173   DWORD cbExtension;
    174   PVOID pvExtension;
    175 } WEBAUTHN_EXTENSION, *PWEBAUTHN_EXTENSION;
    176 typedef const WEBAUTHN_EXTENSION *PCWEBAUTHN_EXTENSION;
    177 
    178 typedef struct _WEBAUTHN_EXTENSIONS {
    179   DWORD cExtensions;
    180   PWEBAUTHN_EXTENSION pExtensions;
    181 } WEBAUTHN_EXTENSIONS, *PWEBAUTHN_EXTENSIONS;
    182 typedef const WEBAUTHN_EXTENSIONS *PCWEBAUTHN_EXTENSIONS;
    183 
    184 #define WEBAUTHN_AUTHENTICATOR_ATTACHMENT_ANY 0
    185 #define WEBAUTHN_AUTHENTICATOR_ATTACHMENT_PLATFORM 1
    186 #define WEBAUTHN_AUTHENTICATOR_ATTACHMENT_CROSS_PLATFORM 2
    187 #define WEBAUTHN_AUTHENTICATOR_ATTACHMENT_CROSS_PLATFORM_U2F_V2 3
    188 
    189 #define WEBAUTHN_USER_VERIFICATION_REQUIREMENT_ANY 0
    190 #define WEBAUTHN_USER_VERIFICATION_REQUIREMENT_REQUIRED 1
    191 #define WEBAUTHN_USER_VERIFICATION_REQUIREMENT_PREFERRED 2
    192 #define WEBAUTHN_USER_VERIFICATION_REQUIREMENT_DISCOURAGED 3
    193 
    194 #define WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_ANY 0
    195 #define WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_NONE 1
    196 #define WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_INDIRECT 2
    197 #define WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_DIRECT 3
    198 
    199 #define WEBAUTHN_ENTERPRISE_ATTESTATION_NONE 0
    200 #define WEBAUTHN_ENTERPRISE_ATTESTATION_VENDOR_FACILITATED 1
    201 #define WEBAUTHN_ENTERPRISE_ATTESTATION_PLATFORM_MANAGED 2
    202 
    203 #define WEBAUTHN_LARGE_BLOB_SUPPORT_NONE 0
    204 #define WEBAUTHN_LARGE_BLOB_SUPPORT_REQUIRED 1
    205 #define WEBAUTHN_LARGE_BLOB_SUPPORT_PREFERRED 2
    206 
    207 #define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_1 1
    208 #define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_2 2
    209 #define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_3 3
    210 #define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_4 4
    211 #define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_4
    212 
    213 typedef struct _WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS {
    214   DWORD dwVersion;
    215   DWORD dwTimeoutMilliseconds;
    216   WEBAUTHN_CREDENTIALS CredentialList;
    217   WEBAUTHN_EXTENSIONS Extensions;
    218   DWORD dwAuthenticatorAttachment;
    219   WINBOOL bRequireResidentKey;
    220   DWORD dwUserVerificationRequirement;
    221   DWORD dwAttestationConveyancePreference;
    222   DWORD dwFlags;
    223   GUID *pCancellationId;
    224   PWEBAUTHN_CREDENTIAL_LIST pExcludeCredentialList;
    225   DWORD dwEnterpriseAttestation;
    226   DWORD dwLargeBlobSupport;
    227   WINBOOL bPreferResidentKey;
    228 } WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS, *PWEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS;
    229 typedef const WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS *PCWEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS;
    230 
    231 #define WEBAUTHN_CRED_LARGE_BLOB_OPERATION_NONE 0
    232 #define WEBAUTHN_CRED_LARGE_BLOB_OPERATION_GET 1
    233 #define WEBAUTHN_CRED_LARGE_BLOB_OPERATION_SET 2
    234 #define WEBAUTHN_CRED_LARGE_BLOB_OPERATION_DELETE 3
    235 
    236 #define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_1 1
    237 #define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_2 2
    238 #define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_3 3
    239 #define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_4 4
    240 #define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_5 5
    241 #define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_5
    242 
    243 typedef struct _WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS {
    244   DWORD dwVersion;
    245   DWORD dwTimeoutMilliseconds;
    246   WEBAUTHN_CREDENTIALS CredentialList;
    247   WEBAUTHN_EXTENSIONS Extensions;
    248   DWORD dwAuthenticatorAttachment;
    249   DWORD dwUserVerificationRequirement;
    250   DWORD dwFlags;
    251   PCWSTR pwszU2fAppId;
    252   WINBOOL *pbU2fAppId;
    253   GUID *pCancellationId;
    254   PWEBAUTHN_CREDENTIAL_LIST pAllowCredentialList;
    255   DWORD dwCredLargeBlobOperation;
    256   DWORD cbCredLargeBlob;
    257   PBYTE pbCredLargeBlob;
    258 } WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS, *PWEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS;
    259 typedef const WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS *PCWEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS;
    260 
    261 #define WEBAUTHN_ATTESTATION_DECODE_NONE 0
    262 #define WEBAUTHN_ATTESTATION_DECODE_COMMON 1
    263 
    264 #define WEBAUTHN_ATTESTATION_VER_TPM_2_0 L"2.0"
    265 
    266 typedef struct _WEBAUTHN_X5C {
    267   DWORD cbData;
    268   PBYTE pbData;
    269 } WEBAUTHN_X5C, *PWEBAUTHN_X5C;
    270 
    271 #define WEBAUTHN_COMMON_ATTESTATION_CURRENT_VERSION 1
    272 
    273 typedef struct _WEBAUTHN_COMMON_ATTESTATION {
    274   DWORD dwVersion;
    275   PCWSTR pwszAlg;
    276   LONG lAlg;
    277   DWORD cbSignature;
    278   PBYTE pbSignature;
    279   DWORD cX5c;
    280   PWEBAUTHN_X5C pX5c;
    281   PCWSTR pwszVer;
    282   DWORD cbCertInfo;
    283   PBYTE pbCertInfo;
    284   DWORD cbPubArea;
    285   PBYTE pbPubArea;
    286 } WEBAUTHN_COMMON_ATTESTATION, *PWEBAUTHN_COMMON_ATTESTATION;
    287 typedef const WEBAUTHN_COMMON_ATTESTATION *PCWEBAUTHN_COMMON_ATTESTATION;
    288 
    289 #define WEBAUTHN_ATTESTATION_TYPE_PACKED L"packed"
    290 #define WEBAUTHN_ATTESTATION_TYPE_U2F L"fido-u2f"
    291 #define WEBAUTHN_ATTESTATION_TYPE_TPM L"tpm"
    292 #define WEBAUTHN_ATTESTATION_TYPE_NONE L"none"
    293 
    294 #define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_1 1
    295 #define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_2 2
    296 #define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_3 3
    297 #define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_4 4
    298 #define WEBAUTHN_CREDENTIAL_ATTESTATION_CURRENT_VERSION WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_4
    299 
    300 typedef struct _WEBAUTHN_CREDENTIAL_ATTESTATION {
    301   DWORD dwVersion;
    302   PCWSTR pwszFormatType;
    303   DWORD cbAuthenticatorData;
    304   PBYTE pbAuthenticatorData;
    305   DWORD cbAttestation;
    306   PBYTE pbAttestation;
    307   DWORD dwAttestationDecodeType;
    308   PVOID pvAttestationDecode;
    309   DWORD cbAttestationObject;
    310   PBYTE pbAttestationObject;
    311   DWORD cbCredentialId;
    312   PBYTE pbCredentialId;
    313   WEBAUTHN_EXTENSIONS Extensions;
    314   DWORD dwUsedTransport;
    315   WINBOOL bEpAtt;
    316   WINBOOL bLargeBlobSupported;
    317   WINBOOL bResidentKey;
    318 } WEBAUTHN_CREDENTIAL_ATTESTATION, *PWEBAUTHN_CREDENTIAL_ATTESTATION;
    319 typedef const WEBAUTHN_CREDENTIAL_ATTESTATION *PCWEBAUTHN_CREDENTIAL_ATTESTATION;
    320 
    321 #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_NONE 0
    322 #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_SUCCESS 1
    323 #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_NOT_SUPPORTED 2
    324 #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_INVALID_DATA 3
    325 #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_INVALID_PARAMETER 4
    326 #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_NOT_FOUND 5
    327 #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_MULTIPLE_CREDENTIALS 6
    328 #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_LACK_OF_SPACE 7
    329 #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_PLATFORM_ERROR 8
    330 #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_AUTHENTICATOR_ERROR 9
    331 
    332 #define WEBAUTHN_ASSERTION_VERSION_1 1
    333 #define WEBAUTHN_ASSERTION_VERSION_2 2
    334 #define WEBAUTHN_ASSERTION_CURRENT_VERSION WEBAUTHN_ASSERTION_VERSION_2
    335 
    336 typedef struct _WEBAUTHN_ASSERTION {
    337   DWORD dwVersion;
    338   DWORD cbAuthenticatorData;
    339   PBYTE pbAuthenticatorData;
    340   DWORD cbSignature;
    341   PBYTE pbSignature;
    342   WEBAUTHN_CREDENTIAL Credential;
    343   DWORD cbUserId;
    344   PBYTE pbUserId;
    345   WEBAUTHN_EXTENSIONS Extensions;
    346   DWORD cbCredLargeBlob;
    347   PBYTE pbCredLargeBlob;
    348   DWORD dwCredLargeBlobStatus;
    349 } WEBAUTHN_ASSERTION, *PWEBAUTHN_ASSERTION;
    350 typedef const WEBAUTHN_ASSERTION *PCWEBAUTHN_ASSERTION;
    351 
    352 DWORD WINAPI WebAuthNGetApiVersionNumber(void);
    353 HRESULT WINAPI WebAuthNIsUserVerifyingPlatformAuthenticatorAvailable(WINBOOL *pbIsUserVerifyingPlatformAuthenticatorAvailable);
    354 HRESULT WINAPI WebAuthNAuthenticatorMakeCredential(HWND hWnd, PCWEBAUTHN_RP_ENTITY_INFORMATION pRpInformation, PCWEBAUTHN_USER_ENTITY_INFORMATION pUserInformation, PCWEBAUTHN_COSE_CREDENTIAL_PARAMETERS pPubKeyCredParams, PCWEBAUTHN_CLIENT_DATA pWebAuthNClientData, PCWEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS pWebAuthNMakeCredentialOptions, PWEBAUTHN_CREDENTIAL_ATTESTATION *ppWebAuthNCredentialAttestation);
    355 HRESULT WINAPI WebAuthNAuthenticatorGetAssertion(HWND hWnd, LPCWSTR pwszRpId, PCWEBAUTHN_CLIENT_DATA pWebAuthNClientData, PCWEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS pWebAuthNGetAssertionOptions, PWEBAUTHN_ASSERTION *ppWebAuthNAssertion);
    356 void WINAPI WebAuthNFreeCredentialAttestation(PWEBAUTHN_CREDENTIAL_ATTESTATION pWebAuthNCredentialAttestation);
    357 void WINAPI WebAuthNFreeAssertion(PWEBAUTHN_ASSERTION pWebAuthNAssertion);
    358 HRESULT WINAPI WebAuthNGetCancellationId(GUID* pCancellationId);
    359 HRESULT WINAPI WebAuthNCancelCurrentOperation(const GUID* pCancellationId);
    360 PCWSTR WINAPI WebAuthNGetErrorName(HRESULT hr);
    361 HRESULT WINAPI WebAuthNGetW3CExceptionDOMError(HRESULT hr);
    362 
    363 #ifdef __cplusplus
    364 }
    365 #endif
    366 
    367 #endif /* WINAPI_FAMILY_PARTITION */
    368 
    369 #endif /* _WEBAUTHN_H_ */