tests.com 9.75 KB
Newer Older
$! TESTS.COM  --  Performs the necessary tests
$!
$! P1	tests to be performed.  Empty means all.
$! P2	Pointer size: "", "32", or "64".
$!
$! Announce/identify.
$!
$	proc = f$environment( "procedure")
$	write sys$output "@@@ "+ -
	 f$parse( proc, , , "name")+ f$parse( proc, , , "type")
$!
$	__proc = f$element(0,";",f$environment("procedure"))
$	__here = f$parse(f$parse("A.;",__proc) - "A.;","[]A.;") - "A.;"
$	__save_default = f$environment("default")
$	__arch = "VAX"
$	if f$getsyi("cpu") .ge. 128 then -
	   __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
$	if __arch .eqs. "" then __arch = "UNK"
$!
$	__archd = __arch
$       pointer_size = ""
$	if (p2 .eq. "64")
$	then
$	  pointer_size = "64"
$	  __archd = __arch+ "_64"
$	endif
$!
$	texe_dir := sys$disk:[-.'__archd'.exe.test]
$	exe_dir := sys$disk:[-.'__archd'.exe.apps]
$
$	set default '__here'
$
$       ROOT = F$PARSE("sys$disk:[-]A.;0",,,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0"
$       ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY")
$       ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
                   - ".][000000" - "[000000." - "][" - "[" - "]"
$       ROOT = ROOT_DEV + "[" + ROOT_DIR
$       DEFINE/NOLOG SSLROOT 'ROOT'.APPS.] /TRANS=CONC
$	openssl_conf := sslroot:[000000]openssl-vms.cnf
$
$	on control_y then goto exit
$	on error then goto exit
$
$	if p1 .nes. ""
$	then
$	    tests = p1
$	else
$! NOTE: This list reflects the list of dependencies following the
$! "alltests" target in Makefile.  This should make it easy to see
$! if there's a difference that needs to be taken care of.
$	    tests := -
	test_des,test_idea,test_sha,test_md4,test_md5,test_hmac,-
	test_md2,test_mdc2,test_wp,-
	test_rmd,test_rc2,test_rc4,test_rc5,test_bf,test_cast,test_aes,-
	test_rand,test_bn,test_ec,test_ecdsa,test_ecdh,-
	test_enc,test_x509,test_rsa,test_crl,test_sid,-
	test_gen,test_req,test_pkcs7,test_verify,test_dh,test_dsa,-
	test_ss,test_ca,test_engine,test_evp,test_ssl,test_tsa,test_ige,-
	test_jpake,test_srp,test_cms,test_heartbeat,test_constant_time
$	endif
$	tests = f$edit(tests,"COLLAPSE")
$
$	BNTEST :=	bntest
$	ECTEST :=	ectest
$	ECDSATEST :=	ecdsatest
$	ECDHTEST :=	ecdhtest
$	EXPTEST :=	exptest
$	IDEATEST :=	ideatest
$	SHATEST :=	shatest
$	SHA1TEST :=	sha1test
$	SHA256TEST :=	sha256t
$	SHA512TEST :=	sha512t
$	MDC2TEST :=	mdc2test
$	RMDTEST :=	rmdtest
$	MD2TEST :=	md2test
$	MD4TEST :=	md4test
$	MD5TEST :=	md5test
$	HMACTEST :=	hmactest
$	WPTEST :=	wp_test
$	RC2TEST :=	rc2test
$	RC4TEST :=	rc4test
$	RC5TEST :=	rc5test
$	BFTEST :=	bftest
$	CASTTEST :=	casttest
$	DESTEST :=	destest
$	RANDTEST :=	randtest
$	DHTEST :=	dhtest
$	DSATEST :=	dsatest
$	METHTEST :=	methtest
$	SSLTEST :=	ssltest
$	RSATEST :=	rsa_test
$	ENGINETEST :=	enginetest
$	EVPTEST :=	evp_test
$	IGETEST :=	igetest
$	JPAKETEST :=	jpaketest
$	SRPTEST :=	srptest
$	ASN1TEST :=	asn1test
$	HEARTBEATTEST := heartbeat_test
$	CONSTTIMETEST := constant_time_test
$!
$	tests_i = 0
$ loop_tests:
$	tests_e = f$element(tests_i,",",tests)
$	tests_i = tests_i + 1
$	if tests_e .eqs. "," then goto exit
$	write sys$output "---> ''tests_e'"
$	gosub 'tests_e'
$	goto loop_tests
$
$ test_evp:
$	mcr 'texe_dir''evptest' 'ROOT'.CRYPTO.EVP]evptests.txt
$	return
$ test_des:
$	mcr 'texe_dir''destest'
$	return
$ test_idea:
$	mcr 'texe_dir''ideatest'
$	return
$ test_sha:
$	mcr 'texe_dir''shatest'
$	mcr 'texe_dir''sha1test'
$	mcr 'texe_dir''sha256test'
$	mcr 'texe_dir''sha512test'
$	return
$ test_mdc2:
$	mcr 'texe_dir''mdc2test'
$	return
$ test_md5:
$	mcr 'texe_dir''md5test'
$	return
$ test_md4:
$	mcr 'texe_dir''md4test'
$	return
$ test_hmac:
$	mcr 'texe_dir''hmactest'
$	return
$ test_wp:
$	mcr 'texe_dir''wptest'
$	return
$ test_md2:
$	mcr 'texe_dir''md2test'
$	return
$ test_rmd:
$	mcr 'texe_dir''rmdtest'
$	return
$ test_bf:
$	mcr 'texe_dir''bftest'
$	return
$ test_cast:
$	mcr 'texe_dir''casttest'
$	return
$ test_rc2:
$	mcr 'texe_dir''rc2test'
$	return
$ test_rc4:
$	mcr 'texe_dir''rc4test'
$	return
$ test_rc5:
$	mcr 'texe_dir''rc5test'
$	return
$ test_rand:
$	mcr 'texe_dir''randtest'
$	return
$ test_enc:
$	@testenc.com 'pointer_size'
$	return
$ test_x509:
$	set noon
$	define sys$error test_x509.err
$	write sys$output "test normal x509v1 certificate"
$	@tx509.com "" 'pointer_size'
$	write sys$output "test first x509v3 certificate"
$	@tx509.com v3-cert1.pem 'pointer_size'
$	write sys$output "test second x509v3 certificate"
$	@tx509.com v3-cert2.pem 'pointer_size'
$	deassign sys$error
$	set on
$	return
$ test_rsa:
$	set noon
$	define sys$error test_rsa.err
$	@trsa.com "" 'pointer_size'
$	deassign sys$error
$	mcr 'texe_dir''rsatest'
$	set on
$	return
$ test_crl:
$	set noon
$	define sys$error test_crl.err
$	@tcrl.com "" 'pointer_size'
$	deassign sys$error
$	set on
$	return
$ test_sid:
$	set noon
$	define sys$error test_sid.err
$	@tsid.com "" 'pointer_size'
$	deassign sys$error
$	set on
$	return
$ test_req:
$	set noon
$	define sys$error test_req.err
$	@treq.com "" 'pointer_size'
$	@treq.com testreq2.pem 'pointer_size'
$	deassign sys$error
$	set on
$	return
$ test_pkcs7:
$	set noon
$	define sys$error test_pkcs7.err
$	@tpkcs7.com "" 'pointer_size'
$	@tpkcs7d.com "" 'pointer_size'
$	deassign sys$error
$	set on
$	return
$ test_bn:
$	write sys$output -
	      "starting big number library test, could take a while..."
$	set noon
$	define sys$error test_bn.err
$	define sys$output test_bn.out
$	@ bctest.com
$	status = $status
$	deassign sys$error
$	deassign sys$output
$	set on
$	if (status)
$	then
$	    create /fdl = sys$input bntest-vms.tmp
FILE
	ORGANIZATION	sequential
RECORD
	FORMAT		stream_lf
$	    define /user_mode sys$output bntest-vms.tmp
$	    mcr 'texe_dir''bntest'
$	    define /user_mode sys$input bntest-vms.tmp
$	    define /user_mode sys$output bntest-vms.out
$	    bc
$	    @ bntest.com bntest-vms.out
$	    status = $status
$	    if (status)
$	    then
$		delete bntest-vms.out;*
$		delete bntest-vms.tmp;*
$	    endif
$	else
$	    create /fdl = sys$input bntest-vms.sh
FILE
	ORGANIZATION	sequential
RECORD
	FORMAT		stream_lf
$	    open /append bntest_file bntest-vms.sh
$	    type /output = bntest_file sys$input:
<< __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"'
$	    define /user_mode sys$output bntest-vms.tmp
$	    mcr 'texe_dir''bntest'
$	    copy bntest-vms.tmp bntest_file
$	    delete bntest-vms.tmp;*
$	    type /output = bntest_file sys$input:
__FOO__
$	    close bntest_file
$	    write sys$output "-- copy the [.test]bntest-vms.sh and [.test]bctest files to a Unix system and"
$	    write sys$output "-- run bntest-vms.sh through sh or bash to verify that the bignum operations"
$	    write sys$output "-- went well."
$	    write sys$output ""
$	endif
$	write sys$output "test a^b%c implementations"
$	mcr 'texe_dir''exptest'
$	return
$ test_ec:
$	write sys$output "test elliptic curves"
$	mcr 'texe_dir''ectest'
$	return
$ test_ecdsa:
$	write sys$output "test ecdsa"
$	mcr 'texe_dir''ecdsatest'
$	return
$ test_ecdh:
$	write sys$output "test ecdh"
$	mcr 'texe_dir''ecdhtest'
$	return
$ test_verify:
$	write sys$output "The following command should have some OK's and some failures"
$	write sys$output "There are definitly a few expired certificates"
$	@tverify.com 'pointer_size'
$	return
$ test_dh:
$	write sys$output "Generate a set of DH parameters"
$	mcr 'texe_dir''dhtest'
$	return
$ test_dsa:
$	write sys$output "Generate a set of DSA parameters"
$	mcr 'texe_dir''dsatest'
$	return
$ test_gen:
$	write sys$output "Generate and verify a certificate request"
$	@testgen.com 'pointer_size'
$	return
$ maybe_test_ss:
$	testss_RDT = f$cvtime(f$file_attributes("testss.com","RDT"))
$	if f$cvtime(f$file_attributes("keyU.ss","RDT")) .les. testss_RDT then -
		goto test_ss
$	if f$cvtime(f$file_attributes("certU.ss","RDT")) .les. testss_RDT then -
		goto test_ss
$	if f$cvtime(f$file_attributes("certCA.ss","RDT")) .les. testss_RDT then -
		goto test_ss
$	return
$ test_ss:
$	write sys$output "Generate and certify a test certificate"
$	@testss.com 'pointer_size'
$	return
$ test_engine: 
$	write sys$output "Manipulate the ENGINE structures"
$	mcr 'texe_dir''enginetest'
$	return
$ test_ssl:
$	write sys$output "test SSL protocol"
$	gosub maybe_test_ss
$	@testssl.com keyU.ss certU.ss certCA.ss 'pointer_size'
$	return
$ test_ca:
$	set noon
$	define /user_mode sys$output test_ca.out
$	mcr 'exe_dir'openssl no-rsa
$	save_severity=$SEVERITY
$	set on
$	if save_severity
$	then
$	    write sys$output "skipping CA.com test -- requires RSA"
$	else
$	    write sys$output "Generate and certify a test certificate via the 'ca' program"
$	    @testca.com 'pointer_size'
$	endif
$	return
$ test_aes: 
$!	write sys$output "test AES"
$!	!mcr 'texe_dir''aestest'
$	return
$ test_tsa:
$	set noon
$	define /user_mode sys$output nla0:
$	mcr 'exe_dir'openssl no-rsa
$	save_severity=$SEVERITY
$	set on
$	if save_severity
$	then
$	    write sys$output "skipping testtsa.com test -- requires RSA"
$	else
$	    @testtsa.com "" "" "" 'pointer_size'
$	endif
$	return
$ test_ige: 
$	write sys$output "Test IGE mode"
$	mcr 'texe_dir''igetest'
$	return
$ test_jpake: 
$	write sys$output "Test JPAKE"
$	mcr 'texe_dir''jpaketest'
$	return
$ test_cms:
$	write sys$output "CMS consistency test"
$	! Define the logical name used to find openssl.exe in the perl script.
$	define /user_mode osslx 'exe_dir'
$	perl CMS-TEST.PL
$	return
$ test_srp: 
$	write sys$output "Test SRP"
$	mcr 'texe_dir''srptest'
$	return
$ test_heartbeat:
$       write sys$output "Test HEARTBEAT"
$       mcr 'texe_dir''heartbeattest'
$       return
$ test_constant_time:
$       write sys$output "Test constant time utilities"
$       mcr 'texe_dir''consttimetest'
$       return
$
$
$ exit:
$	on error then goto exit2 ! In case openssl.exe didn't build.
$	mcr 'exe_dir'openssl version -a
$ exit2: 
$	set default '__save_default'
$	deassign sslroot
$	exit