1# Copyright (C) 2021-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("//base/security/huks/build/config.gni")
15import("//base/security/huks/huks.gni")
16import("//build/ohos.gni")
17
18config("public_huks_config") {
19  include_dirs = [
20    "//base/security/huks/interfaces/inner_api/huks_standard/main/include",
21    "//base/security/huks/frameworks/huks_standard/main/common/include",
22    "//base/security/huks/services/huks_standard/huks_engine/main/core/include",
23    "//base/security/huks/services/huks_standard/huks_engine/main/device_cert_manager/include",
24    "//base/security/huks/frameworks/huks_standard/main/os_dependency/ipc/include",
25    "//base/security/huks/frameworks/huks_standard/main/crypto_engine/openssl/include",
26    "//base/security/huks/utils/file_operator",
27    "//base/security/huks/utils/list",
28    "//base/security/huks/utils/mutex",
29    "//base/security/huks/frameworks/huks_standard/main/core/include",
30    "//base/security/huks/frameworks/huks_standard/main/os_dependency/sysinfo/include",
31    "//base/security/huks/services/huks_standard/huks_service/main/core/include",
32    "//base/security/huks/services/huks_standard/huks_service/main/hks_storage/include",
33    "//base/security/huks/services/huks_standard/huks_service/main/systemapi_wrap/dcm/include",
34    "//base/security/huks/services/huks_standard/huks_service/main/os_dependency/idl/passthrough",
35    "//base/security/huks/utils/crypto_adapter",
36    "//base/security/huks/services/huks_standard/huks_service/main/systemapi_wrap/useridm/inc",
37    "//base/security/huks/services/huks_standard/huks_service/main/systemapi_wrap/bms/include",
38    "//base/security/huks/services/huks_standard/huks_service/main/systemapi_wrap/hitrace_meter_wrapper/include",
39    "//base/security/huks/services/huks_standard/huks_engine/main/core_dependency/include",
40    "//base/security/huks/services/huks_standard/huks_service/main/systemapi_wrap/hisysevent_wrapper/include",
41    "//base/security/huks/services/huks_standard/huks_service/main/os_dependency/sa",
42    "//base/security/huks/services/huks_standard/huks_service/main/upgrade/file_transfer/include",
43    "//base/security/huks/services/huks_standard/huks_service/main/upgrade/core/include",
44    "//base/security/huks/services/huks_standard/huks_service/main/upgrade/lock/include",
45    "//base/security/huks/services/huks_standard/huks_service/main/systemapi_wrap/at_wrapper/include",
46    "//base/security/huks/utils/file_iterative_reader/include",
47  ]
48  if (huks_use_rkc_in_standard) {
49    include_dirs += [ "//base/security/huks/frameworks/huks_standard/main/crypto_engine/rkc/include" ]
50  }
51}
52
53huks_sources = [
54  "//base/security/huks/frameworks/huks_standard/main/common/src/hks_ability.c",
55  "//base/security/huks/frameworks/huks_standard/main/common/src/hks_base_check.c",
56  "//base/security/huks/frameworks/huks_standard/main/common/src/hks_check_paramset.c",
57  "//base/security/huks/frameworks/huks_standard/main/common/src/hks_common_check.c",
58  "//base/security/huks/frameworks/huks_standard/main/common/src/hks_crypto_adapter.c",
59  "//base/security/huks/frameworks/huks_standard/main/common/src/hks_errcode_adapter.c",
60  "//base/security/huks/frameworks/huks_standard/main/common/src/hks_param.c",
61  "//base/security/huks/frameworks/huks_standard/main/common/src/hks_tags_type_manager.c",
62  "//base/security/huks/frameworks/huks_standard/main/core/src/hks_local_engine.c",
63  "//base/security/huks/frameworks/huks_standard/main/core/src/hks_verifier.c",
64  "//base/security/huks/frameworks/huks_standard/main/os_dependency/ipc/src/hks_client_service_passthrough.c",
65  "//base/security/huks/frameworks/huks_standard/main/os_dependency/ipc/src/hks_ipc_check.c",
66  "//base/security/huks/frameworks/huks_standard/main/os_dependency/posix/hks_mem.c",
67  "//base/security/huks/frameworks/huks_standard/main/os_dependency/sysinfo/src/hks_get_process_info_passthrough.c",
68  "//base/security/huks/frameworks/huks_standard/main/os_dependency/sysinfo/src/hks_get_udid.c",
69  "//base/security/huks/interfaces/inner_api/huks_standard/source/hks_api.c",
70  "//base/security/huks/interfaces/inner_api/huks_standard/source/hks_api_adapter.c",
71  "//base/security/huks/services/huks_standard/huks_service/main/core/src/hks_client_check.c",
72  "//base/security/huks/services/huks_standard/huks_service/main/core/src/hks_client_service.c",
73  "//base/security/huks/services/huks_standard/huks_service/main/core/src/hks_client_service_util.c",
74  "//base/security/huks/services/huks_standard/huks_service/main/core/src/hks_hitrace.c",
75  "//base/security/huks/services/huks_standard/huks_service/main/core/src/hks_report.c",
76  "//base/security/huks/services/huks_standard/huks_service/main/core/src/hks_session_manager.c",
77  "//base/security/huks/services/huks_standard/huks_service/main/core/src/hks_upgrade_helper.c",
78  "//base/security/huks/services/huks_standard/huks_service/main/core/src/hks_upgrade_key_accesser.c",
79  "//base/security/huks/services/huks_standard/huks_service/main/hks_storage/src/hks_lock.c",
80  "//base/security/huks/services/huks_standard/huks_service/main/hks_storage/src/hks_storage.c",
81  "//base/security/huks/services/huks_standard/huks_service/main/hks_storage/src/hks_storage_adapter.c",
82  "//base/security/huks/services/huks_standard/huks_service/main/hks_storage/src/hks_storage_file_lock.c",
83  "//base/security/huks/services/huks_standard/huks_service/main/hks_storage/src/hks_storage_manager.c",
84  "//base/security/huks/services/huks_standard/huks_service/main/hks_storage/src/hks_storage_utils.c",
85  "//base/security/huks/services/huks_standard/huks_service/main/os_dependency/posix/hks_rwlock.c",
86  "//base/security/huks/services/huks_standard/huks_service/main/os_dependency/sa/hks_event_observer.cpp",
87  "//base/security/huks/services/huks_standard/huks_service/main/plugin_proxy/src/hks_plugin_adapter_mock.c",
88  "//base/security/huks/services/huks_standard/huks_service/main/systemapi_mock/src/hks_useridm_api_mock.cpp",
89  "//base/security/huks/services/huks_standard/huks_service/main/systemapi_wrap/at_wrapper/src/hks_at_api_wrap.cpp",
90  "//base/security/huks/services/huks_standard/huks_service/main/systemapi_wrap/hitrace_meter_wrapper/src/hitrace_meter_wrapper.cpp",
91  "//base/security/huks/services/huks_standard/huks_service/main/upgrade/core/src/hks_upgrade.cpp",
92  "//base/security/huks/services/huks_standard/huks_service/main/upgrade/file_transfer/src/hks_config_parser.c",
93  "//base/security/huks/services/huks_standard/huks_service/main/upgrade/file_transfer/src/hks_file_transfer.c",
94  "//base/security/huks/services/huks_standard/huks_service/main/upgrade/lock/src/hks_upgrade_lock.cpp",
95  "//base/security/huks/test/unittest/huks_standard_test/module_test/mock/idl/src/huks_access_mock.c",
96  "//base/security/huks/utils/crypto_adapter/hks_client_service_adapter.c",
97  "//base/security/huks/utils/crypto_adapter/hks_client_service_adapter_common.c",
98  "//base/security/huks/utils/file_iterative_reader/src/hks_iterative_reader.c",
99  "//base/security/huks/utils/file_operator/hks_file_operator.c",
100  "//base/security/huks/utils/list/hks_double_list.c",
101  "//base/security/huks/utils/mutex/hks_mutex.c",
102]
103
104huks_core_sources = [
105  "//base/security/huks/services/huks_standard/huks_engine/main/core/src/hks_auth.c",
106  "//base/security/huks/services/huks_standard/huks_engine/main/core/src/hks_core_interfaces.c",
107  "//base/security/huks/services/huks_standard/huks_engine/main/core/src/hks_core_service_key_attest.c",
108  "//base/security/huks/services/huks_standard/huks_engine/main/core/src/hks_core_service_key_chipset_platform_derive.c",
109  "//base/security/huks/services/huks_standard/huks_engine/main/core/src/hks_core_service_key_generate.c",
110  "//base/security/huks/services/huks_standard/huks_engine/main/core/src/hks_core_service_key_operate_one_stage.c",
111  "//base/security/huks/services/huks_standard/huks_engine/main/core/src/hks_core_service_key_operate_three_stage.c",
112  "//base/security/huks/services/huks_standard/huks_engine/main/core/src/hks_core_service_key_other.c",
113  "//base/security/huks/services/huks_standard/huks_engine/main/core/src/hks_core_service_three_stage.c",
114  "//base/security/huks/services/huks_standard/huks_engine/main/core/src/hks_keyblob.c",
115  "//base/security/huks/services/huks_standard/huks_engine/main/core/src/hks_keynode.c",
116  "//base/security/huks/services/huks_standard/huks_engine/main/core/src/hks_secure_access.c",
117  "//base/security/huks/services/huks_standard/huks_engine/main/core/src/hks_upgrade_key.c",
118  "//base/security/huks/services/huks_standard/huks_engine/main/device_cert_manager/src/dcm_asn1.c",
119  "//base/security/huks/services/huks_standard/huks_engine/main/device_cert_manager/src/dcm_attest.c",
120  "//base/security/huks/services/huks_standard/huks_engine/main/device_cert_manager/src/dcm_attest_utils.c",
121]
122
123config("soft_huks_config") {
124  defines = [
125    "_FORTIFY_SOURCE = 2",
126    "HAS_OS_ACCOUNT_PART",
127    "SUPPORT_COMMON_EVENT",
128    "OPENSSL_SUPPRESS_DEPRECATED",
129  ]
130
131  cflags = [ "-fvisibility=default" ]
132
133  if (disable_authenticate == true) {
134    cflags += [ "-D_CUT_AUTHENTICATE_" ]
135  }
136
137  cflags += [ "-flto" ]
138
139  cflags += [ "-D_DEFAULT_SOURCE" ]
140
141  cflags += [
142    "-DHUKS_CHANGE_STORAGE_LEVEL_CONFIG=${huks_change_storage_level_config}",
143  ]
144}
145config("hilog_dir") {
146  include_dirs = []
147}
148ohos_static_library("libhukssdk_static") {
149  sanitize = {
150    integer_overflow = true
151    boundary_sanitize = true
152    ubsan = true
153  }
154  branch_protector_ret = "pac_ret"
155
156  subsystem_name = "security"
157  part_name = "huks"
158  public_configs = [ ":public_huks_config" ]
159  configs = [ ":soft_huks_config" ]
160
161  sources = huks_sources
162  sources += huks_core_sources
163
164  include_dirs = [
165    "//base/security/huks/frameworks/huks_standard/main/common/include",
166    "//base/security/huks/services/huks_standard/huks_engine/main/core/include",
167    "//base/security/huks/frameworks/huks_standard/main/os_dependency/ipc/include",
168    "//base/security/huks/frameworks/huks_standard/main/crypto_engine/openssl/include",
169    "//base/security/huks/utils/file_operator",
170    "//base/security/huks/utils/list",
171    "//base/security/huks/utils/mutex",
172
173    "//base/security/huks/frameworks/huks_standard/main/core/include",
174    "//base/security/huks/frameworks/huks_standard/main/os_dependency/sysinfo/include",
175    "//base/security/huks/services/huks_standard/huks_service/main/core/include",
176    "//base/security/huks/services/huks_standard/huks_service/main/os_dependency/idl/passthrough",
177    "//base/security/huks/utils/crypto_adapter",
178
179    "//base/security/huks/services/huks_standard/huks_service/main/systemapi_wrap/useridm/inc",
180    "//base/security/huks/services/huks_standard/huks_service/main/systemapi_wrap/bms/include",
181    "//base/security/huks/services/huks_standard/huks_service/main/systemapi_wrap/hitrace_meter_wrapper/include",
182    "//base/security/huks/services/huks_standard/huks_service/main/os_dependency/idl/ipc",  # hks_response.h
183    "//base/security/huks/services/huks_standard/huks_service/main/plugin_proxy/include",
184  ]
185  deps = []
186
187  configs += [ ":hilog_dir" ]
188  configs += [
189    "//base/security/huks/frameworks/config/build:l2_standard_common_config",
190  ]
191  deps += [
192    "//base/security/huks/frameworks/huks_standard/main/crypto_engine/openssl:libhuks_openssl_standard_static",
193    "//base/security/huks/services/huks_standard/huks_engine/main/core_dependency:libhuks_core_hal_api_static",
194    "//base/security/huks/services/huks_standard/huks_service/main/systemapi_wrap/hisysevent_wrapper:libhuks_utils_hisysevent_wrapper_static",
195    "//base/security/huks/utils/condition:libhuks_utils_condition_static",
196  ]
197  external_deps = [
198    "access_token:libaccesstoken_sdk",
199    "bounds_checking_function:libsec_shared",
200    "c_utils:utils",
201    "hilog:libhilog",
202    "hitrace:hitrace_meter",
203    "hitrace:libhitracechain",
204    "openssl:libcrypto_shared",
205    "safwk:system_ability_fwk",
206    "samgr:samgr_proxy",
207  ]
208
209  if (enable_user_auth_framework) {
210    external_deps += [ "user_auth_framework:userauth_client" ]
211  }
212
213  if (support_jsapi) {
214    external_deps += [ "os_account:os_account_innerkits" ]
215    external_deps += [
216      "ability_base:want",
217      "common_event_service:cesfwk_innerkits",
218      "ipc:ipc_single",
219    ]
220  }
221}
222