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