1$! TESTS.COM  --  Performs the necessary tests
2$!
3$! P1	tests to be performed.  Empty means all.
4$
5$	__proc = f$element(0,";",f$environment("procedure"))
6$	__here = f$parse(f$parse("A.;",__proc) - "A.;","[]A.;") - "A.;"
7$	__save_default = f$environment("default")
8$	__arch := VAX
9$	if f$getsyi("cpu") .ge. 128 then __arch := AXP
10$	texe_dir := sys$disk:[-.'__arch'.exe.test]
11$	exe_dir := sys$disk:[-.'__arch'.exe.apps]
12$
13$	set default '__here'
14$	on control_y then goto exit
15$	on error then goto exit
16$
17$	if p1 .nes. ""
18$	then
19$	    tests = p1
20$	else
21$	    tests := -
22	test_des,test_idea,test_sha,test_md4,test_md5,test_hmac,-
23	test_md2,test_mdc2,-
24	test_rmd,test_rc2,test_rc4,test_rc5,test_bf,test_cast,test_rd,-
25	test_rand,test_bn,test_ec,test_ecdsa,test_ecdh,-
26	test_enc,test_x509,test_rsa,test_crl,test_sid,-
27	test_gen,test_req,test_pkcs7,test_verify,test_dh,test_dsa,-
28	test_ss,test_ca,test_engine,test_evp,test_ssl
29$	endif
30$	tests = f$edit(tests,"COLLAPSE")
31$
32$	BNTEST :=	bntest
33$	ECTEST :=	ectest
34$	ECDSATEST :=	ecdsatest
35$	ECDHTEST :=	ecdhtest
36$	EXPTEST :=	exptest
37$	IDEATEST :=	ideatest
38$	SHATEST :=	shatest
39$	SHA1TEST :=	sha1test
40$	MDC2TEST :=	mdc2test
41$	RMDTEST :=	rmdtest
42$	MD2TEST :=	md2test
43$	MD4TEST :=	md4test
44$	MD5TEST :=	md5test
45$	HMACTEST :=	hmactest
46$	RC2TEST :=	rc2test
47$	RC4TEST :=	rc4test
48$	RC5TEST :=	rc5test
49$	BFTEST :=	bftest
50$	CASTTEST :=	casttest
51$	DESTEST :=	destest
52$	RANDTEST :=	randtest
53$	DHTEST :=	dhtest
54$	DSATEST :=	dsatest
55$	METHTEST :=	methtest
56$	SSLTEST :=	ssltest
57$	RSATEST :=	rsa_test
58$	ENGINETEST :=	enginetest
59$	EVPTEST :=	evp_test
60$
61$	tests_i = 0
62$ loop_tests:
63$	tests_e = f$element(tests_i,",",tests)
64$	tests_i = tests_i + 1
65$	if tests_e .eqs. "," then goto exit
66$	gosub 'tests_e'
67$	goto loop_tests
68$
69$ test_evp:
70$	mcr 'texe_dir''evptest' evptests.txt
71$	return
72$ test_des:
73$	mcr 'texe_dir''destest'
74$	return
75$ test_idea:
76$	mcr 'texe_dir''ideatest'
77$	return
78$ test_sha:
79$	mcr 'texe_dir''shatest'
80$	mcr 'texe_dir''sha1test'
81$	return
82$ test_mdc2:
83$	mcr 'texe_dir''mdc2test'
84$	return
85$ test_md5:
86$	mcr 'texe_dir''md5test'
87$	return
88$ test_md4:
89$	mcr 'texe_dir''md4test'
90$	return
91$ test_hmac:
92$	mcr 'texe_dir''hmactest'
93$	return
94$ test_md2:
95$	mcr 'texe_dir''md2test'
96$	return
97$ test_rmd:
98$	mcr 'texe_dir''rmdtest'
99$	return
100$ test_bf:
101$	mcr 'texe_dir''bftest'
102$	return
103$ test_cast:
104$	mcr 'texe_dir''casttest'
105$	return
106$ test_rc2:
107$	mcr 'texe_dir''rc2test'
108$	return
109$ test_rc4:
110$	mcr 'texe_dir''rc4test'
111$	return
112$ test_rc5:
113$	mcr 'texe_dir''rc5test'
114$	return
115$ test_rand:
116$	mcr 'texe_dir''randtest'
117$	return
118$ test_enc:
119$	@testenc.com
120$	return
121$ test_x509:
122$	define sys$error nla0:
123$	write sys$output "test normal x509v1 certificate"
124$	@tx509.com
125$	write sys$output "test first x509v3 certificate"
126$	@tx509.com v3-cert1.pem
127$	write sys$output "test second x509v3 certificate"
128$	@tx509.com v3-cert2.pem
129$	deassign sys$error
130$	return
131$ test_rsa:
132$	define sys$error nla0:
133$	@trsa.com
134$	deassign sys$error
135$	mcr 'texe_dir''rsatest'
136$	return
137$ test_crl:
138$	define sys$error nla0:
139$	@tcrl.com
140$	deassign sys$error
141$	return
142$ test_sid:
143$	define sys$error nla0:
144$	@tsid.com
145$	deassign sys$error
146$	return
147$ test_req:
148$	define sys$error nla0:
149$	@treq.com
150$	@treq.com testreq2.pem
151$	deassign sys$error
152$	return
153$ test_pkcs7:
154$	define sys$error nla0:
155$	@tpkcs7.com
156$	@tpkcs7d.com
157$	deassign sys$error
158$	return
159$ test_bn:
160$	write sys$output "starting big number library test, could take a while..."
161$	create bntest-vms.fdl
162FILE
163	ORGANIZATION	sequential
164RECORD
165	FORMAT		stream_lf
166$	create/fdl=bntest-vms.fdl bntest-vms.sh
167$	open/append foo bntest-vms.sh
168$	type/output=foo: sys$input:
169<< __FOO__ sh -c "`sh ./bctest`" | perl -e '$i=0; while (<STDIN>) {if (/^test (.*)/) {print STDERR "\nverify $1";} elsif (!/^0$/) {die "\nFailed! bc: $_";} else {print STDERR "."; $i++;}} print STDERR "\n$i tests passed\n"'
170$	define/user sys$output bntest-vms.tmp
171$	mcr 'texe_dir''bntest'
172$	copy bntest-vms.tmp foo:
173$	delete bntest-vms.tmp;*
174$	type/output=foo: sys$input:
175__FOO__
176$	close foo
177$	write sys$output "-- copy the [.test]bntest-vms.sh and [.test]bctest files to a Unix system and"
178$	write sys$output "-- run bntest-vms.sh through sh or bash to verify that the bignum operations"
179$	write sys$output "-- went well."
180$	write sys$output ""
181$	write sys$output "test a^b%c implementations"
182$	mcr 'texe_dir''exptest'
183$	return
184$ test_ec:
185$	write sys$output "test elliptic curves"
186$	mcr 'texe_dir''ectest'
187$	return
188$ test_ecdsa:
189$	write sys$output "test ecdsa"
190$	mcr 'texe_dir''ecdsatest'
191$	return
192$ test_ecdh:
193$	write sys$output "test ecdh"
194$	mcr 'texe_dir''ecdhtest'
195$	return
196$ test_verify:
197$	write sys$output "The following command should have some OK's and some failures"
198$	write sys$output "There are definitly a few expired certificates"
199$	@tverify.com
200$	return
201$ test_dh:
202$	write sys$output "Generate a set of DH parameters"
203$	mcr 'texe_dir''dhtest'
204$	return
205$ test_dsa:
206$	write sys$output "Generate a set of DSA parameters"
207$	mcr 'texe_dir''dsatest'
208$	return
209$ test_gen:
210$	write sys$output "Generate and verify a certificate request"
211$	@testgen.com
212$	return
213$ maybe_test_ss:
214$	testss_RDT = f$cvtime(f$file_attributes("testss.com","RDT"))
215$	if f$cvtime(f$file_attributes("keyU.ss","RDT")) .les. testss_RDT then -
216		goto test_ss
217$	if f$cvtime(f$file_attributes("certU.ss","RDT")) .les. testss_RDT then -
218		goto test_ss
219$	if f$cvtime(f$file_attributes("certCA.ss","RDT")) .les. testss_RDT then -
220		goto test_ss
221$	return
222$ test_ss:
223$	write sys$output "Generate and certify a test certificate"
224$	@testss.com
225$	return
226$ test_engine: 
227$	write sys$output "Manipulate the ENGINE structures"
228$	mcr 'texe_dir''enginetest'
229$	return
230$ test_ssl:
231$	write sys$output "test SSL protocol"
232$	gosub maybe_test_ss
233$	@testssl.com keyU.ss certU.ss certCA.ss
234$	return
235$ test_ca:
236$	set noon
237$	define/user sys$output nla0:
238$	mcr 'exe_dir'openssl no-rsa
239$	save_severity=$SEVERITY
240$	set on
241$	if save_severity
242$	then
243$	    write sys$output "skipping CA.com test -- requires RSA"
244$	else
245$	    write sys$output "Generate and certify a test certificate via the 'ca' program"
246$	    @testca.com
247$	endif
248$	return
249$ test_rd: 
250$	write sys$output "test Rijndael"
251$	!mcr 'texe_dir''rdtest'
252$	return
253$
254$
255$ exit:
256$	set default '__save_default'
257$	exit
258