2121
2222SCRIPT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " & > /dev/null && pwd ) "
2323CERT_DIR=$SCRIPT_DIR /../certs
24- LOG_DIR=$SCRIPT_DIR /log
25- LOG_FILE=$LOG_DIR /wp-cs-test.log
26- LOG_SERVER=$LOG_DIR /wp-cs-test-server.log
27- LOG_WP_SERVER=$LOG_DIR /wp-cs-test-wp-server.log
28- LOG_CLIENT=$LOG_DIR /wp-cs-test-client.log
29- TMP_LOG=$LOG_DIR /wp-cs-test-tmp.log
24+ LOG_FILE=$SCRIPT_DIR /wp-cs-test.log
3025
3126OPENSSL_SERVER_PID=-1
32- WP_OPENSSL_SERVER_PID=-1
3327
34- kill_servers () {
35- SERVER_PID=$OPENSSL_SERVER_PID
36- check_process_running
37- if [ " $PS_EXIT " = " 0" ]; then
38- (kill -INT $SERVER_PID ) > /dev/null 2>&1
39- fi
28+ set -o pipefail # pass failures up the pipe
29+ prepend () { # Usage: cmd 2>&1 | prepend "sometext "
30+ while read line; do echo " ${1}${line} " ; done
31+ }
4032
41- SERVER_PID=$WP_OPENSSL_SERVER_PID
42- check_process_running
43- if [ " $PS_EXIT " = " 0" ]; then
44- (kill -INT $SERVER_PID ) > /dev/null 2>&1
33+ kill_servers () {
34+ if [ $( check_process_running $OPENSSL_SERVER_PID ) = " 0" ]; then
35+ (kill -9 $OPENSSL_SERVER_PID ) > /dev/null 2>&1
4536 fi
4637}
4738
4839do_cleanup () {
40+ sleep 0.5 # flush buffers
4941 kill_servers
50-
51- rm -f $TMP_LOG
5242}
5343
5444do_trap () {
@@ -58,7 +48,6 @@ do_trap() {
5848 exit 1
5949}
6050
61-
6251trap do_trap INT TERM
6352
6453TLS13_ALL_CIPHERS=" TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256:TLS_AES_128_CCM_8_SHA256"
@@ -144,245 +133,83 @@ TLS1_PSK_CIPHERS=(
144133)
145134
146135check_process_running () {
147- ps -p $SERVER_PID > /dev/null
148- PS_EXIT= $?
136+ ps -p $1 > /dev/null
137+ echo $?
149138}
150139
151140# need a unique port since may run the same time as testsuite
152141generate_port () {
153- port=$(( $(od - An - N2 / dev/ random) % (65535 - 49512 ) + 49512 ))
154- }
155-
156- start_openssl_server () {
157- generate_port
158- export OPENSSL_PORT=$port
159-
160- ($OPENSSL_BIN s_server -www \
161- -cert $CERT_DIR /server-cert.pem -key $CERT_DIR /server-key.pem \
162- -dcert $CERT_DIR /server-ecc.pem -dkey $CERT_DIR /ecc-key.pem \
163- -accept $OPENSSL_PORT $OPENSSL_ALL_CIPHERS \
164- > $LOG_SERVER 2>&1
165- ) &
166- OPENSSL_SERVER_PID=$!
167-
168- sleep 0.1
169-
170- SERVER_PID=$OPENSSL_SERVER_PID
171- check_process_running
172- if [ " $PS_EXIT " != " 0" ]; then
173- printf " OpenSSL server failed to start\n"
174- do_cleanup
175- exit 1
176- fi
177- }
178-
179- start_wp_openssl_server () {
180- generate_port
181- export WP_OPENSSL_PORT=$port
182-
183- ($OPENSSL_BIN s_server -www \
184- -provider-path $WOLFPROV_PATH -provider $WOLFPROV_NAME \
185- -cert $CERT_DIR /server-cert.pem -key $CERT_DIR /server-key.pem \
186- -dcert $CERT_DIR /server-ecc.pem -dkey $CERT_DIR /ecc-key.pem \
187- -accept $WP_OPENSSL_PORT $OPENSSL_ALL_CIPHERS \
188- > $LOG_WP_SERVER 2>&1
189- ) &
190- WP_OPENSSL_SERVER_PID=$!
191-
192- sleep 0.1
193-
194- SERVER_PID=$WP_OPENSSL_SERVER_PID
195- check_process_running
196- if [ " $PS_EXIT " != " 0" ]; then
197- printf " server failed to start\n"
198- printf " OpenSSL server using wolfProvider failed to start\n"
199- do_cleanup
200- exit 1
201- fi
142+ echo $(( $(od - An - N2 / dev/ random) % (65535 - 49512 ) + 49512 ))
202143}
203- start_openssl_server () {
204- generate_port
205- export OPENSSL_PORT=$port
206144
207- ($OPENSSL_BIN s_server -www \
145+ start_openssl_server () { # usage: start_openssl_server [extraArgs]
146+ stdbuf -oL -eL $OPENSSL_BIN s_server -www $1 \
208147 -cert $CERT_DIR /server-cert.pem -key $CERT_DIR /server-key.pem \
209148 -dcert $CERT_DIR /server-ecc.pem -dkey $CERT_DIR /ecc-key.pem \
210149 -accept $OPENSSL_PORT $OPENSSL_ALL_CIPHERS \
211- > $LOG_SERVER 2>&1
212- ) &
213- OPENSSL_SERVER_PID=$!
150+ 2>&1 | prepend " [server] " >> $LOG_FILE &
151+ OPENSSL_SERVER_PID=$(( $! - 1 ))
214152
215153 sleep 0.1
216154
217- SERVER_PID=$OPENSSL_SERVER_PID
218- check_process_running
219- if [ " $PS_EXIT " != " 0" ]; then
155+ if [ $( check_process_running $OPENSSL_SERVER_PID ) != " 0" ]; then
220156 printf " OpenSSL server failed to start\n"
221157 do_cleanup
222158 exit 1
223159 fi
224160}
225161
226- start_wp_openssl_server () {
227- generate_port
228- export WP_OPENSSL_PORT=$port
229-
230- ($OPENSSL_BIN s_server -www \
231- -provider-path $WOLFPROV_PATH -provider $WOLFPROV_NAME \
232- -cert $CERT_DIR /server-cert.pem -key $CERT_DIR /server-key.pem \
233- -dcert $CERT_DIR /server-ecc.pem -dkey $CERT_DIR /ecc-key.pem \
234- -accept $WP_OPENSSL_PORT $OPENSSL_ALL_CIPHERS \
235- > $LOG_WP_SERVER 2>&1
236- ) &
237- WP_OPENSSL_SERVER_PID=$!
238-
239- sleep 0.1
240-
241- SERVER_PID=$WP_OPENSSL_SERVER_PID
242- check_process_running
243- if [ " $PS_EXIT " != " 0" ]; then
244- printf " server failed to start\n"
245- printf " OpenSSL server using wolfProvider failed to start\n"
246- do_cleanup
247- exit 1
248- fi
249- }
250-
251- do_wp_client () {
162+ do_client () { # usage: do_client [extraArgs]
252163 printf " \t\t$CIPHER ... "
164+ printf " \n$CIPHER ...\n" >> $LOG_FILE
253165 if [ " $TLS_VERSION " != " -tls1_3" ]; then
254166 (echo -n | \
255- $OPENSSL_BIN s_client \
256- -provider-path $WOLFPROV_PATH \
257- -provider $WOLFPROV_NAME \
167+ stdbuf -oL -eL $OPENSSL_BIN s_client $1 \
258168 -cipher $CIPHER $TLS_VERSION \
259- -curves $CURVES \
260169 -connect localhost:$OPENSSL_PORT \
261- > $TMP_LOG 2>&1
262- )
263- else
264- (echo -n | \
265- $OPENSSL_BIN s_client \
266- -provider-path $WOLFPROV_PATH \
267- -provider $WOLFPROV_NAME \
268- -ciphersuites $CIPHER $TLS_VERSION \
269170 -curves $CURVES \
270- -connect localhost:$OPENSSL_PORT \
271- > $TMP_LOG 2>&1
272- )
273- fi
274- if [ " $? " = " 0" ]; then
275- printf " pass\n"
276- else
277- printf " fail\n"
278- FAIL=$(( FAIL+ 1 ))
279- fi
280-
281- # check_log
282-
283- cat $TMP_LOG >> $LOG_CLIENT
284- }
285-
286- do_client () {
287- printf " \t\t$CIPHER ... "
288- if [ " $TLS_VERSION " != " -tls1_3" ]; then
289- (echo -n | \
290- $OPENSSL_BIN s_client \
291- -cipher $CIPHER $TLS_VERSION \
292- -connect localhost:$WP_OPENSSL_PORT \
293- -curves $CURVES \
294- >> $LOG_CLIENT 2>&1
171+ 2>&1 | prepend " [client] " >> $LOG_FILE
295172 )
296173 else
297174 (echo -n | \
298- $OPENSSL_BIN s_client \
175+ stdbuf -oL -eL $OPENSSL_BIN s_client $1 \
299176 -ciphersuites $CIPHER $TLS_VERSION \
300- -connect localhost:$WP_OPENSSL_PORT \
177+ -connect localhost:$OPENSSL_PORT \
301178 -curves $CURVES \
302- >> $LOG_CLIENT 2>&1
179+ 2>&1 | prepend " [client] " >> $LOG_FILE
303180 )
304181 fi
305182 if [ " $? " = " 0" ]; then
306- printf " pass\n"
183+ printf " pass\n" | tee -a $LOG_FILE
307184 else
308- printf " fail\n"
185+ printf " fail\n" | tee -a $LOG_FILE
309186 FAIL=$(( FAIL+ 1 ))
310187 fi
311-
312- NEW_LINES=` wc -l $LOG_WP_SERVER | awk ' {print $1}' `
313- tail --lines=$(( NEW_LINES- LOG_LINES)) $LOG_WP_SERVER > $TMP_LOG
314-
315- # check_log
316-
317- LOG_LINES=$NEW_LINES
318188}
319189
320- do_wp_client_test () {
321- printf " \tClient testing\n"
322- CHECK_CLIENT=1
323- CHECK_SERVER=
324-
325- # TLS_VERSION=-tls1
326- # printf "\t$TLS_VERSION\n"
327- # for CIPHER in ${TLS1_CIPHERS[@]}
328- # do
329- # do_wp_client
330- # done
331-
332- # TLS_VERSION=-tls1_1
333- # printf "\t$TLS_VERSION\n"
334- # for CIPHER in ${TLS1_CIPHERS[@]}
335- # do
336- # do_wp_client
337- # done
338-
339- TLS_VERSION=-tls1_2
340- printf " \t$TLS_VERSION \n"
341- for CIPHER in ${TLS12_CIPHERS[@]}
342- do
343- do_wp_client
344- done
345-
346- TLS_VERSION=-tls1_3
347- printf " \t$TLS_VERSION \n"
348- for CIPHER in ${TLS13_CIPHERS[@]}
349- do
350- do_wp_client
351- done
352- }
353-
354- do_client_test () {
355- printf " \tServer testing\n"
356- CHECK_CLIENT=
357- CHECK_SERVER=1
358- LOG_LINES=0
359-
360- # TLS_VERSION=-tls1
361- # printf "\t$TLS_VERSION\n"
362- # for CIPHER in ${TLS1_CIPHERS[@]}
363- # do
364- # do_client
365- # done
366-
367- # TLS_VERSION=-tls1_1
368- # printf "\t$TLS_VERSION\n"
369- # for CIPHER in ${TLS1_CIPHERS[@]}
370- # do
371- # do_client
372- # done
190+ do_client_test () { # usage: do_client_test [extraArgs]
191+ # TLS_VERSION=-tls1
192+ # printf "\t$TLS_VERSION\n" | tee -a $LOG_FILE
193+ # for CIPHER in ${TLS1_CIPHERS[@]}; do
194+ # do_client "$1"
195+ # done
196+ #
197+ # TLS_VERSION=-tls1_1
198+ # printf "\t$TLS_VERSION\n" | tee -a $LOG_FILE
199+ # for CIPHER in ${TLS1_CIPHERS[@]}; do
200+ # do_client "$1"
201+ # done
373202
374203 TLS_VERSION=-tls1_2
375- printf " \t$TLS_VERSION \n"
376- for CIPHER in ${TLS12_CIPHERS[@]}
377- do
378- do_client
204+ printf " \t$TLS_VERSION \n" | tee -a $LOG_FILE
205+ for CIPHER in ${TLS12_CIPHERS[@]} ; do
206+ do_client " $1 "
379207 done
380208
381209 TLS_VERSION=-tls1_3
382- printf " \t$TLS_VERSION \n"
383- for CIPHER in ${TLS13_CIPHERS[@]}
384- do
385- do_client
210+ printf " \t$TLS_VERSION \n" | tee -a $LOG_FILE
211+ for CIPHER in ${TLS13_CIPHERS[@]} ; do
212+ do_client " $1 "
386213 done
387214}
388215
@@ -414,16 +241,21 @@ FAIL=0
414241WOLFPROV_NAME=" libwolfprov"
415242WOLFPROV_PATH=$PWD /.libs
416243
417- rm -f $LOG_CLIENT
418-
419244CURVES=prime256v1
420245# CURVES=X25519
421246OPENSSL_ALL_CIPHERS=" -cipher ALL -ciphersuites $TLS13_ALL_CIPHERS "
247+ OPENSSL_PORT=$( generate_port)
248+
249+ printf " \tClient testing\n" | tee $LOG_FILE
422250start_openssl_server
423- do_wp_client_test
424- start_wp_openssl_server
251+ do_client_test " -provider-path $WOLFPROV_PATH -provider $WOLFPROV_NAME "
252+ kill_servers
253+
254+ printf " \tServer testing\n" | tee -a $LOG_FILE
255+ start_openssl_server " -provider-path $WOLFPROV_PATH -provider $WOLFPROV_NAME "
425256do_client_test
426257kill_servers
258+
427259do_cleanup
428260
429261if [ " $FAIL " = " 0" ]; then
0 commit comments