From 236df9257bd902e527c29355e11f5908da4e1784 Mon Sep 17 00:00:00 2001 From: toddouska Date: Mon, 5 Oct 2015 12:56:17 -0700 Subject: [PATCH] add openssl script suite test switch to bash for 'read -ra <<<' for now --- scripts/include.am | 1 + scripts/openssl.test | 120 +++++++++++++++++++++++++++++++++++++++++++ src/ssl.c | 2 + 3 files changed, 123 insertions(+) create mode 100755 scripts/openssl.test diff --git a/scripts/include.am b/scripts/include.am index 4b1b105c5..34a49bbba 100644 --- a/scripts/include.am +++ b/scripts/include.am @@ -10,6 +10,7 @@ endif if BUILD_EXAMPLES dist_noinst_SCRIPTS+= scripts/resume.test +dist_noinst_SCRIPTS+= scripts/openssl.test if BUILD_CRL # make revoked test rely on completion of resume test diff --git a/scripts/openssl.test b/scripts/openssl.test new file mode 100755 index 000000000..7b4dc2da4 --- /dev/null +++ b/scripts/openssl.test @@ -0,0 +1,120 @@ +#!/bin/bash + +#openssl.test + +# need a unique port since may run the same time as testsuite +openssl_port=11114 +no_pid=-1 +server_pid=$no_pid +wolf_suites_tested=0 +wolf_suites_total=0 +counter=0 + +do_cleanup() { + echo "in cleanup" + + if [ $server_pid != $no_pid ] + then + echo "killing server" + kill -9 $server_pid + fi +} + +do_trap() { + echo "got trap" + do_cleanup + exit -1 +} + +trap do_trap INT TERM + +echo -e "\nTesting existence of openssl command...\n" +command -v openssl >/dev/null 2>&1 || { echo >&2 "Requires openssl command, but it's not installed. Ending."; exit 0; } + + +echo -e "\nTesting for _build directory as part of distcheck, different paths" +currentDir=`pwd` +if [ $currentDir == *"_build" ] +then + echo -e "_build directory detected, moving a directory back" + cd .. +fi + +echo -e "\nStarting openssl server...\n" + +openssl s_server -accept $openssl_port -cert ./certs/server-cert.pem -key ./certs/server-key.pem -quiet -www -dhparam ./certs/dh2048.pem -dcert ./certs/server-ecc.pem -dkey ./certs/ecc-key.pem & +server_pid=$! + + +# get openssl ciphers +open_ciphers=`openssl ciphers` +IFS=':' read -ra opensslArray <<< "$open_ciphers" + +# get wolfssl ciphers +wolf_ciphers=`./examples/client/client -e` +IFS=':' read -ra wolfsslArray <<< "$wolf_ciphers" + +# server should be ready, let's make sure +server_ready=0 +while [ "$counter" -lt 20 ]; do + echo -e "waiting for openssl s_server ready..." + nc -z localhost $openssl_port + nc_result=$? + if [ $nc_result == 0 ] + then + echo -e "openssl s_server ready!" + server_ready=1 + break + fi + sleep 0.1 + counter=$((counter+ 1)) +done + + +if [ $server_ready == 0 ] +then + echo -e "Couldn't verify openssl server is running, timeout error" + do_cleanup + exit -1 +fi + +for wolfSuite in "${wolfsslArray[@]}"; do + + echo -e "trying wolfSSL cipher suite $wolfSuite" + matchSuite=0 + wolf_suites_total=$((wolf_suites_total + 1)) + + for openSuite in "${opensslArray[@]}"; do + if [ $openSuite == $wolfSuite ] + then + echo -e "Matched to OpenSSL suite support" + matchSuite=1 + fi + done + + if [ $matchSuite == 0 ] + then + echo -e "Couldn't match suite, continuing..." + continue + fi + + ./examples/client/client -p $openssl_port -g -l $wolfSuite + client_result=$? + + if [ $client_result != 0 ] + then + echo -e "client failed!" + do_cleanup + exit 1 + fi + wolf_suites_tested=$((wolf_suites_tested+1)) + +done + +kill -9 $server_pid + +echo -e "wolfSSL total suites $wolf_suites_total" +echo -e "wolfSSL suites tested $wolf_suites_tested" +echo -e "\nSuccess!\n" + +exit 0 diff --git a/src/ssl.c b/src/ssl.c index bb2bd9276..fdbe8ce5d 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -295,6 +295,8 @@ int wolfSSL_get_ciphers(char* buf, int len) if (i < size - 1) *buf++ = delim; + else + *buf++ = '\0'; } else return BUFFER_E;