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 ] 228 external_deps = [ 229 "c_utils:utils_rust", 230 "hilog:hilog_rust", 231 "hisysevent:hisysevent_rust", 232 "ylong_json:lib", 233 ] 234 rustenv = [] 235 if (build_variant == "root") { 236 rustenv += [ "code_signature_debuggable=on" ] 237 } else { 238 rustenv += [ "code_signature_debuggable=off" ] 239 } 240 if (code_signature_support_oh_release_app) { 241 rustenv += [ "support_openharmony_ca=on" ] 242 } else { 243 rustenv += [ "support_openharmony_ca=off" ] 244 } 245 crate_name = "key_enable" 246 crate_type = "rlib" 247 subsystem_name = "security" 248 part_name = "code_signature" 249} 250 251ohos_rust_unittest("rust_key_enable_unittest") { 252 module_out_path = "security/code_signature" 253 resource_config_file = "resources/ohos_test.xml" 254 crate_root = "./rust_key_enable_test.rs" 255 sources = [ "./rust_key_enable_test.rs" ] 256 deps = [ ":rust_key_enable_lib" ] 257 subsystem_name = "security" 258 part_name = "code_signature" 259} 260 261ohos_unittest("enable_verity_ioctl_unittest") { 262 module_out_path = "security/code_signature" 263 resource_config_file = "resources/ohos_test.xml" 264 sources = [ 265 "enable_verity_test.cpp", 266 "utils/src/xpm_common.cpp", 267 ] 268 269 include_dirs = [ "utils/include" ] 270 configs = [ 271 "${code_signature_root_dir}:common_utils_config", 272 "${code_signature_root_dir}:common_public_config", 273 ] 274 deps = [ 275 ":key_enable_src_set", 276 "${code_signature_root_dir}/interfaces/innerkits/code_sign_attr_utils:libcode_sign_attr_utils", 277 "${selinux_dir}:libselinux", 278 ] 279 external_deps = [ 280 "c_utils:utils", 281 "hilog:libhilog", 282 ] 283} 284 285ohos_unittest("jit_code_sign_unittest") { 286 module_out_path = "security/code_signature" 287 include_dirs = [ 288 "${code_signature_root_dir}/interfaces/innerkits/jit_code_sign/include", 289 ] 290 sources = [ "jit_code_sign_test.cpp" ] 291 sanitize = { 292 cfi = true 293 cfi_cross_dso = true 294 debug = false 295 } 296 deps = [ 297 "${code_signature_root_dir}/interfaces/innerkits/code_sign_attr_utils:libcode_sign_attr_utils", 298 "${code_signature_root_dir}/interfaces/innerkits/jit_code_sign:libjit_code_sign", 299 ] 300 external_deps = [ 301 "c_utils:utils", 302 "hilog:libhilog", 303 ] 304 subsystem_name = "security" 305 part_name = "code_signature" 306} 307 308ohos_unittest("key_enable_utils_unittest") { 309 module_out_path = "security/code_signature" 310 sources = [ "key_enable_utils_test.cpp" ] 311 include_dirs = 312 [ "${code_signature_root_dir}/services/key_enable/utils/include" ] 313 deps = [ 314 "${code_signature_root_dir}/services/key_enable/utils:libkey_enable_utils", 315 ] 316} 317 318ohos_unittest("cert_chain_verifier_unittest") { 319 module_out_path = "security/code_signature" 320 sources = [ 321 "${code_signature_root_dir}/utils/src/cert_utils.cpp", 322 "${code_signature_root_dir}/utils/src/huks_attest_verifier.cpp", 323 "${code_signature_root_dir}/utils/src/openssl_utils.cpp", 324 "cert_chain_verifier_test.cpp", 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 defines = [ "CODE_SIGNATURE_DEBUGGABLE" ] 332 if (code_signature_support_oh_release_app) { 333 defines += [ "CODE_SIGNATURE_OH_ROOT_CA" ] 334 } 335 deps = [ 336 "${code_signature_root_dir}/services/key_enable/utils:libkey_enable_utils", 337 ] 338 external_deps = [ 339 "access_token:libaccesstoken_sdk", 340 "access_token:libnativetoken", 341 "access_token:libtoken_setproc", 342 "c_utils:utils", 343 "hilog:libhilog", 344 "huks:libhukssdk", 345 "openssl:libcrypto_shared", 346 ] 347} 348 349group("unittest_group") { 350 testonly = true 351 if (!defined(ohos_lite)) { 352 deps = [ 353 ":add_cert_path_unittest", 354 ":cert_chain_verifier_unittest", 355 ":code_sign_utils_in_c_unittest", 356 ":code_sign_utils_unittest", 357 ":enable_verity_ioctl_unittest", 358 ":local_code_sign_unittest", 359 ":local_code_sign_utils_unittest", 360 ":multi_thread_local_sign_unittest", 361 ":sign_and_enforce_unittest", 362 ] 363 if (!use_clang_coverage) { 364 deps += [ ":rust_key_enable_unittest" ] 365 } 366 if (code_signature_support_oh_code_sign) { 367 deps += [ ":key_enable_utils_unittest" ] 368 } 369 if (jit_code_sign_enable) { 370 deps += [ ":jit_code_sign_unittest" ] 371 } 372 } 373} 374