2006-02-13 07:19:25 +08:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
#
|
|
|
|
# A few very basic tests for the 'ts' time stamping authority command.
|
|
|
|
#
|
|
|
|
|
|
|
|
SH="/bin/sh"
|
2007-12-03 17:02:29 +08:00
|
|
|
if test "$OSTYPE" = msdosdjgpp; then
|
|
|
|
PATH="../apps\;$PATH"
|
|
|
|
else
|
|
|
|
PATH="../apps:$PATH"
|
|
|
|
fi
|
2006-02-13 07:19:25 +08:00
|
|
|
export SH PATH
|
|
|
|
|
|
|
|
OPENSSL_CONF="../CAtsa.cnf"
|
|
|
|
export OPENSSL_CONF
|
2015-04-09 02:07:39 +08:00
|
|
|
# Because that's what ../apps/CA.pl really looks at
|
2006-03-30 12:29:38 +08:00
|
|
|
SSLEAY_CONFIG="-config $OPENSSL_CONF"
|
2006-03-28 18:26:12 +08:00
|
|
|
export SSLEAY_CONFIG
|
2006-02-13 07:19:25 +08:00
|
|
|
|
2006-02-17 04:30:58 +08:00
|
|
|
OPENSSL="`pwd`/../util/opensslwrap.sh"
|
2006-02-17 04:20:24 +08:00
|
|
|
export OPENSSL
|
|
|
|
|
2015-06-11 06:53:31 +08:00
|
|
|
RUN () {
|
|
|
|
../../util/shlib_wrap.sh ../../apps/openssl ts $*
|
2006-02-13 07:19:25 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
create_tsa_cert () {
|
|
|
|
INDEX=$1
|
2006-11-08 00:21:16 +08:00
|
|
|
export INDEX
|
2006-02-13 07:19:25 +08:00
|
|
|
EXT=$2
|
2006-11-08 00:21:16 +08:00
|
|
|
TSDNSECT=ts_cert_dn
|
2015-06-11 06:53:31 +08:00
|
|
|
export TSDNSECT
|
2006-02-13 07:19:25 +08:00
|
|
|
|
2006-11-08 00:21:16 +08:00
|
|
|
../../util/shlib_wrap.sh ../../apps/openssl req -new \
|
2015-04-10 22:06:17 +08:00
|
|
|
-out tsa_req${INDEX}.pem -keyout tsa_key${INDEX}.pem || exit 1
|
|
|
|
echo using extension $EXT
|
2006-11-08 00:21:16 +08:00
|
|
|
../../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 \
|
2015-04-10 22:06:17 +08:00
|
|
|
-extfile $OPENSSL_CONF -extensions $EXT || exit 1
|
2006-02-13 07:19:25 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
create_time_stamp_response () {
|
2015-06-11 06:53:31 +08:00
|
|
|
RUN -reply -section $3 -queryfile $1 -out $2 || exit 1
|
2006-02-13 07:19:25 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
verify_time_stamp_response () {
|
2015-06-11 06:53:31 +08:00
|
|
|
RUN -verify -queryfile $1 -in $2 -CAfile tsaca.pem \
|
2015-04-10 22:06:17 +08:00
|
|
|
-untrusted tsa_cert1.pem || exit 1
|
2015-06-11 06:53:31 +08:00
|
|
|
RUN -verify -data $3 -in $2 -CAfile tsaca.pem \
|
2015-04-10 22:06:17 +08:00
|
|
|
-untrusted tsa_cert1.pem || exit 1
|
2006-02-13 07:19:25 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
verify_time_stamp_response_fail () {
|
2015-06-11 06:53:31 +08:00
|
|
|
RUN -verify -queryfile $1 -in $2 -CAfile tsaca.pem \
|
2015-04-10 22:06:17 +08:00
|
|
|
-untrusted tsa_cert1.pem && exit 1
|
|
|
|
echo ok
|
2006-02-13 07:19:25 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
# main functions
|
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo setting up TSA test directory
|
2015-06-11 06:53:31 +08:00
|
|
|
rm -rf tsa 2>/dev/null
|
|
|
|
mkdir tsa
|
|
|
|
cd ./tsa
|
|
|
|
|
|
|
|
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
|
2006-02-13 07:19:25 +08:00
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo creating tsa_cert1.pem TSA server cert
|
2006-02-13 07:19:25 +08:00
|
|
|
create_tsa_cert 1 tsa_cert
|
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo creating tsa_cert2.pem non-TSA server cert
|
2006-02-13 07:19:25 +08:00
|
|
|
create_tsa_cert 2 non_tsa_cert
|
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo creating req1.req time stamp request for file testtsa
|
2015-06-11 06:53:31 +08:00
|
|
|
RUN -query -data ../testtsa -policy tsa_policy1 -cert -out req1.tsq || exit 1
|
2006-02-13 07:19:25 +08:00
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo printing req1.req
|
2015-06-11 06:53:31 +08:00
|
|
|
RUN -query -in req1.tsq -text
|
2006-02-13 07:19:25 +08:00
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo generating valid response for req1.req
|
2006-02-13 07:19:25 +08:00
|
|
|
create_time_stamp_response req1.tsq resp1.tsr tsa_config1
|
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo printing response
|
2015-06-11 06:53:31 +08:00
|
|
|
RUN -reply -in resp1.tsr -text || exit 1
|
2006-02-13 07:19:25 +08:00
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo verifying valid response
|
2006-02-13 07:19:25 +08:00
|
|
|
verify_time_stamp_response req1.tsq resp1.tsr ../testtsa
|
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo verifying valid token
|
2015-06-11 06:53:31 +08:00
|
|
|
RUN -reply -in resp1.tsr -out resp1.tsr.token -token_out || exit 1
|
|
|
|
RUN -verify -queryfile req1.tsq -in resp1.tsr.token -token_in \
|
|
|
|
-CAfile tsaca.pem -untrusted tsa_cert1.pem || exit 1
|
|
|
|
RUN -verify -data ../testtsa -in resp1.tsr.token -token_in \
|
|
|
|
-CAfile tsaca.pem -untrusted tsa_cert1.pem || exit 1
|
2006-02-13 07:19:25 +08:00
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo creating req2.req time stamp request for file testtsa
|
2015-06-11 06:53:31 +08:00
|
|
|
RUN -query -data ../testtsa -policy tsa_policy2 -no_nonce \
|
|
|
|
-out req2.tsq || exit 1
|
2006-02-13 07:19:25 +08:00
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo printing req2.req
|
2015-06-11 06:53:31 +08:00
|
|
|
RUN -query -in req2.tsq -text
|
2006-02-13 07:19:25 +08:00
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo generating valid response for req2.req
|
2006-02-13 07:19:25 +08:00
|
|
|
create_time_stamp_response req2.tsq resp2.tsr tsa_config1
|
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo checking -token_in and -token_out options with -reply
|
2015-06-11 06:53:31 +08:00
|
|
|
RESPONSE2=resp2.tsr.copy.tsr
|
|
|
|
TOKEN_DER=resp2.tsr.token.der
|
|
|
|
RUN -reply -in resp2.tsr -out $TOKEN_DER -token_out || exit 1
|
|
|
|
RUN -reply -in $TOKEN_DER -token_in -out $RESPONSE2 || exit 1
|
|
|
|
cmp $RESPONSE2 resp2.tsr || exit 1
|
|
|
|
RUN -reply -in resp2.tsr -text -token_out || exit 1
|
|
|
|
RUN -reply -in $TOKEN_DER -token_in -text -token_out || exit 1
|
|
|
|
RUN -reply -queryfile req2.tsq -text -token_out || exit 1
|
2006-02-13 07:19:25 +08:00
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo printing response
|
2015-06-11 06:53:31 +08:00
|
|
|
RUN -reply -in resp2.tsr -text || exit 1
|
2006-02-13 07:19:25 +08:00
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo verifying valid response
|
2006-02-13 07:19:25 +08:00
|
|
|
verify_time_stamp_response req2.tsq resp2.tsr ../testtsa
|
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo verifying response against wrong request, it should fail
|
2006-02-13 07:19:25 +08:00
|
|
|
verify_time_stamp_response_fail req1.tsq resp2.tsr
|
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo verifying response against wrong request, it should fail
|
2006-02-13 07:19:25 +08:00
|
|
|
verify_time_stamp_response_fail req2.tsq resp1.tsr
|
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo creating req3.req time stamp request for file CAtsa.cnf
|
2015-06-11 06:53:31 +08:00
|
|
|
RUN -query -data ../CAtsa.cnf -no_nonce -out req3.tsq || exit 1
|
2006-02-13 07:19:25 +08:00
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo printing req3.req
|
2015-06-11 06:53:31 +08:00
|
|
|
RUN -query -in req3.tsq -text
|
2006-02-13 07:19:25 +08:00
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo verifying response against wrong request, it should fail
|
2006-02-13 07:19:25 +08:00
|
|
|
verify_time_stamp_response_fail req3.tsq resp1.tsr
|
|
|
|
|
2015-04-10 22:06:17 +08:00
|
|
|
echo cleaning up
|
2015-06-11 06:53:31 +08:00
|
|
|
cd ..
|
|
|
|
rm -rf tsa
|
2006-02-13 07:19:25 +08:00
|
|
|
|
|
|
|
exit 0
|