
回复
为了确保应用的完整性和来源可靠,OpenHarmony需要对应用进行签名和验签。
图 1 应用完整性校验架构图
/base/security/appverify
├── interfaces/innerkits/appverify # 应用完整性校验模块代码
│ ├── config # 应用签名根证书和可信源列表配置文件存放目录
│ ├── include # 头文件存放目录
│ ├── src # 源代码存放目录
│ ├── test # 模块自动化测试用例存放目录
├── test/resource # 测试资源存放目录
应用完整性校验在OpenHarmony中使用的证书,是专为OpenHarmony生成的,涉及的公钥证书和对应的私钥均预置在OpenHarmony开源代码仓中,为开源社区提供离线签名和校验能力;在商用版本中应替换此公钥证书和对应的私钥。
应用完整性校验模块提供一个子系统间接口,由包管理服务在安装应用时调用。
接口名 | 说明 |
---|---|
int HapVerify(const std::string& filePath, HapVerifyResult& hapVerifyResult) | 校验应用完整性,识别应用来源 |
应用完整性校验提供的是子系统间接口,仅提供底层能力,不对开发者开放。以应用文件路径作为输入,调用HapVerify接口即可校验应用完整性,通过接口返回值可以获取校验结果,通过引用传参hapVerifyResult获取签名相关信息。
Security::Verify::HapVerifyResult verifyResult;
int32_t res = Security::Verify::HapVerify(hapPath, verifyResult);
if (res != Security::Verify::HapVerifyResultCode::VERIFY_SUCCESS) {
// processing error
}
安全子系统
hmf/security/appverify