time stamp Makefile, test files
[openssl.git] / test / 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 PATH=../../apps:$PATH
9 export SH PATH
10
11 OPENSSL_CONF="../CAtsa.cnf"
12 export OPENSSL_CONF
13
14 error () {
15
16     echo "ERROR DURING TSA TESTS!!!!!!!!!!!!!!!!" >&2
17     exit 1
18 }
19
20 setup_dir () {
21
22     rm -rf tsa 2>/dev/null
23     mkdir tsa
24     cd ./tsa
25 }
26
27 clean_up_dir () {
28
29     cd ..
30     rm -rf tsa
31 }
32
33 create_ca () {
34
35     echo "Creating a new CA for the TSA tests..."
36     /bin/rm -fr demoCA
37     $SH ../../apps/CA.sh -newca <<EOF
38
39 HU
40 Budapest
41 Budapest
42 Gov-CA Ltd.
43 ca1
44 EOF
45     test $? != 0 && error
46 }
47
48 create_tsa_cert () {
49
50     INDEX=$1
51     EXT=$2
52     openssl req -new -out tsa_req${INDEX}.pem -keyout tsa_key${INDEX}.pem <<EOF
53 HU
54 Budapest
55 Buda
56 Hun-TSA Ltd.
57 tsa${INDEX}
58 EOF
59     test $? != 0 && error
60
61     openssl ca -in tsa_req${INDEX}.pem -out tsa_cert${INDEX}.pem \
62         -extensions $EXT <<EOF
63 y
64 y
65 EOF
66     test $? != 0 && error
67 }
68
69 print_request () {
70
71     openssl ts -query -in $1 -text
72 }
73
74 create_time_stamp_request1 () {
75
76     openssl ts -query -data ../testtsa -policy tsa_policy1 -cert -out req1.tsq
77     test $? != 0 && error
78 }
79
80 create_time_stamp_request2 () {
81
82     openssl ts -query -data ../testtsa -policy tsa_policy2 -no_nonce \
83         -out req2.tsq
84     test $? != 0 && error
85 }
86
87 create_time_stamp_request3 () {
88
89     openssl ts -query -data ../CAtsa.cnf -no_nonce -out req3.tsq
90     test $? != 0 && error
91 }
92
93 print_response () {
94
95     openssl ts -reply -in $1 -text
96     test $? != 0 && error
97 }
98
99 create_time_stamp_response () {
100
101     openssl ts -reply -section $3 -queryfile $1 -out $2
102     test $? != 0 && error
103 }
104
105 time_stamp_response_token_test () {
106
107     RESPONSE2=$2.copy.tsr
108     TOKEN_DER=$2.token.der
109     openssl ts -reply -in $2 -out $TOKEN_DER -token_out
110     test $? != 0 && error
111     openssl ts -reply -in $TOKEN_DER -token_in -out $RESPONSE2
112     test $? != 0 && error
113     cmp $RESPONSE2 $2
114     test $? != 0 && error
115     openssl ts -reply -in $2 -text -token_out
116     test $? != 0 && error
117     openssl ts -reply -in $TOKEN_DER -token_in -text -token_out
118     test $? != 0 && error
119     openssl ts -reply -queryfile $1 -text -token_out
120     test $? != 0 && error
121 }
122
123 verify_time_stamp_response () {
124
125     openssl ts -verify -queryfile $1 -in $2 -CAfile demoCA/cacert.pem \
126         -untrusted tsa_cert1.pem
127     test $? != 0 && error
128     openssl ts -verify -data $3 -in $2 -CAfile demoCA/cacert.pem \
129         -untrusted tsa_cert1.pem
130     test $? != 0 && error
131 }
132
133 verify_time_stamp_token () {
134
135     # create the token from the response first
136     openssl ts -reply -in $2 -out $2.token -token_out
137     test $? != 0 && error
138     openssl ts -verify -queryfile $1 -in $2.token -token_in \
139         -CAfile demoCA/cacert.pem -untrusted tsa_cert1.pem
140     test $? != 0 && error
141     openssl ts -verify -data $3 -in $2.token -token_in \
142         -CAfile demoCA/cacert.pem -untrusted tsa_cert1.pem
143     test $? != 0 && error
144 }
145
146 verify_time_stamp_response_fail () {
147
148     openssl ts -verify -queryfile $1 -in $2 -CAfile demoCA/cacert.pem \
149         -untrusted tsa_cert1.pem
150     # Checks if the verification failed, as it should have.
151     test $? == 0 && error
152 }
153
154 # main functions
155
156 echo "Setting up TSA test directory..."
157 setup_dir
158
159 echo "Creating CA for TSA tests..."
160 create_ca
161
162 echo "Creating tsa_cert1.pem TSA server cert..."
163 create_tsa_cert 1 tsa_cert
164
165 echo "Creating tsa_cert2.pem non-TSA server cert..."
166 create_tsa_cert 2 non_tsa_cert
167
168 echo "Creating req1.req time stamp request for file testtsa..."
169 create_time_stamp_request1
170
171 echo "Printing req1.req..."
172 print_request req1.tsq
173
174 echo "Generating valid response for req1.req..."
175 create_time_stamp_response req1.tsq resp1.tsr tsa_config1
176
177 echo "Printing response..."
178 print_response resp1.tsr
179
180 echo "Verifying valid response..."
181 verify_time_stamp_response req1.tsq resp1.tsr ../testtsa
182
183 echo "Verifying valid token..."
184 verify_time_stamp_token req1.tsq resp1.tsr ../testtsa
185
186 # The tests below are commented out, because invalid signer certificates
187 # can no longer be specified in the config file.
188
189 # echo "Generating _invalid_ response for req1.req..."
190 # create_time_stamp_response req1.tsq resp1_bad.tsr tsa_config2
191
192 # echo "Printing response..."
193 # print_response resp1_bad.tsr
194
195 # echo "Verifying invalid response, it should fail..."
196 # verify_time_stamp_response_fail req1.tsq resp1_bad.tsr
197
198 echo "Creating req2.req time stamp request for file testtsa..."
199 create_time_stamp_request2
200
201 echo "Printing req2.req..."
202 print_request req2.tsq
203
204 echo "Generating valid response for req2.req..."
205 create_time_stamp_response req2.tsq resp2.tsr tsa_config1
206
207 echo "Checking '-token_in' and '-token_out' options with '-reply'..."
208 time_stamp_response_token_test req2.tsq resp2.tsr
209
210 echo "Printing response..."
211 print_response resp2.tsr
212
213 echo "Verifying valid response..."
214 verify_time_stamp_response req2.tsq resp2.tsr ../testtsa
215
216 echo "Verifying response against wrong request, it should fail..."
217 verify_time_stamp_response_fail req1.tsq resp2.tsr
218
219 echo "Verifying response against wrong request, it should fail..."
220 verify_time_stamp_response_fail req2.tsq resp1.tsr
221
222 echo "Creating req3.req time stamp request for file CAtsa.cnf..."
223 create_time_stamp_request3
224
225 echo "Printing req3.req..."
226 print_request req3.tsq
227
228 echo "Verifying response against wrong request, it should fail..."
229 verify_time_stamp_response_fail req3.tsq resp1.tsr
230
231 echo "Cleaning up..."
232 clean_up_dir
233
234 exit 0