xref: /aosp_15_r20/external/mbedtls/tests/context-info.sh (revision 62c56f9862f102b96d72393aff6076c951fb8148)
1*62c56f98SSadaf Ebrahimi#!/bin/sh
2*62c56f98SSadaf Ebrahimi
3*62c56f98SSadaf Ebrahimi# context-info.sh
4*62c56f98SSadaf Ebrahimi#
5*62c56f98SSadaf Ebrahimi# Copyright The Mbed TLS Contributors
6*62c56f98SSadaf Ebrahimi# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
7*62c56f98SSadaf Ebrahimi#
8*62c56f98SSadaf Ebrahimi# This program is intended for testing the ssl_context_info program
9*62c56f98SSadaf Ebrahimi#
10*62c56f98SSadaf Ebrahimi
11*62c56f98SSadaf Ebrahimiset -eu
12*62c56f98SSadaf Ebrahimi
13*62c56f98SSadaf Ebrahimiif ! cd "$(dirname "$0")"; then
14*62c56f98SSadaf Ebrahimi    exit 125
15*62c56f98SSadaf Ebrahimifi
16*62c56f98SSadaf Ebrahimi
17*62c56f98SSadaf Ebrahimi# Variables
18*62c56f98SSadaf Ebrahimi
19*62c56f98SSadaf EbrahimiTHIS_SCRIPT_NAME=$(basename "$0")
20*62c56f98SSadaf EbrahimiPROG_PATH="../programs/ssl/ssl_context_info"
21*62c56f98SSadaf EbrahimiOUT_FILE="ssl_context_info.log"
22*62c56f98SSadaf EbrahimiIN_DIR="data_files/base64"
23*62c56f98SSadaf Ebrahimi
24*62c56f98SSadaf EbrahimiUSE_VALGRIND=0
25*62c56f98SSadaf Ebrahimi
26*62c56f98SSadaf EbrahimiT_COUNT=0
27*62c56f98SSadaf EbrahimiT_PASSED=0
28*62c56f98SSadaf EbrahimiT_FAILED=0
29*62c56f98SSadaf Ebrahimi
30*62c56f98SSadaf Ebrahimi
31*62c56f98SSadaf Ebrahimi# Functions
32*62c56f98SSadaf Ebrahimi
33*62c56f98SSadaf Ebrahimiprint_usage() {
34*62c56f98SSadaf Ebrahimi    echo "Usage: $0 [options]"
35*62c56f98SSadaf Ebrahimi    printf "  -h|--help\tPrint this help.\n"
36*62c56f98SSadaf Ebrahimi    printf "  -m|--memcheck\tUse valgrind to check the memory.\n"
37*62c56f98SSadaf Ebrahimi}
38*62c56f98SSadaf Ebrahimi
39*62c56f98SSadaf Ebrahimi# Print test name <name>
40*62c56f98SSadaf Ebrahimiprint_name() {
41*62c56f98SSadaf Ebrahimi    printf "%s %.*s " "$1" $(( 71 - ${#1} )) \
42*62c56f98SSadaf Ebrahimi    "........................................................................"
43*62c56f98SSadaf Ebrahimi}
44*62c56f98SSadaf Ebrahimi
45*62c56f98SSadaf Ebrahimi# Print header to the test output file <test name> <file path> <test command>
46*62c56f98SSadaf Ebrahimiprint_header()
47*62c56f98SSadaf Ebrahimi{
48*62c56f98SSadaf Ebrahimi    date="$(date)"
49*62c56f98SSadaf Ebrahimi    echo "******************************************************************" >  $2
50*62c56f98SSadaf Ebrahimi    echo "* File created by: $THIS_SCRIPT_NAME"                               >> $2
51*62c56f98SSadaf Ebrahimi    echo "* Test name:  $1"                                                   >> $2
52*62c56f98SSadaf Ebrahimi    echo "* Date:       $date"                                                >> $2
53*62c56f98SSadaf Ebrahimi    echo "* Command:    $3"                                                   >> $2
54*62c56f98SSadaf Ebrahimi    echo "******************************************************************" >> $2
55*62c56f98SSadaf Ebrahimi    echo ""                                                                   >> $2
56*62c56f98SSadaf Ebrahimi}
57*62c56f98SSadaf Ebrahimi
58*62c56f98SSadaf Ebrahimi# Print footer at the end of file <file path>
59*62c56f98SSadaf Ebrahimiprint_footer()
60*62c56f98SSadaf Ebrahimi{
61*62c56f98SSadaf Ebrahimi    echo ""                                                                   >> $1
62*62c56f98SSadaf Ebrahimi    echo "******************************************************************" >> $1
63*62c56f98SSadaf Ebrahimi    echo "* End command"                                                      >> $1
64*62c56f98SSadaf Ebrahimi    echo "******************************************************************" >> $1
65*62c56f98SSadaf Ebrahimi    echo ""                                                                   >> $1
66*62c56f98SSadaf Ebrahimi}
67*62c56f98SSadaf Ebrahimi
68*62c56f98SSadaf Ebrahimi# Use the arguments of this script
69*62c56f98SSadaf Ebrahimiget_options() {
70*62c56f98SSadaf Ebrahimi    while [ $# -gt 0 ]; do
71*62c56f98SSadaf Ebrahimi        case "$1" in
72*62c56f98SSadaf Ebrahimi            -h|--help)
73*62c56f98SSadaf Ebrahimi                print_usage
74*62c56f98SSadaf Ebrahimi                exit 0
75*62c56f98SSadaf Ebrahimi                ;;
76*62c56f98SSadaf Ebrahimi            -m|--memcheck)
77*62c56f98SSadaf Ebrahimi                USE_VALGRIND=1
78*62c56f98SSadaf Ebrahimi                ;;
79*62c56f98SSadaf Ebrahimi            *)
80*62c56f98SSadaf Ebrahimi                echo "Unknown argument: '$1'"
81*62c56f98SSadaf Ebrahimi                print_usage
82*62c56f98SSadaf Ebrahimi                exit 1
83*62c56f98SSadaf Ebrahimi                ;;
84*62c56f98SSadaf Ebrahimi        esac
85*62c56f98SSadaf Ebrahimi        shift
86*62c56f98SSadaf Ebrahimi    done
87*62c56f98SSadaf Ebrahimi}
88*62c56f98SSadaf Ebrahimi
89*62c56f98SSadaf Ebrahimi# Current test failed
90*62c56f98SSadaf Ebrahimifail()
91*62c56f98SSadaf Ebrahimi{
92*62c56f98SSadaf Ebrahimi    T_FAILED=$(( $T_FAILED + 1))
93*62c56f98SSadaf Ebrahimi    FAIL_OUT="Fail.$T_FAILED""_$OUT_FILE"
94*62c56f98SSadaf Ebrahimi
95*62c56f98SSadaf Ebrahimi    echo "FAIL"
96*62c56f98SSadaf Ebrahimi    echo "    Error: $1"
97*62c56f98SSadaf Ebrahimi
98*62c56f98SSadaf Ebrahimi    cp -f "$OUT_FILE" "$FAIL_OUT"
99*62c56f98SSadaf Ebrahimi    echo "Error: $1" >> "$FAIL_OUT"
100*62c56f98SSadaf Ebrahimi}
101*62c56f98SSadaf Ebrahimi
102*62c56f98SSadaf Ebrahimi# Current test passed
103*62c56f98SSadaf Ebrahimipass()
104*62c56f98SSadaf Ebrahimi{
105*62c56f98SSadaf Ebrahimi    T_PASSED=$(( $T_PASSED + 1))
106*62c56f98SSadaf Ebrahimi    echo "PASS"
107*62c56f98SSadaf Ebrahimi}
108*62c56f98SSadaf Ebrahimi
109*62c56f98SSadaf Ebrahimi# Usage: run_test <name> <input file with b64 code> [ -arg <extra arguments for tested program> ] [option [...]]
110*62c56f98SSadaf Ebrahimi# Options:  -m <pattern that MUST be present in the output of tested program>
111*62c56f98SSadaf Ebrahimi#           -n <pattern that must NOT be present in the output of tested program>
112*62c56f98SSadaf Ebrahimi#           -u <pattern that must be UNIQUE in the output of tested program>
113*62c56f98SSadaf Ebrahimirun_test()
114*62c56f98SSadaf Ebrahimi{
115*62c56f98SSadaf Ebrahimi    TEST_NAME="$1"
116*62c56f98SSadaf Ebrahimi    RUN_CMD="$PROG_PATH -f $IN_DIR/$2"
117*62c56f98SSadaf Ebrahimi
118*62c56f98SSadaf Ebrahimi    if [ "-arg" = "$3" ]; then
119*62c56f98SSadaf Ebrahimi        RUN_CMD="$RUN_CMD $4"
120*62c56f98SSadaf Ebrahimi        shift 4
121*62c56f98SSadaf Ebrahimi    else
122*62c56f98SSadaf Ebrahimi        shift 2
123*62c56f98SSadaf Ebrahimi    fi
124*62c56f98SSadaf Ebrahimi
125*62c56f98SSadaf Ebrahimi    # prepend valgrind to our commands if active
126*62c56f98SSadaf Ebrahimi    if [ "$USE_VALGRIND" -gt 0 ]; then
127*62c56f98SSadaf Ebrahimi        RUN_CMD="valgrind --leak-check=full $RUN_CMD"
128*62c56f98SSadaf Ebrahimi    fi
129*62c56f98SSadaf Ebrahimi
130*62c56f98SSadaf Ebrahimi    T_COUNT=$(( $T_COUNT + 1))
131*62c56f98SSadaf Ebrahimi    print_name "$TEST_NAME"
132*62c56f98SSadaf Ebrahimi
133*62c56f98SSadaf Ebrahimi    # run tested program
134*62c56f98SSadaf Ebrahimi    print_header "$TEST_NAME" "$OUT_FILE" "$RUN_CMD"
135*62c56f98SSadaf Ebrahimi    eval "$RUN_CMD" >> "$OUT_FILE" 2>&1
136*62c56f98SSadaf Ebrahimi    print_footer "$OUT_FILE"
137*62c56f98SSadaf Ebrahimi
138*62c56f98SSadaf Ebrahimi    # check valgrind's results
139*62c56f98SSadaf Ebrahimi    if [ "$USE_VALGRIND" -gt 0 ]; then
140*62c56f98SSadaf Ebrahimi        if ! ( grep -F 'All heap blocks were freed -- no leaks are possible' "$OUT_FILE" &&
141*62c56f98SSadaf Ebrahimi             grep -F 'ERROR SUMMARY: 0 errors from 0 contexts' "$OUT_FILE" ) > /dev/null
142*62c56f98SSadaf Ebrahimi        then
143*62c56f98SSadaf Ebrahimi            fail "Memory error detected"
144*62c56f98SSadaf Ebrahimi            return
145*62c56f98SSadaf Ebrahimi        fi
146*62c56f98SSadaf Ebrahimi    fi
147*62c56f98SSadaf Ebrahimi
148*62c56f98SSadaf Ebrahimi    # check other assertions
149*62c56f98SSadaf Ebrahimi    # lines beginning with == are added by valgrind, ignore them, because we already checked them before
150*62c56f98SSadaf Ebrahimi    # lines with 'Serious error when reading debug info', are valgrind issues as well
151*62c56f98SSadaf Ebrahimi    # lines beginning with * are added by this script, ignore too
152*62c56f98SSadaf Ebrahimi    while [ $# -gt 0 ]
153*62c56f98SSadaf Ebrahimi    do
154*62c56f98SSadaf Ebrahimi        case $1 in
155*62c56f98SSadaf Ebrahimi            "-m")
156*62c56f98SSadaf Ebrahimi                if grep -v '^==' "$OUT_FILE" | grep -v 'Serious error when reading debug info' | grep -v "^*" | grep "$2" >/dev/null; then :; else
157*62c56f98SSadaf Ebrahimi                    fail "pattern '$2' MUST be present in the output"
158*62c56f98SSadaf Ebrahimi                    return
159*62c56f98SSadaf Ebrahimi                fi
160*62c56f98SSadaf Ebrahimi                ;;
161*62c56f98SSadaf Ebrahimi
162*62c56f98SSadaf Ebrahimi            "-n")
163*62c56f98SSadaf Ebrahimi                if grep -v '^==' "$OUT_FILE" | grep -v 'Serious error when reading debug info' | grep -v "^*" | grep "$2" >/dev/null; then
164*62c56f98SSadaf Ebrahimi                    fail "pattern '$2' MUST NOT be present in the output"
165*62c56f98SSadaf Ebrahimi                    return
166*62c56f98SSadaf Ebrahimi                fi
167*62c56f98SSadaf Ebrahimi                ;;
168*62c56f98SSadaf Ebrahimi
169*62c56f98SSadaf Ebrahimi            "-u")
170*62c56f98SSadaf Ebrahimi                if [ $(grep -v '^==' "$OUT_FILE"| grep -v 'Serious error when reading debug info' | grep -v "^*" | grep "$2" | wc -l) -ne 1 ]; then
171*62c56f98SSadaf Ebrahimi                    fail "lines following pattern '$2' must be once in the output"
172*62c56f98SSadaf Ebrahimi                    return
173*62c56f98SSadaf Ebrahimi                fi
174*62c56f98SSadaf Ebrahimi                ;;
175*62c56f98SSadaf Ebrahimi
176*62c56f98SSadaf Ebrahimi            *)
177*62c56f98SSadaf Ebrahimi                echo "Unknown test: $1" >&2
178*62c56f98SSadaf Ebrahimi                exit 1
179*62c56f98SSadaf Ebrahimi        esac
180*62c56f98SSadaf Ebrahimi        shift 2
181*62c56f98SSadaf Ebrahimi    done
182*62c56f98SSadaf Ebrahimi
183*62c56f98SSadaf Ebrahimi    rm -f "$OUT_FILE"
184*62c56f98SSadaf Ebrahimi
185*62c56f98SSadaf Ebrahimi    pass
186*62c56f98SSadaf Ebrahimi}
187*62c56f98SSadaf Ebrahimi
188*62c56f98SSadaf Ebrahimiget_options "$@"
189*62c56f98SSadaf Ebrahimi
190*62c56f98SSadaf Ebrahimi# Tests
191*62c56f98SSadaf Ebrahimi
192*62c56f98SSadaf Ebrahimirun_test "Default configuration, server" \
193*62c56f98SSadaf Ebrahimi         "srv_def.txt" \
194*62c56f98SSadaf Ebrahimi         -n "ERROR" \
195*62c56f98SSadaf Ebrahimi         -u "major.* 2$" \
196*62c56f98SSadaf Ebrahimi         -u "minor.* 21$" \
197*62c56f98SSadaf Ebrahimi         -u "path.* 0$" \
198*62c56f98SSadaf Ebrahimi         -u "MBEDTLS_HAVE_TIME$" \
199*62c56f98SSadaf Ebrahimi         -u "MBEDTLS_X509_CRT_PARSE_C$" \
200*62c56f98SSadaf Ebrahimi         -u "MBEDTLS_SSL_MAX_FRAGMENT_LENGTH$" \
201*62c56f98SSadaf Ebrahimi         -u "MBEDTLS_SSL_ENCRYPT_THEN_MAC$" \
202*62c56f98SSadaf Ebrahimi         -u "MBEDTLS_SSL_SESSION_TICKETS$" \
203*62c56f98SSadaf Ebrahimi         -u "MBEDTLS_SSL_SESSION_TICKETS and client$" \
204*62c56f98SSadaf Ebrahimi         -u "MBEDTLS_SSL_DTLS_ANTI_REPLAY$" \
205*62c56f98SSadaf Ebrahimi         -u "MBEDTLS_SSL_ALPN$" \
206*62c56f98SSadaf Ebrahimi         -u "ciphersuite.* TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256$" \
207*62c56f98SSadaf Ebrahimi         -u "cipher flags.* 0x00$" \
208*62c56f98SSadaf Ebrahimi         -u "Message-Digest.* SHA256$" \
209*62c56f98SSadaf Ebrahimi         -u "compression.* disabled$" \
210*62c56f98SSadaf Ebrahimi         -u "DTLS datagram packing.* enabled$" \
211*62c56f98SSadaf Ebrahimi         -n "Certificate" \
212*62c56f98SSadaf Ebrahimi         -n "bytes left to analyze from context"
213*62c56f98SSadaf Ebrahimi
214*62c56f98SSadaf Ebrahimirun_test "Default configuration, client" \
215*62c56f98SSadaf Ebrahimi         "cli_def.txt" \
216*62c56f98SSadaf Ebrahimi         -n "ERROR" \
217*62c56f98SSadaf Ebrahimi         -u "major.* 2$" \
218*62c56f98SSadaf Ebrahimi         -u "minor.* 21$" \
219*62c56f98SSadaf Ebrahimi         -u "path.* 0$" \
220*62c56f98SSadaf Ebrahimi         -u "MBEDTLS_HAVE_TIME$" \
221*62c56f98SSadaf Ebrahimi         -u "MBEDTLS_X509_CRT_PARSE_C$" \
222*62c56f98SSadaf Ebrahimi         -u "MBEDTLS_SSL_MAX_FRAGMENT_LENGTH$" \
223*62c56f98SSadaf Ebrahimi         -u "MBEDTLS_SSL_ENCRYPT_THEN_MAC$" \
224*62c56f98SSadaf Ebrahimi         -u "MBEDTLS_SSL_SESSION_TICKETS$" \
225*62c56f98SSadaf Ebrahimi         -u "MBEDTLS_SSL_SESSION_TICKETS and client$" \
226*62c56f98SSadaf Ebrahimi         -u "MBEDTLS_SSL_DTLS_ANTI_REPLAY$" \
227*62c56f98SSadaf Ebrahimi         -u "MBEDTLS_SSL_ALPN$" \
228*62c56f98SSadaf Ebrahimi         -u "ciphersuite.* TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256$" \
229*62c56f98SSadaf Ebrahimi         -u "cipher flags.* 0x00$" \
230*62c56f98SSadaf Ebrahimi         -u "Message-Digest.* SHA256$" \
231*62c56f98SSadaf Ebrahimi         -u "compression.* disabled$" \
232*62c56f98SSadaf Ebrahimi         -u "DTLS datagram packing.* enabled$" \
233*62c56f98SSadaf Ebrahimi         -u "cert. version .* 3$" \
234*62c56f98SSadaf Ebrahimi         -u "serial number.* 02$" \
235*62c56f98SSadaf Ebrahimi         -u "issuer name.* C=NL, O=PolarSSL, CN=PolarSSL Test CA$" \
236*62c56f98SSadaf Ebrahimi         -u "subject name.* C=NL, O=PolarSSL, CN=localhost$" \
237*62c56f98SSadaf Ebrahimi         -u "issued  on.* 2019-02-10 14:44:06$" \
238*62c56f98SSadaf Ebrahimi         -u "expires on.* 2029-02-10 14:44:06$" \
239*62c56f98SSadaf Ebrahimi         -u "signed using.* RSA with SHA-256$" \
240*62c56f98SSadaf Ebrahimi         -u "RSA key size.* 2048 bits$" \
241*62c56f98SSadaf Ebrahimi         -u "basic constraints.* CA=false$" \
242*62c56f98SSadaf Ebrahimi         -n "bytes left to analyze from context"
243*62c56f98SSadaf Ebrahimi
244*62c56f98SSadaf Ebrahimirun_test "Ciphersuite TLS-RSA-WITH-AES-256-CCM-8, server" \
245*62c56f98SSadaf Ebrahimi         "srv_ciphersuite.txt" \
246*62c56f98SSadaf Ebrahimi         -n "ERROR" \
247*62c56f98SSadaf Ebrahimi         -u "ciphersuite.* TLS-RSA-WITH-AES-256-CCM-8$" \
248*62c56f98SSadaf Ebrahimi
249*62c56f98SSadaf Ebrahimirun_test "Ciphersuite TLS-RSA-WITH-AES-256-CCM-8, client" \
250*62c56f98SSadaf Ebrahimi         "cli_ciphersuite.txt" \
251*62c56f98SSadaf Ebrahimi         -n "ERROR" \
252*62c56f98SSadaf Ebrahimi         -u "ciphersuite.* TLS-RSA-WITH-AES-256-CCM-8$" \
253*62c56f98SSadaf Ebrahimi
254*62c56f98SSadaf Ebrahimirun_test "No packing, server" \
255*62c56f98SSadaf Ebrahimi         "srv_no_packing.txt" \
256*62c56f98SSadaf Ebrahimi         -n "ERROR" \
257*62c56f98SSadaf Ebrahimi         -u "DTLS datagram packing.* disabled"
258*62c56f98SSadaf Ebrahimi
259*62c56f98SSadaf Ebrahimirun_test "No packing, client" \
260*62c56f98SSadaf Ebrahimi         "cli_no_packing.txt" \
261*62c56f98SSadaf Ebrahimi         -n "ERROR" \
262*62c56f98SSadaf Ebrahimi         -u "DTLS datagram packing.* disabled"
263*62c56f98SSadaf Ebrahimi
264*62c56f98SSadaf Ebrahimirun_test "DTLS CID, server" \
265*62c56f98SSadaf Ebrahimi         "srv_cid.txt" \
266*62c56f98SSadaf Ebrahimi         -n "ERROR" \
267*62c56f98SSadaf Ebrahimi         -u "in CID.* DE AD" \
268*62c56f98SSadaf Ebrahimi         -u "out CID.* BE EF"
269*62c56f98SSadaf Ebrahimi
270*62c56f98SSadaf Ebrahimirun_test "DTLS CID, client" \
271*62c56f98SSadaf Ebrahimi         "cli_cid.txt" \
272*62c56f98SSadaf Ebrahimi         -n "ERROR" \
273*62c56f98SSadaf Ebrahimi         -u "in CID.* BE EF" \
274*62c56f98SSadaf Ebrahimi         -u "out CID.* DE AD"
275*62c56f98SSadaf Ebrahimi
276*62c56f98SSadaf Ebrahimirun_test "No MBEDTLS_SSL_MAX_FRAGMENT_LENGTH, server" \
277*62c56f98SSadaf Ebrahimi         "srv_no_mfl.txt" \
278*62c56f98SSadaf Ebrahimi         -n "ERROR" \
279*62c56f98SSadaf Ebrahimi         -n "MBEDTLS_SSL_MAX_FRAGMENT_LENGTH"
280*62c56f98SSadaf Ebrahimi
281*62c56f98SSadaf Ebrahimirun_test "No MBEDTLS_SSL_MAX_FRAGMENT_LENGTH, client" \
282*62c56f98SSadaf Ebrahimi         "cli_no_mfl.txt" \
283*62c56f98SSadaf Ebrahimi         -n "ERROR" \
284*62c56f98SSadaf Ebrahimi         -n "MBEDTLS_SSL_MAX_FRAGMENT_LENGTH"
285*62c56f98SSadaf Ebrahimi
286*62c56f98SSadaf Ebrahimirun_test "No MBEDTLS_SSL_ALPN, server" \
287*62c56f98SSadaf Ebrahimi         "srv_no_alpn.txt" \
288*62c56f98SSadaf Ebrahimi         -n "ERROR" \
289*62c56f98SSadaf Ebrahimi         -n "MBEDTLS_SSL_ALPN"
290*62c56f98SSadaf Ebrahimi
291*62c56f98SSadaf Ebrahimirun_test "No MBEDTLS_SSL_ALPN, client" \
292*62c56f98SSadaf Ebrahimi         "cli_no_alpn.txt" \
293*62c56f98SSadaf Ebrahimi         -n "ERROR" \
294*62c56f98SSadaf Ebrahimi         -n "MBEDTLS_SSL_ALPN"
295*62c56f98SSadaf Ebrahimi
296*62c56f98SSadaf Ebrahimirun_test "No MBEDTLS_SSL_KEEP_PEER_CERTIFICATE, server" \
297*62c56f98SSadaf Ebrahimi         "srv_no_keep_cert.txt" \
298*62c56f98SSadaf Ebrahimi         -arg "--keep-peer-cert=0" \
299*62c56f98SSadaf Ebrahimi         -u "ciphersuite.* TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256$" \
300*62c56f98SSadaf Ebrahimi         -u "cipher flags.* 0x00" \
301*62c56f98SSadaf Ebrahimi         -u "compression.* disabled" \
302*62c56f98SSadaf Ebrahimi         -u "DTLS datagram packing.* enabled" \
303*62c56f98SSadaf Ebrahimi         -n "ERROR"
304*62c56f98SSadaf Ebrahimi
305*62c56f98SSadaf Ebrahimirun_test "No MBEDTLS_SSL_KEEP_PEER_CERTIFICATE, client" \
306*62c56f98SSadaf Ebrahimi         "cli_no_keep_cert.txt" \
307*62c56f98SSadaf Ebrahimi         -arg "--keep-peer-cert=0" \
308*62c56f98SSadaf Ebrahimi         -u "ciphersuite.* TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256$" \
309*62c56f98SSadaf Ebrahimi         -u "cipher flags.* 0x00" \
310*62c56f98SSadaf Ebrahimi         -u "compression.* disabled" \
311*62c56f98SSadaf Ebrahimi         -u "DTLS datagram packing.* enabled" \
312*62c56f98SSadaf Ebrahimi         -n "ERROR"
313*62c56f98SSadaf Ebrahimi
314*62c56f98SSadaf Ebrahimirun_test "No MBEDTLS_SSL_KEEP_PEER_CERTIFICATE, negative, server" \
315*62c56f98SSadaf Ebrahimi         "srv_no_keep_cert.txt" \
316*62c56f98SSadaf Ebrahimi         -m "Deserializing" \
317*62c56f98SSadaf Ebrahimi         -m "ERROR"
318*62c56f98SSadaf Ebrahimi
319*62c56f98SSadaf Ebrahimirun_test "No MBEDTLS_SSL_KEEP_PEER_CERTIFICATE, negative, client" \
320*62c56f98SSadaf Ebrahimi         "cli_no_keep_cert.txt" \
321*62c56f98SSadaf Ebrahimi         -m "Deserializing" \
322*62c56f98SSadaf Ebrahimi         -m "ERROR"
323*62c56f98SSadaf Ebrahimi
324*62c56f98SSadaf Ebrahimirun_test "Minimal configuration, server" \
325*62c56f98SSadaf Ebrahimi         "srv_min_cfg.txt" \
326*62c56f98SSadaf Ebrahimi         -n "ERROR" \
327*62c56f98SSadaf Ebrahimi         -n "MBEDTLS_SSL_MAX_FRAGMENT_LENGTH$" \
328*62c56f98SSadaf Ebrahimi         -n "MBEDTLS_SSL_ENCRYPT_THEN_MAC$" \
329*62c56f98SSadaf Ebrahimi         -n "MBEDTLS_SSL_SESSION_TICKETS$" \
330*62c56f98SSadaf Ebrahimi         -n "MBEDTLS_SSL_SESSION_TICKETS and client$" \
331*62c56f98SSadaf Ebrahimi         -n "MBEDTLS_SSL_DTLS_ANTI_REPLAY$" \
332*62c56f98SSadaf Ebrahimi         -n "MBEDTLS_SSL_ALPN$" \
333*62c56f98SSadaf Ebrahimi
334*62c56f98SSadaf Ebrahimirun_test "Minimal configuration, client" \
335*62c56f98SSadaf Ebrahimi         "cli_min_cfg.txt" \
336*62c56f98SSadaf Ebrahimi         -n "ERROR" \
337*62c56f98SSadaf Ebrahimi         -n "MBEDTLS_SSL_MAX_FRAGMENT_LENGTH$" \
338*62c56f98SSadaf Ebrahimi         -n "MBEDTLS_SSL_ENCRYPT_THEN_MAC$" \
339*62c56f98SSadaf Ebrahimi         -n "MBEDTLS_SSL_SESSION_TICKETS$" \
340*62c56f98SSadaf Ebrahimi         -n "MBEDTLS_SSL_SESSION_TICKETS and client$" \
341*62c56f98SSadaf Ebrahimi         -n "MBEDTLS_SSL_DTLS_ANTI_REPLAY$" \
342*62c56f98SSadaf Ebrahimi         -n "MBEDTLS_SSL_ALPN$" \
343*62c56f98SSadaf Ebrahimi
344*62c56f98SSadaf Ebrahimirun_test "MTU=10000" \
345*62c56f98SSadaf Ebrahimi         "mtu_10000.txt" \
346*62c56f98SSadaf Ebrahimi         -n "ERROR" \
347*62c56f98SSadaf Ebrahimi         -u "MTU.* 10000$"
348*62c56f98SSadaf Ebrahimi
349*62c56f98SSadaf Ebrahimirun_test "MFL=1024" \
350*62c56f98SSadaf Ebrahimi         "mfl_1024.txt" \
351*62c56f98SSadaf Ebrahimi         -n "ERROR" \
352*62c56f98SSadaf Ebrahimi         -u "MFL.* 1024$"
353*62c56f98SSadaf Ebrahimi
354*62c56f98SSadaf Ebrahimirun_test "Older version (v2.19.1)" \
355*62c56f98SSadaf Ebrahimi         "v2.19.1.txt" \
356*62c56f98SSadaf Ebrahimi         -n "ERROR" \
357*62c56f98SSadaf Ebrahimi         -u "major.* 2$" \
358*62c56f98SSadaf Ebrahimi         -u "minor.* 19$" \
359*62c56f98SSadaf Ebrahimi         -u "path.* 1$" \
360*62c56f98SSadaf Ebrahimi         -u "ciphersuite.* TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8$" \
361*62c56f98SSadaf Ebrahimi         -u "Message-Digest.* SHA256$" \
362*62c56f98SSadaf Ebrahimi         -u "compression.* disabled$" \
363*62c56f98SSadaf Ebrahimi         -u "serial number.* 01:70:AF:40:B4:E6$" \
364*62c56f98SSadaf Ebrahimi         -u "issuer name.* CN=ca$" \
365*62c56f98SSadaf Ebrahimi         -u "subject name.* L=160001, OU=acc1, CN=device01$" \
366*62c56f98SSadaf Ebrahimi         -u "issued  on.* 2020-03-06 09:50:18$" \
367*62c56f98SSadaf Ebrahimi         -u "expires on.* 2056-02-26 09:50:18$" \
368*62c56f98SSadaf Ebrahimi         -u "signed using.* ECDSA with SHA256$" \
369*62c56f98SSadaf Ebrahimi         -u "lifetime.* 0 sec.$" \
370*62c56f98SSadaf Ebrahimi         -u "MFL.* none$" \
371*62c56f98SSadaf Ebrahimi         -u "negotiate truncated HMAC.* disabled$" \
372*62c56f98SSadaf Ebrahimi         -u "Encrypt-then-MAC.* enabled$" \
373*62c56f98SSadaf Ebrahimi         -u "DTLS datagram packing.* enabled$" \
374*62c56f98SSadaf Ebrahimi         -u "verify result.* 0x00000000$" \
375*62c56f98SSadaf Ebrahimi         -n "bytes left to analyze from context"
376*62c56f98SSadaf Ebrahimi
377*62c56f98SSadaf Ebrahimirun_test "Wrong base64 format" \
378*62c56f98SSadaf Ebrahimi         "def_bad_b64.txt" \
379*62c56f98SSadaf Ebrahimi         -m "ERROR" \
380*62c56f98SSadaf Ebrahimi         -u "The length of the base64 code found should be a multiple of 4" \
381*62c56f98SSadaf Ebrahimi         -n "bytes left to analyze from context"
382*62c56f98SSadaf Ebrahimi
383*62c56f98SSadaf Ebrahimirun_test "Too much data at the beginning of base64 code" \
384*62c56f98SSadaf Ebrahimi         "def_b64_too_big_1.txt" \
385*62c56f98SSadaf Ebrahimi         -m "ERROR" \
386*62c56f98SSadaf Ebrahimi         -n "The length of the base64 code found should be a multiple of 4" \
387*62c56f98SSadaf Ebrahimi
388*62c56f98SSadaf Ebrahimirun_test "Too much data in the middle of base64 code" \
389*62c56f98SSadaf Ebrahimi         "def_b64_too_big_2.txt" \
390*62c56f98SSadaf Ebrahimi         -m "ERROR" \
391*62c56f98SSadaf Ebrahimi         -n "The length of the base64 code found should be a multiple of 4" \
392*62c56f98SSadaf Ebrahimi
393*62c56f98SSadaf Ebrahimirun_test "Too much data at the end of base64 code" \
394*62c56f98SSadaf Ebrahimi         "def_b64_too_big_3.txt" \
395*62c56f98SSadaf Ebrahimi         -m "ERROR" \
396*62c56f98SSadaf Ebrahimi         -n "The length of the base64 code found should be a multiple of 4" \
397*62c56f98SSadaf Ebrahimi         -u "bytes left to analyze from context"
398*62c56f98SSadaf Ebrahimi
399*62c56f98SSadaf Ebrahimirun_test "Empty file as input" \
400*62c56f98SSadaf Ebrahimi         "empty.txt" \
401*62c56f98SSadaf Ebrahimi         -u "Finished. No valid base64 code found"
402*62c56f98SSadaf Ebrahimi
403*62c56f98SSadaf Ebrahimirun_test "Not empty file without base64 code" \
404*62c56f98SSadaf Ebrahimi         "../../context-info.sh" \
405*62c56f98SSadaf Ebrahimi         -n "Deserializing"
406*62c56f98SSadaf Ebrahimi
407*62c56f98SSadaf Ebrahimirun_test "Binary file instead of text file" \
408*62c56f98SSadaf Ebrahimi         "../../../programs/ssl/ssl_context_info" \
409*62c56f98SSadaf Ebrahimi         -m "ERROR" \
410*62c56f98SSadaf Ebrahimi         -u "Too many bad symbols detected. File check aborted" \
411*62c56f98SSadaf Ebrahimi         -n "Deserializing"
412*62c56f98SSadaf Ebrahimi
413*62c56f98SSadaf Ebrahimirun_test "Decoder continues past 0xff character" \
414*62c56f98SSadaf Ebrahimi         "def_b64_ff.bin" \
415*62c56f98SSadaf Ebrahimi         -n "No valid base64" \
416*62c56f98SSadaf Ebrahimi         -u "ciphersuite.* TLS-"
417*62c56f98SSadaf Ebrahimi
418*62c56f98SSadaf Ebrahimi
419*62c56f98SSadaf Ebrahimi# End of tests
420*62c56f98SSadaf Ebrahimi
421*62c56f98SSadaf Ebrahimiecho
422*62c56f98SSadaf Ebrahimiif [ $T_FAILED -eq 0 ]; then
423*62c56f98SSadaf Ebrahimi    echo "PASSED ( $T_COUNT tests )"
424*62c56f98SSadaf Ebrahimielse
425*62c56f98SSadaf Ebrahimi    echo "FAILED ( $T_FAILED / $T_COUNT tests )"
426*62c56f98SSadaf Ebrahimifi
427*62c56f98SSadaf Ebrahimi
428*62c56f98SSadaf Ebrahimiexit $T_FAILED
429