鸿蒙NEXT开发实战往期必看文章:
一分钟了解”纯血版!鸿蒙HarmonyOS Next应用开发!
“非常具体的” 鸿蒙HarmonyOS Next应用开发学习门路!(从零基础入门到精通)
HarmonyOS NEXT应用开发案例实践总联合(连续更新......)
HarmonyOS NEXT应用开发性能优化实践总结(连续更新......)
场景介绍
在安全摄像头场景中,通过创建证明密钥、打开证明会话的方式,对安全摄像头捕捉到的图像数据举行签名,确保图像数据的真实性和完备性。
束缚与限定
目前仅支持“Mate60 Pro”的“ALN-AL00”机型。
业务流程
接口说明
接口及使用方法请参见API参考。
接口名
形貌
createAttestKey(options: AttestOptions): Promise<void>
创建证明密钥。
initializeAttestContext(userData: string, options: AttestOptions): Promise<AttestReturnResult>
初始化证明会话。
finalizeAttestContext(options: AttestOptions): Promise<void>
结束证明会话。
destroyAttestKey(): Promise<void>
销毁证明密钥。
开发步调
- 导入camera模块、trustedAppService模块和相关依赖模块。
- import { camera } from '@kit.CameraKit';
- import { trustedAppService } from '@kit.DeviceSecurityKit';
- import { BusinessError } from '@kit.BasicServicesKit';
复制代码 - 初始化安全相机。
相机初始化通用流程请参考Camera Kit开发指南,安全相机初始化的区别在于创建相时机话时传入的场景模式为“SECURE_PHOTO”。以下是在创建相时机话前,举行创建证明密钥和初始化证明会话的流程。- // 创建证明密钥的参数
- const createProperties: Array<trustedAppService.AttestParam> = [
- {
- tag: trustedAppService.AttestTag.ATTEST_TAG_ALGORITHM,
- value: trustedAppService.AttestKeyAlg.ATTEST_ALG_ECC
- },
- {
- tag: trustedAppService.AttestTag.ATTEST_TAG_KEY_SIZE,
- value: trustedAppService.AttestKeySize.ATTEST_ECC_KEY_SIZE_256
- }
- ];
- const createOptions: trustedAppService.AttestOptions = {
- properties: createProperties
- };
- // 初始化证明会话的参数
- const userData = "trusted_app_service_demo"; // 示例值,实际值请自行生成,长度在16到128字符之间
- const deviceId = 7483679320805398131; // 示例值,实际值请通过Camera Kit获取
- const initProperties: Array<trustedAppService.AttestParam> = [
- {
- tag: trustedAppService.AttestTag.ATTEST_TAG_DEVICE_TYPE,
- value: trustedAppService.AttestType.ATTEST_TYPE_CAMERA
- },
- {
- tag: trustedAppService.AttestTag.ATTEST_TAG_DEVICE_ID,
- value: BigInt(deviceId)
- }
- ];
- const initOptions: trustedAppService.AttestOptions = {
- properties: initProperties
- };
- // 创建证明密钥并打开证明会话
- let certChainList: Array<string>;
- try {
- await trustedAppService.createAttestKey(createOptions);
- const result = await trustedAppService.initializeAttestContext(userData, initOptions);
- certChainList = result.certChains;
- } catch (err) {
- const error = err as BusinessError;
- console.error(`Failed to initialize attest context, message:${error.message}, code:${error.code}`);
- }
复制代码 说明
- 只有创建证明密钥乐成后,才气初始化证明会话。
- 每次打开安全摄像头都需要获取设备序列号,只有初始化安全相机证明会话时需要传入有效值,其他场景传“0”即可。
- userData的长度必须在16到128之间。
- 结束证明会话。
- // 结束证明会话的参数
- const finalProperties: Array<trustedAppService.AttestParam> = [
- {
- tag: trustedAppService.AttestTag.ATTEST_TAG_DEVICE_TYPE,
- value: trustedAppService.AttestType.ATTEST_TYPE_CAMERA
- }
- ];
- const finalOptions: trustedAppService.AttestOptions = {
- properties: finalProperties,
- };
- // 结束证明会话
- try {
- await trustedAppService.finalizeAttestContext(finalOptions);
- } catch (err) {
- const error = err as BusinessError;
- console.error(`Failed to finalize attest context, message:${error.message}, code:${error.code}`);
- }
复制代码 假如需要销毁证明密钥,请在结束证明会话后,调用destroyAttestKey接口。由于安全摄像头和安全地理位置共用同一个证明密钥,销毁前需要保证安全地理位置功能未在使用该证明密钥。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |