智能客服
你问我答,随时在线为你解决问题

























通行密钥服务主要接口如下表。
| 接口名 | 描述 |
|---|---|
| FIDO2_ErrorCode HMS_FIDO2_getClientCapability(FIDO2_CapabilityArray ** capability) | 查询当前设备支持的客户端能力列表。 |
| FIDO2_ErrorCode HMS_FIDO2_getPlatformAuthenticator(FIDO2_AuthenticatorMetadataArray **authenticators) | 查询当前设备支持的平台认证器能力列表(人脸、指纹、PIN码)。 |
| 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) | 进行通行密钥的认证。 |
通行密钥服务提供基于FIDO2标准协议的FIDO客户端实现,这里仅演示FIDO客户端相关API的使用,涉及FIDO服务器的相关处理由开发者自行实现,这里不做介绍,请参考FIDO2标准协议(见网站链接免责声明)。
在CMake脚本中链接相关动态库。
- target_link_libraries(projectName libfido2_ndk.z.so)
需要业务方自行根据FIDO2标准协议部署FIDO服务器。
注册通行密钥。
- #include "OnlineAuthenticationKit/fido2_api.h"
-
- FIDO2_ErrorCode TestGetClientCapability()
- {
- // 获取客户端能力列表
- FIDO2_CapabilityArray *capability = NULL;
- FIDO2_ErrorCode ret = HMS_FIDO2_getClientCapability(&capability);
-
- // 业务根据错误码判断异常类型,进行相应处理,详见错误码参考
- if (ret != FIDO2_SUCCESS) {
- HMS_FIDO2_CapabilityArray_Destroy(capability);
- return ret;
- }
- return FIDO2_SUCCESS;
- }
-
- FIDO2_ErrorCode GetPlatformAuthenticator()
- {
- // 获取平台认证器能力
- FIDO2_AuthenticatorMetadataArray *authenticators = NULL;
- FIDO2_ErrorCode ret = HMS_FIDO2_getPlatformAuthenticator(&authenticators);
-
- // 业务根据错误码判断异常类型,进行相应处理,详见错误码参考
- if (ret != FIDO2_SUCCESS) {
- HMS_FIDO2_AuthenticatorMetadataArray_Destroy(authenticators);
- return ret;
- }
- return FIDO2_SUCCESS;
- }
- FIDO2_ErrorCode TestReg()
- {
- // 初始化注册参数,init方法必须调用
- FIDO2_CredentialCreationOptions options;
- HMS_FIDO2_initCreationOptions(&options);
-
- // FIDO服务器返回的注册报文,具体报文内容由业务方传入
- FIDO2_PublicKeyCredentialCreationOptions publicKey;
-
- // 业务方组装注册信息,包含是否需要用户介入以及注册报文
- options.mediation = FIDO2_CONDITIONAL;
- options.publicKey = publicKey;
-
- // 初始化tokenBinding参数,业务方可不赋值,但init方法必须调用
- FIDO2_TokenBinding tokenBinding;
- HMS_FIDO2_initTokenBinding(&tokenBinding);
-
- // 测试origin,具体内容由业务方设置
- char *origin = "http://www.fidotest.com";
-
- // 调用HMS_FIDO2_register进行通行密钥注册
- FIDO2_PublicKeyAttestationCredential* publicKeyAttestationCredential = NULL;
- FIDO2_ErrorCode ret = HMS_FIDO2_register(options, tokenBinding, origin, &publicKeyAttestationCredential);
-
- // 业务根据错误码判断异常类型,进行相应处理,详见错误码参考
- if (ret != FIDO2_SUCCESS) {
- HMS_FIDO2_PublicKeyAttestationCredential_Destroy(publicKeyAttestationCredential);
- return ret;
- }
- return FIDO2_SUCCESS;
- }
使用通行密钥进行身份认证。
- #include "OnlineAuthenticationKit/fido2_api.h"
-
- FIDO2_ErrorCode TestGetClientCapability()
- {
- // 获取客户端能力列表
- FIDO2_CapabilityArray *capability = NULL;
- FIDO2_ErrorCode ret = HMS_FIDO2_getClientCapability(&capability);
-
- // 业务根据错误码判断异常类型,进行相应处理,详见错误码参考
- if (ret != FIDO2_SUCCESS) {
- HMS_FIDO2_CapabilityArray_Destroy(capability);
- return ret;
- }
- return FIDO2_SUCCESS;
- }
-
- FIDO2_ErrorCode GetPlatformAuthenticator()
- {
- // 获取平台认证器能力
- FIDO2_AuthenticatorMetadataArray *authenticators = NULL;
- FIDO2_ErrorCode ret = HMS_FIDO2_getPlatformAuthenticator(&authenticators);
-
- // 业务根据错误码判断异常类型,进行相应处理,详见错误码参考
- if (ret != FIDO2_SUCCESS) {
- HMS_FIDO2_AuthenticatorMetadataArray_Destroy(authenticators);
- return ret;
- }
- return FIDO2_SUCCESS;
- }
- FIDO2_ErrorCode TestAuth()
- {
- // 初始化认证参数,init方法必须调用
- FIDO2_CredentialRequestOptions options;
- HMS_FIDO2_initRequestOptions(&options);
-
- // FIDO服务器返回的认证报文,具体报文内容由业务方传入
- FIDO2_PublicKeyCredentialRequestOptions publicKey;
-
- // 业务方组装认证信息,包含是否需要用户介入以及认证报文
- options.mediation = FIDO2_CONDITIONAL;
- options.publicKey = publicKey;
-
- // 初始化tokenBinding参数,业务方可不赋值,但init方法必须调用
- FIDO2_TokenBinding tokenBinding;
- HMS_FIDO2_initTokenBinding(&tokenBinding);
-
- // 测试origin,具体内容由业务方设置
- char *origin = "http://www.fidotest.com";
-
- // 调用HMS_FIDO2_authenticate进行通行密钥认证
- FIDO2_PublicKeyAssertionCredential *assertionCredential = NULL;
- FIDO2_ErrorCode ret = HMS_FIDO2_authenticate(options, tokenBinding, origin, &assertionCredential);
-
- // 业务根据错误码判断异常类型,进行相应处理,详见错误码参考
- if (ret != FIDO2_SUCCESS) {
- HMS_FIDO2_PublicKeyAssertionCredential_Destroy(assertionCredential);
- return ret;
- }
- return FIDO2_SUCCESS;
- }
智能客服
你问我答,随时在线为你解决问题
合作咨询
我们的专家服务团队将竭诚为您提供专业的合作咨询服务
解决方案
精准高效的一站式服务支持,助力开发者商业成功