1$! TESTS.COM  --  Performs the necessary tests
2$!
3$! P1	tests to be performed.  Empty means all.
4$! P2	Pointer size: "", "32", or "64".
5$!
6$! Announce/identify.
7$!
8$	proc = f$environment( "procedure")
9$	write sys$output "@@@ "+ -
10	 f$parse( proc, , , "name")+ f$parse( proc, , , "type")
11$!
12$	__proc = f$element(0,";",f$environment("procedure"))
13$	__here = f$parse(f$parse("A.;",__proc) - "A.;","[]A.;") - "A.;"
14$	__save_default = f$environment("default")
15$	__arch = "VAX"
16$	if f$getsyi("cpu") .ge. 128 then -
17	   __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
18$	if __arch .eqs. "" then __arch = "UNK"
19$!
20$	__archd = __arch
21$       pointer_size = ""
22$	if (p2 .eq. "64")
23$	then
24$	  pointer_size = "64"
25$	  __archd = __arch+ "_64"
26$	endif
27$!
28$	texe_dir := sys$disk:[-.'__archd'.exe.test]
29$	exe_dir := sys$disk:[-.'__archd'.exe.apps]
30$
31$	set default '__here'
32$
33$       ROOT = F$PARSE("sys$disk:[-]A.;0",,,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0"
34$       ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY")
35$       ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
36                   - ".][000000" - "[000000." - "][" - "[" - "]"
37$       ROOT = ROOT_DEV + "[" + ROOT_DIR
38$       DEFINE/NOLOG SSLROOT 'ROOT'.APPS.] /TRANS=CONC
39$	openssl_conf := sslroot:[000000]openssl-vms.cnf
40$
41$	on control_y then goto exit
42$	on error then goto exit
43$
44$	if p1 .nes. ""
45$	then
46$	    tests = p1
47$	else
48$! NOTE: This list reflects the list of dependencies following the
49$! "alltests" target in Makefile.  This should make it easy to see
50$! if there's a difference that needs to be taken care of.
51$	    tests := -
52	test_des,test_idea,test_sha,test_md4,test_md5,test_hmac,-
53	test_md2,test_mdc2,test_wp,-
54	test_rmd,test_rc2,test_rc4,test_rc5,test_bf,test_cast,test_aes,-
55	test_rand,test_bn,test_ec,test_ecdsa,test_ecdh,-
56	test_enc,test_x509,test_rsa,test_crl,test_sid,-
57	test_gen,test_req,test_pkcs7,test_verify,test_dh,test_dsa,-
58	test_ss,test_ca,test_engine,test_evp,test_ssl,test_tsa,test_ige,-
59	test_jpake,test_srp,test_cms,test_heartbeat,test_constant_time
60$	endif
61$	tests = f$edit(tests,"COLLAPSE")
62$
63$	BNTEST :=	bntest
64$	ECTEST :=	ectest
65$	ECDSATEST :=	ecdsatest
66$	ECDHTEST :=	ecdhtest
67$	EXPTEST :=	exptest
68$	IDEATEST :=	ideatest
69$	SHATEST :=	shatest
70$	SHA1TEST :=	sha1test
71$	SHA256TEST :=	sha256t
72$	SHA512TEST :=	sha512t
73$	MDC2TEST :=	mdc2test
74$	RMDTEST :=	rmdtest
75$	MD2TEST :=	md2test
76$	MD4TEST :=	md4test
77$	MD5TEST :=	md5test
78$	HMACTEST :=	hmactest
79$	WPTEST :=	wp_test
80$	RC2TEST :=	rc2test
81$	RC4TEST :=	rc4test
82$	RC5TEST :=	rc5test
83$	BFTEST :=	bftest
84$	CASTTEST :=	casttest
85$	DESTEST :=	destest
86$	RANDTEST :=	randtest
87$	DHTEST :=	dhtest
88$	DSATEST :=	dsatest
89$	METHTEST :=	methtest
90$	SSLTEST :=	ssltest
91$	RSATEST :=	rsa_test
92$	ENGINETEST :=	enginetest
93$	EVPTEST :=	evp_test
94$	IGETEST :=	igetest
95$	JPAKETEST :=	jpaketest
96$	SRPTEST :=	srptest
97$	ASN1TEST :=	asn1test
98$	HEARTBEATTEST := heartbeat_test
99$	CONSTTIMETEST := constant_time_test
100$!
101$	tests_i = 0
102$ loop_tests:
103$	tests_e = f$element(tests_i,",",tests)
104$	tests_i = tests_i + 1
105$	if tests_e .eqs. "," then goto exit
106$	write sys$output "---> ''tests_e'"
107$	gosub 'tests_e'
108$	goto loop_tests
109$
110$ test_evp:
111$	mcr 'texe_dir''evptest' 'ROOT'.CRYPTO.EVP]evptests.txt
112$	return
113$ test_des:
114$	mcr 'texe_dir''destest'
115$	return
116$ test_idea:
117$	mcr 'texe_dir''ideatest'
118$	return
119$ test_sha:
120$	mcr 'texe_dir''shatest'
121$	mcr 'texe_dir''sha1test'
122$	mcr 'texe_dir''sha256test'
123$	mcr 'texe_dir''sha512test'
124$	return
125$ test_mdc2:
126$	mcr 'texe_dir''mdc2test'
127$	return
128$ test_md5:
129$	mcr 'texe_dir''md5test'
130$	return
131$ test_md4:
132$	mcr 'texe_dir''md4test'
133$	return
134$ test_hmac:
135$	mcr 'texe_dir''hmactest'
136$	return
137$ test_wp:
138$	mcr 'texe_dir''wptest'
139$	return
140$ test_md2:
141$	mcr 'texe_dir''md2test'
142$	return
143$ test_rmd:
144$	mcr 'texe_dir''rmdtest'
145$	return
146$ test_bf:
147$	mcr 'texe_dir''bftest'
148$	return
149$ test_cast:
150$	mcr 'texe_dir''casttest'
151$	return
152$ test_rc2:
153$	mcr 'texe_dir''rc2test'
154$	return
155$ test_rc4:
156$	mcr 'texe_dir''rc4test'
157$	return
158$ test_rc5:
159$	mcr 'texe_dir''rc5test'
160$	return
161$ test_rand:
162$	mcr 'texe_dir''randtest'
163$	return
164$ test_enc:
165$	@testenc.com 'pointer_size'
166$	return
167$ test_x509:
168$	set noon
169$	define sys$error test_x509.err
170$	write sys$output "test normal x509v1 certificate"
171$	@tx509.com "" 'pointer_size'
172$	write sys$output "test first x509v3 certificate"
173$	@tx509.com v3-cert1.pem 'pointer_size'
174$	write sys$output "test second x509v3 certificate"
175$	@tx509.com v3-cert2.pem 'pointer_size'
176$	deassign sys$error
177$	set on
178$	return
179$ test_rsa:
180$	set noon
181$	define sys$error test_rsa.err
182$	@trsa.com "" 'pointer_size'
183$	deassign sys$error
184$	mcr 'texe_dir''rsatest'
185$	set on
186$	return
187$ test_crl:
188$	set noon
189$	define sys$error test_crl.err
190$	@tcrl.com "" 'pointer_size'
191$	deassign sys$error
192$	set on
193$	return
194$ test_sid:
195$	set noon
196$	define sys$error test_sid.err
197$	@tsid.com "" 'pointer_size'
198$	deassign sys$error
199$	set on
200$	return
201$ test_req:
202$	set noon
203$	define sys$error test_req.err
204$	@treq.com "" 'pointer_size'
205$	@treq.com testreq2.pem 'pointer_size'
206$	deassign sys$error
207$	set on
208$	return
209$ test_pkcs7:
210$	set noon
211$	define sys$error test_pkcs7.err
212$	@tpkcs7.com "" 'pointer_size'
213$	@tpkcs7d.com "" 'pointer_size'
214$	deassign sys$error
215$	set on
216$	return
217$ test_bn:
218$	write sys$output -
219	      "starting big number library test, could take a while..."
220$	set noon
221$	define sys$error test_bn.err
222$	define sys$output test_bn.out
223$	@ bctest.com
224$	status = $status
225$	deassign sys$error
226$	deassign sys$output
227$	set on
228$	if (status)
229$	then
230$	    create /fdl = sys$input bntest-vms.tmp
231FILE
232	ORGANIZATION	sequential
233RECORD
234	FORMAT		stream_lf
235$	    define /user_mode sys$output bntest-vms.tmp
236$	    mcr 'texe_dir''bntest'
237$	    define /user_mode sys$input bntest-vms.tmp
238$	    define /user_mode sys$output bntest-vms.out
239$	    bc
240$	    @ bntest.com bntest-vms.out
241$	    status = $status
242$	    if (status)
243$	    then
244$		delete bntest-vms.out;*
245$		delete bntest-vms.tmp;*
246$	    endif
247$	else
248$	    create /fdl = sys$input bntest-vms.sh
249FILE
250	ORGANIZATION	sequential
251RECORD
252	FORMAT		stream_lf
253$	    open /append bntest_file bntest-vms.sh
254$	    type /output = bntest_file sys$input:
255<< __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"'
256$	    define /user_mode sys$output bntest-vms.tmp
257$	    mcr 'texe_dir''bntest'
258$	    copy bntest-vms.tmp bntest_file
259$	    delete bntest-vms.tmp;*
260$	    type /output = bntest_file sys$input:
261__FOO__
262$	    close bntest_file
263$	    write sys$output "-- copy the [.test]bntest-vms.sh and [.test]bctest files to a Unix system and"
264$	    write sys$output "-- run bntest-vms.sh through sh or bash to verify that the bignum operations"
265$	    write sys$output "-- went well."
266$	    write sys$output ""
267$	endif
268$	write sys$output "test a^b%c implementations"
269$	mcr 'texe_dir''exptest'
270$	return
271$ test_ec:
272$	write sys$output "test elliptic curves"
273$	mcr 'texe_dir''ectest'
274$	return
275$ test_ecdsa:
276$	write sys$output "test ecdsa"
277$	mcr 'texe_dir''ecdsatest'
278$	return
279$ test_ecdh:
280$	write sys$output "test ecdh"
281$	mcr 'texe_dir''ecdhtest'
282$	return
283$ test_verify:
284$	write sys$output "The following command should have some OK's and some failures"
285$	write sys$output "There are definitly a few expired certificates"
286$	@tverify.com 'pointer_size'
287$	return
288$ test_dh:
289$	write sys$output "Generate a set of DH parameters"
290$	mcr 'texe_dir''dhtest'
291$	return
292$ test_dsa:
293$	write sys$output "Generate a set of DSA parameters"
294$	mcr 'texe_dir''dsatest'
295$	return
296$ test_gen:
297$	write sys$output "Generate and verify a certificate request"
298$	@testgen.com 'pointer_size'
299$	return
300$ maybe_test_ss:
301$	testss_RDT = f$cvtime(f$file_attributes("testss.com","RDT"))
302$	if f$cvtime(f$file_attributes("keyU.ss","RDT")) .les. testss_RDT then -
303		goto test_ss
304$	if f$cvtime(f$file_attributes("certU.ss","RDT")) .les. testss_RDT then -
305		goto test_ss
306$	if f$cvtime(f$file_attributes("certCA.ss","RDT")) .les. testss_RDT then -
307		goto test_ss
308$	return
309$ test_ss:
310$	write sys$output "Generate and certify a test certificate"
311$	@testss.com 'pointer_size'
312$	return
313$ test_engine:
314$	write sys$output "Manipulate the ENGINE structures"
315$	mcr 'texe_dir''enginetest'
316$	return
317$ test_ssl:
318$	write sys$output "test SSL protocol"
319$	gosub maybe_test_ss
320$	@testssl.com keyU.ss certU.ss certCA.ss 'pointer_size'
321$	return
322$ test_ca:
323$	set noon
324$	define /user_mode sys$output test_ca.out
325$	mcr 'exe_dir'openssl no-rsa
326$	save_severity=$SEVERITY
327$	set on
328$	if save_severity
329$	then
330$	    write sys$output "skipping CA.com test -- requires RSA"
331$	else
332$	    write sys$output "Generate and certify a test certificate via the 'ca' program"
333$	    @testca.com 'pointer_size'
334$	endif
335$	return
336$ test_aes:
337$!	write sys$output "test AES"
338$!	!mcr 'texe_dir''aestest'
339$	return
340$ test_tsa:
341$	set noon
342$	define /user_mode sys$output nla0:
343$	mcr 'exe_dir'openssl no-rsa
344$	save_severity=$SEVERITY
345$	set on
346$	if save_severity
347$	then
348$	    write sys$output "skipping testtsa.com test -- requires RSA"
349$	else
350$	    @testtsa.com "" "" "" 'pointer_size'
351$	endif
352$	return
353$ test_ige:
354$	write sys$output "Test IGE mode"
355$	mcr 'texe_dir''igetest'
356$	return
357$ test_jpake:
358$	write sys$output "Test JPAKE"
359$	mcr 'texe_dir''jpaketest'
360$	return
361$ test_cms:
362$	write sys$output "CMS consistency test"
363$	! Define the logical name used to find openssl.exe in the perl script.
364$	define /user_mode osslx 'exe_dir'
365$	perl CMS-TEST.PL
366$	return
367$ test_srp:
368$	write sys$output "Test SRP"
369$	mcr 'texe_dir''srptest'
370$	return
371$ test_heartbeat:
372$       write sys$output "Test HEARTBEAT"
373$       mcr 'texe_dir''heartbeattest'
374$       return
375$ test_constant_time:
376$       write sys$output "Test constant time utilities"
377$       mcr 'texe_dir''consttimetest'
378$       return
379$
380$
381$ exit:
382$	on error then goto exit2 ! In case openssl.exe didn't build.
383$	mcr 'exe_dir'openssl version -a
384$ exit2:
385$	set default '__save_default'
386$	deassign sslroot
387$	exit
388