487c60df78
TLS 1.3 Early Data can be used with PSK and not session tickets. If only TLS 1.3 and no session tickets then no resumption. External sites don't support TLS 1.3 yet.
145 lines
3.2 KiB
Bash
Executable File
145 lines
3.2 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
#resume.test
|
|
|
|
# need a unique resume port since may run the same time as testsuite
|
|
# use server port zero hack to get one
|
|
resume_string="reused"
|
|
resume_sup_string="Resume session"
|
|
ems_string="Extended\ Master\ Secret"
|
|
resume_port=0
|
|
no_pid=-1
|
|
server_pid=$no_pid
|
|
counter=0
|
|
# let's use absolute path to a local dir (make distcheck may be in sub dir)
|
|
# also let's add some randomness by adding pid in case multiple 'make check's
|
|
# per source tree
|
|
ready_file=`pwd`/wolfssl_resume_ready$$
|
|
|
|
echo "ready file $ready_file"
|
|
|
|
remove_ready_file() {
|
|
if test -e $ready_file; then
|
|
echo -e "removing existing ready file"
|
|
rm $ready_file
|
|
fi
|
|
}
|
|
|
|
|
|
do_cleanup() {
|
|
echo "in cleanup"
|
|
|
|
if [ $server_pid != $no_pid ]
|
|
then
|
|
echo "killing server"
|
|
kill -9 $server_pid
|
|
fi
|
|
remove_ready_file
|
|
}
|
|
|
|
do_trap() {
|
|
echo "got trap"
|
|
do_cleanup
|
|
exit -1
|
|
}
|
|
|
|
do_test() {
|
|
echo -e "\nStarting example server for resume test...\n"
|
|
|
|
#make sure we support session resumption (!NO_SESSION_CACHE)
|
|
# Check the client for the extended master secret disable option. If
|
|
# present we need to run the test twice.
|
|
options_check=`./examples/client/client -?`
|
|
case "$options_check" in
|
|
*$resume_sup_string*)
|
|
echo -e "\nResume test supported";;
|
|
*)
|
|
echo -e "\nResume test not supported with build"
|
|
return;;
|
|
esac
|
|
|
|
remove_ready_file
|
|
./examples/server/server -r -R $ready_file -p $resume_port &
|
|
server_pid=$!
|
|
|
|
while [ ! -s $ready_file -a "$counter" -lt 20 ]; do
|
|
echo -e "waiting for ready file..."
|
|
sleep 0.1
|
|
counter=$((counter+ 1))
|
|
done
|
|
|
|
if test -e $ready_file; then
|
|
echo -e "found ready file, starting client..."
|
|
else
|
|
echo -e "NO ready file ending test..."
|
|
do_cleanup
|
|
exit 1
|
|
fi
|
|
|
|
# get created port 0 ephemeral port
|
|
resume_port=`cat $ready_file`
|
|
|
|
capture_out=$(./examples/client/client $1 -r -p $resume_port 2>&1)
|
|
client_result=$?
|
|
|
|
if [ $client_result != 0 ]
|
|
then
|
|
echo -e "client failed!\ncapture_out=$capture_out\nclient_result=$client_result"
|
|
do_cleanup
|
|
exit 1
|
|
fi
|
|
|
|
wait $server_pid
|
|
server_result=$?
|
|
remove_ready_file
|
|
|
|
if [ $server_result != 0 ]
|
|
then
|
|
echo -e "client failed!"
|
|
exit 1
|
|
fi
|
|
|
|
case "$capture_out" in
|
|
*$resume_string*)
|
|
echo "resumed session" ;;
|
|
*)
|
|
echo "did NOT resume session as expected"
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
trap do_trap INT TERM
|
|
|
|
./examples/client/client -? 2>&1 | grep -- 'Client not compiled in!'
|
|
if [ $? -ne 0 ]; then
|
|
./examples/server/server -? 2>&1 | grep -- 'Server not compiled in!'
|
|
if [ $? -ne 0 ]; then
|
|
RUN_TEST="Y"
|
|
fi
|
|
fi
|
|
|
|
./examples/client/client -? 2>&1 | grep -- 'Resume session'
|
|
if [ $? -ne 0 ]; then
|
|
RUN_TEST="Y"
|
|
fi
|
|
|
|
if [ "$RUN_TEST" = "Y" ]; then
|
|
do_test
|
|
|
|
# Check the client for the extended master secret disable option. If
|
|
# present we need to run the test twice.
|
|
options_check=`./examples/client/client -?`
|
|
case "$options_check" in
|
|
*$ems_string*)
|
|
echo -e "\nRepeating resume test without extended master secret..."
|
|
do_test -n ;;
|
|
*)
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
echo -e "\nSuccess!\n"
|
|
|
|
exit 0
|