webauthn.h 13 KB

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