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 deps = [ "${selinux_dir}:libselinux" ] 51 external_deps = [ 52 "hilog:libhilog", 53 "init:libbegetutil", 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/innerkits/code_sign_utils:libcode_sign_utils", 65 ] 66 67 include_dirs = [ 68 "utils/include", 69 "${code_signature_root_dir}/interfaces/innerkits/code_sign_utils/include", 70 "${code_signature_root_dir}/utils/include", 71 ] 72 73 external_deps = [ 74 "appverify:libhapverify", 75 "c_utils:utils", 76 "hilog:libhilog", 77 ] 78} 79 80ohos_unittest("code_sign_utils_in_c_unittest") { 81 module_out_path = "security/code_signature" 82 resource_config_file = "resources/ohos_test.xml" 83 sources = [ "code_sign_utils_in_c_test.cpp" ] 84 85 deps = [ "${code_signature_root_dir}/interfaces/innerkits/code_sign_utils:libcode_sign_utils" ] 86 87 include_dirs = [ 88 "${code_signature_root_dir}/interfaces/innerkits/code_sign_utils/include", 89 "${code_signature_root_dir}/utils/include", 90 ] 91 92 external_deps = [ 93 "c_utils:utils", 94 "hilog:libhilog", 95 ] 96} 97 98ohos_unittest("local_code_sign_unittest") { 99 sanitize = { 100 cfi = true 101 cfi_cross_dso = true 102 debug = false 103 } 104 branch_protector_ret = "pac_ret" 105 module_out_path = "security/code_signature" 106 resource_config_file = "resources/ohos_test.xml" 107 sources = [ "local_code_sign_test.cpp" ] 108 deps = [ 109 "${code_signature_root_dir}/interfaces/innerkits/code_sign_utils:libcode_sign_utils", 110 "${code_signature_root_dir}/interfaces/innerkits/local_code_sign:liblocal_code_sign_sdk", 111 ] 112 113 include_dirs = [ 114 "utils/include", 115 "${code_signature_root_dir}/interfaces/innerkits/local_code_sign/include", 116 "${code_signature_root_dir}/services/local_code_sign/include", 117 "${code_signature_root_dir}/interfaces/innerkits/code_sign_utils/include", 118 ] 119 configs = [ "${code_signature_root_dir}:common_utils_config" ] 120 external_deps = [ 121 "access_token:libaccesstoken_sdk", 122 "access_token:libnativetoken", 123 "access_token:libtoken_setproc", 124 "c_utils:utils", 125 "hilog:libhilog", 126 "ipc:ipc_core", 127 "openssl:libcrypto_shared", 128 "safwk:system_ability_fwk", 129 "samgr:samgr_proxy", 130 ] 131} 132 133ohos_unittest("local_code_sign_utils_unittest") { 134 module_out_path = "security/code_signature" 135 resource_config_file = "resources/ohos_test.xml" 136 sources = [ 137 "${code_signature_root_dir}/services/local_code_sign/src/local_sign_key.cpp", 138 "${code_signature_root_dir}/utils/src/cert_utils.cpp", 139 "local_code_sign_utils_test.cpp", 140 "mock/src/hks_api.cpp", 141 "mock/src/hks_api_mock_helper.cpp", 142 ] 143 deps = [ "${code_signature_root_dir}/interfaces/innerkits/code_sign_utils:libcode_sign_utils" ] 144 145 include_dirs = [ 146 "mock/include", 147 "utils/include", 148 "${code_signature_root_dir}/services/local_code_sign/include", 149 "${code_signature_root_dir}/services/key_enable/utils/include", 150 ] 151 152 configs = [ "${code_signature_root_dir}:common_utils_config" ] 153 external_deps = [ 154 "c_utils:utils", 155 "fsverity-utils:libfsverity_utils", 156 "hilog:libhilog", 157 "huks:libhukssdk", 158 "init:libbegetutil", 159 "openssl:libcrypto_shared", 160 ] 161} 162 163ohos_unittest("sign_and_enforce_unittest") { 164 module_out_path = "security/code_signature" 165 resource_config_file = "resources/ohos_test.xml" 166 sources = [ "sign_and_enforce_test.cpp" ] 167 deps = [ 168 "${code_signature_root_dir}/interfaces/innerkits/code_sign_utils:libcode_sign_utils", 169 "${code_signature_root_dir}/interfaces/innerkits/local_code_sign:liblocal_code_sign_sdk", 170 ] 171 172 include_dirs = [ 173 "utils/include", 174 "${code_signature_root_dir}/interfaces/innerkits/local_code_sign/include", 175 "${code_signature_root_dir}/services/local_code_sign/include", 176 "${code_signature_root_dir}/interfaces/innerkits/code_sign_utils/include", 177 ] 178 configs = [ "${code_signature_root_dir}:common_utils_config" ] 179 external_deps = [ 180 "access_token:libaccesstoken_sdk", 181 "access_token:libnativetoken", 182 "access_token:libtoken_setproc", 183 "c_utils:utils", 184 "hilog:libhilog", 185 "ipc:ipc_core", 186 "openssl:libcrypto_shared", 187 "safwk:system_ability_fwk", 188 "samgr:samgr_proxy", 189 ] 190} 191 192ohos_unittest("multi_thread_local_sign_unittest") { 193 module_out_path = "security/code_signature" 194 resource_config_file = "resources/ohos_test.xml" 195 sources = [ "multi_thread_local_sign_test.cpp" ] 196 deps = [ 197 "${code_signature_root_dir}/interfaces/innerkits/code_sign_utils:libcode_sign_utils", 198 "${code_signature_root_dir}/interfaces/innerkits/local_code_sign:liblocal_code_sign_sdk", 199 ] 200 201 include_dirs = [ 202 "utils/include", 203 "${code_signature_root_dir}/interfaces/innerkits/local_code_sign/include", 204 "${code_signature_root_dir}/services/local_code_sign/include", 205 "${code_signature_root_dir}/interfaces/innerkits/code_sign_utils/include", 206 ] 207 configs = [ "${code_signature_root_dir}:common_utils_config" ] 208 external_deps = [ 209 "access_token:libaccesstoken_sdk", 210 "access_token:libnativetoken", 211 "access_token:libtoken_setproc", 212 "c_utils:utils", 213 "hilog:libhilog", 214 "ipc:ipc_core", 215 "openssl:libcrypto_shared", 216 "safwk:system_ability_fwk", 217 "samgr:samgr_proxy", 218 ] 219} 220 221ohos_rust_static_library("rust_key_enable_lib") { 222 sources = [ "${code_signature_root_dir}/services/key_enable/src/lib.rs" ] 223 deps = [ 224 "${code_signature_root_dir}/services/key_enable/utils:libkey_enable_utils", 225 "${rust_openssl_dir}/openssl:lib", 226 "//third_party/rust/crates/cxx:lib", 227 "//third_party/rust/crates/lazy-static.rs:lib", 228 ] 229 external_deps = [ 230 "c_utils:utils_rust", 231 "hilog:hilog_rust", 232 "hisysevent:hisysevent_rust", 233 "ylong_json:lib", 234 ] 235 rustenv = [] 236 if (build_variant == "root") { 237 rustenv += [ "code_signature_debuggable=on" ] 238 } else { 239 rustenv += [ "code_signature_debuggable=off" ] 240 } 241 if (code_signature_support_oh_release_app) { 242 rustenv += [ "support_openharmony_ca=on" ] 243 } else { 244 rustenv += [ "support_openharmony_ca=off" ] 245 } 246 crate_name = "key_enable" 247 crate_type = "rlib" 248 subsystem_name = "security" 249 part_name = "code_signature" 250} 251 252ohos_rust_unittest("rust_key_enable_unittest") { 253 module_out_path = "security/code_signature" 254 resource_config_file = "resources/ohos_test.xml" 255 crate_root = "./rust_key_enable_test.rs" 256 sources = [ "./rust_key_enable_test.rs" ] 257 external_deps = [ "ylong_json:lib" ] 258 deps = [ ":rust_key_enable_lib" ] 259 subsystem_name = "security" 260 part_name = "code_signature" 261} 262 263ohos_unittest("enable_verity_ioctl_unittest") { 264 module_out_path = "security/code_signature" 265 resource_config_file = "resources/ohos_test.xml" 266 sources = [ 267 "enable_verity_test.cpp", 268 "utils/src/xpm_common.cpp", 269 ] 270 271 include_dirs = [ "utils/include" ] 272 configs = [ 273 "${code_signature_root_dir}:common_utils_config", 274 "${code_signature_root_dir}:common_public_config", 275 ] 276 deps = [ 277 ":key_enable_src_set", 278 "${code_signature_root_dir}/interfaces/innerkits/code_sign_attr_utils:libcode_sign_attr_utils", 279 "${selinux_dir}:libselinux", 280 ] 281 external_deps = [ 282 "c_utils:utils", 283 "hilog:libhilog", 284 ] 285} 286 287ohos_unittest("jit_code_sign_unittest") { 288 module_out_path = "security/code_signature" 289 include_dirs = [ 290 "${code_signature_root_dir}/interfaces/innerkits/jit_code_sign/include", 291 ] 292 sources = [ "jit_code_sign_test.cpp" ] 293 sanitize = { 294 cfi = true 295 cfi_cross_dso = true 296 debug = false 297 } 298 deps = [ 299 "${code_signature_root_dir}/interfaces/innerkits/code_sign_attr_utils:libcode_sign_attr_utils", 300 "${code_signature_root_dir}/interfaces/innerkits/jit_code_sign:libjit_code_sign", 301 ] 302 external_deps = [ 303 "c_utils:utils", 304 "hilog:libhilog", 305 ] 306 subsystem_name = "security" 307 part_name = "code_signature" 308} 309 310ohos_unittest("key_enable_utils_unittest") { 311 module_out_path = "security/code_signature" 312 sources = [ "key_enable_utils_test.cpp" ] 313 include_dirs = 314 [ "${code_signature_root_dir}/services/key_enable/utils/include" ] 315 deps = [ 316 "${code_signature_root_dir}/services/key_enable/utils:libkey_enable_utils", 317 ] 318} 319 320ohos_unittest("cert_chain_verifier_unittest") { 321 module_out_path = "security/code_signature" 322 sources = [ 323 "${code_signature_root_dir}/utils/src/cert_utils.cpp", 324 "${code_signature_root_dir}/utils/src/huks_attest_verifier.cpp", 325 "${code_signature_root_dir}/utils/src/openssl_utils.cpp", 326 "cert_chain_verifier_test.cpp", 327 ] 328 include_dirs = [ "utils/include" ] 329 configs = [ 330 "${code_signature_root_dir}:common_utils_config", 331 "${code_signature_root_dir}:common_public_config", 332 ] 333 defines = [ "CODE_SIGNATURE_DEBUGGABLE" ] 334 if (code_signature_support_oh_release_app) { 335 defines += [ "CODE_SIGNATURE_OH_ROOT_CA" ] 336 } 337 deps = [ 338 "${code_signature_root_dir}/services/key_enable/utils:libkey_enable_utils", 339 ] 340 external_deps = [ 341 "access_token:libaccesstoken_sdk", 342 "access_token:libnativetoken", 343 "access_token:libtoken_setproc", 344 "c_utils:utils", 345 "hilog:libhilog", 346 "huks:libhukssdk", 347 "openssl:libcrypto_shared", 348 ] 349} 350 351group("unittest_group") { 352 testonly = true 353 if (!defined(ohos_lite)) { 354 deps = [ 355 ":add_cert_path_unittest", 356 ":cert_chain_verifier_unittest", 357 ":code_sign_utils_in_c_unittest", 358 ":code_sign_utils_unittest", 359 ":enable_verity_ioctl_unittest", 360 ":local_code_sign_unittest", 361 ":local_code_sign_utils_unittest", 362 ":multi_thread_local_sign_unittest", 363 ":sign_and_enforce_unittest", 364 ] 365 if (!use_clang_coverage) { 366 deps += [ ":rust_key_enable_unittest" ] 367 } 368 if (code_signature_support_oh_code_sign) { 369 deps += [ ":key_enable_utils_unittest" ] 370 } 371 if (jit_code_sign_enable) { 372 deps += [ ":jit_code_sign_unittest" ] 373 } 374 } 375} 376