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

流程说明:
接口如下表,更多接口及使用方法请参见API参考。
| 接口名 | 描述 |
|---|---|
| int32_t HMS_SecurityAudit_AcquireCodeSign(char* path, char** outOwnedResult) | 获取输入的文件路径的代码签名信息。 |
在开发准备过程中,需要申请权限:ohos.permission.QUERY_AUDIT_EVENT,只允许清单内的企业类应用申请该权限,申请方式请参考:企业类应用可用权限。
在CMakeLists.txt中导入安全审计共享库,并链接该库。
- find_library(dsm-lib libsecurityaudit_ndk.z.so)
- target_link_libraries(entry PUBLIC libace_napi.z.so ${dsm-lib})
导入安全审计的头文件。
- #include <cstdio>
- #include "DeviceSecurityKit/security_audit.h"
开发者应用调用HMS_SecurityAudit_AcquireCodeSign接口,获取所传入的文件对应的代码签名信息,并在处理完接口返回的代码签名信息后释放出入参内存。
- char *result = nullptr;
- const char *path = "test";
- // ...
- int32_t ret = HMS_SecurityAudit_AcquireCodeSign(const_cast<char*>(path), &result);
- if (ret == 0 && result != nullptr) {
- printf("HMS_SecurityAudit_AcquireCodeSign result: %s\n", result);
- } else {
- printf("HMS_SecurityAudit_AcquireCodeSign failed with error: %d\n", ret);
- }
- // ...
- if (result != nullptr) {
- delete[] result;
- result = nullptr;
- }