openssl/test/testtsa

197 lines
5.3 KiB
Plaintext
Raw Normal View History

#!/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.pl really looks at
SSLEAY_CONFIG="-config $OPENSSL_CONF"
export SSLEAY_CONFIG
2006-02-17 04:30:58 +08:00
OPENSSL="`pwd`/../util/opensslwrap.sh"
export OPENSSL
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 || exit 1
}
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 || exit 1
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 || exit 1
}
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 || exit 1
}
create_time_stamp_request2 () {
../../util/shlib_wrap.sh ../../apps/openssl ts -query -data ../testtsa -policy tsa_policy2 -no_nonce \
-out req2.tsq || exit 1
}
create_time_stamp_request3 () {
../../util/shlib_wrap.sh ../../apps/openssl ts -query -data ../CAtsa.cnf -no_nonce -out req3.tsq || exit 1
}
print_response () {
../../util/shlib_wrap.sh ../../apps/openssl ts -reply -in $1 -text || exit 1
}
create_time_stamp_response () {
../../util/shlib_wrap.sh ../../apps/openssl ts -reply -section $3 -queryfile $1 -out $2 || exit 1
}
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 || exit 1
../../util/shlib_wrap.sh ../../apps/openssl ts -reply -in $TOKEN_DER -token_in -out $RESPONSE2 || exit 1
cmp $RESPONSE2 $2 || exit 1
../../util/shlib_wrap.sh ../../apps/openssl ts -reply -in $2 -text -token_out || exit 1
../../util/shlib_wrap.sh ../../apps/openssl ts -reply -in $TOKEN_DER -token_in -text -token_out || exit 1
../../util/shlib_wrap.sh ../../apps/openssl ts -reply -queryfile $1 -text -token_out || exit 1
}
verify_time_stamp_response () {
../../util/shlib_wrap.sh ../../apps/openssl ts -verify -queryfile $1 -in $2 -CAfile tsaca.pem \
-untrusted tsa_cert1.pem || exit 1
../../util/shlib_wrap.sh ../../apps/openssl ts -verify -data $3 -in $2 -CAfile tsaca.pem \
-untrusted tsa_cert1.pem || exit 1
}
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 || exit 1
../../util/shlib_wrap.sh ../../apps/openssl ts -verify -queryfile $1 -in $2.token -token_in \
-CAfile tsaca.pem -untrusted tsa_cert1.pem || exit 1
../../util/shlib_wrap.sh ../../apps/openssl ts -verify -data $3 -in $2.token -token_in \
-CAfile tsaca.pem -untrusted tsa_cert1.pem || exit 1
}
verify_time_stamp_response_fail () {
../../util/shlib_wrap.sh ../../apps/openssl ts -verify -queryfile $1 -in $2 -CAfile tsaca.pem \
-untrusted tsa_cert1.pem && exit 1
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
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