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