文档管理中心
我的
您当前正在浏览新版开发者文档中心,目录分类和层级有所调整。点击左侧当前文档分类名称前的“☰”图标,可切换文档分类。 了解新版目录
指南与API参考指南系统安全Device Security Kit(设备安全服务)安全审计代码签名信息查询场景(C/C++)

代码签名信息查询场景(C/C++)

从6.1.1(24)开始,新增提供文件代码签名信息查询接口,可以获取设备上已签名的文件签名信息。

场景介绍

签名信息包括:应用ID、签发组织证书链、签名摘要、签名时间戳、签名使用的Hash算法。通过HMS_SecurityAudit_AcquireCodeSign接口,开发者应用可以获取代码签名信息,辅助开发者应用判断运行代码的完整性和安全性,从而有效防止恶意软件的运行,提升设备安全防护能力。

约束和限制

  1. 当前能力仅支持PC/2in1设备。
  2. 调用HMS_SecurityAudit_AcquireCodeSign接口的应用程序需要具备读取目标代码签名文件的权限。

业务流程

流程说明:

  1. 开发者应用调用获取文件代码签名信息接口HMS_SecurityAudit_AcquireCodeSign。
  2. HMS_SecurityAudit_AcquireCodeSign接口同步返回应用所传入的文件对应的代码签名信息。

接口说明

接口如下表,更多接口及使用方法请参见API参考。

展开
接口名 描述
int32_t HMS_SecurityAudit_AcquireCodeSign(char* path, char** outOwnedResult) 获取输入的文件路径的代码签名信息。

开发步骤

在开发准备过程中,需要申请权限:ohos.permission.QUERY_AUDIT_EVENT,只允许清单内的企业类应用申请该权限,申请方式请参考:企业类应用可用权限。

  1. 在CMakeLists.txt中导入安全审计共享库,并链接该库。

    收起
    自动换行
    深色代码主题
    复制
    1. find_library(dsm-lib libsecurityaudit_ndk.z.so)
    2. target_link_libraries(entry PUBLIC libace_napi.z.so ${dsm-lib})
  2. 导入安全审计的头文件。

    收起
    自动换行
    深色代码主题
    复制
    1. #include <cstdio>
    2. #include "DeviceSecurityKit/security_audit.h"
  3. 开发者应用调用HMS_SecurityAudit_AcquireCodeSign接口,获取所传入的文件对应的代码签名信息,并在处理完接口返回的代码签名信息后释放出入参内存。

    收起
    自动换行
    深色代码主题
    复制
    1. char *result = nullptr;
    2. const char *path = "test";
    3. // ...
    4. int32_t ret = HMS_SecurityAudit_AcquireCodeSign(const_cast<char*>(path), &result);
    5. if (ret == 0 && result != nullptr) {
    6. printf("HMS_SecurityAudit_AcquireCodeSign result: %s\n", result);
    7. } else {
    8. printf("HMS_SecurityAudit_AcquireCodeSign failed with error: %d\n", ret);
    9. }
    10. // ...
    11. if (result != nullptr) {
    12. delete[] result;
    13. result = nullptr;
    14. }