summaryrefslogtreecommitdiffstats
path: root/test/testtsa
diff options
context:
space:
mode:
authorUlf Möller <ulf@openssl.org>2006-02-12 23:19:25 +0000
committerUlf Möller <ulf@openssl.org>2006-02-12 23:19:25 +0000
commit8573552e8c3eed250dfc2031dd794500f343ac94 (patch)
tree6720736b321526101dfef38620c540cdc2d0d3d4 /test/testtsa
parentc7235be6e36c4bef84594aa3b2f0561db84b63d8 (diff)
time stamp Makefile, test files
Submitted by: Zoltan Glozik <zglozik@opentsa.org>
Diffstat (limited to 'test/testtsa')
-rw-r--r--test/testtsa234
1 files changed, 234 insertions, 0 deletions
diff --git a/test/testtsa b/test/testtsa
new file mode 100644
index 0000000000..b135438b7d
--- /dev/null
+++ b/test/testtsa
@@ -0,0 +1,234 @@
+#!/bin/sh
+
+#
+# A few very basic tests for the 'ts' time stamping authority command.
+#
+
+SH="/bin/sh"
+PATH=../../apps:$PATH
+export SH PATH
+
+OPENSSL_CONF="../CAtsa.cnf"
+export OPENSSL_CONF
+
+error () {
+
+ echo "ERROR DURING TSA TESTS!!!!!!!!!!!!!!!!" >&2
+ exit 1
+}
+
+setup_dir () {
+
+ rm -rf tsa 2>/dev/null
+ mkdir tsa
+ cd ./tsa
+}
+
+clean_up_dir () {
+
+ cd ..
+ rm -rf tsa
+}
+
+create_ca () {
+
+ echo "Creating a new CA for the TSA tests..."
+ /bin/rm -fr demoCA
+ $SH ../../apps/CA.sh -newca <<EOF
+
+HU
+Budapest
+Budapest
+Gov-CA Ltd.
+ca1
+EOF
+ test $? != 0 && error
+}
+
+create_tsa_cert () {
+
+ INDEX=$1
+ EXT=$2
+ openssl req -new -out tsa_req${INDEX}.pem -keyout tsa_key${INDEX}.pem <<EOF
+HU
+Budapest
+Buda
+Hun-TSA Ltd.
+tsa${INDEX}
+EOF
+ test $? != 0 && error
+
+ openssl ca -in tsa_req${INDEX}.pem -out tsa_cert${INDEX}.pem \
+ -extensions $EXT <<EOF
+y
+y
+EOF
+ test $? != 0 && error
+}
+
+print_request () {
+
+ openssl ts -query -in $1 -text
+}
+
+create_time_stamp_request1 () {
+
+ openssl ts -query -data ../testtsa -policy tsa_policy1 -cert -out req1.tsq
+ test $? != 0 && error
+}
+
+create_time_stamp_request2 () {
+
+ openssl ts -query -data ../testtsa -policy tsa_policy2 -no_nonce \
+ -out req2.tsq
+ test $? != 0 && error
+}
+
+create_time_stamp_request3 () {
+
+ openssl ts -query -data ../CAtsa.cnf -no_nonce -out req3.tsq
+ test $? != 0 && error
+}
+
+print_response () {
+
+ openssl ts -reply -in $1 -text
+ test $? != 0 && error
+}
+
+create_time_stamp_response () {
+
+ openssl ts -reply -section $3 -queryfile $1 -out $2
+ test $? != 0 && error
+}
+
+time_stamp_response_token_test () {
+
+ RESPONSE2=$2.copy.tsr
+ TOKEN_DER=$2.token.der
+ openssl ts -reply -in $2 -out $TOKEN_DER -token_out
+ test $? != 0 && error
+ openssl ts -reply -in $TOKEN_DER -token_in -out $RESPONSE2
+ test $? != 0 && error
+ cmp $RESPONSE2 $2
+ test $? != 0 && error
+ openssl ts -reply -in $2 -text -token_out
+ test $? != 0 && error
+ openssl ts -reply -in $TOKEN_DER -token_in -text -token_out
+ test $? != 0 && error
+ openssl ts -reply -queryfile $1 -text -token_out
+ test $? != 0 && error
+}
+
+verify_time_stamp_response () {
+
+ openssl ts -verify -queryfile $1 -in $2 -CAfile demoCA/cacert.pem \
+ -untrusted tsa_cert1.pem
+ test $? != 0 && error
+ openssl ts -verify -data $3 -in $2 -CAfile demoCA/cacert.pem \
+ -untrusted tsa_cert1.pem
+ test $? != 0 && error
+}
+
+verify_time_stamp_token () {
+
+ # create the token from the response first
+ openssl ts -reply -in $2 -out $2.token -token_out
+ test $? != 0 && error
+ openssl ts -verify -queryfile $1 -in $2.token -token_in \
+ -CAfile demoCA/cacert.pem -untrusted tsa_cert1.pem
+ test $? != 0 && error
+ openssl ts -verify -data $3 -in $2.token -token_in \
+ -CAfile demoCA/cacert.pem -untrusted tsa_cert1.pem
+ test $? != 0 && error
+}
+
+verify_time_stamp_response_fail () {
+
+ openssl ts -verify -queryfile $1 -in $2 -CAfile demoCA/cacert.pem \
+ -untrusted tsa_cert1.pem
+ # Checks if the verification failed, as it should have.
+ test $? == 0 && error
+}
+
+# main functions
+
+echo "Setting up TSA test directory..."
+setup_dir
+
+echo "Creating CA for TSA tests..."
+create_ca
+
+echo "Creating tsa_cert1.pem TSA server cert..."
+create_tsa_cert 1 tsa_cert
+
+echo "Creating tsa_cert2.pem non-TSA server cert..."
+create_tsa_cert 2 non_tsa_cert
+
+echo "Creating req1.req time stamp request for file testtsa..."
+create_time_stamp_request1
+
+echo "Printing req1.req..."
+print_request req1.tsq
+
+echo "Generating valid response for req1.req..."
+create_time_stamp_response req1.tsq resp1.tsr tsa_config1
+
+echo "Printing response..."
+print_response resp1.tsr
+
+echo "Verifying valid response..."
+verify_time_stamp_response req1.tsq resp1.tsr ../testtsa
+
+echo "Verifying valid token..."
+verify_time_stamp_token req1.tsq resp1.tsr ../testtsa
+
+# The tests below are commented out, because invalid signer certificates
+# can no longer be specified in the config file.
+
+# echo "Generating _invalid_ response for req1.req..."
+# create_time_stamp_response req1.tsq resp1_bad.tsr tsa_config2
+
+# echo "Printing response..."
+# print_response resp1_bad.tsr
+
+# echo "Verifying invalid response, it should fail..."
+# verify_time_stamp_response_fail req1.tsq resp1_bad.tsr
+
+echo "Creating req2.req time stamp request for file testtsa..."
+create_time_stamp_request2
+
+echo "Printing req2.req..."
+print_request req2.tsq
+
+echo "Generating valid response for req2.req..."
+create_time_stamp_response req2.tsq resp2.tsr tsa_config1
+
+echo "Checking '-token_in' and '-token_out' options with '-reply'..."
+time_stamp_response_token_test req2.tsq resp2.tsr
+
+echo "Printing response..."
+print_response resp2.tsr
+
+echo "Verifying valid response..."
+verify_time_stamp_response req2.tsq resp2.tsr ../testtsa
+
+echo "Verifying response against wrong request, it should fail..."
+verify_time_stamp_response_fail req1.tsq resp2.tsr
+
+echo "Verifying response against wrong request, it should fail..."
+verify_time_stamp_response_fail req2.tsq resp1.tsr
+
+echo "Creating req3.req time stamp request for file CAtsa.cnf..."
+create_time_stamp_request3
+
+echo "Printing req3.req..."
+print_request req3.tsq
+
+echo "Verifying response against wrong request, it should fail..."
+verify_time_stamp_response_fail req3.tsq resp1.tsr
+
+echo "Cleaning up..."
+clean_up_dir
+
+exit 0