| /** |
| * This file has no copyright assigned and is placed in the Public Domain. |
| * This file is part of the mingw-w64 runtime package. |
| * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| */ |
| |
| #ifndef _WEBAUTHN_H_ |
| #define _WEBAUTHN_H_ |
| |
| #include <winapifamily.h> |
| |
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #ifndef WINAPI |
| #if defined(_ARM_) |
| #define WINAPI |
| #else |
| #define WINAPI __stdcall |
| #endif |
| #endif |
| |
| #ifndef INITGUID |
| #define INITGUID |
| #include <guiddef.h> |
| #undef INITGUID |
| #else |
| #include <guiddef.h> |
| #endif |
| |
| #define WEBAUTHN_API_VERSION_1 1 |
| #define WEBAUTHN_API_VERSION_2 2 |
| #define WEBAUTHN_API_VERSION_3 3 |
| #define WEBAUTHN_API_CURRENT_VERSION WEBAUTHN_API_VERSION_3 |
| |
| #define WEBAUTHN_RP_ENTITY_INFORMATION_CURRENT_VERSION 1 |
| |
| typedef struct _WEBAUTHN_RP_ENTITY_INFORMATION { |
| DWORD dwVersion; |
| PCWSTR pwszId; |
| PCWSTR pwszName; |
| PCWSTR pwszIcon; |
| } WEBAUTHN_RP_ENTITY_INFORMATION, *PWEBAUTHN_RP_ENTITY_INFORMATION; |
| typedef const WEBAUTHN_RP_ENTITY_INFORMATION *PCWEBAUTHN_RP_ENTITY_INFORMATION; |
| |
| #define WEBAUTHN_MAX_USER_ID_LENGTH 64 |
| |
| #define WEBAUTHN_USER_ENTITY_INFORMATION_CURRENT_VERSION 1 |
| |
| typedef struct _WEBAUTHN_USER_ENTITY_INFORMATION { |
| DWORD dwVersion; |
| DWORD cbId; |
| PBYTE pbId; |
| PCWSTR pwszName; |
| PCWSTR pwszIcon; |
| PCWSTR pwszDisplayName; |
| } WEBAUTHN_USER_ENTITY_INFORMATION, *PWEBAUTHN_USER_ENTITY_INFORMATION; |
| typedef const WEBAUTHN_USER_ENTITY_INFORMATION *PCWEBAUTHN_USER_ENTITY_INFORMATION; |
| |
| #define WEBAUTHN_HASH_ALGORITHM_SHA_256 L"SHA-256" |
| #define WEBAUTHN_HASH_ALGORITHM_SHA_384 L"SHA-384" |
| #define WEBAUTHN_HASH_ALGORITHM_SHA_512 L"SHA-512" |
| |
| #define WEBAUTHN_CLIENT_DATA_CURRENT_VERSION 1 |
| |
| typedef struct _WEBAUTHN_CLIENT_DATA { |
| DWORD dwVersion; |
| DWORD cbClientDataJSON; |
| PBYTE pbClientDataJSON; |
| LPCWSTR pwszHashAlgId; |
| } WEBAUTHN_CLIENT_DATA, *PWEBAUTHN_CLIENT_DATA; |
| typedef const WEBAUTHN_CLIENT_DATA *PCWEBAUTHN_CLIENT_DATA; |
| |
| #define WEBAUTHN_CREDENTIAL_TYPE_PUBLIC_KEY L"public-key" |
| |
| #define WEBAUTHN_COSE_ALGORITHM_ECDSA_P256_WITH_SHA256 -7 |
| #define WEBAUTHN_COSE_ALGORITHM_ECDSA_P384_WITH_SHA384 -35 |
| #define WEBAUTHN_COSE_ALGORITHM_ECDSA_P521_WITH_SHA512 -36 |
| |
| #define WEBAUTHN_COSE_ALGORITHM_RSASSA_PKCS1_V1_5_WITH_SHA256 -257 |
| #define WEBAUTHN_COSE_ALGORITHM_RSASSA_PKCS1_V1_5_WITH_SHA384 -258 |
| #define WEBAUTHN_COSE_ALGORITHM_RSASSA_PKCS1_V1_5_WITH_SHA512 -259 |
| |
| #define WEBAUTHN_COSE_ALGORITHM_RSA_PSS_WITH_SHA256 -37 |
| #define WEBAUTHN_COSE_ALGORITHM_RSA_PSS_WITH_SHA384 -38 |
| #define WEBAUTHN_COSE_ALGORITHM_RSA_PSS_WITH_SHA512 -39 |
| |
| #define WEBAUTHN_COSE_CREDENTIAL_PARAMETER_CURRENT_VERSION 1 |
| |
| typedef struct _WEBAUTHN_COSE_CREDENTIAL_PARAMETER { |
| DWORD dwVersion; |
| LPCWSTR pwszCredentialType; |
| LONG lAlg; |
| } WEBAUTHN_COSE_CREDENTIAL_PARAMETER, *PWEBAUTHN_COSE_CREDENTIAL_PARAMETER; |
| typedef const WEBAUTHN_COSE_CREDENTIAL_PARAMETER *PCWEBAUTHN_COSE_CREDENTIAL_PARAMETER; |
| |
| typedef struct _WEBAUTHN_COSE_CREDENTIAL_PARAMETERS { |
| DWORD cCredentialParameters; |
| PWEBAUTHN_COSE_CREDENTIAL_PARAMETER pCredentialParameters; |
| } WEBAUTHN_COSE_CREDENTIAL_PARAMETERS, *PWEBAUTHN_COSE_CREDENTIAL_PARAMETERS; |
| typedef const WEBAUTHN_COSE_CREDENTIAL_PARAMETERS *PCWEBAUTHN_COSE_CREDENTIAL_PARAMETERS; |
| |
| #define WEBAUTHN_CREDENTIAL_CURRENT_VERSION 1 |
| |
| typedef struct _WEBAUTHN_CREDENTIAL { |
| DWORD dwVersion; |
| DWORD cbId; |
| PBYTE pbId; |
| LPCWSTR pwszCredentialType; |
| } WEBAUTHN_CREDENTIAL, *PWEBAUTHN_CREDENTIAL; |
| typedef const WEBAUTHN_CREDENTIAL *PCWEBAUTHN_CREDENTIAL; |
| |
| typedef struct _WEBAUTHN_CREDENTIALS { |
| DWORD cCredentials; |
| PWEBAUTHN_CREDENTIAL pCredentials; |
| } WEBAUTHN_CREDENTIALS, *PWEBAUTHN_CREDENTIALS; |
| typedef const WEBAUTHN_CREDENTIALS *PCWEBAUTHN_CREDENTIALS; |
| |
| #define WEBAUTHN_CTAP_TRANSPORT_USB 0x00000001 |
| #define WEBAUTHN_CTAP_TRANSPORT_NFC 0x00000002 |
| #define WEBAUTHN_CTAP_TRANSPORT_BLE 0x00000004 |
| #define WEBAUTHN_CTAP_TRANSPORT_TEST 0x00000008 |
| #define WEBAUTHN_CTAP_TRANSPORT_INTERNAL 0x00000010 |
| #define WEBAUTHN_CTAP_TRANSPORT_FLAGS_MASK 0x0000001F |
| |
| #define WEBAUTHN_CREDENTIAL_EX_CURRENT_VERSION 1 |
| |
| typedef struct _WEBAUTHN_CREDENTIAL_EX { |
| DWORD dwVersion; |
| DWORD cbId; |
| PBYTE pbId; |
| LPCWSTR pwszCredentialType; |
| DWORD dwTransports; |
| } WEBAUTHN_CREDENTIAL_EX, *PWEBAUTHN_CREDENTIAL_EX; |
| typedef const WEBAUTHN_CREDENTIAL_EX *PCWEBAUTHN_CREDENTIAL_EX; |
| |
| typedef struct _WEBAUTHN_CREDENTIAL_LIST { |
| DWORD cCredentials; |
| PWEBAUTHN_CREDENTIAL_EX *ppCredentials; |
| } WEBAUTHN_CREDENTIAL_LIST, *PWEBAUTHN_CREDENTIAL_LIST; |
| typedef const WEBAUTHN_CREDENTIAL_LIST *PCWEBAUTHN_CREDENTIAL_LIST; |
| |
| #define WEBAUTHN_EXTENSIONS_IDENTIFIER_HMAC_SECRET L"hmac-secret" |
| |
| #define WEBAUTHN_USER_VERIFICATION_ANY 0 |
| #define WEBAUTHN_USER_VERIFICATION_OPTIONAL 1 |
| #define WEBAUTHN_USER_VERIFICATION_OPTIONAL_WITH_CREDENTIAL_ID_LIST 2 |
| #define WEBAUTHN_USER_VERIFICATION_REQUIRED 3 |
| |
| typedef struct _WEBAUTHN_CRED_PROTECT_EXTENSION_IN { |
| DWORD dwCredProtect; |
| WINBOOL bRequireCredProtect; |
| } WEBAUTHN_CRED_PROTECT_EXTENSION_IN, *PWEBAUTHN_CRED_PROTECT_EXTENSION_IN; |
| typedef const WEBAUTHN_CRED_PROTECT_EXTENSION_IN *PCWEBAUTHN_CRED_PROTECT_EXTENSION_IN; |
| |
| #define WEBAUTHN_EXTENSIONS_IDENTIFIER_CRED_PROTECT L"credProtect" |
| |
| typedef struct _WEBAUTHN_CRED_BLOB_EXTENSION { |
| DWORD cbCredBlob; |
| PBYTE pbCredBlob; |
| } WEBAUTHN_CRED_BLOB_EXTENSION, *PWEBAUTHN_CRED_BLOB_EXTENSION; |
| typedef const WEBAUTHN_CRED_BLOB_EXTENSION *PCWEBAUTHN_CRED_BLOB_EXTENSION; |
| |
| #define WEBAUTHN_EXTENSIONS_IDENTIFIER_CRED_BLOB L"credBlob" |
| |
| #define WEBAUTHN_EXTENSIONS_IDENTIFIER_MIN_PIN_LENGTH L"minPinLength" |
| |
| typedef struct _WEBAUTHN_EXTENSION { |
| LPCWSTR pwszExtensionIdentifier; |
| DWORD cbExtension; |
| PVOID pvExtension; |
| } WEBAUTHN_EXTENSION, *PWEBAUTHN_EXTENSION; |
| typedef const WEBAUTHN_EXTENSION *PCWEBAUTHN_EXTENSION; |
| |
| typedef struct _WEBAUTHN_EXTENSIONS { |
| DWORD cExtensions; |
| PWEBAUTHN_EXTENSION pExtensions; |
| } WEBAUTHN_EXTENSIONS, *PWEBAUTHN_EXTENSIONS; |
| typedef const WEBAUTHN_EXTENSIONS *PCWEBAUTHN_EXTENSIONS; |
| |
| #define WEBAUTHN_AUTHENTICATOR_ATTACHMENT_ANY 0 |
| #define WEBAUTHN_AUTHENTICATOR_ATTACHMENT_PLATFORM 1 |
| #define WEBAUTHN_AUTHENTICATOR_ATTACHMENT_CROSS_PLATFORM 2 |
| #define WEBAUTHN_AUTHENTICATOR_ATTACHMENT_CROSS_PLATFORM_U2F_V2 3 |
| |
| #define WEBAUTHN_USER_VERIFICATION_REQUIREMENT_ANY 0 |
| #define WEBAUTHN_USER_VERIFICATION_REQUIREMENT_REQUIRED 1 |
| #define WEBAUTHN_USER_VERIFICATION_REQUIREMENT_PREFERRED 2 |
| #define WEBAUTHN_USER_VERIFICATION_REQUIREMENT_DISCOURAGED 3 |
| |
| #define WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_ANY 0 |
| #define WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_NONE 1 |
| #define WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_INDIRECT 2 |
| #define WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_DIRECT 3 |
| |
| #define WEBAUTHN_ENTERPRISE_ATTESTATION_NONE 0 |
| #define WEBAUTHN_ENTERPRISE_ATTESTATION_VENDOR_FACILITATED 1 |
| #define WEBAUTHN_ENTERPRISE_ATTESTATION_PLATFORM_MANAGED 2 |
| |
| #define WEBAUTHN_LARGE_BLOB_SUPPORT_NONE 0 |
| #define WEBAUTHN_LARGE_BLOB_SUPPORT_REQUIRED 1 |
| #define WEBAUTHN_LARGE_BLOB_SUPPORT_PREFERRED 2 |
| |
| #define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_1 1 |
| #define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_2 2 |
| #define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_3 3 |
| #define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_4 4 |
| #define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_4 |
| |
| typedef struct _WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS { |
| DWORD dwVersion; |
| DWORD dwTimeoutMilliseconds; |
| WEBAUTHN_CREDENTIALS CredentialList; |
| WEBAUTHN_EXTENSIONS Extensions; |
| DWORD dwAuthenticatorAttachment; |
| WINBOOL bRequireResidentKey; |
| DWORD dwUserVerificationRequirement; |
| DWORD dwAttestationConveyancePreference; |
| DWORD dwFlags; |
| GUID *pCancellationId; |
| PWEBAUTHN_CREDENTIAL_LIST pExcludeCredentialList; |
| DWORD dwEnterpriseAttestation; |
| DWORD dwLargeBlobSupport; |
| WINBOOL bPreferResidentKey; |
| } WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS, *PWEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS; |
| typedef const WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS *PCWEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS; |
| |
| #define WEBAUTHN_CRED_LARGE_BLOB_OPERATION_NONE 0 |
| #define WEBAUTHN_CRED_LARGE_BLOB_OPERATION_GET 1 |
| #define WEBAUTHN_CRED_LARGE_BLOB_OPERATION_SET 2 |
| #define WEBAUTHN_CRED_LARGE_BLOB_OPERATION_DELETE 3 |
| |
| #define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_1 1 |
| #define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_2 2 |
| #define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_3 3 |
| #define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_4 4 |
| #define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_5 5 |
| #define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_5 |
| |
| typedef struct _WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS { |
| DWORD dwVersion; |
| DWORD dwTimeoutMilliseconds; |
| WEBAUTHN_CREDENTIALS CredentialList; |
| WEBAUTHN_EXTENSIONS Extensions; |
| DWORD dwAuthenticatorAttachment; |
| DWORD dwUserVerificationRequirement; |
| DWORD dwFlags; |
| PCWSTR pwszU2fAppId; |
| WINBOOL *pbU2fAppId; |
| GUID *pCancellationId; |
| PWEBAUTHN_CREDENTIAL_LIST pAllowCredentialList; |
| DWORD dwCredLargeBlobOperation; |
| DWORD cbCredLargeBlob; |
| PBYTE pbCredLargeBlob; |
| } WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS, *PWEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS; |
| typedef const WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS *PCWEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS; |
| |
| #define WEBAUTHN_ATTESTATION_DECODE_NONE 0 |
| #define WEBAUTHN_ATTESTATION_DECODE_COMMON 1 |
| |
| #define WEBAUTHN_ATTESTATION_VER_TPM_2_0 L"2.0" |
| |
| typedef struct _WEBAUTHN_X5C { |
| DWORD cbData; |
| PBYTE pbData; |
| } WEBAUTHN_X5C, *PWEBAUTHN_X5C; |
| |
| #define WEBAUTHN_COMMON_ATTESTATION_CURRENT_VERSION 1 |
| |
| typedef struct _WEBAUTHN_COMMON_ATTESTATION { |
| DWORD dwVersion; |
| PCWSTR pwszAlg; |
| LONG lAlg; |
| DWORD cbSignature; |
| PBYTE pbSignature; |
| DWORD cX5c; |
| PWEBAUTHN_X5C pX5c; |
| PCWSTR pwszVer; |
| DWORD cbCertInfo; |
| PBYTE pbCertInfo; |
| DWORD cbPubArea; |
| PBYTE pbPubArea; |
| } WEBAUTHN_COMMON_ATTESTATION, *PWEBAUTHN_COMMON_ATTESTATION; |
| typedef const WEBAUTHN_COMMON_ATTESTATION *PCWEBAUTHN_COMMON_ATTESTATION; |
| |
| #define WEBAUTHN_ATTESTATION_TYPE_PACKED L"packed" |
| #define WEBAUTHN_ATTESTATION_TYPE_U2F L"fido-u2f" |
| #define WEBAUTHN_ATTESTATION_TYPE_TPM L"tpm" |
| #define WEBAUTHN_ATTESTATION_TYPE_NONE L"none" |
| |
| #define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_1 1 |
| #define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_2 2 |
| #define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_3 3 |
| #define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_4 4 |
| #define WEBAUTHN_CREDENTIAL_ATTESTATION_CURRENT_VERSION WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_4 |
| |
| typedef struct _WEBAUTHN_CREDENTIAL_ATTESTATION { |
| DWORD dwVersion; |
| PCWSTR pwszFormatType; |
| DWORD cbAuthenticatorData; |
| PBYTE pbAuthenticatorData; |
| DWORD cbAttestation; |
| PBYTE pbAttestation; |
| DWORD dwAttestationDecodeType; |
| PVOID pvAttestationDecode; |
| DWORD cbAttestationObject; |
| PBYTE pbAttestationObject; |
| DWORD cbCredentialId; |
| PBYTE pbCredentialId; |
| WEBAUTHN_EXTENSIONS Extensions; |
| DWORD dwUsedTransport; |
| WINBOOL bEpAtt; |
| WINBOOL bLargeBlobSupported; |
| WINBOOL bResidentKey; |
| } WEBAUTHN_CREDENTIAL_ATTESTATION, *PWEBAUTHN_CREDENTIAL_ATTESTATION; |
| typedef const WEBAUTHN_CREDENTIAL_ATTESTATION *PCWEBAUTHN_CREDENTIAL_ATTESTATION; |
| |
| #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_NONE 0 |
| #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_SUCCESS 1 |
| #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_NOT_SUPPORTED 2 |
| #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_INVALID_DATA 3 |
| #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_INVALID_PARAMETER 4 |
| #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_NOT_FOUND 5 |
| #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_MULTIPLE_CREDENTIALS 6 |
| #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_LACK_OF_SPACE 7 |
| #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_PLATFORM_ERROR 8 |
| #define WEBAUTHN_CRED_LARGE_BLOB_STATUS_AUTHENTICATOR_ERROR 9 |
| |
| #define WEBAUTHN_ASSERTION_VERSION_1 1 |
| #define WEBAUTHN_ASSERTION_VERSION_2 2 |
| #define WEBAUTHN_ASSERTION_CURRENT_VERSION WEBAUTHN_ASSERTION_VERSION_2 |
| |
| typedef struct _WEBAUTHN_ASSERTION { |
| DWORD dwVersion; |
| DWORD cbAuthenticatorData; |
| PBYTE pbAuthenticatorData; |
| DWORD cbSignature; |
| PBYTE pbSignature; |
| WEBAUTHN_CREDENTIAL Credential; |
| DWORD cbUserId; |
| PBYTE pbUserId; |
| WEBAUTHN_EXTENSIONS Extensions; |
| DWORD cbCredLargeBlob; |
| PBYTE pbCredLargeBlob; |
| DWORD dwCredLargeBlobStatus; |
| } WEBAUTHN_ASSERTION, *PWEBAUTHN_ASSERTION; |
| typedef const WEBAUTHN_ASSERTION *PCWEBAUTHN_ASSERTION; |
| |
| DWORD WINAPI WebAuthNGetApiVersionNumber(void); |
| HRESULT WINAPI WebAuthNIsUserVerifyingPlatformAuthenticatorAvailable(WINBOOL *pbIsUserVerifyingPlatformAuthenticatorAvailable); |
| 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); |
| HRESULT WINAPI WebAuthNAuthenticatorGetAssertion(HWND hWnd, LPCWSTR pwszRpId, PCWEBAUTHN_CLIENT_DATA pWebAuthNClientData, PCWEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS pWebAuthNGetAssertionOptions, PWEBAUTHN_ASSERTION *ppWebAuthNAssertion); |
| void WINAPI WebAuthNFreeCredentialAttestation(PWEBAUTHN_CREDENTIAL_ATTESTATION pWebAuthNCredentialAttestation); |
| void WINAPI WebAuthNFreeAssertion(PWEBAUTHN_ASSERTION pWebAuthNAssertion); |
| HRESULT WINAPI WebAuthNGetCancellationId(GUID* pCancellationId); |
| HRESULT WINAPI WebAuthNCancelCurrentOperation(const GUID* pCancellationId); |
| PCWSTR WINAPI WebAuthNGetErrorName(HRESULT hr); |
| HRESULT WINAPI WebAuthNGetW3CExceptionDOMError(HRESULT hr); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* WINAPI_FAMILY_PARTITION */ |
| |
| #endif /* _WEBAUTHN_H_ */ |