• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# This file is part of the openHiTLS project.
2#
3# openHiTLS is licensed under the Mulan PSL v2.
4# You can use this software according to the terms and conditions of the Mulan PSL v2.
5# You may obtain a copy of Mulan PSL v2 at:
6#
7#     http://license.coscl.org.cn/MulanPSL2
8#
9# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
10# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
11# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
12# See the Mulan PSL v2 for more details.
13
14message(STATUS "Enable bsl: ${ENABLE_BSL}")
15message(STATUS "Enable fail repeat: ${ENABLE_FAIL_REPEAT}")
16message(STATUS "Enable print: ${ENABLE_PRINT}")
17
18set(TEST_SOURCE
19    ${openHiTLS_SRC}/testcode/framework/gen_test/helper.c
20    ${openHiTLS_SRC}/testcode/framework/gen_test/test.c
21    ${openHiTLS_SRC}/testcode/framework/crypto/alg_check.c
22    ${openHiTLS_SRC}/testcode/framework/crypto/crypto_test_util.c
23    ${openHiTLS_SRC}/testcode/framework/stub/stub_replace.c
24)
25
26add_library(TEST_INTF INTERFACE)
27add_library(TEST_INTF_SHARED INTERFACE)
28
29if(ENABLE_PRINT)
30    target_compile_options(TEST_INTF INTERFACE -DPRINT_TO_TERMINAL)
31    target_compile_options(TEST_INTF_SHARED INTERFACE -DPRINT_TO_TERMINAL)
32endif()
33if(ENABLE_FAIL_REPEAT)
34    target_compile_options(TEST_INTF INTERFACE -DFAIL_REPEAT_RUN)
35    target_compile_options(TEST_INTF_SHARED INTERFACE -DFAIL_REPEAT_RUN)
36endif()
37target_link_directories(TEST_INTF INTERFACE
38    ${openHiTLS_SRC}/build
39    ${openHiTLS_SRC}/testcode/output/lib
40    ${openHiTLS_SRC}/platform/Secure_C/lib
41)
42target_link_directories(TEST_INTF_SHARED INTERFACE
43    ${openHiTLS_SRC}/build
44    ${openHiTLS_SRC}/testcode/output/lib
45    ${openHiTLS_SRC}/platform/Secure_C/lib
46)
47
48# link libs
49set(TEST_INTF_LIBS "")
50set(TEST_INTF_SHARED_LIBS "")
51
52if(ENABLE_TLS AND ${BUILD_TLS} GREATER -1)
53    list(APPEND TEST_INTF_LIBS tls_hlt tls_frame libhitls_tls.a rec_wrapper)
54    list(APPEND TEST_INTF_SHARED_LIBS tls_hlt tls_frame libhitls_tls.so rec_wrapper)
55endif()
56
57if(ENABLE_PKI AND ${BUILD_PKI} GREATER -1)
58    list(APPEND TEST_INTF_LIBS libhitls_pki.a)
59    list(APPEND TEST_INTF_SHARED_LIBS libhitls_pki.so)
60endif()
61
62if(ENABLE_AUTH AND ${BUILD_AUTH} GREATER -1)
63    list(APPEND TEST_INTF_LIBS libhitls_auth.a)
64    list(APPEND TEST_INTF_SHARED_LIBS libhitls_auth.so)
65endif()
66
67if(ENABLE_CRYPTO AND ${BUILD_CRYPTO} GREATER -1)
68    list(APPEND TEST_INTF_LIBS libhitls_crypto.a)
69    list(APPEND TEST_INTF_SHARED_LIBS libhitls_crypto.so)
70endif()
71
72list(APPEND TEST_INTF_LIBS libhitls_bsl.a boundscheck pthread dl)
73list(APPEND TEST_INTF_SHARED_LIBS libhitls_bsl.so boundscheck pthread dl)
74
75target_link_libraries(TEST_INTF INTERFACE ${TEST_INTF_LIBS})
76target_link_libraries(TEST_INTF_SHARED INTERFACE ${TEST_INTF_SHARED_LIBS})
77
78set(TEST_INTF_INCLUDE_DIRS
79    ${openHiTLS_SRC}/platform/Secure_C/include
80    ${openHiTLS_SRC}/include
81    ${openHiTLS_SRC}/testcode/framework/include
82    ${openHiTLS_SRC}/testcode/framework/crypto
83    ${openHiTLS_SRC}/testcode/framework/stub
84    ${openHiTLS_SRC}/testcode/framework/tls/func_wrapper/include
85    ${openHiTLS_SRC}/testcode/framework/tls/include
86    ${openHiTLS_SRC}/testcode/framework/tls/callback/include
87    ${openHiTLS_SRC}/testcode/framework/tls/base/include
88    ${openHiTLS_SRC}/testcode/framework/tls/resource/include
89    ${openHiTLS_SRC}/testcode/framework/tls/rpc/include
90    ${openHiTLS_SRC}/testcode/framework/tls/process/include
91    ${openHiTLS_SRC}/testcode/framework/tls/crypt/include
92    ${openHiTLS_SRC}/testcode/framework/tls/transfer/include
93    ${openHiTLS_SRC}/testcode/framework/tls/frame/src
94    ${openHiTLS_SRC}/testcode/framework/tls/msg/include
95    ${openHiTLS_SRC}/testcode/framework/tls/io/include
96    ${openHiTLS_SRC}/testcode/framework/tls/io/src
97    ${openHiTLS_SRC}/bsl/sal/include
98    ${openHiTLS_SRC}/bsl/tlv/include
99    ${openHiTLS_SRC}/include/bsl
100    ${openHiTLS_SRC}/include/tls
101    ${openHiTLS_SRC}/include/auth
102    ${openHiTLS_SRC}/bsl/log/include
103    ${openHiTLS_SRC}/bsl/hash/include
104    ${openHiTLS_SRC}/bsl/base64/include
105    ${openHiTLS_SRC}/bsl/pem/include
106    ${openHiTLS_SRC}/bsl/list/include
107    ${openHiTLS_SRC}/bsl/usrdata/include
108    ${openHiTLS_SRC}/bsl/obj/include
109    ${openHiTLS_SRC}/bsl/include
110    ${openHiTLS_SRC}/bsl/sal/src
111    ${openHiTLS_SRC}/include/crypto/
112    ${openHiTLS_SRC}/crypto/bn/include/
113    ${openHiTLS_SRC}/crypto/bn/src/
114    ${openHiTLS_SRC}/crypto/entropy/include/
115    ${openHiTLS_SRC}/crypto/sm3/include
116    ${openHiTLS_SRC}/crypto/sha3/include
117    ${openHiTLS_SRC}/crypto/sha2/include
118    ${openHiTLS_SRC}/crypto/sha2/src
119    ${openHiTLS_SRC}/crypto/sha1/include
120    ${openHiTLS_SRC}/crypto/md5/include
121    ${openHiTLS_SRC}/crypto/pbkdf2/include
122    ${openHiTLS_SRC}/crypto/provider/include
123    ${openHiTLS_SRC}/crypto/provider/src/mgr
124    ${openHiTLS_SRC}/crypto/hkdf/include
125    ${openHiTLS_SRC}/crypto/kdf/include
126    ${openHiTLS_SRC}/crypto/scrypt/include
127    ${openHiTLS_SRC}/crypto/hmac/include
128    ${openHiTLS_SRC}/crypto/siphash/include
129    ${openHiTLS_SRC}/crypto/aes/include
130    ${openHiTLS_SRC}/crypto/sm4/include
131    ${openHiTLS_SRC}/crypto/drbg/include
132    ${openHiTLS_SRC}/crypto/drbg/src
133    ${openHiTLS_SRC}/crypto/include
134    ${openHiTLS_SRC}/crypto/rsa/include
135    ${openHiTLS_SRC}/crypto/rsa/src
136    ${openHiTLS_SRC}/crypto/eal/src
137    ${openHiTLS_SRC}/crypto/eal/include
138    ${openHiTLS_SRC}/crypto/ealinit/include
139    ${openHiTLS_SRC}/crypto/ealinit/src
140    ${openHiTLS_SRC}/crypto/dsa/src
141    ${openHiTLS_SRC}/crypto/curve25519/src
142    ${openHiTLS_SRC}/crypto/curve25519/include
143    ${openHiTLS_SRC}/crypto/chacha20/include
144    ${openHiTLS_SRC}/crypto/dsa/include
145    ${openHiTLS_SRC}/crypto/dsa/src
146    ${openHiTLS_SRC}/crypto/dh/include
147    ${openHiTLS_SRC}/crypto/dh/src
148    ${openHiTLS_SRC}/crypto/ecc/include
149    ${openHiTLS_SRC}/crypto/ecc/src
150    ${openHiTLS_SRC}/crypto/ecdh/include
151    ${openHiTLS_SRC}/crypto/ecdsa/include
152    ${openHiTLS_SRC}/crypto/modes/include
153    ${openHiTLS_SRC}/crypto/modes/src
154    ${openHiTLS_SRC}/crypto/ecdh/include
155    ${openHiTLS_SRC}/crypto/ecdsa/include
156    ${openHiTLS_SRC}/crypto/sm2/include
157    ${openHiTLS_SRC}/crypto/sm2/src
158    ${openHiTLS_SRC}/crypto/paillier/include
159    ${openHiTLS_SRC}/crypto/paillier/src
160    ${openHiTLS_SRC}/crypto/elgamal/include
161    ${openHiTLS_SRC}/crypto/elgamal/src
162    ${openHiTLS_SRC}/crypto/encode/include
163    ${openHiTLS_SRC}/crypto/codecskey/include
164    ${openHiTLS_SRC}/crypto/codecskey/src
165    ${openHiTLS_SRC}/crypto/entropy/src
166    ${openHiTLS_SRC}/bsl/err/include
167    ${openHiTLS_SRC}/bsl/err/src
168    ${openHiTLS_SRC}/include/tls
169    ${openHiTLS_SRC}/tls/include
170    ${openHiTLS_SRC}/tls/cert/include
171    ${openHiTLS_SRC}/tls/cm/include
172    ${openHiTLS_SRC}/tls/config/include
173    ${openHiTLS_SRC}/tls/crypt/include
174    ${openHiTLS_SRC}/tls/app/include
175    ${openHiTLS_SRC}/tls/app/src
176    ${openHiTLS_SRC}/tls/ccs/include
177    ${openHiTLS_SRC}/tls/alert/include
178    ${openHiTLS_SRC}/bsl/uio/include
179    ${openHiTLS_SRC}/tls/record/include
180    ${openHiTLS_SRC}/tls/record/src
181    ${openHiTLS_SRC}/bsl/uio/src
182    ${openHiTLS_SRC}/bsl/asn1/include
183    ${openHiTLS_SRC}/bsl/buffer/include
184    ${openHiTLS_SRC}/include/pki
185    ${openHiTLS_SRC}/pki/x509_cert/include
186    ${openHiTLS_SRC}/pki/x509_csr/include
187    ${openHiTLS_SRC}/pki/x509_common/include
188    ${openHiTLS_SRC}/pki/x509_crl/include
189    ${openHiTLS_SRC}/pki/pkcs12/include
190    ${openHiTLS_SRC}/pki/cms/include
191    ${openHiTLS_SRC}/pki/x509_verify/include
192    ${openHiTLS_SRC}/pki/print/include
193    ${openHiTLS_SRC}/config/macro_config
194    ${openHiTLS_SRC}/tls/handshake/include
195    ${openHiTLS_SRC}/tls/handshake/common/include
196    ${openHiTLS_SRC}/tls/handshake/cookie/include
197    ${openHiTLS_SRC}/tls/handshake/parse/include
198    ${openHiTLS_SRC}/tls/handshake/pack/include
199    ${openHiTLS_SRC}/tls/handshake/pack/src
200    ${openHiTLS_SRC}/tls/handshake/send/src
201    ${openHiTLS_SRC}/tls/handshake/recv/src
202    ${openHiTLS_SRC}/tls/handshake/recv/include
203    ${openHiTLS_SRC}/tls/handshake/common/src
204    ${openHiTLS_SRC}/tls/feature/session/src
205    ${openHiTLS_SRC}/tls/cert/include
206    ${openHiTLS_SRC}/tls/cert/cert_adapt
207    ${openHiTLS_SRC}/tls/cert/hitls_x509_adapt
208    ${openHiTLS_SRC}/tls/crypt/crypt_self
209    ${openHiTLS_SRC}/config/macro_config
210    ${openHiTLS_SRC}/tls/handshake/parse/src
211    ${openHiTLS_SRC}/auth/privpass_token/include
212    ${openHiTLS_SRC}/config/macro_config
213    ${openHiTLS_SRC}/codecs/include
214    ${openHiTLS_SRC}/tls/feature/custom_extensions/include
215)
216
217target_include_directories(TEST_INTF
218        INTERFACE
219        ${TEST_INTF_INCLUDE_DIRS}
220)
221target_include_directories(TEST_INTF_SHARED
222        INTERFACE
223        ${TEST_INTF_INCLUDE_DIRS}
224)
225
226add_library(TESTCASE_PRE ${TEST_SOURCE})
227add_library(TESTCASE_PRE_SHARED ${TEST_SOURCE})
228
229target_link_libraries(TESTCASE_PRE PRIVATE TEST_INTF)
230target_link_libraries(TESTCASE_PRE_SHARED PRIVATE TEST_INTF_SHARED)
231
232if(GEN_TEST_FILES)
233    # test1 test2 ...
234    string(REPLACE " " ";" GEN_TEST_FILES ${GEN_TEST_FILES})
235    foreach(gen_test_suite ${GEN_TEST_FILES})
236        get_filename_component(suite ${gen_test_suite} NAME)
237        execute_process(COMMAND touch ${openHiTLS_SRC}/testcode/output/${suite}.c
238            WORKING_DIRECTORY ${openHiTLS_SRC}/testcode/output
239        )
240        add_custom_target(${suite}_phony
241                          COMMAND ./gen_testcase ${gen_test_suite}
242                          DEPENDS gen_testcase
243                          WORKING_DIRECTORY ${openHiTLS_SRC}/testcode/output)
244        message(STATUS "${suite}: ${gen_test_suite}")
245        set(TEST_FILES "${TEST_FILES};${gen_test_suite}")
246    endforeach()
247else()
248    message(STATUS "No file needs to be generated")
249endif()
250
251# Set library type for each test case
252set(TEST_SHARED_LIBS
253    test_suite_sdv_hlt_provider
254    test_suite_sdv_frame_provider
255    test_suite_sdv_hlt_base_connect
256    test_suite_sdv_hlt_tlcp_ciphersuite
257)
258
259# Create test cases
260foreach(test_suite ${TEST_FILES})
261    get_filename_component(sdv_exe ${test_suite} NAME_WE)
262    add_executable(${sdv_exe} ${openHiTLS_SRC}/testcode/output/${sdv_exe}.c)
263    target_link_options(${sdv_exe} PRIVATE "LINKER:-z,noexecstack")
264    add_dependencies(${sdv_exe} ${sdv_exe}_phony)
265    set_target_properties(${sdv_exe} PROPERTIES
266        RUNTIME_OUTPUT_DIRECTORY "${openHiTLS_SRC}/testcode/output"
267    )
268    # Choose between static and shared libraries based on test case
269    if(${sdv_exe} IN_LIST TEST_SHARED_LIBS)
270        target_link_libraries(${sdv_exe} PRIVATE TEST_INTF_SHARED TESTCASE_PRE_SHARED)
271    else()
272        target_link_libraries(${sdv_exe} PRIVATE TEST_INTF TESTCASE_PRE)
273    endif()
274endforeach()
275