1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
#!/usr/bin/env bash
# Test a running server. If the certificate directory does not exist,
# a new CA will be created in it.
# Fail on any error
set -e
PASSED=0
FAILED=0
if [ $# \< 2 ]
then
echo "$0 <certificate directory> <CT server public key> [<server-url>]"
exit 1
fi
CERT_DIR=$1
CT_KEY=$2
SERVER=${3:-"http://127.0.0.1:8124"}
echo $SERVER
. generate_certs.sh
if [ ! -e $CERT_DIR/ca-database ]
then
echo "Initialise CA"
ca_setup $CERT_DIR ca false
fi
# FIXME(benl): share with sslconnect_test.sh?
audit() {
cert_dir=$1
log_server=$2
sct=$3
set +e
../cpp/client/ct audit --ct_server="$SERVER" \
--ct_server_public_key=$CT_KEY \
--ssl_client_ct_data_in=$sct --logtostderr=true
retcode=$?
set -e
}
do_audit() {
ct_data=$1
T=`date +%s`
T=`expr $T + 90`
while true
do
audit $CERT_DIR ca $ct_data
if [ $retcode -eq 0 ]; then
echo "PASS"
let PASSED=$PASSED+1
break
else
if [ `date +%s` \> $T ]
then
echo "FAIL"
let FAILED=$FAILED+1
break
fi
fi
sleep 1
done
}
get_sth() {
local file=$1
../cpp/client/ct sth --ct_server="$SERVER" \
--ct_server_public_key=$CT_KEY --logtostderr=true \
--ct_server_response_out=$file
}
consistency() {
local file1=$1
local file2=$2
../cpp/client/ct consistency --ct_server="$SERVER" \
--ct_server_public_key=$CT_KEY --logtostderr=true \
--sth1=$file1 --sth2=$file2
}
get_entries() {
local first=$1
local last=$2
../cpp/client/ct get_entries --ct_server="$SERVER" \
--ct_server_public_key=$CT_KEY --logtostderr=true \
--get_first=$first --get_last=$last --certificate_base=$CERT_DIR/cert.
}
get_sth $CERT_DIR/sth1
make_cert $CERT_DIR test ca $SERVER false $CT_KEY
make_embedded_cert $CERT_DIR test-embedded ca $SERVER true false $CT_KEY
# Do the audits together, quicker that way.
# test-*-cert.ctdata is made by make_cert.
do_audit $CERT_DIR/test-cert.ctdata
do_audit $CERT_DIR/test-embedded-cert.ctdata
get_sth $CERT_DIR/sth2
consistency $CERT_DIR/sth1 $CERT_DIR/sth2
get_entries 0 2
echo $PASSED passed
echo $FAILED failed
|