• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 二进制签名工具
2
3Binary Sign Tool (二进制签名工具),是用于在OpenHarmony PC/2in1设备上对二进制文件进行代码签名的工具,支持通过命令行的方式对标准ELF文件进行代码签名或打印已签名ELF的证书信息。
4工具可以在本地下载的OpenHarmony的SDK库toolchains/lib中找到,文件名为binary-sign-tool。
5
6## 环境说明
7在使用本工具前,开发者需要先获取[hdc](../dfx/hdc.md)工具,执行hdc shell命令。
8
9## 二进制签名工具命令列表
10
11| 命令          | 描述                                                         |
12| ------------- | ------------------------------------------------------------ |
13| help          | 帮助命令,用于查询工具支持的命令信息。                         |
14| sign          | 二进制文件签名。                   |
15| display-sign  | 打印文件签名证书信息。             |
16
17## 帮助命令(help)
18
19```bash
20# 显示帮助信息
21binary-sign-tool -help
22```
23
24## 签名命令(sign)
25
26**命令参数列表**
27
28| 参数             | 参数说明               |
29| ---------------- | ---------------------- |
30| -keyAlias        | 密钥别名,必填项,不区分大小写。    |
31| -keyPwd          | 密钥口令,可选项。 |
32| -appCertFile     | 签名证书文件(证书链,顺序为实体证书-中间CA证书-根证书),必填项。  |
33| -profileFile     | 签名后的Provision Profile文件名,p7b格式,可选项。 |
34| -profileSigned   | 指示profile文件是否带有签名,1表示有签名,0表示没有签名,默认为1。可选项。   |
35| -signAlg         | 签名算法,必填项,包括SHA256withECDSA或SHA384withECDSA。 |
36| -keystoreFile    | 密钥库文件,非自签名模式时为必填项。     |
37| -keystorePwd     | 密钥库口令,可选项。 |
38| -inFile          | 输入的原始elf文件,必填项。    |
39| -outFile         | 输出签名后文件,必填项。 |
40| -moduleFile      | 权限module.json文件,可选项。     |
41| -selfSign        | 是否本机自签名模式,1表示自签名,0表示证书签名,默认为0,可选项。 |
42
43**示例**:
44
45```bash
46# 对二进制文件签名
47binary-sign-tool sign -keyAlias "oh-app1-key-v1" -signAlg "SHA256withECDSA" -appCertFile "app1.pem" -profileFile "app1-profile.p7b" -profileSigned "1" -inFile "unsigned-elf" -keystoreFile "ohtest.p12" -outFile "signed-elf" -keyPwd "123456" -keystorePwd "123456" -moduleFile "module.json"
48# 执行结果
49write code sign data success.
50```
51
52## 打印签名证书信息命令(display-sign)
53
54**命令参数列表**
55
56| 参数             | 参数说明               |
57| ---------------- | ---------------------- |
58| -inFile          | 输入的elf文件,必填项。    |
59
60**示例**:
61
62```bash
63# 打印二进制文件签名证书信息
64binary-sign-tool display-sign -inFile "signed-elf"
65# 执行结果
66# 1. 无代码签名
67code signature is not found
68# 2. 自签名模式
69code signature is self-sign
70# 3. 输出签名证书
71```
72
73## 错误信息
74
75### FILE_NOT_FOUND
76
77**错误描述**
78
79执行命令,报错提示:`ERROR - FILE_NOT_FOUND, code: -102. Details: The 'OpenHarmony.p12' file does not exist or the path is invalid, parameter name '-keystoreFile'`
80
81**可能原因**
82
83输入文件不存在或路径不正确。
84
85**处理步骤**
86
87检查输入文件路径或文件名是否正确。
88
89### COMMAND_PARAM_ERROR
90
91**错误描述**
92
93执行命令,报错提示:`ERROR - COMMAND_PARAM_ERROR, code: -107. Details: 'generate-cert' Parameters error, Param key - value must in pairs`
94
95**可能原因**
96
971. 粘贴命令时,多粘贴了一段内容,导致出现COMMAND_PARAM_ERROR错误。
982. 填写命令时,如果最后一个参数的value值未填写,将导致COMMAND_PARAM_ERROR错误。
99
100**处理步骤**
101
102检查并修正命令中的多余或错误部分。
103
104### KEY_PASSWORD_ERROR
105
106**错误描述**
107
108执行命令,报错提示:`ERROR - KEY_PASSWORD_ERROR, code: -114. Details: 'oh-app1-key-v1' keypair password error`
109
110**可能原因**
111
112当密钥对密码错误时,会导致KEY_PASSWORD_ERROR错误。
113
114**处理步骤**
115
116检查命令中的密码参数是否正确。确保访问不同密钥库时,填写各自的密钥对密码。
117
118### NOT_SUPPORT_ERROR
119
120**错误描述**
121
122执行命令,报错提示:`ERROR - NOT_SUPPORT_ERROR, code: -104. Details: Not support file: ./OpenHarmony.p12`
123
124**可能原因**
125
126填写错误的密钥库文件类型会导致NOT_SUPPORT_ERROR错误。
127
128**处理步骤**
129
130确保密钥库文件的后缀为 `.p12`。
131
132### KEY_ALIAS_ERROR
133
134**错误描述**
135
136执行命令,报错提示:`ERROR - KEY_ALIAS_ERROR, code: -109. Details: 'XXX' key alias already exists and cannot be generated repeatedly`
137
138**可能原因**
139
140密钥库中已存在该别名的密钥对,将导致KEY_ALIAS_ERROR错误。
141
142**处理步骤**
143
144替换需要生成密钥对的别名为其他名称。
145
146### SIGN_ERROR
147
148**错误描述**
149
150执行命令后,报错提示:`ERROR - SIGN_ERROR, code: -105. Details: No certificates configured for sign`
151
152**可能原因**
153
154签名密钥与实体证书不匹配。
155
156**处理步骤**
157
1581. 检查keyAlias密钥是否使用正确。
1592. 检查appCertFile是否使用正确,确保密钥与证书匹配。
160