Keep a cache of files that already have a recipe, in common.tmpl
[openssl.git] / test / Attic / testtsa
1 #!/bin/sh
2
3 #
4 # A few very basic tests for the 'ts' time stamping authority command.
5 #
6
7 SH="/bin/sh"
8 if test "$OSTYPE" = msdosdjgpp; then
9     PATH="../apps\;$PATH"
10 else
11     PATH="../apps:$PATH"
12 fi
13 export SH PATH
14
15 OPENSSL_CONF="../CAtsa.cnf"
16 export OPENSSL_CONF
17 # Because that's what ../apps/CA.pl really looks at
18 SSLEAY_CONFIG="-config $OPENSSL_CONF"
19 export SSLEAY_CONFIG
20
21 OPENSSL="`pwd`/../util/opensslwrap.sh"
22 export OPENSSL
23
24 RUN () {
25     ../../util/shlib_wrap.sh ../../apps/openssl ts $*
26 }
27
28 create_tsa_cert () {
29     INDEX=$1
30     export INDEX
31     EXT=$2
32     TSDNSECT=ts_cert_dn
33     export TSDNSECT
34
35     ../../util/shlib_wrap.sh ../../apps/openssl req -new \
36         -out tsa_req${INDEX}.pem -keyout tsa_key${INDEX}.pem || exit 1
37     echo using extension $EXT
38     ../../util/shlib_wrap.sh ../../apps/openssl x509 -req \
39         -in tsa_req${INDEX}.pem -out tsa_cert${INDEX}.pem \
40         -CA tsaca.pem -CAkey tsacakey.pem -CAcreateserial \
41         -extfile $OPENSSL_CONF -extensions $EXT || exit 1
42 }
43
44 create_time_stamp_response () {
45     RUN -reply -section $3 -queryfile $1 -out $2 || exit 1
46 }
47
48 verify_time_stamp_response () {
49     RUN -verify -queryfile $1 -in $2 -CAfile tsaca.pem \
50         -untrusted tsa_cert1.pem || exit 1
51     RUN -verify -data $3 -in $2 -CAfile tsaca.pem \
52         -untrusted tsa_cert1.pem || exit 1
53 }
54
55 verify_time_stamp_response_fail () {
56     RUN -verify -queryfile $1 -in $2 -CAfile tsaca.pem \
57         -untrusted tsa_cert1.pem && exit 1
58     echo ok
59 }
60
61 # main functions
62
63 echo setting up TSA test directory
64 rm -rf tsa 2>/dev/null
65 mkdir tsa
66 cd ./tsa
67
68 echo creating a new CA for the TSA tests
69 TSDNSECT=ts_ca_dn
70 export TSDNSECT
71 ../../util/shlib_wrap.sh ../../apps/openssl req -new -x509 -nodes \
72         -out tsaca.pem -keyout tsacakey.pem || exit 1
73
74 echo creating tsa_cert1.pem TSA server cert
75 create_tsa_cert 1 tsa_cert
76
77 echo creating tsa_cert2.pem non-TSA server cert
78 create_tsa_cert 2 non_tsa_cert
79
80 echo creating req1.req time stamp request for file testtsa
81 RUN -query -data ../testtsa -policy tsa_policy1 -cert -out req1.tsq || exit 1
82
83 echo printing req1.req
84 RUN -query -in req1.tsq -text
85
86 echo generating valid response for req1.req
87 create_time_stamp_response req1.tsq resp1.tsr tsa_config1
88
89 echo printing response
90 RUN -reply -in resp1.tsr -text || exit 1
91
92 echo verifying valid response
93 verify_time_stamp_response req1.tsq resp1.tsr ../testtsa
94
95 echo verifying valid token
96 RUN -reply -in resp1.tsr -out resp1.tsr.token -token_out || exit 1
97 RUN -verify -queryfile req1.tsq -in resp1.tsr.token -token_in \
98     -CAfile tsaca.pem -untrusted tsa_cert1.pem || exit 1
99 RUN -verify -data ../testtsa -in resp1.tsr.token -token_in \
100     -CAfile tsaca.pem -untrusted tsa_cert1.pem || exit 1
101
102 echo creating req2.req time stamp request for file testtsa
103 RUN -query -data ../testtsa -policy tsa_policy2 -no_nonce \
104     -out req2.tsq || exit 1
105
106 echo printing req2.req
107 RUN -query -in req2.tsq -text
108
109 echo generating valid response for req2.req
110 create_time_stamp_response req2.tsq resp2.tsr tsa_config1
111
112 echo checking -token_in and -token_out options with -reply
113 RESPONSE2=resp2.tsr.copy.tsr
114 TOKEN_DER=resp2.tsr.token.der
115 RUN -reply -in resp2.tsr -out $TOKEN_DER -token_out || exit 1
116 RUN -reply -in $TOKEN_DER -token_in -out $RESPONSE2 || exit 1
117 cmp $RESPONSE2 resp2.tsr || exit 1
118 RUN -reply -in resp2.tsr -text -token_out || exit 1
119 RUN -reply -in $TOKEN_DER -token_in -text -token_out || exit 1
120 RUN -reply -queryfile req2.tsq -text -token_out || exit 1
121
122 echo printing response
123 RUN -reply -in resp2.tsr -text || exit 1
124
125 echo verifying valid response
126 verify_time_stamp_response req2.tsq resp2.tsr ../testtsa
127
128 echo verifying response against wrong request, it should fail
129 verify_time_stamp_response_fail req1.tsq resp2.tsr
130
131 echo verifying response against wrong request, it should fail
132 verify_time_stamp_response_fail req2.tsq resp1.tsr
133
134 echo creating req3.req time stamp request for file CAtsa.cnf
135 RUN -query -data ../CAtsa.cnf -no_nonce -out req3.tsq || exit 1
136
137 echo printing req3.req
138 RUN -query -in req3.tsq -text
139
140 echo verifying response against wrong request, it should fail
141 verify_time_stamp_response_fail req3.tsq resp1.tsr
142
143 echo cleaning up
144 cd ..
145 rm -rf tsa
146
147 exit 0