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