diff options
Diffstat (limited to 'openssl/VMS')
-rw-r--r-- | openssl/VMS/TODO | 18 | ||||
-rw-r--r-- | openssl/VMS/VMSify-conf.pl | 34 | ||||
-rw-r--r-- | openssl/VMS/WISHLIST.TXT | 4 | ||||
-rwxr-xr-x | openssl/VMS/install-vms.com | 67 | ||||
-rw-r--r-- | openssl/VMS/mkshared.com | 476 | ||||
-rw-r--r-- | openssl/VMS/multinet_shr.opt | 1 | ||||
-rwxr-xr-x | openssl/VMS/openssl_startup.com | 108 | ||||
-rwxr-xr-x | openssl/VMS/openssl_undo.com | 20 | ||||
-rw-r--r-- | openssl/VMS/openssl_utils.com | 46 | ||||
-rw-r--r-- | openssl/VMS/socketshr_shr.opt | 1 | ||||
-rw-r--r-- | openssl/VMS/tcpip_shr_decc.opt | 1 | ||||
-rw-r--r-- | openssl/VMS/test-includes.com | 28 | ||||
-rw-r--r-- | openssl/VMS/ucx_shr_decc.opt | 1 | ||||
-rw-r--r-- | openssl/VMS/ucx_shr_decc_log.opt | 1 | ||||
-rw-r--r-- | openssl/VMS/ucx_shr_vaxc.opt | 1 |
15 files changed, 807 insertions, 0 deletions
diff --git a/openssl/VMS/TODO b/openssl/VMS/TODO new file mode 100644 index 0000000..359e069 --- /dev/null +++ b/openssl/VMS/TODO @@ -0,0 +1,18 @@ +TODO: +===== + +There are a few things that need to be worked out in the VMS version of +OpenSSL, still: + +- Description files. ("Makefile's" :-)) +- Script code to link an already compiled build tree. +- A VMSINSTALlable version (way in the future, unless someone else hacks). +- shareable images (DLL for you Windows folks). + +There may be other things that I have missed and that may be desirable. +Please send mail to <openssl-users@openssl.org> or to me directly if you +have any ideas. + +-- +Richard Levitte <richard@levitte.org> +1999-05-24 diff --git a/openssl/VMS/VMSify-conf.pl b/openssl/VMS/VMSify-conf.pl new file mode 100644 index 0000000..d3be6a2 --- /dev/null +++ b/openssl/VMS/VMSify-conf.pl @@ -0,0 +1,34 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +my @directory_vars = ( "dir", "certs", "crl_dir", "new_certs_dir" ); +my @file_vars = ( "database", "certificate", "serial", "crlnumber", + "crl", "private_key", "RANDFILE" ); +while(<STDIN>) { + chomp; + foreach my $d (@directory_vars) { + if (/^(\s*\#?\s*${d}\s*=\s*)\.\/([^\s\#]*)([\s\#].*)$/) { + $_ = "$1sys\\\$disk:\[.$2$3"; + } elsif (/^(\s*\#?\s*${d}\s*=\s*)(\w[^\s\#]*)([\s\#].*)$/) { + $_ = "$1sys\\\$disk:\[.$2$3"; + } + s/^(\s*\#?\s*${d}\s*=\s*\$\w+)\/([^\s\#]*)([\s\#].*)$/$1.$2\]$3/; + while(/^(\s*\#?\s*${d}\s*=\s*(\$\w+\.|sys\\\$disk:\[\.)[\w\.]+)\/([^\]]*)\](.*)$/) { + $_ = "$1.$3]$4"; + } + } + foreach my $f (@file_vars) { + s/^(\s*\#?\s*${f}\s*=\s*)\.\/(.*)$/$1sys\\\$disk:\[\/$2/; + while(/^(\s*\#?\s*${f}\s*=\s*(\$\w+|sys\\\$disk:\[)[^\/]*)\/(\w+\/[^\s\#]*)([\s\#].*)$/) { + $_ = "$1.$3$4"; + } + if (/^(\s*\#?\s*${f}\s*=\s*(\$\w+|sys\\\$disk:\[)[^\/]*)\/(\w+)([\s\#].*)$/) { + $_ = "$1]$3.$4"; + } elsif (/^(\s*\#?\s*${f}\s*=\s*(\$\w+|sys\\\$disk:\[)[^\/]*)\/([^\s\#]*)([\s\#].*)$/) { + $_ = "$1]$3$4"; + } + } + print $_,"\n"; +} diff --git a/openssl/VMS/WISHLIST.TXT b/openssl/VMS/WISHLIST.TXT new file mode 100644 index 0000000..c151fc8 --- /dev/null +++ b/openssl/VMS/WISHLIST.TXT @@ -0,0 +1,4 @@ +* Have the building procedure contain a LINK-only possibility. + Wished by Mark Daniel <mark.daniel@dsto.defence.gov.au> + + One way to enable that is also to go over to DESCRIP.MMS files. diff --git a/openssl/VMS/install-vms.com b/openssl/VMS/install-vms.com new file mode 100755 index 0000000..7da8b21 --- /dev/null +++ b/openssl/VMS/install-vms.com @@ -0,0 +1,67 @@ +$! install-vms.com -- Installs the files in a given directory tree +$! +$! Author: Richard Levitte <richard@levitte.org> +$! Time of creation: 23-MAY-1998 19:22 +$! +$! P1 root of the directory tree +$! +$! +$! Announce/identify. +$! +$ proc = f$environment( "procedure") +$ write sys$output "@@@ "+ - + f$parse( proc, , , "name")+ f$parse( proc, , , "type") +$! +$ on error then goto tidy +$ on control_c then goto tidy +$! +$ if p1 .eqs. "" +$ then +$ write sys$output "First argument missing." +$ write sys$output - + "Should be the directory where you want things installed." +$ exit +$ endif +$ +$ if (f$getsyi( "cpu") .lt. 128) +$ then +$ arch = "VAX" +$ else +$ arch = f$edit( f$getsyi( "arch_name"), "upcase") +$ if (arch .eqs. "") then arch = "UNK" +$ endif +$ +$ root = f$parse( P1, "[]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." - "][" - "[" - "]" +$ root = root_dev + "[" + root_dir +$ +$ define /nolog wrk_sslroot 'root'.] /translation_attributes = concealed +$ define /nolog wrk_sslinclude wrk_sslroot:[include] +$ +$ if f$parse( "wrk_sslroot:[000000]") .eqs. "" then - + create /directory /log wrk_sslroot:[000000] +$ if f$parse( "wrk_sslinclude:") .eqs. "" then - + create /directory /log wrk_sslinclude: +$ if f$parse( "wrk_sslroot:[vms]") .eqs. "" then - + create /directory /log wrk_sslroot:[vms] +$! +$ copy /log /protection = world:re openssl_startup.com wrk_sslroot:[vms] +$ copy /log /protection = world:re openssl_undo.com wrk_sslroot:[vms] +$ copy /log /protection = world:re openssl_utils.com wrk_sslroot:[vms] +$! +$ tidy: +$! +$ call deass wrk_sslroot +$ call deass wrk_sslinclude +$! +$ exit +$! +$ deass: subroutine +$ if (f$trnlnm( p1, "LNM$PROCESS") .nes. "") +$ then +$ deassign /process 'p1' +$ endif +$ endsubroutine +$! diff --git a/openssl/VMS/mkshared.com b/openssl/VMS/mkshared.com new file mode 100644 index 0000000..b0d1fda --- /dev/null +++ b/openssl/VMS/mkshared.com @@ -0,0 +1,476 @@ +$! MKSHARED.COM -- Create shareable images. +$! +$! P1: "64" for 64-bit pointers. +$! +$! P2: Zlib object library path (optional). +$! +$! Input: [.UTIL]LIBEAY.NUM,[.xxx.EXE.CRYPTO]SSL_LIBCRYPTO[32].OLB +$! [.UTIL]SSLEAY.NUM,[.xxx.EXE.SSL]SSL_LIBSSL[32].OLB +$! [.CRYPTO.xxx]OPENSSLCONF.H +$! Output: [.xxx.EXE.CRYPTO]SSL_LIBCRYPTO_SHR[32].OPT,.MAP,.EXE +$! [.xxx.EXE.SSL]SSL_LIBSSL_SRH[32].OPT,.MAP,.EXE +$! +$! So far, tests have only been made on VMS for Alpha. VAX will come in time. +$! =========================================================================== +$! +$! Announce/identify. +$! +$ proc = f$environment( "procedure") +$ write sys$output "@@@ "+ - + f$parse( proc, , , "name")+ f$parse( proc, , , "type") +$! +$! Save the original default device:[directory]. +$! +$ def_orig = f$environment( "default") +$ on error then goto tidy +$ on control_c then goto tidy +$! +$! SET DEFAULT to the main kit directory. +$! +$ proc = f$environment("procedure") +$ proc = f$parse( "A.;", proc)- "A.;" +$ set default 'proc' +$ set default [-] +$! +$! ----- Prepare info for processing: version number and file info +$ gosub read_version_info +$ if libver .eqs. "" +$ then +$ write sys$error "ERROR: Couldn't find any library version info..." +$ go to tidy: +$ endif +$ +$ if (f$getsyi("cpu") .lt. 128) +$ then +$ arch_vax = 1 +$ arch = "VAX" +$ else +$ arch_vax = 0 +$ arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE") +$ if (arch .eqs. "") then arch = "UNK" +$ endif +$! +$ archd = arch +$ lib32 = "32" +$ shr = "SHR32" +$! +$ if (p1 .nes. "") +$ then +$ if (p1 .eqs. "64") +$ then +$ archd = arch+ "_64" +$ lib32 = "" +$ shr = "SHR" +$ else +$ if (p1 .nes. "32") +$ then +$ write sys$output "Second argument invalid." +$ write sys$output "It should be "32", "64", or nothing." +$ exit +$ endif +$ endif +$ endif +$! +$! ----- Prepare info for processing: disabled algorithms info +$ gosub read_disabled_algorithms_info +$! +$ ZLIB = p2 +$ zlib_lib = "" +$ if (ZLIB .nes. "") +$ then +$ file2 = f$parse( ZLIB, "libz.olb", , , "syntax_only") +$ if (f$search( file2) .eqs. "") +$ then +$ write sys$output "" +$ write sys$output "The Option ", ZLIB, " Is Invalid." +$ write sys$output " Can't find library: ''file2'" +$ write sys$output "" +$ goto tidy +$ endif +$ zlib_lib = ", ''file2' /library" +$ endif +$! +$ if (arch_vax) +$ then +$ libtit = "CRYPTO_TRANSFER_VECTOR" +$ libid = "Crypto" +$ libnum = "[.UTIL]LIBEAY.NUM" +$ libdir = "[.''ARCHD'.EXE.CRYPTO]" +$ libmar = "''libdir'SSL_LIBCRYPTO_''shr'.MAR" +$ libolb = "''libdir'SSL_LIBCRYPTO''lib32'.OLB" +$ libopt = "''libdir'SSL_LIBCRYPTO_''shr'.OPT" +$ libobj = "''libdir'SSL_LIBCRYPTO_''shr'.OBJ" +$ libmap = "''libdir'SSL_LIBCRYPTO_''shr'.MAP" +$ libgoal= "''libdir'SSL_LIBCRYPTO_''shr'.EXE" +$ libref = "" +$ libvec = "LIBCRYPTO" +$ if f$search( libolb) .nes. "" then gosub create_vax_shr +$ libtit = "SSL_TRANSFER_VECTOR" +$ libid = "SSL" +$ libnum = "[.UTIL]SSLEAY.NUM" +$ libdir = "[.''ARCHD'.EXE.SSL]" +$ libmar = "''libdir'SSL_LIBSSL_''shr'.MAR" +$ libolb = "''libdir'SSL_LIBSSL''lib32'.OLB" +$ libopt = "''libdir'SSL_LIBSSL_''shr'.OPT" +$ libobj = "''libdir'SSL_LIBSSL_''shr'.OBJ" +$ libmap = "''libdir'SSL_LIBSSL_''shr'.MAP" +$ libgoal= "''libdir'SSL_LIBSSL_''shr'.EXE" +$ libref = "[.''ARCHD'.EXE.CRYPTO]SSL_LIBCRYPTO_''shr'.EXE" +$ libvec = "LIBSSL" +$ if f$search( libolb) .nes. "" then gosub create_vax_shr +$ else +$ libid = "Crypto" +$ libnum = "[.UTIL]LIBEAY.NUM" +$ libdir = "[.''ARCHD'.EXE.CRYPTO]" +$ libolb = "''libdir'SSL_LIBCRYPTO''lib32'.OLB" +$ libopt = "''libdir'SSL_LIBCRYPTO_''shr'.OPT" +$ libmap = "''libdir'SSL_LIBCRYPTO_''shr'.MAP" +$ libgoal= "''libdir'SSL_LIBCRYPTO_''shr'.EXE" +$ libref = "" +$ if f$search( libolb) .nes. "" then gosub create_nonvax_shr +$ libid = "SSL" +$ libnum = "[.UTIL]SSLEAY.NUM" +$ libdir = "[.''ARCHD'.EXE.SSL]" +$ libolb = "''libdir'SSL_LIBSSL''lib32'.OLB" +$ libopt = "''libdir'SSL_LIBSSL_''shr'.OPT" +$ libmap = "''libdir'SSL_LIBSSL_''shr'.MAP" +$ libgoal= "''libdir'SSL_LIBSSL_''shr'.EXE" +$ libref = "[.''ARCHD'.EXE.CRYPTO]SSL_LIBCRYPTO_''shr'.EXE" +$ if f$search( libolb) .nes. "" then gosub create_nonvax_shr +$ endif +$! +$ tidy: +$! +$! Close any open files. +$! +$ if (f$trnlnm( "libnum", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then - + close libnum +$! +$ if (f$trnlnm( "mar", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then - + close mar +$! +$ if (f$trnlnm( "opt", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then - + close opt +$! +$ if (f$trnlnm( "vf", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then - + close vf +$! +$! Restore the original default device:[directory]. +$! +$ set default 'def_orig' +$ exit +$ +$! ----- Subroutines to build the shareable libraries +$! For each supported architecture, there's a main shareable library +$! creator, which is called from the main code above. +$! The creator will define a number of variables to tell the next levels of +$! subroutines what routines to use to write to the option files, call the +$! main processor, read_func_num, and when that is done, it will write version +$! data at the end of the .opt file, close it, and link the library. +$! +$! read_func_num reads through a .num file and calls the writer routine for +$! each line. It's also responsible for checking that order is properly kept +$! in the .num file, check that each line applies to VMS and the architecture, +$! and to fill in "holes" with dummy entries. +$! +$! The creator routines depend on the following variables: +$! libnum The name of the .num file to use as input +$! libolb The name of the object library to build from +$! libid The identification string of the shareable library +$! libopt The name of the .opt file to write +$! libtit The title of the assembler transfer vector file (VAX only) +$! libmar The name of the assembler transfer vector file (VAX only) +$! libmap The name of the map file to write +$! libgoal The name of the shareable library to write +$! libref The name of a shareable library to link in +$! +$! read_func_num depends on the following variables from the creator: +$! libwriter The name of the writer routine to call for each .num file line +$! ----- +$ +$! ----- Subroutines for non-VAX +$! ----- +$! The creator routine +$ create_nonvax_shr: +$ open /write opt 'libopt' +$ write opt "identification=""",libid," ",libverstr,"""" +$ write opt libolb, " /library" +$ if libref .nes. "" then write opt libref,"/SHARE" +$ write opt "SYMBOL_VECTOR=(-" +$ libfirstentry := true +$ libwrch := opt +$ libwriter := write_nonvax_transfer_entry +$ textcount = 0 +$ gosub read_func_num +$ write opt ")" +$ write opt "GSMATCH=",libvmatch,",",libver +$ close opt +$ link /map = 'libmap' /full /share = 'libgoal' 'libopt' /options - + 'zlib_lib' +$ return +$ +$! The record writer routine +$ write_nonvax_transfer_entry: +$ if libentry .eqs. ".dummy" then return +$ if info_kind .eqs. "VARIABLE" +$ then +$ pr:=DATA +$ else +$ pr:=PROCEDURE +$ endif +$ textcount_this = f$length(pr) + f$length(libentry) + 5 +$ if textcount + textcount_this .gt. 1024 +$ then +$ write opt ")" +$ write opt "SYMBOL_VECTOR=(-" +$ textcount = 16 +$ libfirstentry := true +$ endif +$ if libfirstentry +$ then +$ write 'libwrch' " ",libentry,"=",pr," -" +$ else +$ write 'libwrch' " ,",libentry,"=",pr," -" +$ endif +$ libfirstentry := false +$ textcount = textcount + textcount_this +$ return +$ +$! ----- Subroutines for VAX +$! ----- +$! The creator routine +$ create_vax_shr: +$ open /write mar 'libmar' +$ type sys$input:/out=mar: +; +; Transfer vector for VAX shareable image +; +$ write mar " .TITLE ",libtit +$ write mar " .IDENT /",libid,"/" +$ type sys$input:/out=mar: +; +; Define macro to assist in building transfer vector entries. Each entry +; should take no more than 8 bytes. +; + .MACRO FTRANSFER_ENTRY routine + .ALIGN QUAD + .TRANSFER routine + .MASK routine + JMP routine+2 + .ENDM FTRANSFER_ENTRY +; +; Place entries in own program section. +; +$ write mar " .PSECT $$",libvec,",QUAD,PIC,USR,CON,REL,LCL,SHR,EXE,RD,NOWRT" +$ write mar libvec,"_xfer:" +$ libwrch := mar +$ libwriter := write_vax_ftransfer_entry +$ gosub read_func_num +$ type sys$input:/out=mar: +; +; Allocate extra storage at end of vector to allow for expansion. +; +$ write mar " .BLKB 32768-<.-",libvec,"_xfer> ; 64 pages total." +$! libwriter := write_vax_vtransfer_entry +$! gosub read_func_num +$ write mar " .END" +$ close mar +$ open /write opt 'libopt' +$ write opt "identification=""",libid," ",libverstr,"""" +$ write opt libobj +$ write opt libolb, " /library" +$ if libref .nes. "" then write opt libref,"/SHARE" +$ type sys$input:/out=opt: +! +! Ensure transfer vector is at beginning of image +! +CLUSTER=FIRST +$ write opt "COLLECT=FIRST,$$",libvec +$ write opt "GSMATCH=",libvmatch,",",libver +$ type sys$input:/out=opt: +! +! make psects nonshareable so image can be installed. +! +PSECT_ATTR=$CHAR_STRING_CONSTANTS,NOWRT +$ libwrch := opt +$ libwriter := write_vax_psect_attr +$ gosub read_func_num +$ close opt +$ macro/obj='libobj' 'libmar' +$ link /map = 'libmap' /full /share = 'libgoal' 'libopt' /options - + 'zlib_lib' +$ return +$ +$! The record writer routine for VAX functions +$ write_vax_ftransfer_entry: +$ if info_kind .nes. "FUNCTION" then return +$ if libentry .eqs ".dummy" +$ then +$ write 'libwrch' " .BLKB 8" ! Dummy is zeroes... +$ else +$ write 'libwrch' " FTRANSFER_ENTRY ",libentry +$ endif +$ return +$! The record writer routine for VAX variables (should never happen!) +$ write_vax_psect_attr: +$ if info_kind .nes. "VARIABLE" then return +$ if libentry .eqs ".dummy" then return +$ write 'libwrch' "PSECT_ATTR=",libentry,",NOSHR" +$ return +$ +$! ----- Common subroutines +$! ----- +$! The .num file reader. This one has great responsibility. +$ read_func_num: +$ open /read libnum 'libnum' +$ goto read_nums +$ +$ read_nums: +$ libentrynum=0 +$ liblastentry:=false +$ entrycount=0 +$ loop: +$ read /end=loop_end /err=loop_end libnum line +$ lin = f$edit( line, "COMPRESS,TRIM") +$! Skip a "#" comment line. +$ if (f$extract( 0, 1, lin) .eqs. "#") then goto loop +$ entrynum = f$int(f$element( 1, " ", lin)) +$ entryinfo = f$element( 2, " ", lin) +$ curentry = f$element( 0, " ", lin) +$ info_exist = f$element( 0, ":", entryinfo) +$ info_platforms = ","+ f$element(1, ":", entryinfo)+ "," +$ info_kind = f$element( 2, ":", entryinfo) +$ info_algorithms = ","+ f$element( 3, ":", entryinfo)+ "," +$ if info_exist .eqs. "NOEXIST" then goto loop +$ truesum = 0 +$ falsesum = 0 +$ negatives = 1 +$ plat_i = 0 +$ loop1: +$ plat_entry = f$element( plat_i, ",", info_platforms) +$ plat_i = plat_i + 1 +$ if plat_entry .eqs. "" then goto loop1 +$ if plat_entry .nes. "," +$ then +$ if f$extract(0,1,plat_entry) .nes. "!" then negatives = 0 +$ if (arch_vax) +$ then +$ if plat_entry .eqs. "EXPORT_VAR_AS_FUNCTION" then - +$ truesum = truesum + 1 +$ if plat_entry .eqs. "!EXPORT_VAR_AS_FUNCTION" then - +$ falsesum = falsesum + 1 +$ endif +$! +$ if ((plat_entry .eqs. "VMS") .or. - + ((plat_entry .eqs. "ZLIB") .and. (ZLIB .nes. "")) .or. - + (arch_vax .and. (plat_entry .eqs. "VMSVAX"))) then - + truesum = truesum + 1 +$! +$ if ((plat_entry .eqs. "!VMS") .or. - + (arch_vax .and. (plat_entry .eqs. "!VMSVAX"))) then - + falsesum = falsesum + 1 +$! +$ goto loop1 +$ endif +$ endloop1: +$!DEBUG!$ if info_platforms - "EXPORT_VAR_AS_FUNCTION" .nes. info_platforms +$!DEBUG!$ then +$!DEBUG!$ write sys$output line +$!DEBUG!$ write sys$output " truesum = ",truesum,- +$!DEBUG! ", negatives = ",negatives,", falsesum = ",falsesum +$!DEBUG!$ endif +$ if falsesum .ne. 0 then goto loop +$ if truesum+negatives .eq. 0 then goto loop +$ alg_i = 0 +$ loop2: +$ alg_entry = f$element(alg_i,",",info_algorithms) +$ alg_i = alg_i + 1 +$ if alg_entry .eqs. "" then goto loop2 +$ if alg_entry .nes. "," +$ then +$ if disabled_algorithms - ("," + alg_entry + ",") .nes disabled_algorithms then goto loop +$ if f$trnlnm("OPENSSL_NO_"+alg_entry) .nes. "" then goto loop +$ goto loop2 +$ endif +$ endloop2: +$ if info_platforms - "EXPORT_VAR_AS_FUNCTION" .nes. info_platforms +$ then +$!DEBUG!$ write sys$output curentry," ; ",entrynum," ; ",entryinfo +$ endif +$ redo: +$ next:=loop +$ tolibentry=curentry +$ if libentrynum .ne. entrynum +$ then +$ entrycount=entrycount+1 +$ if entrycount .lt. entrynum +$ then +$!DEBUG!$ write sys$output "Info: entrycount: ''entrycount', entrynum: ''entrynum' => 0" +$ tolibentry=".dummy" +$ next:=redo +$ endif +$ if entrycount .gt. entrynum +$ then +$ write sys$error "Decreasing library entry numbers! Can't continue" +$ write sys$error """",line,"""" +$ close libnum +$ return +$ endif +$ libentry=tolibentry +$!DEBUG!$ write sys$output entrycount," ",libentry," ",entryinfo +$ if libentry .nes. "" .and. libwriter .nes. "" then gosub 'libwriter' +$ else +$ write sys$error "Info: ""''curentry'"" is an alias for ""''libentry'"". Overriding..." +$ endif +$ libentrynum=entrycount +$ goto 'next' +$ loop_end: +$ close libnum +$ return +$ +$! The version number reader +$ read_version_info: +$ libver = "" +$ open /read vf [.CRYPTO]OPENSSLV.H +$ loop_rvi: +$ read/err=endloop_rvi/end=endloop_rvi vf rvi_line +$ if rvi_line - "SHLIB_VERSION_NUMBER """ .eqs. rvi_line then - + goto loop_rvi +$ libverstr = f$element(1,"""",rvi_line) +$ libvmajor = f$element(0,".",libverstr) +$ libvminor = f$element(1,".",libverstr) +$ libvedit = f$element(2,".",libverstr) +$ libvpatch = f$cvui(0,8,f$extract(1,1,libvedit)+"@")-f$cvui(0,8,"@") +$ libvedit = f$extract(0,1,libvedit) +$ libver = f$string(f$int(libvmajor)*100)+","+- + f$string(f$int(libvminor)*100+f$int(libvedit)*10+f$int(libvpatch)) +$ if libvmajor .eqs. "0" +$ then +$ libvmatch = "EQUAL" +$ else +$ ! Starting with the 1.0 release, backward compatibility should be +$ ! kept, so switch over to the following +$ libvmatch = "LEQUAL" +$ endif +$ endloop_rvi: +$ close vf +$ return +$ +$! The disabled algorithms reader +$ read_disabled_algorithms_info: +$ disabled_algorithms = "," +$ open /read cf [.CRYPTO.'ARCH']OPENSSLCONF.H +$ loop_rci: +$ read/err=endloop_rci/end=endloop_rci cf rci_line +$ rci_line = f$edit(rci_line,"TRIM,COMPRESS") +$ rci_ei = 0 +$ if f$extract(0,9,rci_line) .eqs. "# define " then rci_ei = 2 +$ if f$extract(0,8,rci_line) .eqs. "#define " then rci_ei = 1 +$ if rci_ei .eq. 0 then goto loop_rci +$ rci_e = f$element(rci_ei," ",rci_line) +$ if f$extract(0,11,rci_e) .nes. "OPENSSL_NO_" then goto loop_rci +$ disabled_algorithms = disabled_algorithms + f$extract(11,999,rci_e) + "," +$ goto loop_rci +$ endloop_rci: +$ close cf +$ return diff --git a/openssl/VMS/multinet_shr.opt b/openssl/VMS/multinet_shr.opt new file mode 100644 index 0000000..610f42d --- /dev/null +++ b/openssl/VMS/multinet_shr.opt @@ -0,0 +1 @@ +multinet:multinet_socket_library.exe/share diff --git a/openssl/VMS/openssl_startup.com b/openssl/VMS/openssl_startup.com new file mode 100755 index 0000000..04bbbde --- /dev/null +++ b/openssl/VMS/openssl_startup.com @@ -0,0 +1,108 @@ +$! +$! Startup file for OpenSSL 1.x. +$! +$! 2011-03-05 SMS. +$! +$! This procedure must reside in the OpenSSL installation directory. +$! It will fail if it is copied to a different location. +$! +$! P1 qualifier(s) for DEFINE. For example, "/SYSTEM" to get the +$! logical names defined in the system logical name table. +$! +$! P2 "64", to use executables which were built with 64-bit pointers. +$! +$! Good (default) and bad status values. +$! +$ status = %x00010001 ! RMS$_NORMAL, normal successful completion. +$ rms_e_fnf = %x00018292 ! RMS$_FNF, file not found. +$! +$! Prepare for problems. +$! +$ orig_dev_dir = f$environment( "DEFAULT") +$ on control_y then goto clean_up +$ on error then goto clean_up +$! +$! Determine hardware architecture. +$! +$ if (f$getsyi( "cpu") .lt. 128) +$ then +$ arch_name = "VAX" +$ else +$ arch_name = f$edit( f$getsyi( "arch_name"), "upcase") +$ if (arch_name .eqs. "") then arch_name = "UNK" +$ endif +$! +$ if (p2 .eqs. "64") +$ then +$ arch_name_exe = arch_name+ "_64" +$ else +$ arch_name_exe = arch_name +$ endif +$! +$! Derive the OpenSSL installation device:[directory] from the location +$! of this command procedure. +$! +$ proc = f$environment( "procedure") +$ proc_dev_dir = f$parse( "A.;", proc, , , "no_conceal") - "A.;" +$ proc_dev = f$parse( proc_dev_dir, , , "device", "syntax_only") +$ proc_dir = f$parse( proc_dev_dir, , , "directory", "syntax_only") - - + ".][000000"- "[000000."- "]["- "["- "]" +$ proc_dev_dir = proc_dev+ "["+ proc_dir+ "]" +$ set default 'proc_dev_dir' +$ set default [-] +$ ossl_dev_dir = f$environment( "default") +$! +$! Check existence of expected directories (to see if this procedure has +$! been moved away from its proper place). +$! +$ if ((f$search( "certs.dir;1") .eqs. "") .or. - + (f$search( "include.dir;1") .eqs. "") .or. - + (f$search( "private.dir;1") .eqs. "") .or. - + (f$search( "vms.dir;1") .eqs. "")) +$ then +$ write sys$output - + " Can't find expected common OpenSSL directories in:" +$ write sys$output " ''ossl_dev_dir'" +$ status = rms_e_fnf +$ goto clean_up +$ endif +$! +$ if ((f$search( "''arch_name_exe'_exe.dir;1") .eqs. "") .or. - + (f$search( "''arch_name'_lib.dir;1") .eqs. "")) +$ then +$ write sys$output - + " Can't find expected architecture-specific OpenSSL directories in:" +$ write sys$output " ''ossl_dev_dir'" +$ status = rms_e_fnf +$ goto clean_up +$ endif +$! +$! All seems well (enough). Define the OpenSSL logical names. +$! +$ ossl_root = ossl_dev_dir- "]"+ ".]" +$ define /translation_attributes = concealed /nolog'p1 SSLROOT 'ossl_root' +$ define /nolog 'p1' SSLCERTS sslroot:[certs] +$ define /nolog 'p1' SSLINCLUDE sslroot:[include] +$ define /nolog 'p1' SSLPRIVATE sslroot:[private] +$ define /nolog 'p1' SSLEXE sslroot:['arch_name_exe'_exe] +$ define /nolog 'p1' SSLLIB sslroot:['arch_name'_lib] +$! +$! Defining OPENSSL lets a C program use "#include <openssl/{foo}.h>": +$ define /nolog 'p1' OPENSSL SSLINCLUDE: +$! +$! Run a site-specific procedure, if it exists. +$! +$ if f$search( "sslroot:[vms]openssl_systartup.com") .nes."" then - + @ sslroot:[vms]openssl_systartup.com +$! +$! Restore the original default dev:[dir] (if known). +$! +$ clean_up: +$! +$ if (f$type( orig_dev_dir) .nes. "") +$ then +$ set default 'orig_dev_dir' +$ endif +$! +$ EXIT 'status' +$! diff --git a/openssl/VMS/openssl_undo.com b/openssl/VMS/openssl_undo.com new file mode 100755 index 0000000..d1623a3 --- /dev/null +++ b/openssl/VMS/openssl_undo.com @@ -0,0 +1,20 @@ +$! +$! Deassign OpenSSL logical names. +$! +$ call deass "OPENSSL" "''p1'" +$ call deass "SSLCERTS" "''p1'" +$ call deass "SSLEXE" "''p1'" +$ call deass "SSLINCLUDE" "''p1'" +$ call deass "SSLLIB" "''p1'" +$ call deass "SSLPRIVATE" "''p1'" +$ call deass "SSLROOT" "''p1'" +$! +$ exit +$! +$deass: subroutine +$ if (f$trnlnm( p1) .nes. "") +$ then +$ deassign 'p2' 'p1' +$ endif +$ endsubroutine +$! diff --git a/openssl/VMS/openssl_utils.com b/openssl/VMS/openssl_utils.com new file mode 100644 index 0000000..64f4915 --- /dev/null +++ b/openssl/VMS/openssl_utils.com @@ -0,0 +1,46 @@ +$! +$! APPS.COM +$! Written By: Robert Byer +$! Vice-President +$! A-Com Computing, Inc. +$! byer@mail.all-net.net +$! +$! +$! Slightly modified by Richard Levitte <richard@levitte.org> +$! +$! +$! Always define OPENSSL. Others are optional (non-null P1). +$! +$ OPENSSL :== $SSLEXE:OPENSSL +$ +$ IF (P1 .NES. "") +$ THEN +$ VERIFY :== $SSLEXE:OPENSSL VERIFY +$ ASN1PARSE:== $SSLEXE:OPENSSL ASN1PARS +$! REQ could conflict with REQUEST. +$ OREQ :== $SSLEXE:OPENSSL REQ +$ DGST :== $SSLEXE:OPENSSL DGST +$ DH :== $SSLEXE:OPENSSL DH +$ ENC :== $SSLEXE:OPENSSL ENC +$ GENDH :== $SSLEXE:OPENSSL GENDH +$ ERRSTR :== $SSLEXE:OPENSSL ERRSTR +$ CA :== $SSLEXE:OPENSSL CA +$ CRL :== $SSLEXE:OPENSSL CRL +$ RSA :== $SSLEXE:OPENSSL RSA +$ DSA :== $SSLEXE:OPENSSL DSA +$ DSAPARAM :== $SSLEXE:OPENSSL DSAPARAM +$ X509 :== $SSLEXE:OPENSSL X509 +$ GENRSA :== $SSLEXE:OPENSSL GENRSA +$ GENDSA :== $SSLEXE:OPENSSL GENDSA +$ S_SERVER :== $SSLEXE:OPENSSL S_SERVER +$ S_CLIENT :== $SSLEXE:OPENSSL S_CLIENT +$ SPEED :== $SSLEXE:OPENSSL SPEED +$ S_TIME :== $SSLEXE:OPENSSL S_TIME +$ VERSION :== $SSLEXE:OPENSSL VERSION +$ PKCS7 :== $SSLEXE:OPENSSL PKCS7 +$ CRL2PKCS7:== $SSLEXE:OPENSSL CRL2P7 +$ SESS_ID :== $SSLEXE:OPENSSL SESS_ID +$ CIPHERS :== $SSLEXE:OPENSSL CIPHERS +$ NSEQ :== $SSLEXE:OPENSSL NSEQ +$ PKCS12 :== $SSLEXE:OPENSSL PKCS12 +$ ENDIF diff --git a/openssl/VMS/socketshr_shr.opt b/openssl/VMS/socketshr_shr.opt new file mode 100644 index 0000000..f6e3131 --- /dev/null +++ b/openssl/VMS/socketshr_shr.opt @@ -0,0 +1 @@ +socketshr/share diff --git a/openssl/VMS/tcpip_shr_decc.opt b/openssl/VMS/tcpip_shr_decc.opt new file mode 100644 index 0000000..33b159e --- /dev/null +++ b/openssl/VMS/tcpip_shr_decc.opt @@ -0,0 +1 @@ +sys$share:tcpip$ipc_shr.exe/share diff --git a/openssl/VMS/test-includes.com b/openssl/VMS/test-includes.com new file mode 100644 index 0000000..c1d7ccd --- /dev/null +++ b/openssl/VMS/test-includes.com @@ -0,0 +1,28 @@ +$! Quick script to check how well including individual header files works +$! on VMS, even when the VMS macro isn't defined. +$ +$ sav_def = f$env("DEFAULT") +$ here = f$parse("A.;0",f$ENV("PROCEDURE")) - "A.;0" +$ set default 'here' +$ set default [-.include.openssl] +$ define openssl 'f$env("DEFAULT")' +$ set default [--] +$ +$ loop: +$ f = f$search("openssl:*.h") +$ if f .eqs. "" then goto loop_end +$ write sys$output "Checking ",f +$ open/write foo foo.c +$ write foo "#undef VMS" +$ write foo "#include <stdio.h>" +$ write foo "#include <openssl/",f$parse(f,,,"NAME"),".h>" +$ write foo "main()" +$ write foo "{printf(""foo\n"");}" +$ close foo +$ cc/STANDARD=ANSI89/NOLIST/PREFIX=ALL foo.c +$ delete foo.c; +$ goto loop +$ loop_end: +$ set default 'save_def' +$ exit + diff --git a/openssl/VMS/ucx_shr_decc.opt b/openssl/VMS/ucx_shr_decc.opt new file mode 100644 index 0000000..28d84f4 --- /dev/null +++ b/openssl/VMS/ucx_shr_decc.opt @@ -0,0 +1 @@ +sys$share:ucx$ipc_shr.exe/share diff --git a/openssl/VMS/ucx_shr_decc_log.opt b/openssl/VMS/ucx_shr_decc_log.opt new file mode 100644 index 0000000..c9d9a96 --- /dev/null +++ b/openssl/VMS/ucx_shr_decc_log.opt @@ -0,0 +1 @@ +ucx$ipc_shr/share diff --git a/openssl/VMS/ucx_shr_vaxc.opt b/openssl/VMS/ucx_shr_vaxc.opt new file mode 100644 index 0000000..86bfaf0 --- /dev/null +++ b/openssl/VMS/ucx_shr_vaxc.opt @@ -0,0 +1 @@ +sys$library:ucx$ipc.olb/library |