# 通行密钥

#### 概述

提供通行密钥能力。

**系统能力：** SystemCapability.Security.FIDO2

**起始版本：** 6.0.0(20)

#### 汇总

#### 文件

| 名称 | 描述 |
| --- | --- |
| fido2_api.h | 本声明用于访问FIDO2的API。提供FIDO2（通行密钥）能力的相关接口。FIDO2的基础核心能力，包含：获取支持的FIDO2能力、获取平台认证器能力、注册通行密钥能力和使用通行密钥认证能力。 |

#### 结构体

| 名称 | 描述 |
| --- | --- |
| struct Uint8Buff | 定义uint8_t字节流。 |
| struct AuthenticationExtensionsClientOutputs | 身份认证扩展输出。 |
| struct FIDO2_AuthenticatorResponse | 定义获取认证器断言响应的结构体。 |
| struct FIDO2_PublicKeyAssertionCredential | 定义获取认证结果结构体。 |
| struct FIDO2_AuthenticatorTransportArray | 认证器传输方式数组。 |
| struct FIDO2_AuthenticatorAttestationResponse | 认证器声明响应。 |
| struct FIDO2_PublicKeyAttestationCredential | 定义获取注册结果结构体。 |
| struct FIDO2_AuthenticatorSelectionCriteria | 由WebAuthn依赖方（即接入协议的应用或网页）指定，与认证器有关。 |
| struct FIDO2_PublicKeyCredentialDescriptor | 用于注册或认证凭据的参数。 |
| struct FIDO2_PublicKeyCredentialParameters | 认证凭据的附加参数。 |
| struct FIDO2_PublicKeyCredentialUserEntity | 创建新凭据时用户的属性。 |
| struct FIDO2_PublicKeyCredentialRpEntity | 创建新凭据时依赖方的属性。 |
| struct FIDO2_PublicKeyCredentialDescriptorArray | PublicKey凭证描述符数组。 |
| struct FIDO2_PublicKeyCredentialHintArray | 认证方式指示数组。 |
| struct FIDO2_PublicKeyCredentialRequestOptions | 定义通行密钥认证请求参数。 |
| struct FIDO2_CredentialCreationOptionArray | 认证凭据的附加参数数组。 |
| struct FIDO2_AttestationFormatsArray | 依赖方的数组可以使用此成员指定一个关于认证方使用的证明语句格式的首选项。 |
| struct FIDO2_PublicKeyCredentialCreationOptions | 创建新的认证凭据的选项。 |
| struct FIDO2_CredentialCreationOptions | 凭据请求的选项。 |
| struct FIDO2_AuthenticatorMetadata | 认证器元数据。 |
| struct FIDO2_CredentialRequestOptions | 认证信息字典对象。 |
| struct FIDO2_AuthenticatorMetadataArray | 描述支持的认证器数组。 |
| struct FIDO2_Capability | 通行密钥能力的结构体。 |
| struct FIDO2_CapabilityArray | 描述能力数组。 |
| struct FIDO2_TokenBinding | Token binding协议，用于客户端与依赖方通信。 |

#### 类型定义

| 名称 | 描述 |
| --- | --- |
| typedef struct Uint8Buff Uint8Buff | 定义uint8_t字节流。 |
| typedef enum FIDO2_TokenBindingStatus FIDO2_TokenBindingStatus | TokenBinding协议的状态。 |
| typedef enum FIDO2_AttestationConveyancePreference FIDO2_AttestationConveyancePreference | 供WebAuthn依赖方在生成凭据时参考，以指定凭据传递的首选项。 |
| typedef enum FIDO2_UserVerificationRequirement FIDO2_UserVerificationRequirement | 依赖方可能需要对某些操作进行用户鉴权（认证当前用户是否为用户）， 但不需要对其他操作进行认证。定义枚举类型是为了区分不同的需求级别。 |
| typedef enum FIDO2_AuthenticatorAttachment FIDO2_AuthenticatorAttachment | 认证器信息（平台、漫游）。 |
| typedef enum FIDO2_AuthenticatorTransport FIDO2_AuthenticatorTransport | 认证器传输方式的枚举。 |
| typedef enum FIDO2_Algorithm FIDO2_Algorithm | 加密算法的枚举。 |
| typedef enum FIDO2_PublicKeyCredentialHint FIDO2_PublicKeyCredentialHint | 认证方式指示的枚举。 |
| typedef enum FIDO2_PublicKeyCredentialType FIDO2_PublicKeyCredentialType | 公钥凭据类型的枚举。 |
| typedef enum FIDO2_Uvm FIDO2_Uvm | UVM的枚举。 |
| typedef enum FIDO2_ClientCapability FIDO2_ClientCapability | 客户端能力的枚举。 |
| typedef enum FIDO2_CredentialMediationRequirement FIDO2_CredentialMediationRequirement | 用户介入要求的枚举。 |
| typedef enum FIDO2_ErrorCode FIDO2_ErrorCode | 错误码定义。 |
| typedef struct AuthenticationExtensionsClientOutputs AuthenticationExtensionsClientOutputs | 身份认证扩展输出。 |
| typedef struct FIDO2_AuthenticatorResponse FIDO2_AuthenticatorResponse | 定义获取认证器断言响应的结构体。 |
| typedef struct FIDO2_PublicKeyAssertionCredential FIDO2_PublicKeyAssertionCredential | 定义获取认证结果结构体。 |
| typedef struct FIDO2_AuthenticatorTransportArray FIDO2_AuthenticatorTransportArray | 认证器传输方式数组。 |
| typedef struct FIDO2_AuthenticatorAttestationResponse FIDO2_AuthenticatorAttestationResponse | 认证器声明响应。 |
| typedef struct FIDO2_PublicKeyAttestationCredential FIDO2_PublicKeyAttestationCredential | 定义获取注册结果结构体。 |
| typedef struct FIDO2_AuthenticatorSelectionCriteria FIDO2_AuthenticatorSelectionCriteria | 由WebAuthn依赖方指定，与认证器有关。 |
| typedef struct FIDO2_PublicKeyCredentialDescriptor FIDO2_PublicKeyCredentialDescriptor | 用于注册或认证凭据的参数。 |
| typedef struct FIDO2_PublicKeyCredentialParameters FIDO2_PublicKeyCredentialParameters | 认证凭据的附加参数。 |
| typedef struct FIDO2_PublicKeyCredentialUserEntity FIDO2_PublicKeyCredentialUserEntity | 创建新凭据时用户的属性。 |
| typedef struct FIDO2_PublicKeyCredentialRpEntity FIDO2_PublicKeyCredentialRpEntity | 创建新凭据时依赖方的属性。 |
| typedef struct FIDO2_PublicKeyCredentialDescriptorArray FIDO2_PublicKeyCredentialDescriptorArray | PublicKey凭证描述符数组。 |
| typedef struct FIDO2_PublicKeyCredentialHintArray FIDO2_PublicKeyCredentialHintArray | 认证方式指示数组。 |
| typedef struct FIDO2_PublicKeyCredentialRequestOptions FIDO2_PublicKeyCredentialRequestOptions | 定义通行密钥认证请求参数。 |
| typedef struct FIDO2_CredentialCreationOptionArray FIDO2_CredentialCreationOptionArray | 认证凭据的附加参数数组。 |
| typedef struct FIDO2_AttestationFormatsArray FIDO2_AttestationFormatsArray | 依赖方的数组可以使用此成员指定一个关于认证方使用的证明语句格式的首选项。 |
| typedef struct FIDO2_PublicKeyCredentialCreationOptions FIDO2_PublicKeyCredentialCreationOptions | 创建新的认证凭据的选项。 |
| typedef struct FIDO2_CredentialCreationOptions FIDO2_CredentialCreationOptions | 凭据请求的选项。 |
| typedef struct FIDO2_AuthenticatorMetadata FIDO2_AuthenticatorMetadata | 认证器元数据。 |
| typedef struct FIDO2_CredentialRequestOptions FIDO2_CredentialRequestOptions | 认证信息字典对象。 |
| typedef struct FIDO2_AuthenticatorMetadataArray FIDO2_AuthenticatorMetadataArray | 描述支持的认证器数组。 |
| typedef struct FIDO2_Capability FIDO2_Capability | 通行密钥能力的结构体。 |
| typedef struct FIDO2_CapabilityArray FIDO2_CapabilityArray | 描述能力数组。 |
| typedef struct FIDO2_TokenBinding FIDO2_TokenBinding | Token binding（协议），用于客户端与依赖方通信。 |

#### 枚举

| 名称 | 描述 |
| --- | --- |
| FIDO2_TokenBindingStatus { FIDO2_PRESENT = 0, FIDO2_SUPPORTED = 1 } | TokenBinding协议的状态。 |
| FIDO2_AttestationConveyancePreference { FIDO2_NONE = 0, FIDO2_INDIRECT = 1, FIDO2_DIRECT = 2, FIDO2_ENTERPRISE = 3 } | 供WebAuthn依赖方在生成凭据时参考，以指定凭据传递的首选项。 |
| FIDO2_UserVerificationRequirement { FIDO2_REQUIRED = 0, FIDO2_PREFERRED = 1, FIDO2_DISCOURAGED = 2 } | 依赖方可能需要对某些操作进行用户鉴权（认证当前用户是否为用户）， 但不需要对其他操作进行认证。定义枚举类型是为了区分不同的需求级别。 |
| FIDO2_AuthenticatorAttachment { FIDO2_PLATFORM = 0, FIDO2_CROSS_PLATFORM = 1 } | 认证器信息（平台、漫游）。 |
| FIDO2_AuthenticatorTransport { FIDO2_USB = 0, FIDO2_NFC = 1, FIDO2_BLE = 2, FIDO2_SMART_CARD = 3, FIDO2_HYBRID = 4, FIDO2_INTERNAL = 5 } | 认证器传输方式的枚举。 |
| FIDO2_Algorithm { FIDO2_ES256 = -7, FIDO2_ES384 = -35, FIDO2_ES512 = -36, FIDO2_RS256 = -257, FIDO2_RS384 = -258, FIDO2_RS512 = -259, FIDO2_PS256 = -37, FIDO2_PS384 = -38, FIDO2_PS512 = -39 } | 加密算法的枚举。 |
| FIDO2_PublicKeyCredentialHint { FIDO2_SECURITY_KEY = 0, FIDO2_CLIENT_DEVICE = 1, FIDO2_HINT_HYBRID = 2 } | 认证方式指示的枚举。 |
| FIDO2_PublicKeyCredentialType { FIDO2_PUBLIC_KEY = 0 } | 公钥凭据类型的枚举。 |
| FIDO2_Uvm { FIDO2_UVM_FINGERPRINT = 2, FIDO2_UVM_PIN = 4, FIDO2_UVM_FACEPRINT = 16 } | UVM的枚举。 |
| FIDO2_ClientCapability { FIDO2_CONDITIONAL_CREATE = 0, FIDO2_CONDITIONAL_GET = 1, FIDO2_HYBRID_TRANSPORT = 2, FIDO2_PASSKEY_PLATFORM_AUTHENTICATOR = 3, FIDO2_USER_VERIFYING_PLATFORM_AUTHENTICATOR = 4, FIDO2_RELATED_ORIGINS = 5, FIDO2_SIGNAL_ALL_ACCEPTED_CREDENTIALS = 6, FIDO2_SIGNAL_CURRENT_USER_DETAILS = 7, FIDO2_SIGNAL_UNKNOWN_CREDENTIAL = 8, FIDO2_EXTENSION_UVI = 9, FIDO2_EXTENSION_LARGEBLOB = 10 } | 客户端能力的枚举。 |
| FIDO2_CredentialMediationRequirement { FIDO2_SILENT = 0, FIDO2_OPTIONAL = 1, FIDO2_CONDITIONAL = 2, FIDO2_MEDIATION_REQUIRED = 3 } | 用户介入要求的枚举。 |
| FIDO2_ErrorCode { FIDO2_SUCCESS = 0, FIDO2_PERMISSION_DENIED = 201, FIDO2_DEVICE_NOT_SUPPORT = 801, FIDO2_NOT_SUPPORT = 1021300001, FIDO2_INVALID_STATE = 1021300002, FIDO2_INTEGRITY_CHECK_FAILED = 1021300003, FIDO2_USER_ABORT = 1021300004, FIDO2_TIMEOUT = 1021300005, FIDO2_ENCODING_ERROR = 1021300006, FIDO2_UNKNOWN_ERROR = 1021300007, FIDO2_CONSTRAINT_ERROR = 1021300008, FIDO2_DATA_ERROR = 1021300009, FIDO2_USER_REJECTS = 1021300010, FIDO2_CONNECT_SERVICE_FAILED = 1021300011, FIDO2_MAX_CRED_NUM_REACHED = 1021300012, FIDO2_INVALID_CTAP_COMMAND = 1021310001, FIDO2_INVALID_PARAMETERS = 1021310002, FIDO2_INVALID_MESSAGE_OR_ATTRIBUTE_LENGTH = 1021310003, FIDO2_INVALID_CBOR_OR_UNPREDICTABLE = 1021310004, FIDO2_PARSE_CBOR_FAILED = 1021310005, FIDO2_INVALID_CREDENTIALS = 1021310006, FIDO2_NOT_ALLOWED = 1021310007, FIDO2_USER_VERIFICATION_FAILED = 1021310008, FIDO2_OTHER_ERROR = 1021310009 } | 错误码定义。 |

#### 函数

| 名称 | 描述 |
| --- | --- |
| void HMS_FIDO2_initCreationOptions (FIDO2_CredentialCreationOptions *options) | 初始化FIDO2_CredentialCreationOptions结构。 |
| void HMS_FIDO2_initTokenBinding (FIDO2_TokenBinding *tokenBinding) | 初始化FIDO2_TokenBinding结构体。 |
| void HMS_FIDO2_initRequestOptions (FIDO2_CredentialRequestOptions *options) | 初始化FIDO2_CredentialRequestOptions结构。 |
| FIDO2_ErrorCode HMS_FIDO2_getClientCapability (FIDO2_CapabilityArray **capability) | 查询当前设备支持的客户端能力列表。当给定功能的值为true时，表示通行密钥客户端当前支持该能力。 |
| FIDO2_ErrorCode HMS_FIDO2_getPlatformAuthenticator (FIDO2_AuthenticatorMetadataArray **authenticators) | 获取支持的平台身份认证器列表。 |
| FIDO2_ErrorCode HMS_FIDO2_register (const FIDO2_CredentialCreationOptions options, const FIDO2_TokenBinding tokenBinding, const char *origin, FIDO2_PublicKeyAttestationCredential **publicKeyAttestationCredential) | 通行密钥注册。 |
| FIDO2_ErrorCode HMS_FIDO2_authenticate (const FIDO2_CredentialRequestOptions options, const FIDO2_TokenBinding tokenBinding, const char *origin, FIDO2_PublicKeyAssertionCredential **publicKeyAssertionCredential) | 通行密钥认证。 |
| void HMS_FIDO2_CapabilityArray_Destroy (FIDO2_CapabilityArray *capability) | 释放能力的数组。 |
| void HMS_FIDO2_AuthenticatorMetadataArray_Destroy (FIDO2_AuthenticatorMetadataArray *authenticators) | 释放认证者元数据数组。 |
| void HMS_FIDO2_PublicKeyAttestationCredential_Destroy (FIDO2_PublicKeyAttestationCredential *publicKeyAttestationCredential) | 释放PublicKeyAttestationCredential的结构体。 |
| void HMS_FIDO2_PublicKeyAssertionCredential_Destroy (FIDO2_PublicKeyAssertionCredential *publicKeyAssertionCredential) | 释放PublicKeyAssertionCredential的结构体。 |

#### 类型定义说明

#### AuthenticationExtensionsClientOutputs

```
typedef struct AuthenticationExtensionsClientOutputs AuthenticationExtensionsClientOutputs
```

**描述**

身份认证扩展输出。

**起始版本：** 6.0.0(20)

#### FIDO2\_Algorithm

```
typedef enum FIDO2_Algorithm FIDO2_Algorithm
```

**描述**

算法的枚举。

**起始版本：** 6.0.0(20)

#### FIDO2\_AttestationConveyancePreference

```
typedef enum FIDO2_AttestationConveyancePreference FIDO2_AttestationConveyancePreference
```

**描述**

供WebAuthn依赖方在生成凭据时参考，以指定凭据传递的首选项。

**起始版本：** 6.0.0(20)

#### FIDO2\_AttestationFormatsArray

```
typedef struct FIDO2_AttestationFormatsArray FIDO2_AttestationFormatsArray
```

**描述**

依赖方的数组可以使用此成员指定一个关于认证方使用的证明语句格式的首选项。

**起始版本：** 6.0.0(20)

#### FIDO2\_AuthenticatorAttachment

```
typedef enum FIDO2_AuthenticatorAttachment FIDO2_AuthenticatorAttachment
```

**描述**

认证器信息（平台、漫游）。

**起始版本：** 6.0.0(20)

#### FIDO2\_AuthenticatorAttestationResponse

```
typedef struct FIDO2_AuthenticatorAttestationResponse FIDO2_AuthenticatorAttestationResponse
```

**描述**

认证器声明响应。

**起始版本：** 6.0.0(20)

#### FIDO2\_AuthenticatorMetadata

```
typedef struct FIDO2_AuthenticatorMetadata FIDO2_AuthenticatorMetadata
```

**描述**

认证器元数据。

**起始版本：** 6.0.0(20)

#### FIDO2\_AuthenticatorMetadataArray

```
typedef struct FIDO2_AuthenticatorMetadataArray FIDO2_AuthenticatorMetadataArray
```

**描述**

描述支持的认证器数组。

**起始版本：** 6.0.0(20)

#### FIDO2\_AuthenticatorResponse

```
typedef struct FIDO2_AuthenticatorResponse FIDO2_AuthenticatorResponse
```

**描述**

定义获取认证器断言响应的结构体。

**起始版本：** 6.0.0(20)

#### FIDO2\_AuthenticatorSelectionCriteria

```
typedef struct FIDO2_AuthenticatorSelectionCriteria FIDO2_AuthenticatorSelectionCriteria
```

**描述**

由WebAuthn依赖方指定，与认证器有关。

**起始版本：** 6.0.0(20)

#### FIDO2\_AuthenticatorTransport

```
typedef enum FIDO2_AuthenticatorTransport FIDO2_AuthenticatorTransport
```

**描述**

认证器传输方式的枚举。

**起始版本：** 6.0.0(20)

#### FIDO2\_AuthenticatorTransportArray

```
typedef struct FIDO2_AuthenticatorTransportArray FIDO2_AuthenticatorTransportArray
```

**描述**

认证器传输方式数组。

**起始版本：** 6.0.0(20)

#### FIDO2\_Capability

```
typedef struct FIDO2_Capability FIDO2_Capability
```

**描述**

通行密钥能力的结构体。

**起始版本：** 6.0.0(20)

#### FIDO2\_CapabilityArray

```
typedef struct FIDO2_CapabilityArray FIDO2_CapabilityArray
```

**描述**

描述能力数组。

**起始版本：** 6.0.0(20)

#### FIDO2\_ClientCapability

```
typedef enum FIDO2_ClientCapability FIDO2_ClientCapability
```

**描述**

客户端能力的枚举。

**起始版本：** 6.0.0(20)

#### FIDO2\_CredentialCreationOptionArray

```
typedef struct FIDO2_CredentialCreationOptionArray FIDO2_CredentialCreationOptionArray
```

**描述**

认证凭据的附加参数数组。

**起始版本：** 6.0.0(20)

#### FIDO2\_CredentialCreationOptions

```
typedef struct FIDO2_CredentialCreationOptions FIDO2_CredentialCreationOptions
```

**描述**

凭据请求的选项。

**起始版本：** 6.0.0(20)

#### FIDO2\_CredentialMediationRequirement

```
typedef enum FIDO2_CredentialMediationRequirement FIDO2_CredentialMediationRequirement
```

**描述**

用户介入要求的枚举。

**起始版本：** 6.0.0(20)

#### FIDO2\_CredentialRequestOptions

```
typedef struct FIDO2_CredentialRequestOptions FIDO2_CredentialRequestOptions
```

**描述**

认证信息字典对象。

**起始版本：** 6.0.0(20)

#### FIDO2\_ErrorCode

```
typedef enum FIDO2_ErrorCode FIDO2_ErrorCode
```

**描述**

错误码定义。

**起始版本：** 6.0.0(20)

#### FIDO2\_PublicKeyAssertionCredential

```
typedef struct FIDO2_PublicKeyAssertionCredential FIDO2_PublicKeyAssertionCredential
```

**描述**

定义获取认证结果结构体。

**起始版本：** 6.0.0(20)

#### FIDO2\_PublicKeyAttestationCredential

```
typedef struct FIDO2_PublicKeyAttestationCredential FIDO2_PublicKeyAttestationCredential
```

**描述**

定义获取注册结果结构体。

**起始版本：** 6.0.0(20)

#### FIDO2\_PublicKeyCredentialCreationOptions

```
typedef struct FIDO2_PublicKeyCredentialCreationOptions FIDO2_PublicKeyCredentialCreationOptions
```

**描述**

创建新的认证凭据的选项。

**起始版本：** 6.0.0(20)

#### FIDO2\_PublicKeyCredentialDescriptor

```
typedef struct FIDO2_PublicKeyCredentialDescriptor FIDO2_PublicKeyCredentialDescriptor
```

**描述**

用于注册或认证凭据的参数。

**起始版本：** 6.0.0(20)

#### FIDO2\_PublicKeyCredentialDescriptorArray

```
typedef struct FIDO2_PublicKeyCredentialDescriptorArray FIDO2_PublicKeyCredentialDescriptorArray
```

**描述**

PublicKey凭证描述符数组。

**起始版本：** 6.0.0(20)

#### FIDO2\_PublicKeyCredentialHint

```
typedef enum FIDO2_PublicKeyCredentialHint FIDO2_PublicKeyCredentialHint
```

**描述**

认证方式指示的枚举。

**起始版本：** 6.0.0(20)

#### FIDO2\_PublicKeyCredentialHintArray

```
typedef struct FIDO2_PublicKeyCredentialHintArray FIDO2_PublicKeyCredentialHintArray
```

**描述**

认证方式指示数组。

**起始版本：** 6.0.0(20)

#### FIDO2\_PublicKeyCredentialParameters

```
typedef struct FIDO2_PublicKeyCredentialParameters FIDO2_PublicKeyCredentialParameters
```

**描述**

认证凭据的附加参数。

**起始版本：** 6.0.0(20)

#### FIDO2\_PublicKeyCredentialRequestOptions

```
typedef struct FIDO2_PublicKeyCredentialRequestOptions FIDO2_PublicKeyCredentialRequestOptions
```

**描述**

定义通行密钥认证请求参数。

**起始版本：** 6.0.0(20)

#### FIDO2\_PublicKeyCredentialRpEntity

```
typedef struct FIDO2_PublicKeyCredentialRpEntity FIDO2_PublicKeyCredentialRpEntity
```

**描述**

创建新凭据时依赖方的属性。

**起始版本：** 6.0.0(20)

#### FIDO2\_PublicKeyCredentialType

```
typedef enum FIDO2_PublicKeyCredentialType FIDO2_PublicKeyCredentialType
```

**描述**

公钥凭据类型的枚举。

**起始版本：** 6.0.0(20)

#### FIDO2\_PublicKeyCredentialUserEntity

```
typedef struct FIDO2_PublicKeyCredentialUserEntity FIDO2_PublicKeyCredentialUserEntity
```

**描述**

创建新凭据时用户的属性。

**起始版本：** 6.0.0(20)

#### FIDO2\_TokenBinding

```
typedef struct FIDO2_TokenBinding FIDO2_TokenBinding
```

**描述**

Token binding协议，用于客户端与依赖方通信。

**起始版本：** 6.0.0(20)

#### FIDO2\_TokenBindingStatus

```
typedef enum FIDO2_TokenBindingStatus FIDO2_TokenBindingStatus
```

**描述**

TokenBinding协议的状态。

**起始版本：** 6.0.0(20)

#### FIDO2\_UserVerificationRequirement

```
typedef enum FIDO2_UserVerificationRequirement FIDO2_UserVerificationRequirement
```

**描述**

依赖方可能需要对某些操作进行用户鉴权（认证当前用户是否为用户）， 但不需要对其他操作进行认证。定义枚举类型是为了区分不同的需求级别。

**起始版本：** 6.0.0(20)

#### FIDO2\_Uvm

```
typedef enum FIDO2_Uvm FIDO2_Uvm
```

**描述**

UVM的枚举。

**起始版本：** 6.0.0(20)

#### Uint8Buff

```
typedef struct Uint8Buff Uint8Buff
```

**描述**

定义uint8\_t字节流。

**起始版本：** 6.0.0(20)

#### 枚举类型说明

#### FIDO2\_Algorithm

```
enum FIDO2_Algorithm
```

**描述**

加密算法的枚举。

**起始版本：** 6.0.0(20)

| 枚举值 | 描述 |
| --- | --- |
| FIDO2_ES256 | ES256算法。 |
| FIDO2_ES384 | ES384算法。 |
| FIDO2_ES512 | ES512算法。 |
| FIDO2_RS256 | RS256算法。 |
| FIDO2_RS384 | RS384算法。 |
| FIDO2_RS512 | RS512算法。 |
| FIDO2_PS256 | PS256算法。 |
| FIDO2_PS384 | PS384算法。 |
| FIDO2_PS512 | PS512算法。 |

#### FIDO2\_AttestationConveyancePreference

```
enum FIDO2_AttestationConveyancePreference
```

**描述**

供WebAuthn依赖方在生成凭据时参考，以指定凭据传递的首选项。

**起始版本：** 6.0.0(20)

| 枚举值 | 描述 |
| --- | --- |
| FIDO2_NONE | 依赖方对认证者证明不感兴趣，默认值为FIDO2_NONE。 |
| FIDO2_INDIRECT | 间接依赖方倾向于提供可认证的证明声明文档，但允许用户决定如何获得这种证明声明。 |
| FIDO2_DIRECT | 直接依赖方希望接收认证者生成的证明声明。 |
| FIDO2_ENTERPRISE | 依赖方希望接收企业证明。企业证明是一个证明声明， 其中可能包括唯一标识认证者的信息。 |

#### FIDO2\_AuthenticatorAttachment

```
enum FIDO2_AuthenticatorAttachment
```

**描述**

认证器信息（平台、漫游）。

**起始版本：** 6.0.0(20)

| 枚举值 | 描述 |
| --- | --- |
| FIDO2_PLATFORM | 平台认证器，例如PIN码、指纹、人脸等。 |
| FIDO2_CROSS_PLATFORM | 跨平台认证器，即漫游认证器，包括蓝牙、NFC、USB等。 |

#### FIDO2\_AuthenticatorTransport

```
enum FIDO2_AuthenticatorTransport
```

**描述**

认证器传输方式的枚举，表示认证器和客户端设备之间传递认证数据的方式。

**起始版本：** 6.0.0(20)

| 枚举值 | 描述 |
| --- | --- |
| FIDO2_USB | USB方式。 |
| FIDO2_NFC | NFC方式。 |
| FIDO2_BLE | BLE方式。 |
| FIDO2_SMART_CARD | 智能卡方式。 |
| FIDO2_HYBRID | 混合方式。即支持多种传输方式 |
| FIDO2_INTERNAL | 内部方式。 |

#### FIDO2\_ClientCapability

```
enum FIDO2_ClientCapability
```

**描述**

客户端能力的枚举。

**起始版本：** 6.0.0(20)

| 枚举值 | 描述 |
| --- | --- |
| FIDO2_CONDITIONAL_CREATE | 通行密钥注册。 |
| FIDO2_CONDITIONAL_GET | 通行密钥认证。 |
| FIDO2_HYBRID_TRANSPORT | 混合传输，表示支持多种传输方式。 |
| FIDO2_PASSKEY_PLATFORM_AUTHENTICATOR | Passkey平台认证器。 |
| FIDO2_USER_VERIFYING_PLATFORM_AUTHENTICATOR | 用户认证平台认证器。 |
| FIDO2_RELATED_ORIGINS | 支持相关源/域的凭据操作。 |
| FIDO2_SIGNAL_ALL_ACCEPTED_CREDENTIALS | 发送所有接受的凭据。 |
| FIDO2_SIGNAL_CURRENT_USER_DETAILS | 发送当前用户详细信息。 |
| FIDO2_SIGNAL_UNKNOWN_CREDENTIAL | 发送未知凭据。 |
| FIDO2_EXTENSION_UVI | uvi的扩展参数。 |
| FIDO2_EXTENSION_LARGEBLOB | largeBlob的扩展参数。 起始版本：26.0.0 |

#### FIDO2\_CredentialMediationRequirement

```
enum FIDO2_CredentialMediationRequirement
```

**描述**

用户介入要求的枚举。

**起始版本：** 6.0.0(20)

| 枚举值 | 描述 |
| --- | --- |
| FIDO2_SILENT | 禁止用户介入指定的操作。如果可以在不需要用户介入的情况下进行操作，则正常。 如果需要用户介入，则操作将返回null。 |
| FIDO2_OPTIONAL | 如果在没有用户介入的情况下，可以为给定的操作传递凭据，则正常传递。 如果需要用户介入，那么用户代理将让用户介入决策。 |
| FIDO2_CONDITIONAL | 有条件的需要用户介入。对于认证场景，如果设备有凭据，则需要用户介入以选择凭据。对于注册场景，如果用户之前已同意创建凭据，可在无用户介入的情况下创建凭据。 |
| FIDO2_MEDIATION_REQUIRED | 在没有用户介入的情况下，用户代理将不会移交凭证。 |

#### FIDO2\_ErrorCode

```
enum FIDO2_ErrorCode
```

**描述**

错误码定义。

**起始版本：** 6.0.0(20)

| 枚举值 | 描述 |
| --- | --- |
| FIDO2_SUCCESS | 成功。 |
| FIDO2_PERMISSION_DENIED | 权限被拒绝。 |
| FIDO2_DEVICE_NOT_SUPPORT | 设备类型错误。 起始版本：6.0.1(21) |
| FIDO2_NOT_SUPPORT | 系统不支持。 |
| FIDO2_INVALID_STATE | 无效的状态。 |
| FIDO2_INTEGRITY_CHECK_FAILED | 系统完整性校验失败。 |
| FIDO2_USER_ABORT | 用户中止。 |
| FIDO2_TIMEOUT | 超时。 |
| FIDO2_ENCODING_ERROR | 编码错误。 |
| FIDO2_UNKNOWN_ERROR | 未知错误。 |
| FIDO2_CONSTRAINT_ERROR | 约束条件错误。 |
| FIDO2_DATA_ERROR | 数据错误。 |
| FIDO2_USER_REJECTS | 用户拒绝。 |
| FIDO2_CONNECT_SERVICE_FAILED | 连接服务失败。 |
| FIDO2_MAX_CRED_NUM_REACHED | 凭据达到上限。 |
| FIDO2_INVALID_CTAP_COMMAND | 无效的CTAP命令。 |
| FIDO2_INVALID_PARAMETERS | 命令包含无效参数。 |
| FIDO2_INVALID_MESSAGE_OR_ATTRIBUTE_LENGTH | 无效的消息或属性长度。 |
| FIDO2_INVALID_CBOR_OR_UNPREDICTABLE | 无效的CBOR或不可预知的错误。 |
| FIDO2_PARSE_CBOR_FAILED | 解析CBOR失败。 |
| FIDO2_INVALID_CREDENTIALS | 未提供有效凭据。 |
| FIDO2_NOT_ALLOWED | 不允许。 |
| FIDO2_USER_VERIFICATION_FAILED | 用户认证失败。 |
| FIDO2_OTHER_ERROR | 其他错误。 |

#### FIDO2\_PublicKeyCredentialHint

```
enum FIDO2_PublicKeyCredentialHint
```

**描述**

认证方式指示的枚举，用于指示用户选用哪种认证方式。

**起始版本：** 6.0.0(20)

| 枚举值 | 描述 |
| --- | --- |
| FIDO2_SECURITY_KEY | 安全密钥。 |
| FIDO2_CLIENT_DEVICE | 客户端设备。 |
| FIDO2_HINT_HYBRID | 混合。 |

#### FIDO2\_PublicKeyCredentialType

```
enum FIDO2_PublicKeyCredentialType
```

**描述**

公钥凭据类型的枚举。

**起始版本：** 6.0.0(20)

| 枚举值 | 描述 |
| --- | --- |
| FIDO2_PUBLIC_KEY | 公钥。 |

#### FIDO2\_TokenBindingStatus

```
enum FIDO2_TokenBindingStatus
```

**描述**

TokenBinding协议的状态。

**起始版本：** 6.0.0(20)

| 枚举值 | 描述 |
| --- | --- |
| FIDO2_PRESENT | 正常通信时的状态。 |
| FIDO2_SUPPORTED | 支持令牌绑定，但是在与依赖方通信时未进行协商。 |

#### FIDO2\_UserVerificationRequirement

```
enum FIDO2_UserVerificationRequirement
```

**描述**

依赖方可能需要对某些操作进行用户鉴权（认证当前用户是否为用户）， 但不需要对其他操作进行认证。定义枚举类型是为了区分不同的需求级别。

**起始版本：** 6.0.0(20)

| 枚举值 | 描述 |
| --- | --- |
| FIDO2_REQUIRED | 需要进行用户认证。 |
| FIDO2_PREFERRED | 在可能的情况下，依赖方优先处理操作的用户认证， 但如果响应没有设置用户认证标志，则不会失败。 |
| FIDO2_DISCOURAGED | 依赖方在操作过程中不希望使用用户鉴权。 |

#### FIDO2\_Uvm

```
enum FIDO2_Uvm
```

**描述**

UVM的枚举。

**起始版本：** 6.0.0(20)

| 枚举值 | 描述 |
| --- | --- |
| FIDO2_UVM_FINGERPRINT | 指纹认证器。 |
| FIDO2_UVM_PIN | PIN认证器。 |
| FIDO2_UVM_FACEPRINT | 3D人脸认证器。 |

#### 函数说明

#### HMS\_FIDO2\_authenticate()

```
FIDO2_ErrorCode HMS_FIDO2_authenticate (const FIDO2_CredentialRequestOptions options, const FIDO2_TokenBinding tokenBinding, const char * origin, FIDO2_PublicKeyAssertionCredential ** publicKeyAssertionCredential)
```

**描述**

通行密钥认证。仅支持非UI线程调用。

**申请权限：** ohos.permission.ACCESS\_FIDO2\_ONLINEAUTH

**起始版本：** 6.0.0(20)

**参数:**

| 名称 | 描述 |
| --- | --- |
| options | 认证请求选项。 |
| tokenBinding | 认证令牌绑定。 |
| origin | 调用该方法时的安全来源。长度限制0到256。 |
| publicKeyAssertionCredential | 认证响应。 |

**返回：**

如果函数执行成功，则返回FIDO2\_SUCCESS；如果函数执行失败，则返回特定的错误代码。详细信息请参见FIDO2\_ErrorCode。

#### HMS\_FIDO2\_AuthenticatorMetadataArray\_Destroy()

```
void HMS_FIDO2_AuthenticatorMetadataArray_Destroy (FIDO2_AuthenticatorMetadataArray * authenticators)
```

**描述**

释放认证者元数据数组。

**起始版本：** 6.0.0(20)

**参数:**

| 名称 | 描述 |
| --- | --- |
| authenticators | 要释放的鉴权字元数据数组。 |

#### HMS\_FIDO2\_CapabilityArray\_Destroy()

```
void HMS_FIDO2_CapabilityArray_Destroy (FIDO2_CapabilityArray * capability)
```

**描述**

释放能力的数组。

**起始版本：** 6.0.0(20)

**参数:**

| 名称 | 描述 |
| --- | --- |
| capability | 要释放的能力的数组。 |

#### HMS\_FIDO2\_getClientCapability()

```
FIDO2_ErrorCode HMS_FIDO2_getClientCapability (FIDO2_CapabilityArray ** capability)
```

**描述**

查询当前设备支持的客户端能力列表。当给定功能的值为true时，表示通行密钥客户端当前支持该能力。

**起始版本：** 6.0.0(20)

**参数:**

| 名称 | 描述 |
| --- | --- |
| capability | 查询的设备客户端能力。 |

**返回：**

如果函数执行成功，则返回FIDO2\_SUCCESS； 如果函数执行失败，则返回错误代码。详细信息请参见FIDO2\_ErrorCode。

#### HMS\_FIDO2\_getPlatformAuthenticator()

```
FIDO2_ErrorCode HMS_FIDO2_getPlatformAuthenticator (FIDO2_AuthenticatorMetadataArray ** authenticators)
```

**描述**

获取支持的平台身份认证器列表。

**起始版本：** 6.0.0(20)

**参数:**

| 名称 | 描述 |
| --- | --- |
| authenticators | 支持的平台认证器列表。 |

**返回：**

如果函数执行成功，则返回FIDO2\_SUCCESS；如果函数执行失败，则返回错误代码。详细信息请参见FIDO2\_ErrorCode。

#### HMS\_FIDO2\_initCreationOptions()

```
void HMS_FIDO2_initCreationOptions (FIDO2_CredentialCreationOptions * options)
```

**描述**

初始化FIDO2\_CredentialCreationOptions结构。

**起始版本：** 6.0.0(20)

**参数:**

| 名称 | 描述 |
| --- | --- |
| options | 指向要初始化的FIDO2_CredentialCreationOptions结构体的指针。 |

#### HMS\_FIDO2\_initRequestOptions()

```
void HMS_FIDO2_initRequestOptions (FIDO2_CredentialRequestOptions * options)
```

**描述**

初始化FIDO2\_CredentialRequestOptions结构。

**起始版本：** 6.0.0(20)

**参数:**

| 名称 | 描述 |
| --- | --- |
| options | 指向要初始化的FIDO2_CredentialRequestOptions结构体的指针。 |

#### HMS\_FIDO2\_initTokenBinding()

```
void HMS_FIDO2_initTokenBinding (FIDO2_TokenBinding * tokenBinding)
```

**描述**

初始化FIDO2\_TokenBinding结构体。

**起始版本：** 6.0.0(20)

**参数:**

| 名称 | 描述 |
| --- | --- |
| tokenBinding | 指向要初始化的FIDO2_TokenBinding结构体的指针。 |

#### HMS\_FIDO2\_PublicKeyAssertionCredential\_Destroy()

```
void HMS_FIDO2_PublicKeyAssertionCredential_Destroy (FIDO2_PublicKeyAssertionCredential * publicKeyAssertionCredential)
```

**描述**

释放FIDO2\_PublicKeyAssertionCredential的结构体。

**起始版本：** 6.0.0(20)

**参数:**

| 名称 | 描述 |
| --- | --- |
| publicKeyAssertionCredential | 要释放的FIDO2_PublicKeyAssertionCredential的结构体。 |

#### HMS\_FIDO2\_PublicKeyAttestationCredential\_Destroy()

```
void HMS_FIDO2_PublicKeyAttestationCredential_Destroy (FIDO2_PublicKeyAttestationCredential * publicKeyAttestationCredential)
```

**描述**

释放FIDO2\_PublicKeyAttestationCredential的结构体。

**起始版本：** 6.0.0(20)

**参数:**

| 名称 | 描述 |
| --- | --- |
| publicKeyAttestationCredential | 要释放的FIDO2_PublicKeyAttestationCredential的结构体。 |

#### HMS\_FIDO2\_register()

```
FIDO2_ErrorCode HMS_FIDO2_register (const FIDO2_CredentialCreationOptions options, const FIDO2_TokenBinding tokenBinding, const char * origin, FIDO2_PublicKeyAttestationCredential ** publicKeyAttestationCredential)
```

**描述**

通行密钥注册。仅支持非UI线程调用。

**申请权限：** ohos.permission.ACCESS\_FIDO2\_ONLINEAUTH

**起始版本：** 6.0.0(20)

**参数:**

| 名称 | 描述 |
| --- | --- |
| options | 注册请求选项。 |
| tokenBinding | 注册令牌绑定。 |
| origin | 调用该方法时的来源。长度限制0到256。 |
| publicKeyAttestationCredential | 注册响应。 |

**返回：**

如果函数执行成功，则返回FIDO2\_SUCCESS；如果函数执行失败，则返回错误代码。详细信息请参见FIDO2\_ErrorCode。