From b83f2cc652fc02b615454d54bfeba6a34b053d42 Mon Sep 17 00:00:00 2001 From: zhanzeyi Date: Mon, 22 Jul 2024 16:56:35 +0800 Subject: [PATCH 1/5] update readme Signed-off-by: zhanzeyi --- README_ZH.md | 84 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 71 insertions(+), 13 deletions(-) diff --git a/README_ZH.md b/README_ZH.md index 96b47e27..3425c936 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -20,21 +20,46 @@ #### 目录 developtools_hapsigner - - ├── autosign # 一键签名脚本 - ├── dist # SDK预置文件 - ├── hapsigntool # 主代码 - ├──hap_sign_tool # 主程序入口,完成输入参数的基础校验 - ├──hap_sign_tool_lib # 签名工具库,解析命令字和参数列表,实现各模块逻辑功能 - ├── tools # 自动化测试脚本 + + ├── autosign # 一键签名脚本 + ├── dist # SDK预置文件 + ├── hapsigntool # 主代码 + ├──hap_sign_tool # 主程序入口,完成输入参数的基础校验 + ├──hap_sign_tool_lib # 签名工具库,解析命令字和参数列表,实现各模块逻辑功能 + ├── tools # 自动化测试脚本 + ├── pc # c++签名工具根目录 + ├── api # 签名接口api + ├── cmd # 命令行输入 + ├── codesigning # 代码签名模块 + ├── common # 公共类 + ├── hap # hap包签名验签 + ├── main.cpp # 程序执行入口 + ├── profile # profile签名验签 + ├── signer # 签名工厂,支持本地和远程签名 + ├── utils # 工具类 + ├── zip # hap包解压缩,获取entry + ├── service # 代码签名模块 + ├── test # 存放测试文件 + ├── fuzztest # fuzz测试用例 + ├── unittest # unit测试用例 #### 约束 + +**java版本约束** + - 签名工具基于Java语言开发,需要在Java8以上Java环境运行。 - 一键签名等脚本文件基于Python语言开发,使用需配置环境python3.5及以上。 + +**c++版本约束** + ++ 该工具基于openharmony标准系统编译构建ohos-sdk形态,使用前先配置openharmony开发环境,并使用C++17及以上语言标准。 + #### 编译构建 +**java版本编译流程** + 1. 该工具基于Maven3编译构建,请确认环境已安装配置Maven3环境,并且版本正确 mvn -version @@ -45,6 +70,22 @@ 3. 编译后得到二进制文件,目录为: ./hap_sign_tool/target +**c++版本编译流程** + +1. openharmony系统ohos-sdk形态 + + 编译**release**版本:默认是release版本,直接编译即可。 + + 编译**debug**版本(增加了调试日志):在 hapsigntool_cpp/BUILD.gn 中 添加 defines = [ "SIGNATURE_LOG_DEBUG" ] 即可。 + +2. 编译命令:./build.sh --product-name ohos-sdk + +​ 编译完成后会在目标路径生成对应压缩文件 + +3. 编译产物最终路径:/openharmony_master/out/sdk/packages/ohos-sdk/ohos + +**特别说明**: + +使用c++版本签名工具时,仅支持**ECC**密钥算法,不支持RSA。 + **** #### 说明 ##### 签名相关文件用法说明 @@ -68,18 +109,27 @@ Profile模板文件:UnsgnedReleasedProfileTemplate.json、UnsgnedDebugProfileT ![signapp.png](figures/signapp_zh.png) ##### 使用说明 -以下说明中使用jar包为编译构建中生成的二进制文件 +以下说明中使用jar包为java编译构建中生成的二进制文件,可执行程序hap-sign-tool为c++编译构建中生成的二进制文件 1.命令行签名 命令行签名分为profile文件签名和应用包或二进制工具签名。 (1)签名profile文件的命令实例如下: - +​ **java:** + + ```shell java -jar hap-sign-tool.jar sign-profile -keyAlias "oh-profile1-key-v1" -signAlg "SHA256withECDSA" -mode "localSign" -profileCertFile "result\profile1.pem" -inFile "app1-profile-release.json" -keystoreFile "result\ohtest.jks" -outFile "result\app1-profile.p7b" -keyPwd "123456" -keystorePwd "123456" ``` -该命令的参数说明如下: + +​ **c++:** + +```shell +hap-sign-tool sign-profile -keyAlias "oh-profile1-key-v1" -signAlg "SHA256withECDSA" -mode "localSign" -profileCertFile "result\profile1.pem" -inFile "app1-profile-release.json" -keystoreFile "result\ohtest.jks" -outFile "result\app1-profile.p7b" -keyPwd "123456" -keystorePwd "123456" +``` + +上述命令的参数说明如下: sign-profile : ProvisionProfile文件签名 ├── -mode #签名模式,必填项,包括localSign,remoteSign @@ -96,11 +146,19 @@ java -jar hap-sign-tool.jar sign-profile -keyAlias "oh-profile1-key-v1" -signAl (2)签名应用包或二进制工具的命令实例如下: +​ **java:** ```shell java -jar hap-sign-tool.jar sign-app -keyAlias "oh-app1-key-v1" -signAlg "SHA256withECDSA" -mode "localSign" -appCertFile "result\app1.pem" -profileFile "result\app1-profile.p7b" -inFile "app1-unsigned.zip" -keystoreFile "result\ohtest.jks" -outFile "result\app1-unsigned.hap" -keyPwd "123456" -keystorePwd "123456" -signCode "1" ``` -该命令的参数说明如下: + +​ **c++:** + +```shell +hap-sign-tool sign-app -keyAlias "oh-app1-key-v1" -signAlg "SHA256withECDSA" -mode "localSign" -appCertFile "result\app1.pem" -profileFile "result\app1-profile.p7b" -inFile "app1-unsigned.zip" -keystoreFile "result\ohtest.jks" -outFile "result\app1-unsigned.hap" -keyPwd "123456" -keystorePwd "123456" -signCode "1" +``` + +上述命令的参数说明如下: sign-app : 应用包和二进制工具签名 ├── -mode #签名模式,必填项,包括localSign,remoteSign @@ -140,7 +198,7 @@ java -jar hap-sign-tool.jar sign-app -keyAlias "oh-app1-key-v1" -signAlg "SHA256 5. Linux运行 create_appcert_sign_profile.sh、Windows运行 create_appcert_sign_profile.bat 生成签名所需文件 6. Linux运行 sign_hap.sh、Windows运行 sign_hap.bat 对应用包进行签名;Linux运行 sign_elf.sh、Windows运行 sign_elf.bat 对二进制工具进行签名 - > 说明:如需自定义生成密钥库文件,根CA,中间CA证书,profile签名证书,可执行以下步骤 + > 说明:如需自定义生成密钥库文件,根CA,中间CA证书,profile签名证书,可执行以下步骤: 1.使用文本编辑器编辑 createRootAndSubCert.config 修改配置文件中的配置信息:common.keyPwd 和 common.issuerKeyPwd 参数值改成自己定义的口令信息 2.Linux运行 create_root.sh、Windows运行 create_root.bat 生成所需密钥库文件,根CA,中间CA证书,profile签名证书 @@ -278,7 +336,7 @@ java -jar hap-sign-tool.jar sign-app -keyAlias "oh-app1-key-v1" -signAlg "SHA256 9.应用包和二进制工具签名 sign-app : 应用包和二进制工具签名 - ├── -mode # 签名模式,必填项,包括localSign,remoteSign,remoteResign + ├── -mode # 签名模式,必填项,包括localSign,remoteSign ├── -keyAlias # 密钥别名,必填项 ├── -keyPwd # 密钥口令,可选项 ├── -appCertFile # 应用签名证书文件(证书链,顺序为实体证书-中间CA证书-根证书),必填项 -- Gitee From 1de570251690412f43b081e72258e93b87c61a79 Mon Sep 17 00:00:00 2001 From: zhanzeyi Date: Mon, 22 Jul 2024 16:59:26 +0800 Subject: [PATCH 2/5] update Signed-off-by: zhanzeyi --- README_ZH.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README_ZH.md b/README_ZH.md index 3425c936..5acffa1d 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -27,7 +27,7 @@ ├──hap_sign_tool # 主程序入口,完成输入参数的基础校验 ├──hap_sign_tool_lib # 签名工具库,解析命令字和参数列表,实现各模块逻辑功能 ├── tools # 自动化测试脚本 - ├── pc # c++签名工具根目录 + ├── hapsigntool_cpp # c++签名工具根目录 ├── api # 签名接口api ├── cmd # 命令行输入 ├── codesigning # 代码签名模块 -- Gitee From 09388d71c8022a8e5fa6d2a4bf2544f2f33e73dd Mon Sep 17 00:00:00 2001 From: zhanzeyi Date: Mon, 22 Jul 2024 20:16:52 +0800 Subject: [PATCH 3/5] update Signed-off-by: zhanzeyi --- README_ZH.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README_ZH.md b/README_ZH.md index 5acffa1d..6710062a 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -72,15 +72,13 @@ **c++版本编译流程** -1. openharmony系统ohos-sdk形态 +1. 编译ohos-sdk形态签名工具 + 编译**release**版本:默认是release版本,直接编译即可。 + 编译**debug**版本(增加了调试日志):在 hapsigntool_cpp/BUILD.gn 中 添加 defines = [ "SIGNATURE_LOG_DEBUG" ] 即可。 2. 编译命令:./build.sh --product-name ohos-sdk -​ 编译完成后会在目标路径生成对应压缩文件 - -3. 编译产物最终路径:/openharmony_master/out/sdk/packages/ohos-sdk/ohos +3. 编译产物路径:/openharmony_master/out/sdk/packages/ohos-sdk/ohos **特别说明**: -- Gitee From fe076a8a2e471be86ad34e06b5e32933a59ed37e Mon Sep 17 00:00:00 2001 From: zhanzeyi Date: Tue, 23 Jul 2024 09:33:26 +0800 Subject: [PATCH 4/5] add Signed-off-by: zhanzeyi --- README_ZH.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README_ZH.md b/README_ZH.md index 6710062a..ac229ba7 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -23,7 +23,7 @@ ├── autosign # 一键签名脚本 ├── dist # SDK预置文件 - ├── hapsigntool # 主代码 + ├── hapsigntool # java版工具根目录 ├──hap_sign_tool # 主程序入口,完成输入参数的基础校验 ├──hap_sign_tool_lib # 签名工具库,解析命令字和参数列表,实现各模块逻辑功能 ├── tools # 自动化测试脚本 @@ -39,7 +39,7 @@ ├── utils # 工具类 ├── zip # hap包解压缩,获取entry ├── service # 代码签名模块 - ├── test # 存放测试文件 + ├── test # 存放C++版工具的测试文件 ├── fuzztest # fuzz测试用例 ├── unittest # unit测试用例 -- Gitee From cc52da4b6e47e1957301860293a611d7f43740b4 Mon Sep 17 00:00:00 2001 From: zhanzeyi Date: Tue, 23 Jul 2024 15:19:14 +0800 Subject: [PATCH 5/5] update Signed-off-by: zhanzeyi --- README_ZH.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/README_ZH.md b/README_ZH.md index ac229ba7..2405483a 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -28,20 +28,20 @@ ├──hap_sign_tool_lib # 签名工具库,解析命令字和参数列表,实现各模块逻辑功能 ├── tools # 自动化测试脚本 ├── hapsigntool_cpp # c++签名工具根目录 - ├── api # 签名接口api - ├── cmd # 命令行输入 - ├── codesigning # 代码签名模块 - ├── common # 公共类 - ├── hap # hap包签名验签 - ├── main.cpp # 程序执行入口 - ├── profile # profile签名验签 - ├── signer # 签名工厂,支持本地和远程签名 - ├── utils # 工具类 - ├── zip # hap包解压缩,获取entry - ├── service # 代码签名模块 - ├── test # 存放C++版工具的测试文件 - ├── fuzztest # fuzz测试用例 - ├── unittest # unit测试用例 + ├── api # 签名接口api + ├── cmd # 命令行输入 + ├── codesigning # 代码签名模块 + ├── common # 公共类 + ├── hap # hap包签名验签 + ├── main.cpp # 程序执行入口 + ├── profile # profile签名验签 + ├── signer # 签名工厂,支持本地和远程签名 + ├── utils # 工具类 + ├── zip # hap包解压缩,获取entry + ├── service # 代码签名模块 + ├── hapsigntool_cpp_test # 存放C++版工具的测试文件 + ├── fuzztest # fuzz测试用例 + ├── unittest # unit测试用例 -- Gitee