1# Copyright (c) 2022-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("//foundation/communication/netstack/netstack_config.gni")
16
17TLS = "$NETSTACK_NATIVE_ROOT/tls_socket"
18TLS_NAPI = "$NETSTACK_DIR/frameworks/js/napi/tls"
19SOCKET = "$NETSTACK_DIR/frameworks/js/napi/socket"
20TLS_SOCKET_TEST = "$NETSTACK_DIR/test/unittest/tlssocket/client"
21
22tls_sources = [
23  "$TLS/src/secure_data.cpp",
24  "$TLS/src/socket_error.cpp",
25  "$TLS/src/tls_certificate.cpp",
26  "$TLS/src/tls_configuration.cpp",
27  "$TLS/src/tls_context.cpp",
28  "$TLS/src/tls_context_server.cpp",
29  "$TLS/src/tls_key.cpp",
30  "$TLS/src/tls_socket.cpp",
31  "$TLS/src/tls_socket_server.cpp",
32  "$TLS/src/tls_utils.cpp",
33]
34
35tls_napi_sources = [
36  "$TLS_NAPI/src/context/tls_bind_context.cpp",
37  "$TLS_NAPI/src/context/tls_connect_context.cpp",
38  "$TLS_NAPI/src/context/tls_extra_context.cpp",
39  "$TLS_NAPI/src/context/tls_init_context.cpp",
40  "$TLS_NAPI/src/context/tls_napi_context.cpp",
41  "$TLS_NAPI/src/context/tls_send_context.cpp",
42  "$TLS_NAPI/src/context/tls_server_close_context.cpp",
43  "$TLS_NAPI/src/context/tls_server_napi_context.cpp",
44  "$TLS_NAPI/src/context/tls_server_send_context.cpp",
45  "$TLS_NAPI/src/monitor.cpp",
46  "$TLS_NAPI/src/monitor_server.cpp",
47  "$TLS_NAPI/src/tlssocket_async_work.cpp",
48  "$TLS_NAPI/src/tlssocket_exec.cpp",
49  "$TLS_NAPI/src/tlssocket_module.cpp",
50  "$TLS_NAPI/src/tlssocketserver_async_work.cpp",
51  "$TLS_NAPI/src/tlssocketserver_exec.cpp",
52  "$TLS_NAPI/src/tlssocketserver_module.cpp",
53]
54
55socket_sources = [
56  "$SOCKET/async_context/src/bind_context.cpp",
57  "$SOCKET/async_context/src/common_context.cpp",
58  "$SOCKET/async_context/src/connect_context.cpp",
59  "$SOCKET/async_context/src/local_socket_context.cpp",
60  "$SOCKET/async_context/src/local_socket_server_context.cpp",
61  "$SOCKET/async_context/src/multicast_get_loopback_context.cpp",
62  "$SOCKET/async_context/src/multicast_get_ttl_context.cpp",
63  "$SOCKET/async_context/src/multicast_membership_context.cpp",
64  "$SOCKET/async_context/src/multicast_set_loopback_context.cpp",
65  "$SOCKET/async_context/src/multicast_set_ttl_context.cpp",
66  "$SOCKET/async_context/src/tcp_extra_context.cpp",
67  "$SOCKET/async_context/src/tcp_send_context.cpp",
68  "$SOCKET/async_context/src/tcp_server_common_context.cpp",
69  "$SOCKET/async_context/src/tcp_server_extra_context.cpp",
70  "$SOCKET/async_context/src/tcp_server_listen_context.cpp",
71  "$SOCKET/async_context/src/tcp_server_send_context.cpp",
72  "$SOCKET/async_context/src/udp_extra_context.cpp",
73  "$SOCKET/async_context/src/udp_send_context.cpp",
74  "$SOCKET/async_work/src/socket_async_work.cpp",
75  "$SOCKET/options/src/extra_options_base.cpp",
76  "$SOCKET/options/src/local_socket_options.cpp",
77  "$SOCKET/options/src/net_address.cpp",
78  "$SOCKET/options/src/socket_remote_info.cpp",
79  "$SOCKET/options/src/socket_state_base.cpp",
80  "$SOCKET/options/src/tcp_connect_options.cpp",
81  "$SOCKET/options/src/tcp_extra_options.cpp",
82  "$SOCKET/options/src/tcp_send_options.cpp",
83  "$SOCKET/options/src/udp_extra_options.cpp",
84  "$SOCKET/options/src/udp_send_options.cpp",
85  "$SOCKET/socket_exec/src/local_socket_exec.cpp",
86  "$SOCKET/socket_exec/src/socket_exec.cpp",
87  "$SOCKET/socket_exec/src/socket_extra_exec.cpp",
88  "$SOCKET/socket_module/src/socket_module.cpp",
89]
90
91tls_socket_test_sources = [ "$TLS_SOCKET_TEST/tls_utils_test.cpp" ]
92
93config("tls_test_config") {
94  include_dirs = [
95    "$TLS/include",
96    "$TLS_NAPI/include",
97    "$TLS_NAPI/include/context",
98    "$NETSTACK_INNERKITS_DIR/tls_socket/include",
99    "$NETSTACK_DIR/utils/napi_utils/include",
100    "$SOCKET/async_context/include",
101    "$SOCKET/async_work/include",
102    "$SOCKET/constant/include",
103    "$SOCKET/socket_exec/include",
104    "$SOCKET/socket_module/include",
105    "$SOCKET/options/include",
106    "$SOCKET/task_queue/include",
107  ]
108}
109
110ohos_unittest("two_way_tls_socket_unittest") {
111  sanitize = {
112    cfi = true
113    cfi_cross_dso = true
114    debug = false
115  }
116
117  branch_protector_ret = "pac_ret"
118
119  sources = [ "TlsSocketTest.cpp" ]
120  sources += tls_sources
121  sources += tls_napi_sources
122  sources += socket_sources
123  sources += tls_socket_test_sources
124
125  configs = [ ":tls_test_config" ]
126
127  deps = [
128    "$NETSTACK_DIR/utils:stack_utils_common",
129    "$NETSTACK_DIR/utils/napi_utils:napi_utils",
130  ]
131  external_deps = [
132    "c_utils:utils",
133    "hilog:libhilog",
134    "napi:ace_napi",
135    "openssl:libcrypto_shared",
136    "openssl:libssl_shared",
137  ]
138
139  defines = [ "OPENSSL_SUPPRESS_DEPRECATED" ]
140  if (defined(global_parts_info) &&
141      defined(global_parts_info.communication_netmanager_base) &&
142      global_parts_info.communication_netmanager_base) {
143    external_deps += [ "netmanager_base:net_conn_manager_if" ]
144    defines += [ "HAS_NETMANAGER_BASE=1" ]
145  } else {
146    defines += [ "HAS_NETMANAGER_BASE=0" ]
147  }
148
149  module_out_path = "netstack/tls_socket_unittest"
150  part_name = "netstack"
151  subsystem_name = "communication"
152}
153
154ohos_unittest("one_way_tls_socket_unittest") {
155  sanitize = {
156    cfi = true
157    cfi_cross_dso = true
158    debug = false
159  }
160
161  branch_protector_ret = "pac_ret"
162
163  sources = [ "TlsSocketOneWayTest.cpp" ]
164  sources += tls_sources
165  sources += tls_napi_sources
166  sources += socket_sources
167  sources += tls_socket_test_sources
168
169  configs = [ ":tls_test_config" ]
170
171  deps = [
172    "$NETSTACK_DIR/utils:stack_utils_common",
173    "$NETSTACK_DIR/utils/napi_utils:napi_utils",
174  ]
175  external_deps = [
176    "c_utils:utils",
177    "hilog:libhilog",
178    "napi:ace_napi",
179    "openssl:libcrypto_shared",
180    "openssl:libssl_shared",
181  ]
182
183  defines = [ "OPENSSL_SUPPRESS_DEPRECATED" ]
184  if (defined(global_parts_info) &&
185      defined(global_parts_info.communication_netmanager_base) &&
186      global_parts_info.communication_netmanager_base) {
187    external_deps += [ "netmanager_base:net_conn_manager_if" ]
188    defines += [ "HAS_NETMANAGER_BASE=1" ]
189  } else {
190    defines += [ "HAS_NETMANAGER_BASE=0" ]
191  }
192
193  module_out_path = "netstack/tls_socket_unittest"
194  part_name = "netstack"
195  subsystem_name = "communication"
196}
197
198ohos_unittest("two_way_tls_socket_certchain_unittest") {
199  sanitize = {
200    cfi = true
201    cfi_cross_dso = true
202    debug = false
203  }
204
205  branch_protector_ret = "pac_ret"
206
207  sources = [ "TlsSocketCertChainTest.cpp" ]
208  sources += tls_sources
209  sources += tls_napi_sources
210  sources += socket_sources
211  sources += tls_socket_test_sources
212
213  configs = [ ":tls_test_config" ]
214
215  deps = [
216    "$NETSTACK_DIR/utils:stack_utils_common",
217    "$NETSTACK_DIR/utils/napi_utils:napi_utils",
218  ]
219  external_deps = [
220    "c_utils:utils",
221    "hilog:libhilog",
222    "napi:ace_napi",
223    "openssl:libcrypto_shared",
224    "openssl:libssl_shared",
225  ]
226
227  defines = [ "OPENSSL_SUPPRESS_DEPRECATED" ]
228  if (defined(global_parts_info) &&
229      defined(global_parts_info.communication_netmanager_base) &&
230      global_parts_info.communication_netmanager_base) {
231    external_deps += [ "netmanager_base:net_conn_manager_if" ]
232    defines += [ "HAS_NETMANAGER_BASE=1" ]
233  } else {
234    defines += [ "HAS_NETMANAGER_BASE=0" ]
235  }
236
237  module_out_path = "netstack/tls_socket_unittest"
238  part_name = "netstack"
239  subsystem_name = "communication"
240}
241
242ohos_unittest("one_way_tls_socket_certchain_unittest") {
243  sanitize = {
244    cfi = true
245    cfi_cross_dso = true
246    debug = false
247  }
248
249  branch_protector_ret = "pac_ret"
250
251  sources = [ "TlsSocketCertChainOneWayTest.cpp" ]
252  sources += tls_sources
253  sources += tls_napi_sources
254  sources += socket_sources
255  sources += tls_socket_test_sources
256
257  configs = [ ":tls_test_config" ]
258
259  deps = [
260    "$NETSTACK_DIR/utils:stack_utils_common",
261    "$NETSTACK_DIR/utils/napi_utils:napi_utils",
262  ]
263  external_deps = [
264    "c_utils:utils",
265    "hilog:libhilog",
266    "napi:ace_napi",
267    "openssl:libcrypto_shared",
268    "openssl:libssl_shared",
269  ]
270
271  defines = [ "OPENSSL_SUPPRESS_DEPRECATED" ]
272  if (defined(global_parts_info) &&
273      defined(global_parts_info.communication_netmanager_base) &&
274      global_parts_info.communication_netmanager_base) {
275    external_deps += [ "netmanager_base:net_conn_manager_if" ]
276    defines += [ "HAS_NETMANAGER_BASE=1" ]
277  } else {
278    defines += [ "HAS_NETMANAGER_BASE=0" ]
279  }
280
281  module_out_path = "netstack/tls_socket_unittest"
282  part_name = "netstack"
283  subsystem_name = "communication"
284}
285
286ohos_unittest("tls_socket_unilateral_connection") {
287  sanitize = {
288    cfi = true
289    cfi_cross_dso = true
290    debug = false
291  }
292
293  branch_protector_ret = "pac_ret"
294
295  sources = [ "TlsSocketUnilateralConnection.cpp" ]
296  sources += tls_sources
297  sources += tls_napi_sources
298  sources += socket_sources
299  sources += tls_socket_test_sources
300
301  configs = [ ":tls_test_config" ]
302
303  deps = [
304    "$NETSTACK_DIR/utils:stack_utils_common",
305    "$NETSTACK_DIR/utils/napi_utils:napi_utils",
306  ]
307  external_deps = [
308    "access_token:libaccesstoken_sdk",
309    "access_token:libnativetoken",
310    "access_token:libtoken_setproc",
311    "c_utils:utils",
312    "hilog:libhilog",
313    "napi:ace_napi",
314    "openssl:libcrypto_shared",
315    "openssl:libssl_shared",
316  ]
317
318  defines = [ "OPENSSL_SUPPRESS_DEPRECATED" ]
319  if (defined(global_parts_info) &&
320      defined(global_parts_info.communication_netmanager_base) &&
321      global_parts_info.communication_netmanager_base) {
322    external_deps += [ "netmanager_base:net_conn_manager_if" ]
323    defines += [ "HAS_NETMANAGER_BASE=1" ]
324  } else {
325    defines += [ "HAS_NETMANAGER_BASE=0" ]
326  }
327
328  module_out_path = "netstack/tls_socket_unittest"
329  part_name = "netstack"
330  subsystem_name = "communication"
331}
332
333ohos_unittest("secure_data_unittest") {
334  sanitize = {
335    cfi = true
336    cfi_cross_dso = true
337    debug = false
338  }
339
340  branch_protector_ret = "pac_ret"
341
342  sources = [
343    "$TLS/src/secure_data.cpp",
344    "SecureDataTest.cpp",
345  ]
346
347  configs = [ ":tls_test_config" ]
348
349  deps = [ "$NETSTACK_DIR/utils:stack_utils_common" ]
350  external_deps = [
351    "c_utils:utils",
352    "hilog:libhilog",
353  ]
354
355  module_out_path = "netstack/tls_socket_unittest"
356  part_name = "netstack"
357  subsystem_name = "communication"
358}
359
360ohos_unittest("tls_key_test") {
361  sanitize = {
362    cfi = true
363    cfi_cross_dso = true
364    debug = false
365  }
366
367  branch_protector_ret = "pac_ret"
368
369  sources = [ "TlsKeyTest.cpp" ]
370  sources += tls_sources
371  sources += tls_napi_sources
372  sources += socket_sources
373
374  configs = [ ":tls_test_config" ]
375
376  deps = [
377    "$NETSTACK_DIR/utils:stack_utils_common",
378    "$NETSTACK_DIR/utils/napi_utils:napi_utils",
379  ]
380  external_deps = [
381    "c_utils:utils",
382    "hilog:libhilog",
383    "napi:ace_napi",
384    "openssl:libcrypto_shared",
385    "openssl:libssl_shared",
386  ]
387
388  defines = [ "OPENSSL_SUPPRESS_DEPRECATED" ]
389  if (defined(global_parts_info) &&
390      defined(global_parts_info.communication_netmanager_base) &&
391      global_parts_info.communication_netmanager_base) {
392    external_deps += [ "netmanager_base:net_conn_manager_if" ]
393    defines += [ "HAS_NETMANAGER_BASE=1" ]
394  } else {
395    defines += [ "HAS_NETMANAGER_BASE=0" ]
396  }
397
398  module_out_path = "netstack/tls_socket_unittest"
399  part_name = "netstack"
400  subsystem_name = "communication"
401}
402
403ohos_unittest("tls_cert_test") {
404  sanitize = {
405    cfi = true
406    cfi_cross_dso = true
407    debug = false
408  }
409
410  branch_protector_ret = "pac_ret"
411
412  sources = [ "TlsCertificateTest.cpp" ]
413  sources += tls_sources
414  sources += tls_napi_sources
415  sources += socket_sources
416
417  configs = [ ":tls_test_config" ]
418
419  deps = [
420    "$NETSTACK_DIR/utils:stack_utils_common",
421    "$NETSTACK_DIR/utils/napi_utils:napi_utils",
422  ]
423  external_deps = [
424    "c_utils:utils",
425    "hilog:libhilog",
426    "napi:ace_napi",
427    "openssl:libcrypto_shared",
428    "openssl:libssl_shared",
429  ]
430
431  defines = [ "OPENSSL_SUPPRESS_DEPRECATED" ]
432  if (defined(global_parts_info) &&
433      defined(global_parts_info.communication_netmanager_base) &&
434      global_parts_info.communication_netmanager_base) {
435    external_deps += [ "netmanager_base:net_conn_manager_if" ]
436    defines += [ "HAS_NETMANAGER_BASE=1" ]
437  } else {
438    defines += [ "HAS_NETMANAGER_BASE=0" ]
439  }
440
441  module_out_path = "netstack/tls_socket_unittest"
442  part_name = "netstack"
443  subsystem_name = "communication"
444}
445
446ohos_unittest("tls_configuration_test") {
447  sanitize = {
448    cfi = true
449    cfi_cross_dso = true
450    debug = false
451  }
452
453  branch_protector_ret = "pac_ret"
454
455  sources = [ "TlsConfigurationTest.cpp" ]
456  sources += tls_sources
457  sources += tls_napi_sources
458  sources += socket_sources
459
460  configs = [ ":tls_test_config" ]
461
462  deps = [
463    "$NETSTACK_DIR/utils:stack_utils_common",
464    "$NETSTACK_DIR/utils/napi_utils:napi_utils",
465  ]
466  external_deps = [
467    "c_utils:utils",
468    "hilog:libhilog",
469    "napi:ace_napi",
470    "openssl:libcrypto_shared",
471    "openssl:libssl_shared",
472  ]
473
474  defines = [ "OPENSSL_SUPPRESS_DEPRECATED" ]
475  if (defined(global_parts_info) &&
476      defined(global_parts_info.communication_netmanager_base) &&
477      global_parts_info.communication_netmanager_base) {
478    external_deps += [ "netmanager_base:net_conn_manager_if" ]
479    defines += [ "HAS_NETMANAGER_BASE=1" ]
480  } else {
481    defines += [ "HAS_NETMANAGER_BASE=0" ]
482  }
483
484  module_out_path = "netstack/tls_socket_unittest"
485  part_name = "netstack"
486  subsystem_name = "communication"
487}
488
489ohos_unittest("tls_context_test") {
490  sanitize = {
491    cfi = true
492    cfi_cross_dso = true
493    debug = false
494  }
495
496  branch_protector_ret = "pac_ret"
497
498  sources = [ "TlsContextTest.cpp" ]
499  sources += tls_sources
500  sources += tls_napi_sources
501  sources += socket_sources
502
503  configs = [ ":tls_test_config" ]
504
505  deps = [
506    "$NETSTACK_DIR/utils:stack_utils_common",
507    "$NETSTACK_DIR/utils/napi_utils:napi_utils",
508  ]
509  external_deps = [
510    "c_utils:utils",
511    "hilog:libhilog",
512    "napi:ace_napi",
513    "openssl:libcrypto_shared",
514    "openssl:libssl_shared",
515  ]
516
517  defines = [ "OPENSSL_SUPPRESS_DEPRECATED" ]
518  if (defined(global_parts_info) &&
519      defined(global_parts_info.communication_netmanager_base) &&
520      global_parts_info.communication_netmanager_base) {
521    external_deps += [ "netmanager_base:net_conn_manager_if" ]
522    defines += [ "HAS_NETMANAGER_BASE=1" ]
523  } else {
524    defines += [ "HAS_NETMANAGER_BASE=0" ]
525  }
526
527  module_out_path = "netstack/tls_socket_unittest"
528  part_name = "netstack"
529  subsystem_name = "communication"
530}
531
532ohos_unittest("socket_error_unittest") {
533  sanitize = {
534    cfi = true
535    cfi_cross_dso = true
536    debug = false
537  }
538
539  branch_protector_ret = "pac_ret"
540
541  sources = [ "SocketErrorTest.cpp" ]
542  sources += tls_sources
543  sources += tls_napi_sources
544  sources += socket_sources
545
546  configs = [ ":tls_test_config" ]
547
548  deps = [
549    "$NETSTACK_DIR/utils:stack_utils_common",
550    "$NETSTACK_DIR/utils/napi_utils:napi_utils",
551  ]
552  external_deps = [
553    "c_utils:utils",
554    "hilog:libhilog",
555    "napi:ace_napi",
556    "openssl:libcrypto_shared",
557    "openssl:libssl_shared",
558  ]
559
560  defines = [ "OPENSSL_SUPPRESS_DEPRECATED" ]
561  if (defined(global_parts_info) &&
562      defined(global_parts_info.communication_netmanager_base) &&
563      global_parts_info.communication_netmanager_base) {
564    external_deps += [ "netmanager_base:net_conn_manager_if" ]
565    defines += [ "HAS_NETMANAGER_BASE=1" ]
566  } else {
567    defines += [ "HAS_NETMANAGER_BASE=0" ]
568  }
569
570  module_out_path = "netstack/tls_socket_unittest"
571  part_name = "netstack"
572  subsystem_name = "communication"
573}
574
575ohos_unittest("tls_socket_branch_test") {
576  sanitize = {
577    cfi = true
578    cfi_cross_dso = true
579    debug = false
580  }
581
582  branch_protector_ret = "pac_ret"
583
584  sources = [ "TlsSocketBranchTest.cpp" ]
585  sources += tls_sources
586  sources += tls_napi_sources
587  sources += socket_sources
588
589  configs = [ ":tls_test_config" ]
590
591  deps = [
592    "$NETSTACK_DIR/utils:stack_utils_common",
593    "$NETSTACK_DIR/utils/napi_utils:napi_utils",
594  ]
595  external_deps = [
596    "access_token:libaccesstoken_sdk",
597    "access_token:libnativetoken",
598    "access_token:libtoken_setproc",
599    "c_utils:utils",
600    "hilog:libhilog",
601    "napi:ace_napi",
602    "openssl:libcrypto_shared",
603    "openssl:libssl_shared",
604  ]
605
606  defines = [ "OPENSSL_SUPPRESS_DEPRECATED" ]
607  if (defined(global_parts_info) &&
608      defined(global_parts_info.communication_netmanager_base) &&
609      global_parts_info.communication_netmanager_base) {
610    external_deps += [ "netmanager_base:net_conn_manager_if" ]
611    defines += [ "HAS_NETMANAGER_BASE=1" ]
612  } else {
613    defines += [ "HAS_NETMANAGER_BASE=0" ]
614  }
615
616  module_out_path = "netstack/tls_socket_unittest"
617  part_name = "netstack"
618  subsystem_name = "communication"
619}
620