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