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