• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2023-2025 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6#     http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14import("//build/test.gni")
15import("../../code_signature.gni")
16
17ohos_source_set("key_enable_src_set") {
18  sources = [
19    "${code_signature_root_dir}/services/key_enable/utils/src/cert_path.cpp",
20    "utils/src/enable_key_utils.cpp",
21  ]
22  include_dirs = [
23    "utils/include",
24    "${code_signature_root_dir}/services/key_enable/utils/include",
25  ]
26  configs = [
27    "${code_signature_root_dir}:common_utils_config",
28    "${code_signature_root_dir}:common_public_config",
29  ]
30  external_deps = [
31    "hilog:libhilog",
32    "init:libbegetutil",
33  ]
34  part_name = "code_signature"
35  subsystem_name = "security"
36}
37
38ohos_unittest("add_cert_path_unittest") {
39  module_out_path = "code_signature/code_signature"
40  sources = [
41    "${code_signature_root_dir}/services/key_enable/utils/src/cert_path.cpp",
42    "add_cert_path_test.cpp",
43  ]
44  include_dirs =
45      [ "${code_signature_root_dir}/services/key_enable/utils/include" ]
46  configs = [
47    "${code_signature_root_dir}:common_utils_config",
48    "${code_signature_root_dir}:common_public_config",
49  ]
50  external_deps = [
51    "hilog:libhilog",
52    "init:libbegetutil",
53    "selinux:libselinux",
54  ]
55}
56
57ohos_unittest("code_sign_utils_unittest") {
58  module_out_path = "code_signature/code_signature"
59  resource_config_file = "resources/ohos_test.xml"
60  sources = [ "code_sign_utils_test.cpp" ]
61
62  deps = [
63    ":key_enable_src_set",
64    "${code_signature_root_dir}/interfaces/inner_api/code_sign_utils:libcode_sign_utils",
65  ]
66
67  defines = []
68  if (!is_asan && !use_clang_coverage) {
69    defines += [ "NO_USE_CLANG_COVERAGE" ]
70  }
71  if (code_signature_support_oh_code_sign) {
72    defines += [ "SUPPORT_OH_CODE_SIGN" ]
73  }
74
75  include_dirs = [
76    "utils/include",
77    "${code_signature_root_dir}/interfaces/inner_api/code_sign_utils/include",
78    "${code_signature_root_dir}/utils/include",
79  ]
80
81  external_deps = [
82    "appverify:libhapverify",
83    "c_utils:utils",
84    "hilog:libhilog",
85  ]
86}
87
88ohos_unittest("code_sign_attr_utils_unittest") {
89  module_out_path = "code_signature/code_signature"
90  sources = [ "code_sign_attr_utils_test.cpp" ]
91
92  deps = [ "${code_signature_root_dir}/interfaces/inner_api/code_sign_attr_utils:libcode_sign_attr_utils" ]
93
94  include_dirs = [
95    "utils/include",
96    "${code_signature_root_dir}/interfaces/inner_api/common/include",
97    "${code_signature_root_dir}/utils/include",
98  ]
99
100  external_deps = [
101    "c_utils:utils",
102    "hilog:libhilog",
103  ]
104}
105
106ohos_unittest("code_sign_utils_in_c_unittest") {
107  module_out_path = "code_signature/code_signature"
108  resource_config_file = "resources/ohos_test.xml"
109  sources = [ "code_sign_utils_in_c_test.cpp" ]
110
111  deps = [ "${code_signature_root_dir}/interfaces/inner_api/code_sign_utils:libcode_sign_utils" ]
112
113  include_dirs = [
114    "${code_signature_root_dir}/interfaces/inner_api/code_sign_utils/include",
115    "${code_signature_root_dir}/utils/include",
116  ]
117
118  external_deps = [
119    "c_utils:utils",
120    "hilog:libhilog",
121  ]
122}
123
124ohos_unittest("local_code_sign_unittest") {
125  sanitize = {
126    cfi = true
127    cfi_cross_dso = true
128    debug = false
129  }
130  branch_protector_ret = "pac_ret"
131  module_out_path = "code_signature/code_signature"
132  resource_config_file = "resources/ohos_test.xml"
133  sources = [ "local_code_sign_test.cpp" ]
134  deps = [
135    "${code_signature_root_dir}/interfaces/inner_api/code_sign_utils:libcode_sign_utils",
136    "${code_signature_root_dir}/interfaces/inner_api/local_code_sign:liblocal_code_sign_sdk",
137    "${code_signature_root_dir}/test/common:code_sign_test_common_source_set",
138  ]
139
140  include_dirs = [
141    "utils/include",
142    "${code_signature_root_dir}/interfaces/inner_api/local_code_sign/include",
143    "${code_signature_root_dir}/services/local_code_sign/include",
144    "${code_signature_root_dir}/interfaces/inner_api/code_sign_utils/include",
145  ]
146  configs = [ "${code_signature_root_dir}:common_utils_config" ]
147  external_deps = [
148    "access_token:libaccesstoken_sdk",
149    "access_token:libnativetoken",
150    "access_token:libtoken_setproc",
151    "c_utils:utils",
152    "hilog:libhilog",
153    "ipc:ipc_core",
154    "openssl:libcrypto_shared",
155    "safwk:system_ability_fwk",
156    "samgr:samgr_proxy",
157  ]
158}
159
160ohos_unittest("local_code_sign_utils_unittest") {
161  module_out_path = "code_signature/code_signature"
162  resource_config_file = "resources/ohos_test.xml"
163  sources = [
164    "${code_signature_root_dir}/services/local_code_sign/src/local_sign_key.cpp",
165    "${code_signature_root_dir}/utils/src/cert_utils.cpp",
166    "local_code_sign_utils_test.cpp",
167    "mock/src/hks_api.cpp",
168    "mock/src/hks_api_mock_helper.cpp",
169  ]
170  deps = [ "${code_signature_root_dir}/interfaces/inner_api/code_sign_utils:libcode_sign_utils" ]
171
172  include_dirs = [
173    "mock/include",
174    "utils/include",
175    "${code_signature_root_dir}/services/local_code_sign/include",
176  ]
177
178  configs = [ "${code_signature_root_dir}:common_utils_config" ]
179  external_deps = [
180    "c_utils:utils",
181    "fsverity-utils:libfsverity_utils",
182    "hilog:libhilog",
183    "huks:libhukssdk",
184    "openssl:libcrypto_shared",
185    "bundle_framework:appexecfwk_base",
186    "bundle_framework:appexecfwk_core",
187    "ipc:ipc_core",
188    "samgr:samgr_proxy",
189  ]
190}
191
192ohos_unittest("local_code_sign_utils_mock_unittest") {
193  module_out_path = "code_signature/code_signature"
194  resource_config_file = "resources/ohos_test.xml"
195  sources = [
196    "${code_signature_root_dir}/services/key_enable/utils/src/cert_path.cpp",
197    "${code_signature_root_dir}/services/local_code_sign/src/local_sign_key.cpp",
198    "${code_signature_root_dir}/utils/src/cert_utils.cpp",
199    "local_code_sign_utils_mock_test.cpp",
200    "mock/src/hks_api_mock_helper.cpp",
201    "mock/src/hks_api_mock_test.cpp",
202  ]
203  deps = [ "${code_signature_root_dir}/interfaces/inner_api/code_sign_utils:libcode_sign_utils" ]
204
205  include_dirs = [
206    "mock/include",
207    "utils/include",
208    "${code_signature_root_dir}/services/local_code_sign/include",
209    "${code_signature_root_dir}/services/key_enable/utils/include",
210  ]
211
212  configs = [ "${code_signature_root_dir}:common_utils_config" ]
213  external_deps = [
214    "c_utils:utils",
215    "fsverity-utils:libfsverity_utils",
216    "hilog:libhilog",
217    "huks:libhukssdk",
218    "init:libbegetutil",
219    "openssl:libcrypto_shared",
220    "bundle_framework:appexecfwk_base",
221    "bundle_framework:appexecfwk_core",
222    "samgr:samgr_proxy",
223    "ipc:ipc_core",
224  ]
225}
226
227ohos_unittest("sign_and_enforce_unittest") {
228  module_out_path = "code_signature/code_signature"
229  resource_config_file = "resources/ohos_test.xml"
230  sources = [ "sign_and_enforce_test.cpp" ]
231  deps = [
232    "${code_signature_root_dir}/interfaces/inner_api/code_sign_utils:libcode_sign_utils",
233    "${code_signature_root_dir}/interfaces/inner_api/local_code_sign:liblocal_code_sign_sdk",
234    "${code_signature_root_dir}/test/common:code_sign_test_common_source_set",
235  ]
236
237  include_dirs = [
238    "utils/include",
239    "${code_signature_root_dir}/interfaces/inner_api/local_code_sign/include",
240    "${code_signature_root_dir}/services/local_code_sign/include",
241    "${code_signature_root_dir}/interfaces/inner_api/code_sign_utils/include",
242  ]
243  configs = [ "${code_signature_root_dir}:common_utils_config" ]
244  external_deps = [
245    "access_token:libaccesstoken_sdk",
246    "access_token:libnativetoken",
247    "access_token:libtoken_setproc",
248    "c_utils:utils",
249    "hilog:libhilog",
250    "ipc:ipc_core",
251    "openssl:libcrypto_shared",
252    "safwk:system_ability_fwk",
253    "samgr:samgr_proxy",
254  ]
255}
256
257ohos_unittest("multi_thread_local_sign_unittest") {
258  module_out_path = "code_signature/code_signature"
259  resource_config_file = "resources/ohos_test.xml"
260  sources = [ "multi_thread_local_sign_test.cpp" ]
261  deps = [
262    "${code_signature_root_dir}/interfaces/inner_api/code_sign_utils:libcode_sign_utils",
263    "${code_signature_root_dir}/interfaces/inner_api/local_code_sign:liblocal_code_sign_sdk",
264    "${code_signature_root_dir}/test/common:code_sign_test_common_source_set",
265  ]
266
267  include_dirs = [
268    "utils/include",
269    "${code_signature_root_dir}/interfaces/inner_api/local_code_sign/include",
270    "${code_signature_root_dir}/services/local_code_sign/include",
271    "${code_signature_root_dir}/interfaces/inner_api/code_sign_utils/include",
272  ]
273  configs = [ "${code_signature_root_dir}:common_utils_config" ]
274  external_deps = [
275    "access_token:libaccesstoken_sdk",
276    "access_token:libnativetoken",
277    "access_token:libtoken_setproc",
278    "c_utils:utils",
279    "hilog:libhilog",
280    "ipc:ipc_core",
281    "openssl:libcrypto_shared",
282    "safwk:system_ability_fwk",
283    "samgr:samgr_proxy",
284  ]
285}
286
287ohos_rust_static_library("rust_key_enable_lib") {
288  sources = [ "${code_signature_root_dir}/services/key_enable/src/lib.rs" ]
289  deps = [
290    "${code_signature_root_dir}/services/key_enable/utils:libkey_enable_utils",
291    "//third_party/rust/crates/lazy-static.rs:lib",
292  ]
293  external_deps = [
294    "c_utils:utils_rust",
295    "hilog:hilog_rust",
296    "hisysevent:hisysevent_rust",
297    "rust_rust-openssl:lib",
298    "ylong_json:lib",
299    "rust_cxx:lib"
300  ]
301  rustenv = []
302  if (build_variant == "root") {
303    rustenv += [ "code_signature_debuggable=on" ]
304  } else {
305    rustenv += [ "code_signature_debuggable=off" ]
306  }
307  if (code_signature_support_oh_release_app) {
308    rustenv += [ "support_openharmony_ca=on" ]
309  } else {
310    rustenv += [ "support_openharmony_ca=off" ]
311  }
312  if (code_signature_support_local_debugger) {
313    rustenv += [ "support_local_debugger=on" ]
314  } else {
315    rustenv += [ "support_local_debugger=off" ]
316  }
317  crate_name = "key_enable"
318  crate_type = "rlib"
319  subsystem_name = "security"
320  part_name = "code_signature"
321}
322
323ohos_rust_unittest("rust_key_enable_unittest") {
324  module_out_path = "code_signature/code_signature"
325  resource_config_file = "resources/ohos_test.xml"
326  crate_root = "./rust_key_enable_test.rs"
327  sources = [ "./rust_key_enable_test.rs" ]
328  external_deps = [ "ylong_json:lib" ]
329  deps = [ ":rust_key_enable_lib" ]
330  subsystem_name = "security"
331  part_name = "code_signature"
332}
333
334ohos_unittest("enable_verity_ioctl_unittest") {
335  module_out_path = "code_signature/code_signature"
336  resource_config_file = "resources/ohos_test.xml"
337  sources = [
338    "enable_verity_test.cpp",
339    "utils/src/xpm_common.cpp",
340  ]
341
342  include_dirs = [ "utils/include" ]
343  configs = [
344    "${code_signature_root_dir}:common_utils_config",
345    "${code_signature_root_dir}:common_public_config",
346  ]
347  deps = [
348    ":key_enable_src_set",
349    "${code_signature_root_dir}/interfaces/inner_api/code_sign_attr_utils:libcode_sign_attr_utils",
350  ]
351  external_deps = [
352    "c_utils:utils",
353    "hilog:libhilog",
354    "selinux:libselinux",
355  ]
356}
357
358ohos_unittest("jit_code_sign_unittest") {
359  module_out_path = "code_signature/code_signature"
360  include_dirs = [
361    "${code_signature_root_dir}/interfaces/inner_api/jit_code_sign/include",
362  ]
363  sources = [ "jit_code_sign_test.cpp" ]
364  sanitize = {
365    cfi = true
366    cfi_cross_dso = true
367    debug = false
368  }
369  deps = [
370    "${code_signature_root_dir}/interfaces/inner_api/code_sign_attr_utils:libcode_sign_attr_utils",
371    "${code_signature_root_dir}/interfaces/inner_api/jit_code_sign:libjit_code_sign",
372  ]
373  external_deps = [
374    "c_utils:utils",
375    "hilog:libhilog",
376  ]
377  subsystem_name = "security"
378  part_name = "code_signature"
379}
380
381ohos_unittest("key_enable_utils_unittest") {
382  module_out_path = "code_signature/code_signature"
383  sources = [
384    "${code_signature_root_dir}/services/key_enable/utils/src/devices_security.cpp",
385    "key_enable_utils_test.cpp",
386  ]
387  defines = [ "KEY_ENABLE_UTILS_TEST" ]
388  configs = [ "${code_signature_root_dir}:common_utils_config" ]
389  include_dirs =
390      [ "${code_signature_root_dir}/services/key_enable/utils/include" ]
391  deps = [
392    "${code_signature_root_dir}/services/key_enable/utils:libkey_enable_utils",
393  ]
394  external_deps = [
395    "c_utils:utils",
396    "hilog:libhilog",
397  ]
398}
399
400ohos_unittest("cert_chain_verifier_unittest") {
401  module_out_path = "code_signature/code_signature"
402  sources = [
403    "${code_signature_root_dir}/utils/src/cert_utils.cpp",
404    "${code_signature_root_dir}/utils/src/huks_attest_verifier.cpp",
405    "${code_signature_root_dir}/utils/src/openssl_utils.cpp",
406    "cert_chain_verifier_test.cpp",
407  ]
408  include_dirs = [ "utils/include" ]
409  configs = [
410    "${code_signature_root_dir}:common_utils_config",
411    "${code_signature_root_dir}:common_public_config",
412  ]
413  defines = [ "CODE_SIGNATURE_DEBUGGABLE" ]
414  if (code_signature_support_oh_release_app) {
415    defines += [ "CODE_SIGNATURE_OH_ROOT_CA" ]
416  }
417  deps = [
418    "${code_signature_root_dir}/services/key_enable/utils:libkey_enable_utils",
419  ]
420  external_deps = [
421    "access_token:libaccesstoken_sdk",
422    "access_token:libnativetoken",
423    "access_token:libtoken_setproc",
424    "c_utils:utils",
425    "hilog:libhilog",
426    "huks:libhukssdk",
427    "openssl:libcrypto_shared",
428  ]
429}
430
431group("unittest_group") {
432  testonly = true
433  if (!defined(ohos_lite)) {
434    deps = [
435      ":add_cert_path_unittest",
436      ":cert_chain_verifier_unittest",
437      ":code_sign_attr_utils_unittest",
438      ":code_sign_utils_in_c_unittest",
439      ":code_sign_utils_unittest",
440      ":enable_verity_ioctl_unittest",
441      ":local_code_sign_unittest",
442      ":local_code_sign_utils_mock_unittest",
443      ":local_code_sign_utils_unittest",
444      ":multi_thread_local_sign_unittest",
445      ":sign_and_enforce_unittest",
446    ]
447    if (!use_clang_coverage && !ohos_indep_compiler_enable) {
448      deps += [ ":rust_key_enable_unittest" ]
449    }
450    if (code_signature_support_oh_code_sign) {
451      deps += [ ":key_enable_utils_unittest" ]
452    }
453    deps += [ ":jit_code_sign_unittest" ]
454  }
455}
456