From d63bf3c764c33d3ac8f8a7fd08c1693956fcd3bc Mon Sep 17 00:00:00 2001 From: zfeixiang Date: Mon, 27 Nov 2023 17:25:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20readme=20=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zfeixiang --- README_zh.md | 28 ++++++++++++++++++++++------ figures/codesign.png | Bin 0 -> 64736 bytes 2 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 figures/codesign.png diff --git a/README_zh.md b/README_zh.md index 6ac746c..483b572 100644 --- a/README_zh.md +++ b/README_zh.md @@ -3,11 +3,17 @@ ## 简介 代码签名部件用于支持OpenHarmony的代码签名机制。OpenHarmony使用代码签名提供运行时应用程序的完整性保护,校验应用来源的合法性。 -代码签名部件主要提供如下功能: -- 提供可信代码签名证书写入内核能力 -- 提供代码签名使能能力 -- 提供本地代码签名能力 +代码签名部件架构图 + +![](figures/codesign.png) + +代码签名部件主要提供如下模块功能: + +- 可信证书管理:将设备证书和本地签名证书写入内核.fs-verity keyring,支持证书链及其合法路径校验。 +- 代码签名使能:在用户态提供代码签名校验的相关接口和逻辑,供应用安装的时候调用,为应用和代码文件使能代码签名。 +- 本地代码签名:在设备侧运行签名服务给本地代码提供签名接口,为AOT生成的机器码文件生成代码签名。 +- 代码属性设置:支持代码所有者标记及校验,提供配置XPM验签地址区接口。 ## 目录 @@ -15,6 +21,7 @@ /base/security/code_signature ├── interfaces # 接口层 │ └── innerkits # +│ ├── code_sign_attr_utils # 属性设置接口 │ ├── code_sign_utils # 使能接口 │ ├── common # 公共基础能力 │ └── local_code_sign # 本地签名接口 @@ -34,14 +41,23 @@ | --- | --- | | int32_t EnforceCodeSignForApp(const EntryMap &entryPath, const std::string &signatureFile); | 对hap使能代码签名 | | int32_t EnforceCodeSignForFile(const std::string &path, const ByteBuffer &signature); | 对文件使能代码签名 | +| int32_t EnforceCodeSignForAppWithOwnerId(std::string ownerId, const std::string &path, const EntryMap &entryPathMap, FileType type); | 对hap使能代码签名和OwnerId校验 | +| int32_t EnableKeyInProfile(const std::string &bundleName, const ByteBuffer &profileBuffer); | 信任开发者证书 | +| int32_t RemoveKeyInProfile(const std::string &bundleName); | 撤销已信任的开发者证书 | +| int32_t InitLocalCertificate(ByteBuffer &cert); | 初始化本地签名证书 | | int32_t SignLocalCode(const std::string &filePath, ByteBuffer &signature); | 本地代码签名 | +| int32_t SignLocalCode(const std::string &ownerID, const std::string &filePath, ByteBuffer &signature); | 带OwnerId的本地代码签名 | +| int InitXpmRegion(void); | 初始化XPM地址 | +| int SetXpmOwnerId(uint32_t idType, const char *ownerId); | 设置OwnerId | ### 签名工具使用指南 -**[使用指南](https://gitee.com/openharmony/developtools_hapsigner/blob/master/codesigntool/README_zh.md)** +**[使用指南](https://gitee.com/openharmony/developtools_hapsigner/blob/master/README_ZH.md)** ## 相关仓 -**[developtools\_hapsigner](https://gitee.com/openharmony/developtools_hapsigner/blob/master/codesigntool/README_zh.md)** +**[developtools\_hapsigner](https://gitee.com/openharmony/developtools_hapsigner/blob/master/README_ZH.md)** + +**[kernel_linux_common_modules](https://gitee.com/openharmony/kernel_linux_common_modules)** **[third\_party\_fsverity-utils](https://gitee.com/openharmony/third_party_fsverity-utils/blob/master/README_zh.md)** diff --git a/figures/codesign.png b/figures/codesign.png new file mode 100644 index 0000000000000000000000000000000000000000..8a494cb95ef899f5680a596a9ca8249a924357c6 GIT binary patch literal 64736 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