1# 2# Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14# 15 16import("//base/security/huks/build/config.gni") 17import("//base/security/huks/huks.gni") 18import("//build/lite/config/component/lite_component.gni") 19import("//build/ohos.gni") 20 21config("hilog_dir") { 22 include_dirs = 23 [ "//base/hiviewdfx/hilog_lite/interfaces/native/innerkits/hilog/" ] 24} 25config("hilog_lite_dir") { 26 include_dirs = 27 [ "//base/hiviewdfx/hilog_lite/interfaces/native/kits/hilog_lite/" ] 28} 29 30config("mbedtls_engine") { 31 include_dirs = 32 [ "../../../frameworks/huks_standard/main/crypto_engine/mbedtls/include" ] 33} 34 35config("soft_huks_config") { 36 include_dirs = [ 37 "../../../frameworks/huks_standard/main/common/include", 38 "../../../frameworks/huks_standard/main/core/include", 39 "../../../frameworks/huks_standard/main/crypto_engine/mbedtls/include", 40 "../../../frameworks/huks_standard/main/crypto_engine/openssl/include", 41 "../../../frameworks/huks_standard/main/crypto_engine/rkc/include", 42 "../../../frameworks/huks_standard/main/os_dependency/ipc/include", 43 "../../../frameworks/huks_standard/main/os_dependency/sysinfo/include", 44 "../../../services/huks_standard/huks_engine/main/core/include", 45 "../../../services/huks_standard/huks_service/main/core/include", 46 "//base/security/huks/services/huks_standard/huks_engine/main/core/include", 47 "//base/security/huks/services/huks_standard/huks_engine/main/device_cert_manager/include", 48 "//base/security/huks/services/huks_standard/huks_service/main/os_dependency/idl/passthrough", 49 "//base/security/huks/utils/crypto_adapter", 50 "//base/security/huks/utils/file_operator", 51 "//base/security/huks/utils/list", 52 "//base/security/huks/utils/mutex", 53 "//commonlibrary/utils_lite/memory/include", 54 ] 55 56 if (board_toolchain_type != "iccarm") { 57 defines = [ "_FORTIFY_SOURCE = 2" ] 58 } 59 if (board_toolchain_type == "iccarm") { 60 cflags = [ 61 "--diag_suppress", 62 "Pe370,Pe226", 63 ] 64 defines = [ "HKS_USE_OHOS_MEM" ] 65 } else { 66 cflags = [ 67 "-fvisibility=hidden", 68 "-Wall", 69 "-Werror", 70 ] 71 } 72 73 if (disable_authenticate == true) { 74 cflags += [ "-D_CUT_AUTHENTICATE_" ] 75 } 76 77 if (ohos_kernel_type != "liteos_m") { 78 cflags += [ "-flto" ] 79 } 80 81 if (huks_use_hardware_root_key == true) { 82 cflags += [ "-D_HARDWARE_ROOT_KEY_" ] 83 } 84 85 if (huks_use_lite_storage == true) { 86 cflags += [ "-D_STORAGE_LITE_" ] 87 } else { 88 if (ohos_kernel_type == "liteos_a") { 89 cflags += [ "-D_BSD_SOURCE" ] 90 } else { 91 cflags += [ "-D_DEFAULT_SOURCE" ] 92 } 93 } 94 95 if (ohos_kernel_type != "liteos_m" || huks_enable_log == true) { 96 cflags += [ "-D_HUKS_LOG_ENABLE_" ] 97 } 98 99 if (huks_config_file != "") { 100 print(huks_config_file) 101 cflags += [ "-DHKS_CONFIG_FILE=\"${huks_config_file}\"" ] 102 } 103 104 cflags += [ 105 "-DHKS_CONFIG_KEY_STORE_PATH=\"${huks_key_store_path}\"", 106 "-DHKS_KEY_VERSION=${huks_key_version}", 107 ] 108} 109 110config("public_huks_config") { 111 include_dirs = [ "../../../interfaces/inner_api/huks_standard/main/include" ] 112} 113 114#begin: add 115if (ohos_kernel_type == "liteos_m") { 116 ohos_static_library("huks_3.0_sdk") { 117 public_configs = [ ":public_huks_config" ] 118 configs = [ ":soft_huks_config" ] 119 120 sources = [] 121 122 cflags = [] 123 124 deps = [] 125 126 if (huks_use_mbedtls == true) { 127 sources += [ 128 "../../../frameworks/huks_standard/main/crypto_engine/mbedtls/src/hks_crypto_ed25519.c", 129 "../../../frameworks/huks_standard/main/crypto_engine/mbedtls/src/hks_mbedtls_ability.c", 130 "../../../frameworks/huks_standard/main/crypto_engine/mbedtls/src/hks_mbedtls_aes.c", 131 "../../../frameworks/huks_standard/main/crypto_engine/mbedtls/src/hks_mbedtls_bn.c", 132 "../../../frameworks/huks_standard/main/crypto_engine/mbedtls/src/hks_mbedtls_common.c", 133 "../../../frameworks/huks_standard/main/crypto_engine/mbedtls/src/hks_mbedtls_ecc.c", 134 "../../../frameworks/huks_standard/main/crypto_engine/mbedtls/src/hks_mbedtls_ecdh.c", 135 "../../../frameworks/huks_standard/main/crypto_engine/mbedtls/src/hks_mbedtls_ecdsa.c", 136 "../../../frameworks/huks_standard/main/crypto_engine/mbedtls/src/hks_mbedtls_engine.c", 137 "../../../frameworks/huks_standard/main/crypto_engine/mbedtls/src/hks_mbedtls_get_main_key.c", 138 "../../../frameworks/huks_standard/main/crypto_engine/mbedtls/src/hks_mbedtls_hash.c", 139 "../../../frameworks/huks_standard/main/crypto_engine/mbedtls/src/hks_mbedtls_hmac.c", 140 "../../../frameworks/huks_standard/main/crypto_engine/mbedtls/src/hks_mbedtls_kdf.c", 141 "../../../frameworks/huks_standard/main/crypto_engine/mbedtls/src/hks_mbedtls_rsa.c", 142 "../../../frameworks/huks_standard/main/crypto_engine/mbedtls/src/hks_mbedtls_x25519.c", 143 "../../../frameworks/huks_standard/main/crypto_engine/rkc/src/hks_rkc.c", 144 "../../../frameworks/huks_standard/main/crypto_engine/rkc/src/hks_rkc_rw.c", 145 ] 146 147 if (huks_dependency_mbedtls_path != "") { 148 deps += [ huks_dependency_mbedtls_path ] 149 } else { 150 deps += [ "//third_party/mbedtls:mbedtls_static" ] 151 } 152 } 153 154 sources += [ 155 "../../../frameworks/huks_standard/main/common/src/hks_ability.c", 156 "../../../frameworks/huks_standard/main/common/src/hks_base_check.c", 157 "../../../frameworks/huks_standard/main/common/src/hks_check_paramset.c", 158 "../../../frameworks/huks_standard/main/common/src/hks_common_check.c", 159 "../../../frameworks/huks_standard/main/common/src/hks_crypto_adapter.c", 160 "../../../frameworks/huks_standard/main/common/src/hks_param.c", 161 "../../../frameworks/huks_standard/main/common/src/hks_tags_type_manager.c", 162 "../../../frameworks/huks_standard/main/core/src/hks_local_engine.c", 163 "../../../frameworks/huks_standard/main/os_dependency/ipc/src/hks_client_service_passthrough.c", 164 "../../../frameworks/huks_standard/main/os_dependency/posix/hks_mem.c", 165 "../../../frameworks/huks_standard/main/os_dependency/posix/hks_util.c", 166 "../../../frameworks/huks_standard/main/os_dependency/sysinfo/src/hks_get_process_info_passthrough.c", 167 "../../../frameworks/huks_standard/main/os_dependency/sysinfo/src/hks_get_udid.c", 168 "../../../interfaces/inner_api/huks_standard/main/src/hks_api.c", 169 "../../../interfaces/inner_api/huks_standard/main/src/hks_api_adapter.c", 170 "../../../services/huks_standard/huks_engine/main/core/src/hks_auth.c", 171 "../../../services/huks_standard/huks_engine/main/core/src/hks_core_interfaces.c", 172 "../../../services/huks_standard/huks_engine/main/core/src/hks_core_service.c", 173 "../../../services/huks_standard/huks_engine/main/core/src/hks_core_service_three_stage.c", 174 "../../../services/huks_standard/huks_engine/main/core/src/hks_keyblob.c", 175 "../../../services/huks_standard/huks_engine/main/core/src/hks_keynode.c", 176 "../../../services/huks_standard/huks_engine/main/core/src/hks_secure_access.c", 177 "../../../services/huks_standard/huks_engine/main/core/src/hks_sm_import_wrap_key.c", 178 "../../../services/huks_standard/huks_service/main/core/src/hks_client_check.c", 179 "../../../services/huks_standard/huks_service/main/core/src/hks_client_service.c", 180 "../../../services/huks_standard/huks_service/main/core/src/hks_client_service_util.c", 181 "../../../services/huks_standard/huks_service/main/core/src/hks_hitrace.c", 182 "../../../services/huks_standard/huks_service/main/core/src/hks_report.c", 183 "../../../services/huks_standard/huks_service/main/core/src/hks_session_manager.c", 184 "../../../services/huks_standard/huks_service/main/os_dependency/idl/passthrough/huks_access.c", 185 "../../../services/huks_standard/huks_service/main/os_dependency/idl/passthrough/huks_core_static_hal.c", 186 "../../../utils/crypto_adapter/hks_client_service_adapter_common.c", 187 "../../../utils/crypto_adapter/hks_client_service_adapter_lite.c", 188 "../../../utils/file_operator/hks_file_operator_lite.c", 189 "../../../utils/list/hks_double_list.c", 190 "../../../utils/mutex/hks_mutex.c", 191 "//base/security/huks/services/huks_standard/huks_engine/main/core/src/hks_upgrade_key.c", 192 "//base/security/huks/services/huks_standard/huks_service/main/core/src/hks_upgrade_helper.c", 193 "//base/security/huks/services/huks_standard/huks_service/main/core/src/hks_upgrade_key_accesser.c", 194 ] 195 sources += [ "hks_tmp_client.c" ] 196 197 if (huks_use_lite_storage == true) { 198 sources += [ 199 "../../../services/huks_standard/huks_engine/main/core/src/hks_keyblob_lite.c", 200 "../../../services/huks_standard/huks_service/main/core/src/hks_storage_adapter.c", 201 "../../../services/huks_standard/huks_service/main/core/src/hks_storage_lite.c", 202 ] 203 } else { 204 sources += [ "../../../services/huks_standard/huks_service/main/core/src/hks_storage.c" ] 205 } 206 207 include_dirs = [ 208 "//base/security/huks/frameworks/huks_standard/main/common/include", 209 "//base/security/huks/services/huks_standard/huks_engine/main/core/include", 210 ] 211 212 defines = [ 213 "LOG_ENGINE_HILOG_MODULE_SCY", 214 "HUKS_LOG_MINI_EXT_ENABLED", 215 ] 216 if (product_name == "wifiiot_hispark_pegasus") { 217 defines += [ "USE_HISI_MBED" ] 218 } 219 220 if (huks_enable_upgrade_key && !huks_use_lite_storage) { 221 defines += [ "HKS_ENABLE_UPGRADE_KEY" ] 222 } 223 224 if (enable_huks_lite_hap) { 225 defines += [ "HKS_ENABLE_LITE_HAP" ] 226 cflags += 227 [ "-DHKS_CONFIG_LITE_HAP_STORE_PATH=\"${huks_lite_hap_store_path}\"" ] 228 } 229 230 configs += [ ":hilog_lite_dir" ] 231 deps += [ "//base/hiviewdfx/hilog_lite/frameworks/mini:hilog_lite" ] 232 233 if (huks_enable_upgrade_rkc_v1tov2) { 234 # enable upgrade rkc derivation algorithm from PBKDF2 to HKDF 235 defines += [ "HKS_ENABLE_UPGRADE_RKC_DERIVE_ALG" ] 236 237 # compile code of old version 238 sources += [ "../../../frameworks/huks_standard/main/crypto_engine/rkc/src/hks_rkc_v1.c" ] 239 } 240 241 if (huks_enable_upgrade_derive_key_alg) { 242 # enable upgrade key derivation algorithm from PBKDF2 to HKDF 243 defines += [ "HKS_CHANGE_DERIVE_KEY_ALG_TO_HKDF" ] 244 } 245 246 cflags += [ "-DHKS_ENABLE_CLEAN_FILE" ] 247 } 248} else { 249 ohos_shared_library("huks_3.0_sdk") { 250 public_configs = [ ":public_huks_config" ] 251 252 configs = [] 253 configs += [ 254 "//base/security/huks/frameworks/config/build:l1_small_common_config", 255 ] 256 configs += [ ":soft_huks_config" ] 257 258 cflags = [] 259 260 deps = [] 261 deps += [ 262 "//base/security/huks/frameworks/huks_standard/main:huks_small_frameworks", 263 "//base/security/huks/utils/crypto_adapter:libhuks_utils_client_service_adapter_static", 264 "//foundation/communication/ipc/interfaces/innerkits/c/ipc:ipc_single", 265 "//foundation/systemabilitymgr/samgr_lite/samgr:samgr", 266 ] 267 268 include_dirs = [] 269 include_dirs += [ 270 "//foundation/systemabilitymgr/samgr_lite/interfaces/kits/registry", 271 "//foundation/systemabilitymgr/samgr_lite/samgr_endpoint/source", 272 273 "//base/security/huks/services/huks_standard/huks_service/main/os_dependency/sa/sa_mgr", 274 "//base/security/huks/frameworks/huks_standard/main/os_dependency/ipc/include", 275 ] 276 277 sources = [] 278 279 sources = [ 280 "//base/security/huks/interfaces/inner_api/huks_standard/main/src/hks_api.c", 281 "//base/security/huks/interfaces/inner_api/huks_standard/main/src/hks_api_adapter.c", 282 ] 283 284 sources += [ 285 "//base/security/huks/frameworks/huks_standard/main/os_dependency/ipc/src/hks_client_ipc_serialization.c", 286 "//base/security/huks/frameworks/huks_standard/main/os_dependency/ipc/src/hks_client_service_ipc.c", 287 "//base/security/huks/frameworks/huks_standard/main/os_dependency/ipc/src/hks_ipc_check.c", 288 "//base/security/huks/frameworks/huks_standard/main/os_dependency/ipc/src/hks_ipc_slice.c", 289 "//base/security/huks/frameworks/huks_standard/main/os_dependency/ipc/src/hks_samgr_client_proxy.c", 290 ] 291 292 configs += [ ":hilog_dir" ] 293 deps += [ 294 "//foundation/systemabilitymgr/samgr_lite/samgr:samgr", 295 "//third_party/bounds_checking_function:libsec_shared", 296 ] 297 298 external_deps = [ 299 "hilog_lite:hilog_shared", 300 "init:libbegetutil", 301 ] 302 303 defines = [ "LOG_ENGINE_HILOG_MODULE_SCY" ] 304 } 305 306 ohos_executable("huks_server") { 307 configs = [] 308 configs += [ 309 "//base/security/huks/frameworks/config/build:l1_small_common_config", 310 ] 311 configs += [ ":soft_huks_config" ] 312 313 sources = [] 314 sources += [ "//base/security/huks/services/huks_standard/huks_service/main/os_dependency/sa/sa_mgr/service_pro_main.c" ] 315 316 sources += [ 317 "//base/security/huks/services/huks_standard/huks_service/main/os_dependency/sa/sa_mgr/hks_samgr_service.c", 318 "//base/security/huks/services/huks_standard/huks_service/main/os_dependency/sa/sa_mgr/hks_samgr_service_feature.c", 319 ] 320 321 include_dirs = [] 322 323 include_dirs += [ 324 "//base/security/huks/frameworks/huks_standard/main/os_dependency/ipc/include", 325 "//base/security/huks/services/huks_standard/huks_service/main/os_dependency/sa", 326 ] 327 328 deps = [] 329 deps += [ 330 "//foundation/communication/ipc/interfaces/innerkits/c/ipc:ipc_single", 331 "//foundation/systemabilitymgr/samgr_lite/samgr:samgr", 332 ] 333 334 configs += [ ":hilog_dir" ] 335 deps += [ "//third_party/bounds_checking_function:libsec_shared" ] 336 337 deps += [ 338 "//base/security/huks/frameworks/huks_standard/main:huks_small_frameworks", 339 "//base/security/huks/services/huks_standard/huks_service/main:libhuks_service_small_static", 340 ] 341 external_deps = [ "hilog_lite:hilog_shared" ] 342 } 343 344 if (ohos_build_type == "debug") { 345 group("huks_3.0_test") { 346 deps = [ "//base/security/huks/test:unittest" ] 347 } 348 } 349 350 ohos_executable("hks_compatibility_bin") { 351 sources = [ 352 "//base/security/huks/utils/compatibility_bin/compatibility_small_bin.c", 353 ] 354 deps = [ "//third_party/bounds_checking_function:libsec_shared" ] 355 } 356} 357