1# Copyright (c) 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/device_auth/deps_adapter/deviceauth_hals.gni")
15import("//base/security/device_auth/services/deviceauth.gni")
16
17#####################hydra-fuzz###################
18import("//build/config/features.gni")
19import("//build/ohos.gni")
20import("//build/test.gni")
21module_output_path = "device_auth/device_auth"
22
23##############################fuzztest##########################################
24ohos_fuzztest("DevAuthFuncFuzzTest") {
25  module_out_path = module_output_path
26  fuzz_config_file = "${deviceauth_path}/test/fuzztest/devauthfunc_fuzzer"
27  include_dirs = inc_path
28  include_dirs += hals_inc_path
29
30  include_dirs += [
31    ".",
32    "../../unittest/deviceauth/include",
33    "../../unittest/deviceauth/unit_test/include",
34    "${dev_frameworks_path}/inc/hiview_adapter",
35  ]
36
37  sources = hal_common_files
38  sources -= [ "${common_lib_path}/impl/src/json_utils.c" ]
39  sources += [
40    "${key_management_adapter_path}/impl/src/common/mbedtls_ec_adapter.c",
41    "${key_management_adapter_path}/impl/src/huks_adapter.c",
42    "${key_management_adapter_path}/impl/src/standard/crypto_hash_to_point.c",
43    "${key_management_adapter_path}/impl/src/standard/huks_adapter_diff_impl.c",
44    "${os_adapter_path}/impl/src/hc_log.c",
45    "${os_adapter_path}/impl/src/linux/hc_condition.c",
46    "${os_adapter_path}/impl/src/linux/hc_file.c",
47    "${os_adapter_path}/impl/src/linux/hc_init_protection.c",
48    "${os_adapter_path}/impl/src/linux/hc_thread.c",
49    "${os_adapter_path}/impl/src/linux/hc_types.c",
50    "../../unittest/deviceauth/source/hc_dev_info_mock.c",
51    "../../unittest/deviceauth/source/json_utils_mock.c",
52  ]
53
54  sources += dev_frameworks_files
55  sources += deviceauth_common_files
56  sources += database_manager_files
57  sources += cred_manager_files
58  sources += session_manager_files
59  sources += session_v1_files
60  sources += session_v2_files
61  sources += iso_protocol_files
62  sources += ec_speke_protocol_files
63  sources += auth_code_import_files
64  sources += pub_key_exchange_files
65  sources += save_trusted_info_files
66  sources += creds_manager_files
67  sources += broadcast_manager_files
68  sources += soft_bus_channel_mock_files
69
70  sources += group_auth_files
71  sources += group_auth_account_unrelated_files
72
73  sources += group_manager_files
74  sources += group_manager_peer_to_peer_files
75
76  sources += authenticators_p2p_files
77  sources += authenticators_p2p_iso_files
78  sources += authenticators_p2p_pake_files
79  sources += authenticators_standard_exchange_task_files
80
81  sources += account_related_files
82
83  sources += privacy_enhancement_files
84  sources += mk_agree_files
85
86  sources += security_label_adapter_files
87
88  sources -= [
89    "${authenticators_path}/src/account_unrelated/iso_task/iso_task_main.c",
90    "${authenticators_path}/src/account_unrelated/pake_task/pake_v1_task/pake_v1_task_main.c",
91  ]
92
93  sources += [
94    "${dev_frameworks_path}/src/plugin_adapter_mock/account_auth_plugin_proxy_mock.c",
95    "../../unittest/deviceauth/source/device_auth_ext_mock.c",
96    "../../unittest/deviceauth/source/os_account_adapter_mock.c",
97    "../../unittest/deviceauth/source/protocol_task_main_mock.c",
98  ]
99  defines = [
100    "P2P_PAKE_DL_PRIME_LEN_384",
101    "P2P_PAKE_EC_TYPE",
102    "ENABLE_EC_SPEKE",
103    "ENABLE_ISO",
104    "ENABLE_AUTH_CODE_IMPORT",
105    "ENABLE_PUB_KEY_EXCHANGE",
106    "ENABLE_SAVE_TRUSTED_INFO",
107    "ENABLE_ACCOUNT_AUTH_ISO",
108    "ENABLE_ACCOUNT_AUTH_EC_SPEKE",
109    "ENABLE_P2P_BIND_ISO",
110    "ENABLE_P2P_BIND_EC_SPEKE",
111    "ENABLE_P2P_AUTH_ISO",
112    "ENABLE_P2P_AUTH_EC_SPEKE",
113    "DEV_AUTH_FUNC_TEST",
114    "ENABLE_PSEUDONYM",
115  ]
116
117  sources += identity_manager_files
118  include_dirs += identity_manager_inc
119  sources += [ "devauthfunc_fuzzer.cpp" ]
120
121  cflags = [ "-DHILOG_ENABLE" ]
122  cflags += [
123    "-DDEV_AUTH_WORK_THREAD_STACK_SIZE=102400",
124    "-DMAX_AUTH_SESSION_COUNT=${max_auth_session_count}",
125  ]
126
127  external_deps = [
128    "cJSON:cjson",
129    "c_utils:utils",
130    "hilog:libhilog",
131    "huks:libhukssdk",
132    "mbedtls:mbedtls_shared",
133    "openssl:libcrypto_static",
134  ]
135}
136
137###############################################################################
138group("fuzztest") {
139  testonly = true
140  deps = []
141  deps += [
142    # deps file
143    ":DevAuthFuncFuzzTest",
144  ]
145}
146###############################################################################
147