鸿蒙开发进阶(HarmonyOS )安全摄像头场景

打印 上一主题 下一主题

主题 883|帖子 883|积分 2649

 鸿蒙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模块和相关依赖模块。
    1. import { camera } from '@kit.CameraKit';
    2. import { trustedAppService } from '@kit.DeviceSecurityKit';
    3. import { BusinessError } from '@kit.BasicServicesKit';
    复制代码
  • 初始化安全相机。
    相机初始化通用流程请参考Camera Kit开发指南,安全相机初始化的区别在于创建相时机话时传入的场景模式为“SECURE_PHOTO”。以下是在创建相时机话前,举行创建证明密钥和初始化证明会话的流程。
    1. // 创建证明密钥的参数
    2. const createProperties: Array<trustedAppService.AttestParam> = [
    3.   {
    4.     tag: trustedAppService.AttestTag.ATTEST_TAG_ALGORITHM,
    5.     value: trustedAppService.AttestKeyAlg.ATTEST_ALG_ECC
    6.   },
    7.   {
    8.     tag: trustedAppService.AttestTag.ATTEST_TAG_KEY_SIZE,
    9.     value: trustedAppService.AttestKeySize.ATTEST_ECC_KEY_SIZE_256
    10.   }
    11. ];
    12. const createOptions: trustedAppService.AttestOptions = {
    13.   properties: createProperties
    14. };
    15. // 初始化证明会话的参数
    16. const userData = "trusted_app_service_demo"; // 示例值,实际值请自行生成,长度在16到128字符之间
    17. const deviceId = 7483679320805398131; // 示例值,实际值请通过Camera Kit获取
    18. const initProperties: Array<trustedAppService.AttestParam> = [
    19.   {
    20.     tag: trustedAppService.AttestTag.ATTEST_TAG_DEVICE_TYPE,
    21.     value: trustedAppService.AttestType.ATTEST_TYPE_CAMERA
    22.   },
    23.   {
    24.     tag: trustedAppService.AttestTag.ATTEST_TAG_DEVICE_ID,
    25.     value: BigInt(deviceId)
    26.   }
    27. ];
    28. const initOptions: trustedAppService.AttestOptions = {
    29.   properties: initProperties
    30. };
    31. // 创建证明密钥并打开证明会话
    32. let certChainList: Array<string>;
    33. try {
    34.   await trustedAppService.createAttestKey(createOptions);
    35.   const result = await trustedAppService.initializeAttestContext(userData, initOptions);
    36.   certChainList = result.certChains;
    37. } catch (err) {
    38.   const error = err as BusinessError;
    39.   console.error(`Failed to initialize attest context, message:${error.message}, code:${error.code}`);
    40. }
    复制代码
    说明

    • 只有创建证明密钥乐成后,才气初始化证明会话。
    • 每次打开安全摄像头都需要获取设备序列号,只有初始化安全相机证明会话时需要传入有效值,其他场景传“0”即可。
    • userData的长度必须在16到128之间。

  • 结束证明会话。
    1. // 结束证明会话的参数
    2. const finalProperties: Array<trustedAppService.AttestParam> = [
    3.   {
    4.     tag: trustedAppService.AttestTag.ATTEST_TAG_DEVICE_TYPE,
    5.     value: trustedAppService.AttestType.ATTEST_TYPE_CAMERA
    6.   }
    7. ];
    8. const finalOptions: trustedAppService.AttestOptions = {
    9.   properties: finalProperties,
    10. };
    11. // 结束证明会话
    12. try {
    13.   await trustedAppService.finalizeAttestContext(finalOptions);
    14. } catch (err) {
    15.   const error = err as BusinessError;
    16.   console.error(`Failed to finalize attest context, message:${error.message}, code:${error.code}`);
    17. }
    复制代码
    假如需要销毁证明密钥,请在结束证明会话后,调用destroyAttestKey接口。由于安全摄像头和安全地理位置共用同一个证明密钥,销毁前需要保证安全地理位置功能未在使用该证明密钥。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

民工心事

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表