blob: 077d0a076cb0ea6bdc8a8413b39b58f22974e302 [file] [log] [blame]
Minos Galanakis6aab5b72024-07-25 14:24:37 +01001# components-configuration-tls.sh
2#
3# Copyright The Mbed TLS Contributors
4# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
5
Minos Galanakis609f7492024-07-31 16:39:28 +01006# This file contains test components that are executed by all.sh
Minos Galanakis6aab5b72024-07-25 14:24:37 +01007
8################################################################
9#### Configuration Testing - TLS
10################################################################
11
Gilles Peskineea5de2b2024-09-19 18:41:55 +020012component_test_config_suite_b () {
13 msg "build: configs/config-suite-b.h"
Gilles Peskineb6d49132024-09-14 11:21:29 +020014 cp configs/config-suite-b.h "$CONFIG_H"
Gilles Peskineb6d49132024-09-14 11:21:29 +020015 # test-ref-configs works by overwriting mbedtls_config.h; this makes cmake
16 # want to re-generate generated files that depend on it, quite correctly.
17 # However this doesn't work as the generation script expects a specific
18 # format for mbedtls_config.h, which the other files don't follow. Also,
19 # cmake can't know this, but re-generation is actually not necessary as
20 # the generated files only depend on the list of available options, not
21 # whether they're on or off. So, disable cmake's (over-sensitive here)
22 # dependency resolution for generated files and just rely on them being
23 # present (thanks to pre_generate_files) by turning GEN_FILES off.
24 CC=$ASAN_CC cmake -D GEN_FILES=Off -D CMAKE_BUILD_TYPE:String=Asan .
25 make
26
Gilles Peskineea5de2b2024-09-19 18:41:55 +020027 msg "test: configs/config-suite-b.h - unit tests"
Gilles Peskineb6d49132024-09-14 11:21:29 +020028 make test
29
Gilles Peskineea5de2b2024-09-19 18:41:55 +020030 msg "test: configs/config-suite-b.h - compat.sh"
Gilles Peskineb6d49132024-09-14 11:21:29 +020031 tests/compat.sh -m tls12 -f 'ECDHE_ECDSA.*AES.*GCM' -p mbedTLS
32
Gilles Peskineea5de2b2024-09-19 18:41:55 +020033 msg "build: configs/config-suite-b.h + DEBUG"
Gilles Peskineb6d49132024-09-14 11:21:29 +020034 MBEDTLS_TEST_CONFIGURATION="$MBEDTLS_TEST_CONFIGURATION+DEBUG"
35 make clean
36 scripts/config.py set MBEDTLS_DEBUG_C
37 scripts/config.py set MBEDTLS_ERROR_C
38 make ssl-opt
39
Gilles Peskineea5de2b2024-09-19 18:41:55 +020040 msg "test: configs/config-suite-b.h + DEBUG - ssl-opt.sh"
Gilles Peskineb6d49132024-09-14 11:21:29 +020041 tests/ssl-opt.sh
42}
43
Minos Galanakis7665a932024-07-26 15:45:11 +010044component_test_no_renegotiation () {
45 msg "build: Default + !MBEDTLS_SSL_RENEGOTIATION (ASan build)" # ~ 6 min
46 scripts/config.py unset MBEDTLS_SSL_RENEGOTIATION
47 CC=$ASAN_CC cmake -D CMAKE_BUILD_TYPE:String=Asan .
48 make
49
50 msg "test: !MBEDTLS_SSL_RENEGOTIATION - main suites (inc. selftests) (ASan build)" # ~ 50s
51 make test
52
53 msg "test: !MBEDTLS_SSL_RENEGOTIATION - ssl-opt.sh (ASan build)" # ~ 6 min
54 tests/ssl-opt.sh
55}
56
Minos Galanakis7665a932024-07-26 15:45:11 +010057component_test_tls1_2_default_stream_cipher_only () {
58 msg "build: default with only stream cipher use psa"
59
Minos Galanakis7665a932024-07-26 15:45:11 +010060 scripts/config.py set MBEDTLS_PSA_CRYPTO_CONFIG
61 # Disable AEAD (controlled by the presence of one of GCM_C, CCM_C, CHACHAPOLY_C)
62 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_CCM
63 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_CCM_STAR_NO_TAG
64 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_GCM
65 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_CHACHA20_POLY1305
66 # Note: The three unsets below are to be removed for Mbed TLS 4.0
67 scripts/config.py unset MBEDTLS_GCM_C
68 scripts/config.py unset MBEDTLS_CCM_C
69 scripts/config.py unset MBEDTLS_CHACHAPOLY_C
70 #Disable TLS 1.3 (as no AEAD)
71 scripts/config.py unset MBEDTLS_SSL_PROTO_TLS1_3
72 # Disable CBC. Note: When implemented, PSA_WANT_ALG_CBC_MAC will also need to be unset here to fully disable CBC
73 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_CBC_NO_PADDING
74 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_CBC_PKCS7
75 # Disable CBC-legacy (controlled by MBEDTLS_CIPHER_MODE_CBC plus at least one block cipher (AES, ARIA, Camellia, DES))
76 # Note: The unset below is to be removed for 4.0
77 scripts/config.py unset MBEDTLS_CIPHER_MODE_CBC
78 # Disable CBC-EtM (controlled by the same as CBC-legacy plus MBEDTLS_SSL_ENCRYPT_THEN_MAC)
79 scripts/config.py unset MBEDTLS_SSL_ENCRYPT_THEN_MAC
80 # Enable stream (currently that's just the NULL pseudo-cipher (controlled by MBEDTLS_CIPHER_NULL_CIPHER))
81 scripts/config.py set MBEDTLS_CIPHER_NULL_CIPHER
82 # Modules that depend on AEAD
83 scripts/config.py unset MBEDTLS_SSL_CONTEXT_SERIALIZATION
84 scripts/config.py unset MBEDTLS_SSL_TICKET_C
85
86 make
87
88 msg "test: default with only stream cipher use psa"
89 make test
90
91 # Not running ssl-opt.sh because most tests require a non-NULL ciphersuite.
92}
93
94component_test_tls1_2_default_cbc_legacy_cipher_only () {
95 msg "build: default with only CBC-legacy cipher use psa"
96
Minos Galanakis7665a932024-07-26 15:45:11 +010097 scripts/config.py set MBEDTLS_PSA_CRYPTO_CONFIG
98 # Disable AEAD (controlled by the presence of one of GCM_C, CCM_C, CHACHAPOLY_C)
99 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_CCM
100 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_CCM_STAR_NO_TAG
101 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_GCM
102 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_CHACHA20_POLY1305
103 # Note: The three unsets below are to be removed for Mbed TLS 4.0
104 scripts/config.py unset MBEDTLS_GCM_C
105 scripts/config.py unset MBEDTLS_CCM_C
106 scripts/config.py unset MBEDTLS_CHACHAPOLY_C
107 #Disable TLS 1.3 (as no AEAD)
108 scripts/config.py unset MBEDTLS_SSL_PROTO_TLS1_3
109 # Enable CBC-legacy (controlled by MBEDTLS_CIPHER_MODE_CBC plus at least one block cipher (AES, ARIA, Camellia, DES))
110 scripts/config.py -f $CRYPTO_CONFIG_H set PSA_WANT_ALG_CBC_NO_PADDING
111 # Disable CBC-EtM (controlled by the same as CBC-legacy plus MBEDTLS_SSL_ENCRYPT_THEN_MAC)
112 scripts/config.py unset MBEDTLS_SSL_ENCRYPT_THEN_MAC
113 # Disable stream (currently that's just the NULL pseudo-cipher (controlled by MBEDTLS_CIPHER_NULL_CIPHER))
114 scripts/config.py unset MBEDTLS_CIPHER_NULL_CIPHER
115 # Modules that depend on AEAD
116 scripts/config.py unset MBEDTLS_SSL_CONTEXT_SERIALIZATION
117 scripts/config.py unset MBEDTLS_SSL_TICKET_C
118
119 make
120
121 msg "test: default with only CBC-legacy cipher use psa"
122 make test
123
124 msg "test: default with only CBC-legacy cipher use psa - ssl-opt.sh (subset)"
125 tests/ssl-opt.sh -f "TLS 1.2"
126}
127
128component_test_tls1_2_default_cbc_legacy_cbc_etm_cipher_only () {
129 msg "build: default with only CBC-legacy and CBC-EtM ciphers use psa"
130
Minos Galanakis7665a932024-07-26 15:45:11 +0100131 scripts/config.py set MBEDTLS_PSA_CRYPTO_CONFIG
132 # Disable AEAD (controlled by the presence of one of GCM_C, CCM_C, CHACHAPOLY_C)
133 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_CCM
134 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_CCM_STAR_NO_TAG
135 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_GCM
136 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_CHACHA20_POLY1305
137 # Note: The three unsets below are to be removed for Mbed TLS 4.0
138 scripts/config.py unset MBEDTLS_GCM_C
139 scripts/config.py unset MBEDTLS_CCM_C
140 scripts/config.py unset MBEDTLS_CHACHAPOLY_C
141 #Disable TLS 1.3 (as no AEAD)
142 scripts/config.py unset MBEDTLS_SSL_PROTO_TLS1_3
143 # Enable CBC-legacy (controlled by MBEDTLS_CIPHER_MODE_CBC plus at least one block cipher (AES, ARIA, Camellia, DES))
144 scripts/config.py -f $CRYPTO_CONFIG_H set PSA_WANT_ALG_CBC_NO_PADDING
145 # Enable CBC-EtM (controlled by the same as CBC-legacy plus MBEDTLS_SSL_ENCRYPT_THEN_MAC)
146 scripts/config.py set MBEDTLS_SSL_ENCRYPT_THEN_MAC
147 # Disable stream (currently that's just the NULL pseudo-cipher (controlled by MBEDTLS_CIPHER_NULL_CIPHER))
148 scripts/config.py unset MBEDTLS_CIPHER_NULL_CIPHER
149 # Modules that depend on AEAD
150 scripts/config.py unset MBEDTLS_SSL_CONTEXT_SERIALIZATION
151 scripts/config.py unset MBEDTLS_SSL_TICKET_C
152
153 make
154
155 msg "test: default with only CBC-legacy and CBC-EtM ciphers use psa"
156 make test
157
158 msg "test: default with only CBC-legacy and CBC-EtM ciphers use psa - ssl-opt.sh (subset)"
159 tests/ssl-opt.sh -f "TLS 1.2"
160}
161
Gilles Peskineea5de2b2024-09-19 18:41:55 +0200162component_test_config_thread () {
163 msg "build: configs/config-thread.h"
Gilles Peskine86ceb132024-09-14 11:24:07 +0200164 cp configs/config-thread.h "$CONFIG_H"
Gilles Peskine86ceb132024-09-14 11:24:07 +0200165 # test-ref-configs works by overwriting mbedtls_config.h; this makes cmake
166 # want to re-generate generated files that depend on it, quite correctly.
167 # However this doesn't work as the generation script expects a specific
168 # format for mbedtls_config.h, which the other files don't follow. Also,
169 # cmake can't know this, but re-generation is actually not necessary as
170 # the generated files only depend on the list of available options, not
171 # whether they're on or off. So, disable cmake's (over-sensitive here)
172 # dependency resolution for generated files and just rely on them being
173 # present (thanks to pre_generate_files) by turning GEN_FILES off.
174 CC=$ASAN_CC cmake -D GEN_FILES=Off -D CMAKE_BUILD_TYPE:String=Asan .
175 make
176
Gilles Peskineea5de2b2024-09-19 18:41:55 +0200177 msg "test: configs/config-thread.h - unit tests"
Gilles Peskine86ceb132024-09-14 11:24:07 +0200178 make test
179
Gilles Peskineea5de2b2024-09-19 18:41:55 +0200180 msg "test: configs/config-thread.h - ssl-opt.sh"
Gilles Peskine86ceb132024-09-14 11:24:07 +0200181 tests/ssl-opt.sh -f 'ECJPAKE.*nolog'
182}
183
Gilles Peskineea5de2b2024-09-19 18:41:55 +0200184component_test_tls1_2_ccm_psk () {
185 msg "build: configs/config-ccm-psk-tls1_2.h"
Gilles Peskine063fb8c2024-09-14 11:10:05 +0200186 cp configs/config-ccm-psk-tls1_2.h "$CONFIG_H"
Gilles Peskine063fb8c2024-09-14 11:10:05 +0200187 # test-ref-configs works by overwriting mbedtls_config.h; this makes cmake
188 # want to re-generate generated files that depend on it, quite correctly.
189 # However this doesn't work as the generation script expects a specific
190 # format for mbedtls_config.h, which the other files don't follow. Also,
191 # cmake can't know this, but re-generation is actually not necessary as
192 # the generated files only depend on the list of available options, not
193 # whether they're on or off. So, disable cmake's (over-sensitive here)
194 # dependency resolution for generated files and just rely on them being
195 # present (thanks to pre_generate_files) by turning GEN_FILES off.
196 CC=$ASAN_CC cmake -D GEN_FILES=Off -D CMAKE_BUILD_TYPE:String=Asan .
197 make
198
Gilles Peskineea5de2b2024-09-19 18:41:55 +0200199 msg "test: configs/config-ccm-psk-tls1_2.h - unit tests"
Gilles Peskine063fb8c2024-09-14 11:10:05 +0200200 make test
201
Gilles Peskineea5de2b2024-09-19 18:41:55 +0200202 msg "test: configs/config-ccm-psk-tls1_2.h - compat.sh"
Gilles Peskine063fb8c2024-09-14 11:10:05 +0200203 tests/compat.sh -m tls12 -f '^TLS_PSK_WITH_AES_..._CCM_8'
204}
205
Gilles Peskineea5de2b2024-09-19 18:41:55 +0200206component_test_tls1_2_ccm_psk_dtls () {
207 msg "build: configs/config-ccm-psk-dtls1_2.h"
Gilles Peskine68f511e2024-09-14 11:19:31 +0200208 cp configs/config-ccm-psk-dtls1_2.h "$CONFIG_H"
Gilles Peskine68f511e2024-09-14 11:19:31 +0200209 # test-ref-configs works by overwriting mbedtls_config.h; this makes cmake
210 # want to re-generate generated files that depend on it, quite correctly.
211 # However this doesn't work as the generation script expects a specific
212 # format for mbedtls_config.h, which the other files don't follow. Also,
213 # cmake can't know this, but re-generation is actually not necessary as
214 # the generated files only depend on the list of available options, not
215 # whether they're on or off. So, disable cmake's (over-sensitive here)
216 # dependency resolution for generated files and just rely on them being
217 # present (thanks to pre_generate_files) by turning GEN_FILES off.
218 CC=$ASAN_CC cmake -D GEN_FILES=Off -D CMAKE_BUILD_TYPE:String=Asan .
219 make
220
Gilles Peskineea5de2b2024-09-19 18:41:55 +0200221 msg "test: configs/config-ccm-psk-dtls1_2.h - unit tests"
Gilles Peskine68f511e2024-09-14 11:19:31 +0200222 make test
223
Gilles Peskineea5de2b2024-09-19 18:41:55 +0200224 msg "test: configs/config-ccm-psk-dtls1_2.h - compat.sh"
Gilles Peskine68f511e2024-09-14 11:19:31 +0200225 tests/compat.sh -m dtls12 -f '^TLS_PSK_WITH_AES_..._CCM_8'
226
Gilles Peskineea5de2b2024-09-19 18:41:55 +0200227 msg "build: configs/config-ccm-psk-dtls1_2.h + DEBUG"
Gilles Peskine68f511e2024-09-14 11:19:31 +0200228 MBEDTLS_TEST_CONFIGURATION="$MBEDTLS_TEST_CONFIGURATION+DEBUG"
229 make clean
230 scripts/config.py set MBEDTLS_DEBUG_C
231 scripts/config.py set MBEDTLS_ERROR_C
232 make ssl-opt
233
Gilles Peskineea5de2b2024-09-19 18:41:55 +0200234 msg "test: configs/config-ccm-psk-dtls1_2.h + DEBUG - ssl-opt.sh"
Gilles Peskine68f511e2024-09-14 11:19:31 +0200235 tests/ssl-opt.sh
236}
237
Minos Galanakis7665a932024-07-26 15:45:11 +0100238component_test_small_ssl_out_content_len () {
239 msg "build: small SSL_OUT_CONTENT_LEN (ASan build)"
240 scripts/config.py set MBEDTLS_SSL_IN_CONTENT_LEN 16384
241 scripts/config.py set MBEDTLS_SSL_OUT_CONTENT_LEN 4096
242 CC=$ASAN_CC cmake -D CMAKE_BUILD_TYPE:String=Asan .
243 make
244
245 msg "test: small SSL_OUT_CONTENT_LEN - ssl-opt.sh MFL and large packet tests"
246 tests/ssl-opt.sh -f "Max fragment\|Large packet"
247}
248
249component_test_small_ssl_in_content_len () {
250 msg "build: small SSL_IN_CONTENT_LEN (ASan build)"
251 scripts/config.py set MBEDTLS_SSL_IN_CONTENT_LEN 4096
252 scripts/config.py set MBEDTLS_SSL_OUT_CONTENT_LEN 16384
253 CC=$ASAN_CC cmake -D CMAKE_BUILD_TYPE:String=Asan .
254 make
255
256 msg "test: small SSL_IN_CONTENT_LEN - ssl-opt.sh MFL tests"
257 tests/ssl-opt.sh -f "Max fragment"
258}
259
260component_test_small_ssl_dtls_max_buffering () {
261 msg "build: small MBEDTLS_SSL_DTLS_MAX_BUFFERING #0"
262 scripts/config.py set MBEDTLS_SSL_DTLS_MAX_BUFFERING 1000
263 CC=$ASAN_CC cmake -D CMAKE_BUILD_TYPE:String=Asan .
264 make
265
266 msg "test: small MBEDTLS_SSL_DTLS_MAX_BUFFERING #0 - ssl-opt.sh specific reordering test"
267 tests/ssl-opt.sh -f "DTLS reordering: Buffer out-of-order hs msg before reassembling next, free buffered msg"
268}
269
270component_test_small_mbedtls_ssl_dtls_max_buffering () {
271 msg "build: small MBEDTLS_SSL_DTLS_MAX_BUFFERING #1"
272 scripts/config.py set MBEDTLS_SSL_DTLS_MAX_BUFFERING 190
273 CC=$ASAN_CC cmake -D CMAKE_BUILD_TYPE:String=Asan .
274 make
275
276 msg "test: small MBEDTLS_SSL_DTLS_MAX_BUFFERING #1 - ssl-opt.sh specific reordering test"
277 tests/ssl-opt.sh -f "DTLS reordering: Buffer encrypted Finished message, drop for fragmented NewSessionTicket"
278}
279
280# Common helper for component_full_without_ecdhe_ecdsa() and
281# component_full_without_ecdhe_ecdsa_and_tls13() which:
282# - starts from the "full" configuration minus the list of symbols passed in
283# as 1st parameter
284# - build
285# - test only TLS (i.e. test_suite_tls and ssl-opt)
286build_full_minus_something_and_test_tls () {
287 symbols_to_disable="$1"
288
289 msg "build: full minus something, test TLS"
290
291 scripts/config.py full
292 for sym in $symbols_to_disable; do
293 echo "Disabling $sym"
294 scripts/config.py unset $sym
295 done
296
297 make
298
299 msg "test: full minus something, test TLS"
300 ( cd tests; ./test_suite_ssl )
301
302 msg "ssl-opt: full minus something, test TLS"
303 tests/ssl-opt.sh
304}
305
306component_full_without_ecdhe_ecdsa () {
307 build_full_minus_something_and_test_tls "MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED"
308}
309
310component_full_without_ecdhe_ecdsa_and_tls13 () {
311 build_full_minus_something_and_test_tls "MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
312 MBEDTLS_SSL_PROTO_TLS1_3"
313}
314
Minos Galanakis7665a932024-07-26 15:45:11 +0100315component_build_no_ssl_srv () {
316 msg "build: full config except SSL server, make, gcc" # ~ 30s
317 scripts/config.py full
318 scripts/config.py unset MBEDTLS_SSL_SRV_C
Minos Galanakisa368c8a2024-08-06 12:06:51 +0100319 make CC=gcc CFLAGS='-Werror -Wall -Wextra -O1 -Wmissing-prototypes'
Minos Galanakis7665a932024-07-26 15:45:11 +0100320}
321
322component_build_no_ssl_cli () {
323 msg "build: full config except SSL client, make, gcc" # ~ 30s
324 scripts/config.py full
325 scripts/config.py unset MBEDTLS_SSL_CLI_C
Minos Galanakisa368c8a2024-08-06 12:06:51 +0100326 make CC=gcc CFLAGS='-Werror -Wall -Wextra -O1 -Wmissing-prototypes'
Minos Galanakis7665a932024-07-26 15:45:11 +0100327}
328
Minos Galanakis7665a932024-07-26 15:45:11 +0100329component_test_no_max_fragment_length () {
330 # Run max fragment length tests with MFL disabled
331 msg "build: default config except MFL extension (ASan build)" # ~ 30s
332 scripts/config.py unset MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
333 CC=$ASAN_CC cmake -D CMAKE_BUILD_TYPE:String=Asan .
334 make
335
336 msg "test: ssl-opt.sh, MFL-related tests"
337 tests/ssl-opt.sh -f "Max fragment length"
338}
339
340component_test_asan_remove_peer_certificate () {
341 msg "build: default config with MBEDTLS_SSL_KEEP_PEER_CERTIFICATE disabled (ASan build)"
342 scripts/config.py unset MBEDTLS_SSL_KEEP_PEER_CERTIFICATE
343 scripts/config.py unset MBEDTLS_SSL_PROTO_TLS1_3
344 CC=$ASAN_CC cmake -D CMAKE_BUILD_TYPE:String=Asan .
345 make
346
347 msg "test: !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE"
348 make test
349
350 msg "test: ssl-opt.sh, !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE"
351 tests/ssl-opt.sh
352
353 msg "test: compat.sh, !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE"
354 tests/compat.sh
355
356 msg "test: context-info.sh, !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE"
357 tests/context-info.sh
358}
359
360component_test_no_max_fragment_length_small_ssl_out_content_len () {
361 msg "build: no MFL extension, small SSL_OUT_CONTENT_LEN (ASan build)"
362 scripts/config.py unset MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
363 scripts/config.py set MBEDTLS_SSL_IN_CONTENT_LEN 16384
364 scripts/config.py set MBEDTLS_SSL_OUT_CONTENT_LEN 4096
365 CC=$ASAN_CC cmake -D CMAKE_BUILD_TYPE:String=Asan .
366 make
367
368 msg "test: MFL tests (disabled MFL extension case) & large packet tests"
369 tests/ssl-opt.sh -f "Max fragment length\|Large buffer"
370
371 msg "test: context-info.sh (disabled MFL extension case)"
372 tests/context-info.sh
373}
374
375component_test_variable_ssl_in_out_buffer_len () {
376 msg "build: MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH enabled (ASan build)"
377 scripts/config.py set MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
378 CC=$ASAN_CC cmake -D CMAKE_BUILD_TYPE:String=Asan .
379 make
380
381 msg "test: MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH enabled"
382 make test
383
384 msg "test: ssl-opt.sh, MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH enabled"
385 tests/ssl-opt.sh
386
387 msg "test: compat.sh, MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH enabled"
388 tests/compat.sh
389}
390
391component_test_dtls_cid_legacy () {
392 msg "build: MBEDTLS_SSL_DTLS_CONNECTION_ID (legacy) enabled (ASan build)"
393 scripts/config.py set MBEDTLS_SSL_DTLS_CONNECTION_ID_COMPAT 1
394
395 CC=$ASAN_CC cmake -D CMAKE_BUILD_TYPE:String=Asan .
396 make
397
398 msg "test: MBEDTLS_SSL_DTLS_CONNECTION_ID (legacy)"
399 make test
400
401 msg "test: ssl-opt.sh, MBEDTLS_SSL_DTLS_CONNECTION_ID (legacy) enabled"
402 tests/ssl-opt.sh
403
404 msg "test: compat.sh, MBEDTLS_SSL_DTLS_CONNECTION_ID (legacy) enabled"
405 tests/compat.sh
406}
407
408component_test_ssl_alloc_buffer_and_mfl () {
409 msg "build: default config with memory buffer allocator and MFL extension"
410 scripts/config.py set MBEDTLS_MEMORY_BUFFER_ALLOC_C
411 scripts/config.py set MBEDTLS_PLATFORM_MEMORY
412 scripts/config.py set MBEDTLS_MEMORY_DEBUG
413 scripts/config.py set MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
414 scripts/config.py set MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH
415 cmake -DCMAKE_BUILD_TYPE:String=Release .
416 make
417
418 msg "test: MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH, MBEDTLS_MEMORY_BUFFER_ALLOC_C, MBEDTLS_MEMORY_DEBUG and MBEDTLS_SSL_MAX_FRAGMENT_LENGTH"
419 make test
420
421 msg "test: MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH, MBEDTLS_MEMORY_BUFFER_ALLOC_C, MBEDTLS_MEMORY_DEBUG and MBEDTLS_SSL_MAX_FRAGMENT_LENGTH"
422 tests/ssl-opt.sh -f "Handshake memory usage"
423}
424
425component_test_when_no_ciphersuites_have_mac () {
426 msg "build: when no ciphersuites have MAC"
427 scripts/config.py set MBEDTLS_PSA_CRYPTO_CONFIG
428 scripts/config.py -f "$CRYPTO_CONFIG_H" unset PSA_WANT_ALG_CBC_NO_PADDING
429 scripts/config.py -f "$CRYPTO_CONFIG_H" unset PSA_WANT_ALG_CBC_PKCS7
430 scripts/config.py -f "$CRYPTO_CONFIG_H" unset PSA_WANT_ALG_CMAC
431 scripts/config.py -f "$CRYPTO_CONFIG_H" unset PSA_WANT_ALG_PBKDF2_AES_CMAC_PRF_128
432
433 scripts/config.py unset MBEDTLS_CIPHER_NULL_CIPHER
434 scripts/config.py unset MBEDTLS_CIPHER_MODE_CBC
435 scripts/config.py unset MBEDTLS_CMAC_C
436
437 make
438
439 msg "test: !MBEDTLS_SSL_SOME_SUITES_USE_MAC"
440 make test
441
442 msg "test ssl-opt.sh: !MBEDTLS_SSL_SOME_SUITES_USE_MAC"
443 tests/ssl-opt.sh -f 'Default\|EtM' -e 'without EtM'
444}
445
446component_test_tls12_only () {
447 msg "build: default config without MBEDTLS_SSL_PROTO_TLS1_3, cmake, gcc, ASan"
448 scripts/config.py unset MBEDTLS_SSL_PROTO_TLS1_3
449 CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Asan .
450 make
451
452 msg "test: main suites (inc. selftests) (ASan build)"
453 make test
454
455 msg "test: ssl-opt.sh (ASan build)"
456 tests/ssl-opt.sh
457
458 msg "test: compat.sh (ASan build)"
459 tests/compat.sh
460}
461
462component_test_tls13_only () {
463 msg "build: default config without MBEDTLS_SSL_PROTO_TLS1_2"
464 scripts/config.py set MBEDTLS_SSL_EARLY_DATA
465 scripts/config.py set MBEDTLS_SSL_RECORD_SIZE_LIMIT
466 make CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'"
467
468 msg "test: TLS 1.3 only, all key exchange modes enabled"
469 make test
470
471 msg "ssl-opt.sh: TLS 1.3 only, all key exchange modes enabled"
472 tests/ssl-opt.sh
473}
474
475component_test_tls13_only_psk () {
476 msg "build: TLS 1.3 only from default, only PSK key exchange mode"
477 scripts/config.py unset MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
478 scripts/config.py unset MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
Minos Galanakis7665a932024-07-26 15:45:11 +0100479 scripts/config.py unset MBEDTLS_X509_CRT_PARSE_C
480 scripts/config.py unset MBEDTLS_X509_RSASSA_PSS_SUPPORT
481 scripts/config.py unset MBEDTLS_SSL_SERVER_NAME_INDICATION
Minos Galanakis7665a932024-07-26 15:45:11 +0100482 scripts/config.py unset MBEDTLS_PKCS7_C
483 scripts/config.py set MBEDTLS_SSL_EARLY_DATA
Ronald Crona9511bc2024-09-06 09:21:10 +0200484
485 scripts/config.py set MBEDTLS_PSA_CRYPTO_CONFIG
486 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_ECDH
487 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_ECDSA
488 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_DETERMINISTIC_ECDSA
489 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_RSA_OAEP
490 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_RSA_PSS
491 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_FFDH
492 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY
493 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC
494 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_KEY_TYPE_DH_KEY_PAIR_IMPORT
495 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_KEY_TYPE_DH_KEY_PAIR_EXPORT
496 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE
497 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_DH_RFC7919_2048
498 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_DH_RFC7919_3072
499 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_DH_RFC7919_4096
500 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_DH_RFC7919_6144
501 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_DH_RFC7919_8192
Ronald Cron4153ebb2024-09-11 15:32:48 +0200502 # Note: The four unsets below are to be removed for Mbed TLS 4.0
Ronald Crona9511bc2024-09-06 09:21:10 +0200503 scripts/config.py unset MBEDTLS_ECDH_C
504 scripts/config.py unset MBEDTLS_ECDSA_C
505 scripts/config.py unset MBEDTLS_PKCS1_V21
506 scripts/config.py unset MBEDTLS_DHM_C
507
Minos Galanakis7665a932024-07-26 15:45:11 +0100508 make CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'"
509
510 msg "test_suite_ssl: TLS 1.3 only, only PSK key exchange mode enabled"
511 cd tests; ./test_suite_ssl; cd ..
512
513 msg "ssl-opt.sh: TLS 1.3 only, only PSK key exchange mode enabled"
514 tests/ssl-opt.sh
515}
516
517component_test_tls13_only_ephemeral () {
518 msg "build: TLS 1.3 only from default, only ephemeral key exchange mode"
519 scripts/config.py unset MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
520 scripts/config.py unset MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
521 scripts/config.py unset MBEDTLS_SSL_EARLY_DATA
522 make CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'"
523
524 msg "test_suite_ssl: TLS 1.3 only, only ephemeral key exchange mode"
525 cd tests; ./test_suite_ssl; cd ..
526
527 msg "ssl-opt.sh: TLS 1.3 only, only ephemeral key exchange mode"
528 tests/ssl-opt.sh
529}
530
531component_test_tls13_only_ephemeral_ffdh () {
532 msg "build: TLS 1.3 only from default, only ephemeral ffdh key exchange mode"
533 scripts/config.py unset MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
534 scripts/config.py unset MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
535 scripts/config.py unset MBEDTLS_SSL_EARLY_DATA
Ronald Crona9511bc2024-09-06 09:21:10 +0200536
537 scripts/config.py set MBEDTLS_PSA_CRYPTO_CONFIG
538 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_ECDH
Ronald Cron4153ebb2024-09-11 15:32:48 +0200539 # Note: The unset below is to be removed for Mbed TLS 4.0
Minos Galanakis7665a932024-07-26 15:45:11 +0100540 scripts/config.py unset MBEDTLS_ECDH_C
541
542 make CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'"
543
544 msg "test_suite_ssl: TLS 1.3 only, only ephemeral ffdh key exchange mode"
545 cd tests; ./test_suite_ssl; cd ..
546
547 msg "ssl-opt.sh: TLS 1.3 only, only ephemeral ffdh key exchange mode"
548 tests/ssl-opt.sh
549}
550
551component_test_tls13_only_psk_ephemeral () {
552 msg "build: TLS 1.3 only from default, only PSK ephemeral key exchange mode"
553 scripts/config.py unset MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
554 scripts/config.py unset MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
555 scripts/config.py unset MBEDTLS_X509_CRT_PARSE_C
556 scripts/config.py unset MBEDTLS_X509_RSASSA_PSS_SUPPORT
557 scripts/config.py unset MBEDTLS_SSL_SERVER_NAME_INDICATION
Minos Galanakis7665a932024-07-26 15:45:11 +0100558 scripts/config.py unset MBEDTLS_PKCS7_C
559 scripts/config.py set MBEDTLS_SSL_EARLY_DATA
Ronald Crona9511bc2024-09-06 09:21:10 +0200560
561 scripts/config.py set MBEDTLS_PSA_CRYPTO_CONFIG
562 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_ECDSA
563 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_DETERMINISTIC_ECDSA
564 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_RSA_OAEP
565 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_RSA_PSS
Ronald Cron4153ebb2024-09-11 15:32:48 +0200566 # Note: The two unsets below are to be removed for Mbed TLS 4.0
Ronald Crona9511bc2024-09-06 09:21:10 +0200567 scripts/config.py unset MBEDTLS_ECDSA_C
568 scripts/config.py unset MBEDTLS_PKCS1_V21
569
Minos Galanakis7665a932024-07-26 15:45:11 +0100570 make CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'"
571
572 msg "test_suite_ssl: TLS 1.3 only, only PSK ephemeral key exchange mode"
573 cd tests; ./test_suite_ssl; cd ..
574
575 msg "ssl-opt.sh: TLS 1.3 only, only PSK ephemeral key exchange mode"
576 tests/ssl-opt.sh
577}
578
579component_test_tls13_only_psk_ephemeral_ffdh () {
580 msg "build: TLS 1.3 only from default, only PSK ephemeral ffdh key exchange mode"
581 scripts/config.py unset MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
582 scripts/config.py unset MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
583 scripts/config.py unset MBEDTLS_X509_CRT_PARSE_C
584 scripts/config.py unset MBEDTLS_X509_RSASSA_PSS_SUPPORT
585 scripts/config.py unset MBEDTLS_SSL_SERVER_NAME_INDICATION
Minos Galanakis7665a932024-07-26 15:45:11 +0100586 scripts/config.py unset MBEDTLS_PKCS7_C
587 scripts/config.py set MBEDTLS_SSL_EARLY_DATA
Ronald Crona9511bc2024-09-06 09:21:10 +0200588
589 scripts/config.py set MBEDTLS_PSA_CRYPTO_CONFIG
590 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_ECDH
591 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_ECDSA
592 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_DETERMINISTIC_ECDSA
593 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_RSA_OAEP
594 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_RSA_PSS
595 # Note: The three unsets below are to be removed for Mbed TLS 4.0
Minos Galanakis7665a932024-07-26 15:45:11 +0100596 scripts/config.py unset MBEDTLS_ECDH_C
Ronald Crona9511bc2024-09-06 09:21:10 +0200597 scripts/config.py unset MBEDTLS_ECDSA_C
598 scripts/config.py unset MBEDTLS_PKCS1_V21
599
Minos Galanakis7665a932024-07-26 15:45:11 +0100600 make CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'"
601
602 msg "test_suite_ssl: TLS 1.3 only, only PSK ephemeral ffdh key exchange mode"
603 cd tests; ./test_suite_ssl; cd ..
604
605 msg "ssl-opt.sh: TLS 1.3 only, only PSK ephemeral ffdh key exchange mode"
606 tests/ssl-opt.sh
607}
608
609component_test_tls13_only_psk_all () {
610 msg "build: TLS 1.3 only from default, without ephemeral key exchange mode"
611 scripts/config.py unset MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED
612 scripts/config.py unset MBEDTLS_X509_CRT_PARSE_C
613 scripts/config.py unset MBEDTLS_X509_RSASSA_PSS_SUPPORT
614 scripts/config.py unset MBEDTLS_SSL_SERVER_NAME_INDICATION
Minos Galanakis7665a932024-07-26 15:45:11 +0100615 scripts/config.py unset MBEDTLS_PKCS7_C
616 scripts/config.py set MBEDTLS_SSL_EARLY_DATA
Ronald Crona9511bc2024-09-06 09:21:10 +0200617
618 scripts/config.py set MBEDTLS_PSA_CRYPTO_CONFIG
619 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_ECDSA
620 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_DETERMINISTIC_ECDSA
621 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_RSA_OAEP
622 scripts/config.py -f $CRYPTO_CONFIG_H unset PSA_WANT_ALG_RSA_PSS
Ronald Cron4153ebb2024-09-11 15:32:48 +0200623 # Note: The two unsets below are to be removed for Mbed TLS 4.0
Ronald Crona9511bc2024-09-06 09:21:10 +0200624 scripts/config.py unset MBEDTLS_ECDSA_C
625 scripts/config.py unset MBEDTLS_PKCS1_V21
626
Minos Galanakis7665a932024-07-26 15:45:11 +0100627 make CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'"
628
629 msg "test_suite_ssl: TLS 1.3 only, PSK and PSK ephemeral key exchange modes"
630 cd tests; ./test_suite_ssl; cd ..
631
632 msg "ssl-opt.sh: TLS 1.3 only, PSK and PSK ephemeral key exchange modes"
633 tests/ssl-opt.sh
634}
635
636component_test_tls13_only_ephemeral_all () {
637 msg "build: TLS 1.3 only from default, without PSK key exchange mode"
638 scripts/config.py unset MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
639 scripts/config.py set MBEDTLS_SSL_EARLY_DATA
640 make CFLAGS="'-DMBEDTLS_USER_CONFIG_FILE=\"../tests/configs/tls13-only.h\"'"
641
642 msg "test_suite_ssl: TLS 1.3 only, ephemeral and PSK ephemeral key exchange modes"
643 cd tests; ./test_suite_ssl; cd ..
644
645 msg "ssl-opt.sh: TLS 1.3 only, ephemeral and PSK ephemeral key exchange modes"
646 tests/ssl-opt.sh
647}
648
649component_test_tls13_no_padding () {
650 msg "build: default config plus early data minus padding"
651 scripts/config.py set MBEDTLS_SSL_CID_TLS1_3_PADDING_GRANULARITY 1
652 scripts/config.py set MBEDTLS_SSL_EARLY_DATA
653 CC=$ASAN_CC cmake -D CMAKE_BUILD_TYPE:String=Asan .
654 make
655 msg "test: default config plus early data minus padding"
656 make test
657 msg "ssl-opt.sh (TLS 1.3 no padding)"
658 tests/ssl-opt.sh
659}
660
661component_test_tls13_no_compatibility_mode () {
662 msg "build: default config plus early data minus middlebox compatibility mode"
663 scripts/config.py unset MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE
664 scripts/config.py set MBEDTLS_SSL_EARLY_DATA
665 CC=$ASAN_CC cmake -D CMAKE_BUILD_TYPE:String=Asan .
666 make
667 msg "test: default config plus early data minus middlebox compatibility mode"
668 make test
669 msg "ssl-opt.sh (TLS 1.3 no compatibility mode)"
670 tests/ssl-opt.sh
671}
672
Minos Galanakisf78447f2024-07-26 20:49:51 +0100673component_test_full_minus_session_tickets () {
Minos Galanakis7665a932024-07-26 15:45:11 +0100674 msg "build: full config without session tickets"
675 scripts/config.py full
676 scripts/config.py unset MBEDTLS_SSL_SESSION_TICKETS
677 scripts/config.py unset MBEDTLS_SSL_EARLY_DATA
678 CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Asan .
679 make
680 msg "test: full config without session tickets"
681 make test
682 msg "ssl-opt.sh (full config without session tickets)"
683 tests/ssl-opt.sh
684}
685
Minos Galanakis4b6ee642024-08-01 11:20:02 +0100686component_test_depends_py_kex () {
687 msg "test/build: depends.py kex (gcc)"
Minos Galanakis4b6ee642024-08-01 11:20:02 +0100688 tests/scripts/depends.py kex
689}
690
Minos Galanakis6aab5b72024-07-25 14:24:37 +0100691