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