123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- #!/bin/sh
- #
- # A few very basic tests for the 'ts' time stamping authority command.
- #
- SH="/bin/sh"
- if test "$OSTYPE" = msdosdjgpp; then
- PATH="../apps\;$PATH"
- else
- PATH="../apps:$PATH"
- fi
- export SH PATH
- OPENSSL_CONF="../CAtsa.cnf"
- export OPENSSL_CONF
- # Because that's what ../apps/CA.sh really looks at
- SSLEAY_CONFIG="-config $OPENSSL_CONF"
- export SSLEAY_CONFIG
- OPENSSL="`pwd`/../util/opensslwrap.sh"
- export OPENSSL
- error () {
- echo "TSA test failed!" >&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..."
- TSDNSECT=ts_ca_dn
- export TSDNSECT
- ../../util/shlib_wrap.sh ../../apps/openssl req -new -x509 -nodes \
- -out tsaca.pem -keyout tsacakey.pem
- test $? != 0 && error
- }
- create_tsa_cert () {
- INDEX=$1
- export INDEX
- EXT=$2
- TSDNSECT=ts_cert_dn
- export TSDNSECT
- ../../util/shlib_wrap.sh ../../apps/openssl req -new \
- -out tsa_req${INDEX}.pem -keyout tsa_key${INDEX}.pem
- test $? != 0 && error
- echo Using extension $EXT
- ../../util/shlib_wrap.sh ../../apps/openssl x509 -req \
- -in tsa_req${INDEX}.pem -out tsa_cert${INDEX}.pem \
- -CA tsaca.pem -CAkey tsacakey.pem -CAcreateserial \
- -extfile $OPENSSL_CONF -extensions $EXT
- test $? != 0 && error
- }
- print_request () {
- ../../util/shlib_wrap.sh ../../apps/openssl ts -query -in $1 -text
- }
- create_time_stamp_request1 () {
- ../../util/shlib_wrap.sh ../../apps/openssl ts -query -data ../testtsa -policy tsa_policy1 -cert -out req1.tsq
- test $? != 0 && error
- }
- create_time_stamp_request2 () {
- ../../util/shlib_wrap.sh ../../apps/openssl ts -query -data ../testtsa -policy tsa_policy2 -no_nonce \
- -out req2.tsq
- test $? != 0 && error
- }
- create_time_stamp_request3 () {
- ../../util/shlib_wrap.sh ../../apps/openssl ts -query -data ../CAtsa.cnf -no_nonce -out req3.tsq
- test $? != 0 && error
- }
- print_response () {
- ../../util/shlib_wrap.sh ../../apps/openssl ts -reply -in $1 -text
- test $? != 0 && error
- }
- create_time_stamp_response () {
- ../../util/shlib_wrap.sh ../../apps/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
- ../../util/shlib_wrap.sh ../../apps/openssl ts -reply -in $2 -out $TOKEN_DER -token_out
- test $? != 0 && error
- ../../util/shlib_wrap.sh ../../apps/openssl ts -reply -in $TOKEN_DER -token_in -out $RESPONSE2
- test $? != 0 && error
- cmp $RESPONSE2 $2
- test $? != 0 && error
- ../../util/shlib_wrap.sh ../../apps/openssl ts -reply -in $2 -text -token_out
- test $? != 0 && error
- ../../util/shlib_wrap.sh ../../apps/openssl ts -reply -in $TOKEN_DER -token_in -text -token_out
- test $? != 0 && error
- ../../util/shlib_wrap.sh ../../apps/openssl ts -reply -queryfile $1 -text -token_out
- test $? != 0 && error
- }
- verify_time_stamp_response () {
- ../../util/shlib_wrap.sh ../../apps/openssl ts -verify -queryfile $1 -in $2 -CAfile tsaca.pem \
- -untrusted tsa_cert1.pem
- test $? != 0 && error
- ../../util/shlib_wrap.sh ../../apps/openssl ts -verify -data $3 -in $2 -CAfile tsaca.pem \
- -untrusted tsa_cert1.pem
- test $? != 0 && error
- }
- verify_time_stamp_token () {
- # create the token from the response first
- ../../util/shlib_wrap.sh ../../apps/openssl ts -reply -in $2 -out $2.token -token_out
- test $? != 0 && error
- ../../util/shlib_wrap.sh ../../apps/openssl ts -verify -queryfile $1 -in $2.token -token_in \
- -CAfile tsaca.pem -untrusted tsa_cert1.pem
- test $? != 0 && error
- ../../util/shlib_wrap.sh ../../apps/openssl ts -verify -data $3 -in $2.token -token_in \
- -CAfile tsaca.pem -untrusted tsa_cert1.pem
- test $? != 0 && error
- }
- verify_time_stamp_response_fail () {
- ../../util/shlib_wrap.sh ../../apps/openssl ts -verify -queryfile $1 -in $2 -CAfile tsaca.pem \
- -untrusted tsa_cert1.pem
- # Checks if the verification failed, as it should have.
- test $? = 0 && error
- echo Ok
- }
- # 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
|