• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2023-2024 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 = "security/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 = "security/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 = "security/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 = "security/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 = "security/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  ]
138
139  include_dirs = [
140    "utils/include",
141    "${code_signature_root_dir}/interfaces/inner_api/local_code_sign/include",
142    "${code_signature_root_dir}/services/local_code_sign/include",
143    "${code_signature_root_dir}/interfaces/inner_api/code_sign_utils/include",
144  ]
145  configs = [ "${code_signature_root_dir}:common_utils_config" ]
146  external_deps = [
147    "access_token:libaccesstoken_sdk",
148    "access_token:libnativetoken",
149    "access_token:libtoken_setproc",
150    "c_utils:utils",
151    "hilog:libhilog",
152    "ipc:ipc_core",
153    "openssl:libcrypto_shared",
154    "safwk:system_ability_fwk",
155    "samgr:samgr_proxy",
156  ]
157}
158
159ohos_unittest("local_code_sign_utils_unittest") {
160  module_out_path = "security/code_signature"
161  resource_config_file = "resources/ohos_test.xml"
162  sources = [
163    "${code_signature_root_dir}/services/local_code_sign/src/local_sign_key.cpp",
164    "${code_signature_root_dir}/utils/src/cert_utils.cpp",
165    "local_code_sign_utils_test.cpp",
166    "mock/src/hks_api.cpp",
167    "mock/src/hks_api_mock_helper.cpp",
168  ]
169  deps = [ "${code_signature_root_dir}/interfaces/inner_api/code_sign_utils:libcode_sign_utils" ]
170
171  include_dirs = [
172    "mock/include",
173    "utils/include",
174    "${code_signature_root_dir}/services/local_code_sign/include",
175  ]
176
177  configs = [ "${code_signature_root_dir}:common_utils_config" ]
178  external_deps = [
179    "c_utils:utils",
180    "fsverity-utils:libfsverity_utils",
181    "hilog:libhilog",
182    "huks:libhukssdk",
183    "openssl:libcrypto_shared",
184  ]
185}
186
187ohos_unittest("local_code_sign_utils_mock_unittest") {
188  module_out_path = "security/code_signature"
189  resource_config_file = "resources/ohos_test.xml"
190  sources = [
191    "${code_signature_root_dir}/services/key_enable/utils/src/cert_path.cpp",
192    "${code_signature_root_dir}/services/local_code_sign/src/local_sign_key.cpp",
193    "${code_signature_root_dir}/utils/src/cert_utils.cpp",
194    "local_code_sign_utils_mock_test.cpp",
195    "mock/src/hks_api_mock_helper.cpp",
196    "mock/src/hks_api_mock_test.cpp",
197  ]
198  deps = [ "${code_signature_root_dir}/interfaces/inner_api/code_sign_utils:libcode_sign_utils" ]
199
200  include_dirs = [
201    "mock/include",
202    "utils/include",
203    "${code_signature_root_dir}/services/local_code_sign/include",
204    "${code_signature_root_dir}/services/key_enable/utils/include",
205  ]
206
207  configs = [ "${code_signature_root_dir}:common_utils_config" ]
208  external_deps = [
209    "c_utils:utils",
210    "fsverity-utils:libfsverity_utils",
211    "hilog:libhilog",
212    "huks:libhukssdk",
213    "init:libbegetutil",
214    "openssl:libcrypto_shared",
215  ]
216}
217
218ohos_unittest("sign_and_enforce_unittest") {
219  module_out_path = "security/code_signature"
220  resource_config_file = "resources/ohos_test.xml"
221  sources = [ "sign_and_enforce_test.cpp" ]
222  deps = [
223    "${code_signature_root_dir}/interfaces/inner_api/code_sign_utils:libcode_sign_utils",
224    "${code_signature_root_dir}/interfaces/inner_api/local_code_sign:liblocal_code_sign_sdk",
225  ]
226
227  include_dirs = [
228    "utils/include",
229    "${code_signature_root_dir}/interfaces/inner_api/local_code_sign/include",
230    "${code_signature_root_dir}/services/local_code_sign/include",
231    "${code_signature_root_dir}/interfaces/inner_api/code_sign_utils/include",
232  ]
233  configs = [ "${code_signature_root_dir}:common_utils_config" ]
234  external_deps = [
235    "access_token:libaccesstoken_sdk",
236    "access_token:libnativetoken",
237    "access_token:libtoken_setproc",
238    "c_utils:utils",
239    "hilog:libhilog",
240    "ipc:ipc_core",
241    "openssl:libcrypto_shared",
242    "safwk:system_ability_fwk",
243    "samgr:samgr_proxy",
244  ]
245}
246
247ohos_unittest("multi_thread_local_sign_unittest") {
248  module_out_path = "security/code_signature"
249  resource_config_file = "resources/ohos_test.xml"
250  sources = [ "multi_thread_local_sign_test.cpp" ]
251  deps = [
252    "${code_signature_root_dir}/interfaces/inner_api/code_sign_utils:libcode_sign_utils",
253    "${code_signature_root_dir}/interfaces/inner_api/local_code_sign:liblocal_code_sign_sdk",
254  ]
255
256  include_dirs = [
257    "utils/include",
258    "${code_signature_root_dir}/interfaces/inner_api/local_code_sign/include",
259    "${code_signature_root_dir}/services/local_code_sign/include",
260    "${code_signature_root_dir}/interfaces/inner_api/code_sign_utils/include",
261  ]
262  configs = [ "${code_signature_root_dir}:common_utils_config" ]
263  external_deps = [
264    "access_token:libaccesstoken_sdk",
265    "access_token:libnativetoken",
266    "access_token:libtoken_setproc",
267    "c_utils:utils",
268    "hilog:libhilog",
269    "ipc:ipc_core",
270    "openssl:libcrypto_shared",
271    "safwk:system_ability_fwk",
272    "samgr:samgr_proxy",
273  ]
274}
275
276ohos_rust_static_library("rust_key_enable_lib") {
277  sources = [ "${code_signature_root_dir}/services/key_enable/src/lib.rs" ]
278  deps = [
279    "${code_signature_root_dir}/services/key_enable/utils:libkey_enable_utils",
280    "//third_party/rust/crates/cxx:lib",
281    "//third_party/rust/crates/lazy-static.rs:lib",
282  ]
283  external_deps = [
284    "c_utils:utils_rust",
285    "hilog:hilog_rust",
286    "hisysevent:hisysevent_rust",
287    "rust_rust-openssl:lib",
288    "ylong_json:lib",
289  ]
290  rustenv = []
291  if (build_variant == "root") {
292    rustenv += [ "code_signature_debuggable=on" ]
293  } else {
294    rustenv += [ "code_signature_debuggable=off" ]
295  }
296  if (code_signature_support_oh_release_app) {
297    rustenv += [ "support_openharmony_ca=on" ]
298  } else {
299    rustenv += [ "support_openharmony_ca=off" ]
300  }
301  crate_name = "key_enable"
302  crate_type = "rlib"
303  subsystem_name = "security"
304  part_name = "code_signature"
305}
306
307ohos_rust_unittest("rust_key_enable_unittest") {
308  module_out_path = "security/code_signature"
309  resource_config_file = "resources/ohos_test.xml"
310  crate_root = "./rust_key_enable_test.rs"
311  sources = [ "./rust_key_enable_test.rs" ]
312  external_deps = [ "ylong_json:lib" ]
313  deps = [ ":rust_key_enable_lib" ]
314  subsystem_name = "security"
315  part_name = "code_signature"
316}
317
318ohos_unittest("enable_verity_ioctl_unittest") {
319  module_out_path = "security/code_signature"
320  resource_config_file = "resources/ohos_test.xml"
321  sources = [
322    "enable_verity_test.cpp",
323    "utils/src/xpm_common.cpp",
324  ]
325
326  include_dirs = [ "utils/include" ]
327  configs = [
328    "${code_signature_root_dir}:common_utils_config",
329    "${code_signature_root_dir}:common_public_config",
330  ]
331  deps = [
332    ":key_enable_src_set",
333    "${code_signature_root_dir}/interfaces/inner_api/code_sign_attr_utils:libcode_sign_attr_utils",
334  ]
335  external_deps = [
336    "c_utils:utils",
337    "hilog:libhilog",
338    "selinux:libselinux",
339  ]
340}
341
342ohos_unittest("jit_code_sign_unittest") {
343  module_out_path = "security/code_signature"
344  include_dirs = [
345    "${code_signature_root_dir}/interfaces/inner_api/jit_code_sign/include",
346  ]
347  sources = [ "jit_code_sign_test.cpp" ]
348  sanitize = {
349    cfi = true
350    cfi_cross_dso = true
351    debug = false
352  }
353  deps = [
354    "${code_signature_root_dir}/interfaces/inner_api/code_sign_attr_utils:libcode_sign_attr_utils",
355    "${code_signature_root_dir}/interfaces/inner_api/jit_code_sign:libjit_code_sign",
356  ]
357  external_deps = [
358    "c_utils:utils",
359    "hilog:libhilog",
360  ]
361  subsystem_name = "security"
362  part_name = "code_signature"
363}
364
365ohos_unittest("key_enable_utils_unittest") {
366  module_out_path = "security/code_signature"
367  sources = [
368    "${code_signature_root_dir}/services/key_enable/utils/src/devices_security.cpp",
369    "key_enable_utils_test.cpp",
370  ]
371  defines = [ "KEY_ENABLE_UTILS_TEST" ]
372  configs = [ "${code_signature_root_dir}:common_utils_config" ]
373  include_dirs =
374      [ "${code_signature_root_dir}/services/key_enable/utils/include" ]
375  deps = [
376    "${code_signature_root_dir}/services/key_enable/utils:libkey_enable_utils",
377  ]
378  external_deps = [
379    "c_utils:utils",
380    "hilog:libhilog",
381  ]
382}
383
384ohos_unittest("cert_chain_verifier_unittest") {
385  module_out_path = "security/code_signature"
386  sources = [
387    "${code_signature_root_dir}/utils/src/cert_utils.cpp",
388    "${code_signature_root_dir}/utils/src/huks_attest_verifier.cpp",
389    "${code_signature_root_dir}/utils/src/openssl_utils.cpp",
390    "cert_chain_verifier_test.cpp",
391  ]
392  include_dirs = [ "utils/include" ]
393  configs = [
394    "${code_signature_root_dir}:common_utils_config",
395    "${code_signature_root_dir}:common_public_config",
396  ]
397  defines = [ "CODE_SIGNATURE_DEBUGGABLE" ]
398  if (code_signature_support_oh_release_app) {
399    defines += [ "CODE_SIGNATURE_OH_ROOT_CA" ]
400  }
401  deps = [
402    "${code_signature_root_dir}/services/key_enable/utils:libkey_enable_utils",
403  ]
404  external_deps = [
405    "access_token:libaccesstoken_sdk",
406    "access_token:libnativetoken",
407    "access_token:libtoken_setproc",
408    "c_utils:utils",
409    "hilog:libhilog",
410    "huks:libhukssdk",
411    "openssl:libcrypto_shared",
412  ]
413}
414
415group("unittest_group") {
416  testonly = true
417  if (!defined(ohos_lite)) {
418    deps = [
419      ":add_cert_path_unittest",
420      ":cert_chain_verifier_unittest",
421      ":code_sign_attr_utils_unittest",
422      ":code_sign_utils_in_c_unittest",
423      ":code_sign_utils_unittest",
424      ":enable_verity_ioctl_unittest",
425      ":local_code_sign_unittest",
426      ":local_code_sign_utils_mock_unittest",
427      ":local_code_sign_utils_unittest",
428      ":multi_thread_local_sign_unittest",
429      ":sign_and_enforce_unittest",
430    ]
431    if (!use_clang_coverage) {
432      deps += [ ":rust_key_enable_unittest" ]
433    }
434    if (code_signature_support_oh_code_sign) {
435      deps += [ ":key_enable_utils_unittest" ]
436    }
437    deps += [ ":jit_code_sign_unittest" ]
438  }
439}
440