VMS support.

Submitted by: Richard Levitte <richard@levitte.org>
This commit is contained in:
Ulf Möller 1999-05-13 11:37:32 +00:00
parent 8d111f4a47
commit 7d7d2cbcb0
107 changed files with 16957 additions and 441 deletions

View File

@ -5,6 +5,9 @@
Changes between 0.9.2b and 0.9.3
*) VMS support.
[Richard Levitte <richard@levitte.org>]
*) New option -out to asn1parse to allow the parsed structure to be
output to a file. This is most useful when combined with the -strparse
option to examine the output of things like OCTET STRINGS.

View File

@ -2,7 +2,8 @@
INSTALLATION ON THE UNIX PLATFORM
---------------------------------
[For instructions for compiling OpenSSL on Windows systems, see INSTALL.W32].
[See INSTALL.W32 for instructions for compiling OpenSSL on Windows systems,
and INSTALL.VMS for installing on OpenVMS systems.]
To install OpenSSL, you will need:

204
INSTALL.VMS Normal file
View File

@ -0,0 +1,204 @@
VMS Installation instructions
written by Richard Levitte
<richard@levitte.org>
Intro:
======
This file is divided in the following parts:
Compilation - Mandatory reading.
Test - Mandatory reading.
Installation - Mandatory reading.
Backward portability - Read if it's an issue.
Possible bugs or quirks - A few warnings on things that
may go wrong or may surprise you.
Report - How to get in touch with me.
Compilation:
============
I've used the very good command procedures written by Robert Byer
<byer@mail.all-net.net>, and just slightly modified them, making
them slightly more general and easier to maintain.
You can actually compile in almost any directory separately. Look
for a command procedure name xxx-LIB.COM (in the library directories)
or MAKExxx.COM (in the program directories) and read the comments at
the top to understand how to use them. However, if you want to
compile all you can get, the simplest is to use MAKEVMS.COM in the top
directory. The syntax is trhe following:
@MAKEVMS <option> <rsaref-p> <debug-p> [<compiler>]
<option> must be one of the following:
ALL Just build "everything".
DATE Just build the "[.INCLUDE]DATE.H" file.
SOFTLINKS Just copies some files, to simulate Unix soft links.
RSAREF Just build the "[.xxx.EXE.RSAREF]LIBRSAGLUE.OLB" library.
CRYPTO Just build the "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" library.
SSL Just build the "[.xxx.EXE.SSL]LIBSSL.OLB" library.
SSL_TASK Just build the "[.xxx.EXE.SSL]SSL_TASK.EXE" program.
TEST Just build the "test" programs for OpenSSL.
APPS Just build the "application" programs for OpenSSL.
<rsaref-p> must be one of the following:
RSAREF compile using the RSAREF Library
NORSAREF compile without using RSAREF
Note: The RSAREF libraries are NOT INCLUDED and you have to
download it from "ftp://ftp.rsa.com/rsaref". You have to
get the ".tar-Z" file as the ".zip" file dosen't have the
directory structure stored. You have to extract the file
into the [.RSAREF] directory as that is where the scripts
will look for the files.
Note 2: I have never done this, so I've no idea if it works or not.
<debug-p> must be one of the following:
DEBUG compile with debugging info (will not optimize)
NODEBUG compile without debugging info (will optimize)
<compiler> must be one of the following:
VAXC For VAX C.
DECC For DEC C.
GNUC For GNU C.
You will find the crypto library in [.xxx.EXE.CRYPTO], called LIBCRYPTO.OLB,
where xxx is VAX or AXP. You will find the SSL library in [.xxx.EXE.SSL],
named LIBSSL.OLB, and you will find a bunch of useful programs in
[.xxx.EXE.APPS]. However, these shouldn't be used right off unless it's
just to test them. For production use, make sure you install first, see
Installation below.
Note: Some programs in this package require a TCP/IP library.
Note 2: if you want to compile the crypto library only, please make sure
you have at least done a @MAKEVMS DATE and a @MAKEVMS SOFTLINKS.
A lot of things will break if you don't.
Test:
=====
Testing is very simple, just do the following:
@[.TEST]TESTS
If a test fails, try with defining the logical name OPENSSL_NO_ASM (yes,
it's an ugly hack!) and rebuild. Please send a bug report to
<openssl-bugs@openssl.org>, including the output of "openssl version -a"
and of the failed test.
Installation:
=============
Installation is easy, just do the following:
@INSTALL <root>
<root> is the directory in which everything will be installed,
subdirectories, libraries, header files, programs and startup command
procedures.
In the [.VMS] subdirectory of the installation, you will find the
following command procedures:
OPENSSL_STARTUP.COM
defines all needed logical names. Takes one argument that
tells it in what logical name table to insert the logical
names. If you insert if it SYS$MANAGER:SYSTARTUP_VMS.COM, the
call should look like this:
@openssldev:[openssldir.VMS]OPENSSL_STARTUP "/SYSTEM"
OPENSSL_UTILS.COM
sets up the symbols to the applications. Should be called
from for example SYS$MANAGER:SYLOGIN.COM
The logical names that are set up are the following:
SSLROOT a dotted concealed logical name pointing at the
root directory.
SSLLIB points at the directory where CRYPTORTL.OLB and
SSLRTL.OLB are installed.
SSLINCLUDE points at the directory where the header files are
installed.
SSLEXE points at the directory where the applications are
installed.
SSLCERTS the place where the certificates are stored.
SSLPRIVATE I'm actually not sure what this is used for.
Backward portability:
=====================
One great problem when you build a library is making sure it will work
on as many versions of VMS as possible. Especially, code compiled on
OpenVMS version 7.x and above tend to be unusable in version 6.x or
lower, because some C library routines have changed names internally
(the C programmer won't usually see it, because the old name is
maintained through C macros). One obvious solution is to make sure
you have a development machine with an old enough version of OpenVMS.
However, if you are stuck with a bunch of Alphas running OpenVMS version
7.1, you seem to be out of luck. Fortunately, the DEC C header files
are cluttered with conditionals that make some declarations and definitions
dependent on the OpenVMS version or the C library version, *and* you
can use those macros to simulate older OpenVMS or C library versions,
by defining the macros _VMS_V6_SOURCE, __VMS_VER and __CTRL_VER with
correct values. In the compilation scripts, I've provided the possibility
for the user to influense the creation of such macros, through a bunch of
symbols, all having names starting with USER_. Here's the list of them:
USER_CCFLAGS - Used to give additional qualifiers to the
compiler. It can't be used to define macros
since the scripts will do such things as well.
To do such things, use USER_CCDEFS.
USER_CCDEFS - Used to define macros on the command line. The
value of this symbol will be inserted inside a
/DEFINE=(...).
USER_CCDISABLEWARNINGS - Used to disable some warnings. The value is
inserted inside a /DISABLE=WARNING=(...).
So, to maintain backward compatibility with older VMS versions, do the
following before you start compiling:
$ USER_CCDEFS := _VMS_V6_SOURCE=1,__VMS_VER=60000000,__CRTL_VER=60000000
$ USER_CCDISABLEWARNINGS := PREOPTW
The USER_CCDISABLEWARNINGS is there because otherwise, DEC C will complain
that those macros have been changed.
Note: Currently, this is only usefull for library compilation. The
programs will still be linked with the current version of the
C library shareable image, and will thus complain if they are
faced with an older version of the same C library shareable image.
This will probably be fixed in a future revision of OpenSSL.
Possible bugs or quirks:
========================
I'm not perfectly sure all the programs will use the SSLCERTS:
directory by default, it may very well be that you have to give them
extra arguments. Please experiment.
Report:
=======
I maintain a few mailinglists for bug reports and such on software that
I develop/port/enhance/destroy. Please look at http://www.free.lp.se/
for further info.
--
Richard Levitte <richard@levitte.org>
1999-03-09

View File

@ -162,7 +162,7 @@ SHELL=/bin/sh
TOP= .
ONEDIRS=out tmp
EDIRS= times doc bugs util include certs ms shlib mt demos perl sf dep
EDIRS= times doc bugs util include certs ms shlib mt demos perl sf dep VMS
WDIRS= windows
LIBS= libcrypto.a libssl.a
@ -308,7 +308,7 @@ dist:
@$(MAKE) tar
dist_pem_h:
(cd crypto/pem; $(MAKE) SDIRS='${SDIRS}' CFLAG='${CFLAG}' pem.h; $(MAKE) clean)
(cd crypto/pem; $(MAKE) CC='${CC}' SDIRS='${SDIRS}' CFLAG='${CFLAG}' pem.h; $(MAKE) clean)
install: all
@-mkdir -p $(INSTALL_PREFIX)$(INSTALLTOP)/bin 2>/dev/null

3
README
View File

@ -141,7 +141,8 @@
------------
To install this package under a Unix derivative, read the INSTALL file. For
a Win32 platform, read the INSTALL.W32 file.
a Win32 platform, read the INSTALL.W32 file. For OpenVMS systems, read
INSTALL.VMS.
For people in the USA, it is possible to compile OpenSSL to use RSA Inc.'s
public key library, RSAREF, by configuring OpenSSL with the option "rsaref".

200
apps/CA.com Normal file
View File

@ -0,0 +1,200 @@
$! CA - wrapper around ca to make it easier to use ... basically ca requires
$! some setup stuff to be done before you can use it and this makes
$! things easier between now and when Eric is convinced to fix it :-)
$!
$! CA -newca ... will setup the right stuff
$! CA -newreq ... will generate a certificate request
$! CA -sign ... will sign the generated request and output
$!
$! At the end of that grab newreq.pem and newcert.pem (one has the key
$! and the other the certificate) and cat them together and that is what
$! you want/need ... I'll make even this a little cleaner later.
$!
$!
$! 12-Jan-96 tjh Added more things ... including CA -signcert which
$! converts a certificate to a request and then signs it.
$! 10-Jan-96 eay Fixed a few more bugs and added the SSLEAY_CONFIG
$! environment variable so this can be driven from
$! a script.
$! 25-Jul-96 eay Cleaned up filenames some more.
$! 11-Jun-96 eay Fixed a few filename missmatches.
$! 03-May-96 eay Modified to use 'openssl cmd' instead of 'cmd'.
$! 18-Apr-96 tjh Original hacking
$!
$! Tim Hudson
$! tjh@cryptsoft.com
$!
$!
$! default ssleay.cnf file has setup as per the following
$! demoCA ... where everything is stored
$
$ IF F$TYPE(SSLEAY_CONFIG) .EQS. "" THEN SSLEAY_CONFIG := SSLLIB:SSLEAY.CNF
$
$ DAYS = "-days 365"
$ REQ = openssl + " req " + SSLEAY_CONFIG
$ CA = openssl + " ca " + SSLEAY_CONFIG
$ VERIFY = openssl + " verify"
$ X509 = openssl + " x509"
$ echo = "write sys$Output"
$!
$ s = F$PARSE(F$ENVIRONMENT("DEFAULT"),"[]") - "].;"
$ CATOP := 's'.demoCA
$ CAKEY := ]cakey.pem
$ CACERT := ]cacert.pem
$
$ __INPUT := SYS$COMMAND
$ RET = 1
$!
$ i = 1
$opt_loop:
$ if i .gt. 8 then goto opt_loop_end
$
$ prog_opt = F$EDIT(P'i',"lowercase")
$
$ IF (prog_opt .EQS. "?" .OR. prog_opt .EQS. "-h" .OR. prog_opt .EQS. "-help")
$ THEN
$ echo "usage: CA -newcert|-newreq|-newca|-sign|-verify"
$ exit
$ ENDIF
$!
$ IF (prog_opt .EQS. "-input")
$ THEN
$ ! Get input from somewhere other than SYS$COMMAND
$ i = i + 1
$ __INPUT = P'i'
$ GOTO opt_loop_continue
$ ENDIF
$!
$ IF (prog_opt .EQS. "-newcert")
$ THEN
$ ! Create a certificate.
$ DEFINE/USER SYS$INPUT '__INPUT'
$ REQ -new -x509 -keyout newreq.pem -out newreq.pem 'DAYS'
$ RET=$STATUS
$ echo "Certificate (and private key) is in newreq.pem"
$ GOTO opt_loop_continue
$ ENDIF
$!
$ IF (prog_opt .EQS. "-newreq")
$ THEN
$ ! Create a certificate request
$ DEFINE/USER SYS$INPUT '__INPUT'
$ REQ -new -keyout newreq.pem -out newreq.pem 'DAYS'
$ RET=$STATUS
$ echo "Request (and private key) is in newreq.pem"
$ GOTO opt_loop_continue
$ ENDIF
$!
$ IF (prog_opt .EQS. "-newca")
$ THEN
$ ! If explicitly asked for or it doesn't exist then setup the directory
$ ! structure that Eric likes to manage things.
$ IF F$SEARCH(CATOP+"]serial.") .EQS. ""
$ THEN
$ CREATE /DIR /PROTECTION=OWNER:RWED 'CATOP']
$ CREATE /DIR /PROTECTION=OWNER:RWED 'CATOP'.certs]
$ CREATE /DIR /PROTECTION=OWNER:RWED 'CATOP'.crl]
$ CREATE /DIR /PROTECTION=OWNER:RWED 'CATOP'.newcerts]
$ CREATE /DIR /PROTECTION=OWNER:RWED 'CATOP'.private]
$ OPEN /WRITE ser_file 'CATOP']serial.
$ WRITE ser_file "01"
$ CLOSE ser_file
$ APPEND/NEW NL: 'CATOP']index.txt
$ ENDIF
$!
$ IF F$SEARCH(CATOP+".private"+CAKEY) .EQS. ""
$ THEN
$ READ '__INPUT' FILE -
/PROMT="CA certificate filename (or enter to create)"
$ IF F$SEARCH(FILE) .NES. ""
$ THEN
$ COPY 'FILE' 'CATOP'.private'CAKEY'
$ RET=$STATUS
$ ELSE
$ echo "Making CA certificate ..."
$ DEFINE/USER SYS$INPUT '__INPUT'
$ REQ -new -x509 -keyout 'CATOP'.private'CAKEY' -
-out 'CATOP''CACERT' 'DAYS'
$ RET=$STATUS
$ ENDIF
$ ENDIF
$ GOTO opt_loop_continue
$ ENDIF
$!
$ IF (prog_opt .EQS. "-xsign")
$ THEN
$!
$ DEFINE/USER SYS$INPUT '__INPUT'
$ CA -policy policy_anything -infiles newreq.pem
$ RET=$STATUS
$ GOTO opt_loop_continue
$ ENDIF
$!
$ IF ((prog_opt .EQS. "-sign") .OR. (prog_opt .EQS. "-signreq"))
$ THEN
$!
$ DEFINE/USER SYS$INPUT '__INPUT'
$ CA -policy policy_anything -out newcert.pem -infiles newreq.pem
$ RET=$STATUS
$ type newcert.pem
$ echo "Signed certificate is in newcert.pem"
$ GOTO opt_loop_continue
$ ENDIF
$!
$ IF (prog_opt .EQS. "-signcert")
$ THEN
$!
$ echo "Cert passphrase will be requested twice - bug?"
$ DEFINE/USER SYS$INPUT '__INPUT'
$ X509 -x509toreq -in newreq.pem -signkey newreq.pem -out tmp.pem
$ DEFINE/USER SYS$INPUT '__INPUT'
$ CA -policy policy_anything -out newcert.pem -infiles tmp.pem
y
y
$ type newcert.pem
$ echo "Signed certificate is in newcert.pem"
$ GOTO opt_loop_continue
$ ENDIF
$!
$ IF (prog_opt .EQS. "-verify")
$ THEN
$!
$ i = i + 1
$ IF (p'i' .EQS. "")
$ THEN
$ DEFINE/USER SYS$INPUT '__INPUT'
$ VERIFY "-CAfile" 'CATOP''CACERT' newcert.pem
$ ELSE
$ j = i
$ verify_opt_loop:
$ IF j .GT. 8 THEN GOTO verify_opt_loop_end
$ IF p'j' .NES. ""
$ THEN
$ DEFINE/USER SYS$INPUT '__INPUT'
$ __tmp = p'j'
$ VERIFY "-CAfile" 'CATOP''CACERT' '__tmp'
$ tmp=$STATUS
$ IF tmp .NE. 0 THEN RET=tmp
$ ENDIF
$ j = j + 1
$ GOTO verify_opt_loop
$ verify_opt_loop_end:
$ ENDIF
$
$ GOTO opt_loop_end
$ ENDIF
$!
$ IF (prog_opt .NES. "")
$ THEN
$!
$ echo "Unknown argument ''prog_opt'"
$
$ EXIT 3
$ ENDIF
$
$opt_loop_continue:
$ i = i + 1
$ GOTO opt_loop
$
$opt_loop_end:
$ EXIT 'RET'

View File

@ -20,7 +20,7 @@ EX_LIBS=
CFLAGS= -DMONOLITH $(INCLUDES) $(CFLAG)
GENERAL=Makefile
GENERAL=Makefile makeapps.com install.com
DLIBCRYPTO=../libcrypto.a
DLIBSSL=../libssl.a

View File

@ -201,6 +201,27 @@ void program_name(char *in, char *out, int size)
out[n]='\0';
}
#else
#ifdef VMS
void program_name(char *in, char *out, int size)
{
char *p=in, *q;
char *chars=":]>";
while(*chars != '\0')
{
q=strrchr(p,*chars);
if (q > p)
p = q + 1;
chars++;
}
q=strrchr(p,'.');
if (q == NULL)
q = in+size;
strncpy(out,p,q-p);
out[q-p]='\0';
}
#else
void program_name(char *in, char *out, int size)
{
char *p;
@ -214,6 +235,7 @@ void program_name(char *in, char *out, int size)
out[size-1]='\0';
}
#endif
#endif
#ifdef WIN32
int WIN32_rename(char *from, char *to)

View File

@ -76,7 +76,22 @@
#include <openssl/pem.h>
#ifndef W_OK
#include <sys/file.h>
# ifdef VMS
# if defined(__DECC)
# include <unistd.h>
# else
# include <unixlib.h>
# endif
# else
# include <sys/file.h>
# endif
#endif
#ifndef W_OK
# define F_OK 0
# define X_OK 1
# define W_OK 2
# define R_OK 4
#endif
#undef PROG
@ -395,9 +410,14 @@ bad:
if (configfile == NULL)
{
/* We will just use 'buf[0]' as a temporary buffer. */
#ifdef VMS
strncpy(buf[0],X509_get_default_cert_area(),
sizeof(buf[0])-1-sizeof(CONFIG_FILE));
#else
strncpy(buf[0],X509_get_default_cert_area(),
sizeof(buf[0])-2-sizeof(CONFIG_FILE));
strcat(buf[0],"/");
#endif
strcat(buf[0],CONFIG_FILE);
configfile=buf[0];
}
@ -537,7 +557,12 @@ bad:
BIO_printf(bio_err,"there needs to be defined a directory for new certificate to be placed in\n");
goto err;
}
#ifdef VMS
/* For technical reasons, VMS misbehaves with X_OK */
if (access(outdir,R_OK|W_OK) != 0)
#else
if (access(outdir,R_OK|W_OK|X_OK) != 0)
#endif
{
BIO_printf(bio_err,"I am unable to acces the %s directory\n",outdir);
perror(outdir);
@ -855,12 +880,23 @@ bad:
BIO_printf(bio_err,"Write out database with %d new entries\n",sk_num(cert_sk));
strncpy(buf[0],serialfile,BSIZE-4);
#ifdef VMS
strcat(buf[0],"-new");
#else
strcat(buf[0],".new");
#endif
if (!save_serial(buf[0],serial)) goto err;
strncpy(buf[1],dbfile,BSIZE-4);
#ifdef VMS
strcat(buf[1],"-new");
#else
strcat(buf[1],".new");
#endif
if (BIO_write_filename(out,buf[1]) <= 0)
{
perror(dbfile);
@ -884,7 +920,11 @@ bad:
p=(char *)x->cert_info->serialNumber->data;
strncpy(buf[2],outdir,BSIZE-(j*2)-6);
#ifndef VMS
strcat(buf[2],"/");
#endif
n=(unsigned char *)&(buf[2][strlen(buf[2])]);
if (j > 0)
{
@ -917,7 +957,13 @@ bad:
{
/* Rename the database and the serial file */
strncpy(buf[2],serialfile,BSIZE-4);
#ifdef VMS
strcat(buf[2],"-old");
#else
strcat(buf[2],".old");
#endif
BIO_free(in);
BIO_free(out);
in=NULL;
@ -939,7 +985,13 @@ bad:
}
strncpy(buf[2],dbfile,BSIZE-4);
#ifdef VMS
strcat(buf[2],"-old");
#else
strcat(buf[2],".old");
#endif
if (rename(dbfile,buf[2]) < 0)
{
BIO_printf(bio_err,"unabel to rename %s to %s\n",

View File

@ -62,7 +62,7 @@
#define MONOLITH
#define USE_SOCKETS
#include "../e_os.h"
#include <openssl/e_os.h>
#include <openssl/bio.h>
#include <openssl/stack.h>

69
apps/install.com Normal file
View File

@ -0,0 +1,69 @@
$! INSTALL.COM -- Installs the files in a given directory tree
$!
$! Author: Richard Levitte <richard@levitte.org>
$! Time of creation: 22-MAY-1998 10:13
$!
$! P1 root of the directory tree
$!
$ IF P1 .EQS. ""
$ THEN
$ WRITE SYS$OUTPUT "First argument missing."
$ WRITE SYS$OUTPUT "Should be the directory where you want things installed."
$ EXIT
$ 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'.] /TRANS=CONC
$ DEFINE/NOLOG WRK_SSLVEXE WRK_SSLROOT:[VAX_EXE]
$ DEFINE/NOLOG WRK_SSLAEXE WRK_SSLROOT:[ALPHA_EXE]
$ DEFINE/NOLOG WRK_SSLLIB WRK_SSLROOT:[LIB]
$
$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLROOT:[000000]
$ IF F$PARSE("WRK_SSLVEXE:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLVEXE:
$ IF F$PARSE("WRK_SSLAEXE:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLAEXE:
$ IF F$PARSE("WRK_SSLLIB:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLLIB:
$
$ EXE := openssl
$
$ VEXE_DIR := [-.VAX.EXE.APPS]
$ AEXE_DIR := [-.AXP.EXE.APPS]
$
$ I = 0
$ LOOP_EXE:
$ E = F$EDIT(F$ELEMENT(I, ",", EXE),"TRIM")
$ I = I + 1
$ IF E .EQS. "," THEN GOTO LOOP_EXE_END
$ SET NOON
$ IF F$SEARCH(VEXE_DIR+E+".EXE") .NES. ""
$ THEN
$ COPY 'VEXE_DIR''E'.EXE WRK_SSLVEXE:'E'.EXE/log
$ SET FILE/PROT=W:RE WRK_SSLVEXE:'E'.EXE
$ ENDIF
$ IF F$SEARCH(AEXE_DIR+E+".EXE") .NES. ""
$ THEN
$ COPY 'AEXE_DIR''E'.EXE WRK_SSLAEXE:'E'.EXE/log
$ SET FILE/PROT=W:RE WRK_SSLAEXE:'E'.EXE
$ ENDIF
$ SET ON
$ GOTO LOOP_EXE
$ LOOP_EXE_END:
$
$ SET NOON
$ COPY CA.COM WRK_SSLAEXE:CA.COM/LOG
$ SET FILE/PROT=W:RE WRK_SSLAEXE:CA.COM
$ COPY CA.COM WRK_SSLVEXE:CA.COM/LOG
$ SET FILE/PROT=W:RE WRK_SSLVEXE:CA.COM
$ COPY OPENSSL-VMS.CNF WRK_SSLROOT:[000000]OPENSSL.CNF/LOG
$ SET FILE/PROT=W:R WRK_SSLROOT:[000000]OPENSSL.CNF
$ SET ON
$
$ EXIT

1137
apps/makeapps.com Normal file

File diff suppressed because it is too large Load Diff

190
apps/openssl-vms.cnf Normal file
View File

@ -0,0 +1,190 @@
#
# OpenSSL example configuration file.
# This is mostly being used for generation of certificate requests.
#
RANDFILE = $ENV::HOME.rnd
oid_file = $ENV::HOME.oid
oid_section = new_oids
[ new_oids ]
# We can add new OIDs in here for use by 'ca' and 'req'.
# Add a simple OID like this:
# testoid1=1.2.3.4
# Or use config file substitution like this:
# testoid2=${testoid1}.5.6
####################################################################
[ ca ]
default_ca = CA_default # The default ca section
####################################################################
[ CA_default ]
dir = sys\$disk:[.demoCA # Where everything is kept
certs = $dir.certs] # Where the issued certs are kept
crl_dir = $dir.crl] # Where the issued crl are kept
database = $dir]index.txt # database index file.
new_certs_dir = $dir.newcerts] # default place for new certs.
certificate = $dir]cacert.pem # The CA certificate
serial = $dir]serial. # The current serial number
crl = $dir]crl.pem # The current CRL
private_key = $dir.private]cakey.pem# The private key
RANDFILE = $dir.private].rand # private random number file
x509_extensions = usr_cert # The extentions to add to the cert
default_days = 365 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = md5 # which md to use.
preserve = no # keep passed DN ordering
# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy = policy_match
# For the CA policy
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
# For the 'anything' policy
# At this point in time, you must list all acceptable 'object'
# types.
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
####################################################################
[ req ]
default_bits = 1024
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca # The extentions to add to the self signed cert
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = AU
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Some-State
localityName = Locality Name (eg, city)
0.organizationName = Organization Name (eg, company)
0.organizationName_default = Internet Widgits Pty Ltd
# we can do this but it is not needed normally :-)
#1.organizationName = Second Organization Name (eg, company)
#1.organizationName_default = World Wide Web Pty Ltd
organizationalUnitName = Organizational Unit Name (eg, section)
#organizationalUnitName_default =
commonName = Common Name (eg, YOUR name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 40
# SET-ex3 = SET extension number 3
[ req_attributes ]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = An optional company name
[ usr_cert ]
# These extensions are added when 'ca' signs a request.
# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.
basicConstraints=CA:FALSE
# Here are some examples of the usage of nsCertType. If it is omitted
# the certificate can be used for anything *except* object signing.
# This is OK for an SSL server.
#nsCertType = server
# For an object signing certificate this would be used.
#nsCertType = objsign
# For normal client use this is typical
#nsCertType = client, email
# This is typical also
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
nsComment = "OpenSSL Generated Certificate"
# PKIX recommendations
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
# Import the email address.
subjectAltName=email:copy
# Copy subject details
issuerAltName=issuer:copy
#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem
#nsBaseUrl
#nsRevocationUrl
#nsRenewalUrl
#nsCaPolicyUrl
#nsSslServerName
[ v3_ca]
# Extensions for a typical CA
# It's a CA certificate
basicConstraints = CA:true
# PKIX recommendation.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
# This is what PKIX recommends but some broken software chokes on critical
# extensions.
#basicConstraints = critical,CA:true
# Key usage: again this should really be critical.
keyUsage = cRLSign, keyCertSign
# Some might want this also
#nsCertType = sslCA, emailCA
# Include email address in subject alt name: another PKIX recommendation
subjectAltName=email:copy
# Copy issuer details
issuerAltName=issuer:copy
# RAW DER hex encoding of an extension: beware experts only!
# 1.2.3.5=RAW:02:03
# You can even override a supported extension:
# basicConstraints= critical, RAW:30:03:01:01:FF

View File

@ -147,7 +147,9 @@ int main(int Argc, char *Argv[])
if (p == NULL)
{
strcpy(config_name,X509_get_default_cert_area());
#ifndef VMS
strcat(config_name,"/");
#endif
strcat(config_name,OPENSSL_CONF);
p=config_name;
}

View File

@ -361,7 +361,9 @@ bad:
if (p == NULL)
{
strcpy(config_name,X509_get_default_cert_area());
#ifndef VMS
strcat(config_name,"/");
#endif
strcat(config_name,OPENSSL_CONF);
p=config_name;
}

View File

@ -56,6 +56,30 @@
* [including the GNU Public Licence.]
*/
#include <sys/types.h>
#if (defined(VMS) || defined(__VMS)) && !defined(FD_SET)
/* VAX C does not defined fd_set and friends, but it's actually quite simple */
/* These definitions are borrowed from SOCKETSHR. /Richard Levitte */
#define MAX_NOFILE 32
#define NBBY 8 /* number of bits in a byte */
#ifndef FD_SETSIZE
#define FD_SETSIZE MAX_NOFILE
#endif /* FD_SETSIZE */
/* How many things we'll allow select to use. 0 if unlimited */
#define MAXSELFD MAX_NOFILE
typedef int fd_mask; /* int here! VMS prototypes int, not long */
#define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask (power of 2!)*/
#define NFDSHIFT 5 /* Shift based on above */
typedef fd_mask fd_set;
#define FD_SET(n, p) (*(p) |= (1 << ((n) % NFDBITS)))
#define FD_CLR(n, p) (*(p) &= ~(1 << ((n) % NFDBITS)))
#define FD_ISSET(n, p) (*(p) & (1 << ((n) % NFDBITS)))
#define FD_ZERO(p) memset((char *)(p), 0, sizeof(*(p)))
#endif
#define PORT 4433
#define PORT_STR "4433"
#define PROTOCOL "tcp"

View File

@ -56,6 +56,15 @@
* [including the GNU Public Licence.]
*/
/* With IPv6, it looks like Digital has mixed up the proper order of
recursive header file inclusion, resulting in the compiler complaining
that u_int isn't defined, but only if _POSIX_C_SOURCE is defined, which
is needed to have fileno() declared correctly... So let's define u_int */
#if defined(__DECC) && !defined(__U_INT)
#define __U_INT
typedef unsigned int u_int;
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -70,6 +79,11 @@
#include <openssl/pem.h>
#include "s_apps.h"
#if (__VMS_VER < 70000000) /* FIONBIO used as a switch to enable ioctl,
and that isn't in VMS < 7.0 */
#undef FIONBIO
#endif
#if defined(NO_RSA) && !defined(NO_SSL2)
#define NO_SSL2
#endif
@ -454,7 +468,14 @@ re_start:
/* printf("mode tty(%d %d%d) ssl(%d%d)\n",
tty_on,read_tty,write_tty,read_ssl,write_ssl);*/
i=select(width,&readfds,&writefds,NULL,NULL);
/* Note: under VMS with SOCKETSHR the third parameter
* is currently of type (int *) whereas under other
* systems it is (void *) if you don't have a cast it
* will choke the compiler: if you do have a cast then
* you can either go for (int *) or (void *).
*/
i=select(width,(void *)&readfds,(void *)&writefds,
NULL,NULL);
if ( i < 0)
{
BIO_printf(bio_err,"bad select %d\n",

View File

@ -56,6 +56,15 @@
* [including the GNU Public Licence.]
*/
/* With IPv6, it looks like Digital has mixed up the proper order of
recursive header file inclusion, resulting in the compiler complaining
that u_int isn't defined, but only if _POSIX_C_SOURCE is defined, which
is needed to have fileno() declared correctly... So let's define u_int */
#if defined(__DECC) && !defined(__U_INT)
#define __U_INT
typedef unsigned int u_int;
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -74,6 +83,11 @@
#include <openssl/ssl.h>
#include "s_apps.h"
#if (__VMS_VER < 70000000) /* FIONBIO used as a switch to enable ioctl,
and that isn't in VMS < 7.0 */
#undef FIONBIO
#endif
#if defined(NO_RSA) && !defined(NO_SSL2)
#define NO_SSL2
#endif
@ -94,8 +108,12 @@ static DH *get_dh512(void);
/* static void s_server_init(void);*/
#ifndef S_ISDIR
#if defined(VMS) && !defined(__DECC)
#define S_ISDIR(a) (((a) & S_IFMT) == S_IFDIR)
#else
#define S_ISDIR(a) (((a) & _S_IFMT) == _S_IFDIR)
#endif
#endif
#ifndef NO_DH
static unsigned char dh512_p[]={
@ -610,7 +628,13 @@ static int sv_body(char *hostname, int s, unsigned char *context)
FD_SET(fileno(stdin),&readfds);
#endif
FD_SET(s,&readfds);
i=select(width,&readfds,NULL,NULL,NULL);
/* Note: under VMS with SOCKETSHR the third parameter is
* currently of type (int *) whereas under other systems
* it is (void *) if you don't have a cast it will choke
* the compiler: if you do have a cast then you can either
* go for (int *) or (void *).
*/
i=select(width,(void *)&readfds,NULL,NULL,NULL);
if (i <= 0) continue;
if (FD_ISSET(fileno(stdin),&readfds))
{

View File

@ -56,6 +56,15 @@
* [including the GNU Public Licence.]
*/
/* With IPv6, it looks like Digital has mixed up the proper order of
recursive header file inclusion, resulting in the compiler complaining
that u_int isn't defined, but only if _POSIX_C_SOURCE is defined, which
is needed to have fileno() declared correctly... So let's define u_int */
#if defined(__DECC) && !defined(__U_INT)
#define __U_INT
typedef unsigned int u_int;
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -69,6 +78,14 @@
#include "s_apps.h"
#include <openssl/ssl.h>
#if (__VMS_VER < 70000000) /* FIONBIO used as a switch to enable ioctl,
and that isn't in VMS < 7.0 */
#undef FIONBIO
#endif
#ifdef VMS /* for vfork() */
#include <processes.h>
#endif
static struct hostent *GetHostByName(char *name);
int sock_init(void );
#ifdef WIN16
@ -206,7 +223,12 @@ int nbio_sock_error(int sock)
int size;
size=sizeof(int);
i=getsockopt(sock,SOL_SOCKET,SO_ERROR,(char *)&j,&size);
/* Note: under VMS with SOCKETSHR the third parameter is currently
* of type (int *) whereas under other systems it is (void *) if
* you don't have a cast it will choke the compiler: if you do
* have a cast then you can either go for (int *) or (void *).
*/
i=getsockopt(sock,SOL_SOCKET,SO_ERROR,(char *)&j,(void *)&size);
if (i < 0)
return(1);
else
@ -321,7 +343,7 @@ int init_server_long(int *sock, int port, char *ip)
{
int j = 1;
setsockopt(s, SOL_SOCKET, SO_REUSEADDR,
(const void *) &j, sizeof j);
(void *) &j, sizeof j);
}
#endif
if (bind(s,(struct sockaddr *)&server,sizeof(server)) == -1)
@ -365,7 +387,12 @@ redoit:
memset((char *)&from,0,sizeof(from));
len=sizeof(from);
ret=accept(acc_sock,(struct sockaddr *)&from,&len);
/* Note: under VMS with SOCKETSHR the third parameter is currently
* of type (int *) whereas under other systems it is (void *) if
* you don't have a cast it will choke the compiler: if you do
* have a cast then you can either go for (int *) or (void *).
*/
ret=accept(acc_sock,(struct sockaddr *)&from,(void *)&len);
if (ret == INVALID_SOCKET)
{
#ifdef WINDOWS
@ -589,7 +616,11 @@ int spawn(int argc, char **argv, int *in, int *out)
if ((pipe(p1) < 0) || (pipe(p2) < 0)) return(-1);
#ifdef VMS
if ((pid=vfork()) == 0)
#else
if ((pid=fork()) == 0)
#endif
{ /* child */
if (dup2(CHILD_WRITE,fileno(stdout)) < 0)
perror("dup2");

View File

@ -74,10 +74,10 @@
#ifdef NO_STDIO
#define APPS_WIN16
#endif
#define USE_SOCKETS
#include <openssl/x509.h>
#include <openssl/ssl.h>
#include <openssl/pem.h>
#define USE_SOCKETS
#include "apps.h"
#include "s_apps.h"
#include <openssl/err.h>
@ -86,11 +86,10 @@
#include "wintext.h"
#endif
#ifndef MSDOS
#if !defined(MSDOS) && (!defined(VMS) || defined(__DECC))
#define TIMES
#endif
#ifndef VMS
#ifndef _IRIX
#include <time.h>
#endif
@ -98,15 +97,15 @@
#include <sys/types.h>
#include <sys/times.h>
#endif
#else /* VMS */
#include <types.h>
struct tms {
time_t tms_utime;
time_t tms_stime;
time_t tms_uchild; /* I dunno... */
time_t tms_uchildsys; /* so these names are a guess :-) */
}
/* Depending on the VMS version, the tms structure is perhaps defined.
The __TMS macro will show if it was. If it wasn't defined, we should
undefine TIMES, since that tells the rest of the program how things
should be handled. -- Richard Levitte */
#if defined(VMS) && defined(__DECC) && !defined(__TMS)
#undef TIMES
#endif
#ifndef TIMES
#include <sys/timeb.h>
#endif
@ -138,6 +137,7 @@ struct tms {
#undef PROG
#define PROG s_time_main
#undef ioctl
#define ioctl ioctlsocket
#define SSL_CONNECT_NAME "localhost:4433"
@ -668,7 +668,13 @@ static SSL *doConnection(SSL *scon)
width=i+1;
FD_ZERO(&readfds);
FD_SET(i,&readfds);
select(width,&readfds,NULL,NULL,NULL);
/* Note: under VMS with SOCKETSHR the third parameter
* is currently of type (int *) whereas under other
* systems it is (void *) if you don't have a cast it
* will choke the compiler: if you do have a cast then
* you can either go for (int *) or (void *).
*/
select(width,(void *)&readfds,NULL,NULL,NULL);
continue;
}
break;

View File

@ -82,11 +82,10 @@
#include <openssl/rand.h>
#include <openssl/err.h>
#ifndef MSDOS
#if !defined(MSDOS) && (!defined(VMS) || defined(__DECC))
#define TIMES
#endif
#ifndef VMS
#ifndef _IRIX
#include <time.h>
#endif
@ -94,15 +93,15 @@
#include <sys/types.h>
#include <sys/times.h>
#endif
#else /* VMS */
#include <types.h>
struct tms {
time_t tms_utime;
time_t tms_stime;
time_t tms_uchild; /* I dunno... */
time_t tms_uchildsys; /* so these names are a guess :-) */
}
/* Depending on the VMS version, the tms structure is perhaps defined.
The __TMS macro will show if it was. If it wasn't defined, we should
undefine TIMES, since that tells the rest of the program how things
should be handled. -- Richard Levitte */
#if defined(VMS) && defined(__DECC) && !defined(__TMS)
#undef TIMES
#endif
#ifndef TIMES
#include <sys/timeb.h>
#endif

View File

@ -31,7 +31,7 @@ SDIRS= md2 md5 sha mdc2 hmac ripemd \
buffer bio stack lhash rand err objects \
evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp
GENERAL=Makefile README
GENERAL=Makefile README crypto-lib.com install.com
LIB= $(TOP)/libcrypto.a
LIBSRC= cryptlib.c mem.c cversion.c ex_data.c tmdiff.c cpt_err.c

View File

@ -58,6 +58,11 @@
#include <stdio.h>
#include <time.h>
#ifdef VMS
#include <descrip.h>
#include <lnmdef.h>
#include <starlet.h>
#endif
#include "cryptlib.h"
#include <openssl/asn1.h>
@ -181,6 +186,43 @@ ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t)
ts=&data;
#else
ts=gmtime(&t);
#endif
#ifdef VMS
if (ts == NULL)
{
static $DESCRIPTOR(tabnam,"LNM$DCL_LOGICAL");
static $DESCRIPTOR(lognam,"SYS$TIMEZONE_DIFFERENTIAL");
char result[256];
unsigned int reslen = 0;
struct {
short buflen;
short code;
void *bufaddr;
unsigned int *reslen;
} itemlist[] = {
{ 0, LNM$_STRING, 0, 0 },
{ 0, 0, 0, 0 },
};
int status;
/* Get the value for SYS$TIMEZONE_DIFFERENTIAL */
itemlist[0].buflen = sizeof(result);
itemlist[0].bufaddr = result;
itemlist[0].reslen = &reslen;
status = sys$trnlnm(0, &tabnam, &lognam, 0, itemlist);
if (!(status & 1))
return NULL;
result[reslen] = '\0';
/* Get the numerical value of the equivalence string */
status = atoi(result);
/* and use it to move time to GMT */
t -= status;
/* then convert the result to the time structure */
ts=(struct tm *)localtime(&t);
}
#endif
p=(char *)s->data;
if ((p == NULL) || (s->length < 14))

View File

@ -59,7 +59,7 @@
/* define PART1, PART2, PART3 or PART4 to build only with a few of the options.
* This is for machines with 64k code segment size restrictions. */
#ifndef MSDOS
#if !defined(MSDOS) && (!defined(VMS) || defined(__DECC))
#define TIMES
#endif
@ -71,7 +71,6 @@
extern void exit();
#endif
#include <signal.h>
#ifndef VMS
#ifndef _IRIX
#include <time.h>
#endif
@ -79,15 +78,15 @@ extern void exit();
#include <sys/types.h>
#include <sys/times.h>
#endif
#else /* VMS */
#include <types.h>
struct tms {
time_t tms_utime;
time_t tms_stime;
time_t tms_uchild; /* I dunno... */
time_t tms_uchildsys; /* so these names are a guess :-) */
}
/* Depending on the VMS version, the tms structure is perhaps defined.
The __TMS macro will show if it was. If it wasn't defined, we should
undefine TIMES, since that tells the rest of the program how things
should be handled. -- Richard Levitte */
#if defined(VMS) && defined(__DECC) && !defined(__TMS)
#undef TIMES
#endif
#ifndef TIMES
#include <sys/timeb.h>
#endif

View File

@ -59,7 +59,7 @@
/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */
/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */
#ifndef MSDOS
#if !defined(MSDOS) && (!defined(VMS) || defined(__DECC))
#define TIMES
#endif
@ -71,7 +71,6 @@
extern int exit();
#endif
#include <signal.h>
#ifndef VMS
#ifndef _IRIX
#include <time.h>
#endif
@ -79,15 +78,15 @@ extern int exit();
#include <sys/types.h>
#include <sys/times.h>
#endif
#else /* VMS */
#include <types.h>
struct tms {
time_t tms_utime;
time_t tms_stime;
time_t tms_uchild; /* I dunno... */
time_t tms_uchildsys; /* so these names are a guess :-) */
}
/* Depending on the VMS version, the tms structure is perhaps defined.
The __TMS macro will show if it was. If it wasn't defined, we should
undefine TIMES, since that tells the rest of the program how things
should be handled. -- Richard Levitte */
#if defined(VMS) && defined(__DECC) && !defined(__TMS)
#undef TIMES
#endif
#ifndef TIMES
#include <sys/timeb.h>
#endif

View File

@ -195,7 +195,7 @@ int BIO_sock_error(int sock)
* a cast it will choke the compiler: if you do have a cast then
* you can either go for (char *) or (void *).
*/
i=getsockopt(sock,SOL_SOCKET,SO_ERROR,(void *)&j,&size);
i=getsockopt(sock,SOL_SOCKET,SO_ERROR,(void *)&j,(void *)&size);
if (i < 0)
return(1);
else
@ -408,6 +408,8 @@ void BIO_sock_cleanup(void)
#endif
}
#if !defined(VMS) || __VMS_VER >= 70000000
int BIO_socket_ioctl(int fd, long type, unsigned long *arg)
{
int i;
@ -417,6 +419,7 @@ int BIO_socket_ioctl(int fd, long type, unsigned long *arg)
SYSerr(SYS_F_IOCTLSOCKET,get_last_socket_error());
return(i);
}
#endif /* __VMS_VER */
/* The reason I have implemented this instead of using sscanf is because
* Visual C 1.52c gives an unresolved external when linking a DLL :-( */
@ -593,7 +596,12 @@ int BIO_accept(int sock, char **addr)
memset((char *)&from,0,sizeof(from));
len=sizeof(from);
ret=accept(sock,(struct sockaddr *)&from,&len);
/* Note: under VMS with SOCKETSHR the third parameter is currently
* of type (int *) whereas under other systems it is (void *) if
* you don't have a cast it will choke the compiler: if you do
* have a cast then you can either go for (int *) or (void *).
*/
ret=accept(sock,(struct sockaddr *)&from,(void *)&len);
if (ret == INVALID_SOCKET)
{
SYSerr(SYS_F_ACCEPT,get_last_socket_error());

View File

@ -70,6 +70,11 @@
#define SOCKET_PROTOCOL IPPROTO_TCP
#endif
#if (__VMS_VER < 70000000) /* FIONBIO used as a switch to enable ioctl,
and that isn't in VMS < 7.0 */
#undef FIONBIO
#endif
typedef struct bio_accept_st
{
int state;

View File

@ -70,6 +70,12 @@
#define SOCKET_PROTOCOL IPPROTO_TCP
#endif
#if (__VMS_VER < 70000000) /* FIONBIO used as a switch to enable ioctl,
and that isn't in VMS < 7.0 */
#undef FIONBIO
#endif
typedef struct bio_connect_st
{
int state;

View File

@ -58,6 +58,7 @@
/* Written by David L. Jones <jonesd@kcgl1.eng.ohio-state.edu>
* Date: 22-JUL-1996
* Revised: 25-SEP-1997 Update for 0.8.1, BIO_CTRL_SET -> BIO_C_SET_FD
*/
/* VMS */
#include <stdio.h>
@ -68,7 +69,8 @@
#include <openssl/bio.h>
#include <iodef.h> /* VMS IO$_ definitions */
extern int SYS$QIOW();
#include <starlet.h>
typedef unsigned short io_channel;
/*************************************************************************/
struct io_status { short status, count; long flags; };
@ -114,11 +116,17 @@ BIO_METHOD *BIO_s_rtcp(void)
/*****************************************************************************/
/* Decnet I/O routines.
*/
#ifdef __DECC
#pragma message save
#pragma message disable DOLLARID
#endif
static int get ( io_channel chan, char *buffer, int maxlen, int *length )
{
int status;
struct io_status iosb;
status = SYS$QIOW ( 0, chan, IO$_READVBLK, &iosb, 0, 0,
status = sys$qiow ( 0, chan, IO$_READVBLK, &iosb, 0, 0,
buffer, maxlen, 0, 0, 0, 0 );
if ( (status&1) == 1 ) status = iosb.status;
if ( (status&1) == 1 ) *length = iosb.count;
@ -129,11 +137,16 @@ static int put ( io_channel chan, char *buffer, int length )
{
int status;
struct io_status iosb;
status = SYS$QIOW ( 0, chan, IO$_WRITEVBLK, &iosb, 0, 0,
status = sys$qiow ( 0, chan, IO$_WRITEVBLK, &iosb, 0, 0,
buffer, length, 0, 0, 0, 0 );
if ( (status&1) == 1 ) status = iosb.status;
return status;
}
#ifdef __DECC
#pragma message restore
#endif
/***************************************************************************/
static int rtcp_new(BIO *bi)
@ -243,7 +256,7 @@ static long rtcp_ctrl(BIO *b, int cmd, long num, char *ptr)
case BIO_CTRL_EOF:
ret = 1;
break;
case BIO_CTRL_SET:
case BIO_C_SET_FD:
b->num = num;
ret = 1;
break;

6695
crypto/bn/asm/vms.mar Normal file

File diff suppressed because it is too large Load Diff

View File

@ -68,6 +68,10 @@
extern "C" {
#endif
#ifdef VMS
#undef BN_LLONG /* experimental, so far... */
#endif
#define BN_MUL_COMBA
#define BN_SQR_COMBA
#define BN_RECURSION

View File

@ -231,16 +231,16 @@ extern "C" {
#endif
extern int bn_limit_bits;
extern int bn_limit_num; /* (1<<bn_limit_bits) */
EXTERN int bn_limit_bits;
EXTERN int bn_limit_num; /* (1<<bn_limit_bits) */
/* Recursive 'low' limit */
extern int bn_limit_bits_low;
extern int bn_limit_num_low; /* (1<<bn_limit_bits_low) */
EXTERN int bn_limit_bits_low;
EXTERN int bn_limit_num_low; /* (1<<bn_limit_bits_low) */
/* Do modified 'high' part calculation' */
extern int bn_limit_bits_high;
extern int bn_limit_num_high; /* (1<<bn_limit_bits_high) */
extern int bn_limit_bits_mont;
extern int bn_limit_num_mont; /* (1<<bn_limit_bits_mont) */
EXTERN int bn_limit_bits_high;
EXTERN int bn_limit_num_high; /* (1<<bn_limit_bits_high) */
EXTERN int bn_limit_bits_mont;
EXTERN int bn_limit_num_mont; /* (1<<bn_limit_bits_mont) */
BIGNUM *bn_expand2(BIGNUM *b, int bits);

View File

@ -71,14 +71,14 @@ const char *BN_version="Big Number" OPENSSL_VERSION_PTEXT;
* 7 - 128 == 4096
* 8 - 256 == 8192
*/
int bn_limit_bits=0;
int bn_limit_num=8; /* (1<<bn_limit_bits) */
int bn_limit_bits_low=0;
int bn_limit_num_low=8; /* (1<<bn_limit_bits_low) */
int bn_limit_bits_high=0;
int bn_limit_num_high=8; /* (1<<bn_limit_bits_high) */
int bn_limit_bits_mont=0;
int bn_limit_num_mont=8; /* (1<<bn_limit_bits_mont) */
GLOBAL int bn_limit_bits=0;
GLOBAL int bn_limit_num=8; /* (1<<bn_limit_bits) */
GLOBAL int bn_limit_bits_low=0;
GLOBAL int bn_limit_num_low=8; /* (1<<bn_limit_bits_low) */
GLOBAL int bn_limit_bits_high=0;
GLOBAL int bn_limit_num_high=8; /* (1<<bn_limit_bits_high) */
GLOBAL int bn_limit_bits_mont=0;
GLOBAL int bn_limit_num_mont=8; /* (1<<bn_limit_bits_mont) */
void BN_set_params(int mult, int high, int low, int mont)
{

View File

@ -69,11 +69,10 @@
#include <openssl/crypto.h>
#include <openssl/err.h>
#ifndef MSDOS
#if !defined(MSDOS) && (!defined(VMS) || defined(__DECC))
#define TIMES
#endif
#ifndef VMS
#ifndef _IRIX
#include <time.h>
#endif
@ -81,15 +80,15 @@
#include <sys/types.h>
#include <sys/times.h>
#endif
#else /* VMS */
#include <types.h>
struct tms {
time_t tms_utime;
time_t tms_stime;
time_t tms_uchild; /* I dunno... */
time_t tms_uchildsys; /* so these names are a guess :-) */
}
/* Depending on the VMS version, the tms structure is perhaps defined.
The __TMS macro will show if it was. If it wasn't defined, we should
undefine TIMES, since that tells the rest of the program how things
should be handled. -- Richard Levitte */
#if defined(VMS) && defined(__DECC) && !defined(__TMS)
#undef TIMES
#endif
#ifndef TIMES
#include <sys/timeb.h>
#endif

View File

@ -69,11 +69,10 @@
#include <openssl/crypto.h>
#include <openssl/err.h>
#ifndef MSDOS
#if !defined(MSDOS) && (!defined(VMS) || defined(__DECC))
#define TIMES
#endif
#ifndef VMS
#ifndef _IRIX
#include <time.h>
#endif
@ -81,15 +80,15 @@
#include <sys/types.h>
#include <sys/times.h>
#endif
#else /* VMS */
#include <types.h>
struct tms {
time_t tms_utime;
time_t tms_stime;
time_t tms_uchild; /* I dunno... */
time_t tms_uchildsys; /* so these names are a guess :-) */
}
/* Depending on the VMS version, the tms structure is perhaps defined.
The __TMS macro will show if it was. If it wasn't defined, we should
undefine TIMES, since that tells the rest of the program how things
should be handled. -- Richard Levitte */
#if defined(VMS) && defined(__DECC) && !defined(__TMS)
#undef TIMES
#endif
#ifndef TIMES
#include <sys/timeb.h>
#endif

66
crypto/bn/vms-helper.c Normal file
View File

@ -0,0 +1,66 @@
/* vms-helper.c */
/* ====================================================================
* Copyright (c) 1999 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* openssl-core@OpenSSL.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
* This product includes cryptographic software written by Eric Young
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com).
*
*/
#include <stdio.h>
#include "cryptlib.h"
#include "bn_lcl.h"
bn_div_words_abort(int i)
{
#if !defined(NO_STDIO) && !defined(WIN16)
fprintf(stderr,"Division would overflow (%d)\n",i);
#endif
abort();
}

View File

@ -60,6 +60,8 @@
#include <stdlib.h>
#endif
#include <openssl/e_os.h> /* EXTERN */
#undef c2l
#define c2l(c,l) (l =((unsigned long)(*((c)++))) , \
l|=((unsigned long)(*((c)++)))<< 8L, \
@ -213,12 +215,11 @@
}
#endif
extern CAST_LONG CAST_S_table0[256];
extern CAST_LONG CAST_S_table1[256];
extern CAST_LONG CAST_S_table2[256];
extern CAST_LONG CAST_S_table3[256];
extern CAST_LONG CAST_S_table4[256];
extern CAST_LONG CAST_S_table5[256];
extern CAST_LONG CAST_S_table6[256];
extern CAST_LONG CAST_S_table7[256];
EXTERN CAST_LONG CAST_S_table0[256];
EXTERN CAST_LONG CAST_S_table1[256];
EXTERN CAST_LONG CAST_S_table2[256];
EXTERN CAST_LONG CAST_S_table3[256];
EXTERN CAST_LONG CAST_S_table4[256];
EXTERN CAST_LONG CAST_S_table5[256];
EXTERN CAST_LONG CAST_S_table6[256];
EXTERN CAST_LONG CAST_S_table7[256];

View File

@ -55,7 +55,7 @@
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
CAST_LONG CAST_S_table0[256]={
GLOBAL CAST_LONG CAST_S_table0[256]={
0x30fb40d4,0x9fa0ff0b,0x6beccd2f,0x3f258c7a,
0x1e213f2f,0x9c004dd3,0x6003e540,0xcf9fc949,
0xbfd4af27,0x88bbbdb5,0xe2034090,0x98d09675,
@ -121,7 +121,7 @@ CAST_LONG CAST_S_table0[256]={
0x1a69e783,0x02cc4843,0xa2f7c579,0x429ef47d,
0x427b169c,0x5ac9f049,0xdd8f0f00,0x5c8165bf,
};
CAST_LONG CAST_S_table1[256]={
GLOBAL CAST_LONG CAST_S_table1[256]={
0x1f201094,0xef0ba75b,0x69e3cf7e,0x393f4380,
0xfe61cf7a,0xeec5207a,0x55889c94,0x72fc0651,
0xada7ef79,0x4e1d7235,0xd55a63ce,0xde0436ba,
@ -187,7 +187,7 @@ CAST_LONG CAST_S_table1[256]={
0x43d79572,0x7e6dd07c,0x06dfdf1e,0x6c6cc4ef,
0x7160a539,0x73bfbe70,0x83877605,0x4523ecf1,
};
CAST_LONG CAST_S_table2[256]={
GLOBAL CAST_LONG CAST_S_table2[256]={
0x8defc240,0x25fa5d9f,0xeb903dbf,0xe810c907,
0x47607fff,0x369fe44b,0x8c1fc644,0xaececa90,
0xbeb1f9bf,0xeefbcaea,0xe8cf1950,0x51df07ae,
@ -253,7 +253,7 @@ CAST_LONG CAST_S_table2[256]={
0xf7baefd5,0x4142ed9c,0xa4315c11,0x83323ec5,
0xdfef4636,0xa133c501,0xe9d3531c,0xee353783,
};
CAST_LONG CAST_S_table3[256]={
GLOBAL CAST_LONG CAST_S_table3[256]={
0x9db30420,0x1fb6e9de,0xa7be7bef,0xd273a298,
0x4a4f7bdb,0x64ad8c57,0x85510443,0xfa020ed1,
0x7e287aff,0xe60fb663,0x095f35a1,0x79ebf120,
@ -319,7 +319,7 @@ CAST_LONG CAST_S_table3[256]={
0x7ae5290c,0x3cb9536b,0x851e20fe,0x9833557e,
0x13ecf0b0,0xd3ffb372,0x3f85c5c1,0x0aef7ed2,
};
CAST_LONG CAST_S_table4[256]={
GLOBAL CAST_LONG CAST_S_table4[256]={
0x7ec90c04,0x2c6e74b9,0x9b0e66df,0xa6337911,
0xb86a7fff,0x1dd358f5,0x44dd9d44,0x1731167f,
0x08fbf1fa,0xe7f511cc,0xd2051b00,0x735aba00,
@ -385,7 +385,7 @@ CAST_LONG CAST_S_table4[256]={
0xe822fe15,0x88570983,0x750e6249,0xda627e55,
0x5e76ffa8,0xb1534546,0x6d47de08,0xefe9e7d4,
};
CAST_LONG CAST_S_table5[256]={
GLOBAL CAST_LONG CAST_S_table5[256]={
0xf6fa8f9d,0x2cac6ce1,0x4ca34867,0xe2337f7c,
0x95db08e7,0x016843b4,0xeced5cbc,0x325553ac,
0xbf9f0960,0xdfa1e2ed,0x83f0579d,0x63ed86b9,
@ -451,7 +451,7 @@ CAST_LONG CAST_S_table5[256]={
0xa2d762cf,0x49c92f54,0x38b5f331,0x7128a454,
0x48392905,0xa65b1db8,0x851c97bd,0xd675cf2f,
};
CAST_LONG CAST_S_table6[256]={
GLOBAL CAST_LONG CAST_S_table6[256]={
0x85e04019,0x332bf567,0x662dbfff,0xcfc65693,
0x2a8d7f6f,0xab9bc912,0xde6008a1,0x2028da1f,
0x0227bce7,0x4d642916,0x18fac300,0x50f18b82,
@ -517,7 +517,7 @@ CAST_LONG CAST_S_table6[256]={
0x518f36b2,0x84b1d370,0x0fedce83,0x878ddada,
0xf2a279c7,0x94e01be8,0x90716f4b,0x954b8aa3,
};
CAST_LONG CAST_S_table7[256]={
GLOBAL CAST_LONG CAST_S_table7[256]={
0xe216300d,0xbbddfffc,0xa7ebdabd,0x35648095,
0x7789f8b7,0xe6c1121b,0x0e241600,0x052ce8b5,
0x11a9cfb0,0xe5952f11,0xece7990a,0x9386d174,

View File

@ -59,7 +59,7 @@
/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */
/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */
#ifndef MSDOS
#if !defined(MSDOS) && (!defined(VMS) || defined(__DECC))
#define TIMES
#endif
@ -71,7 +71,6 @@
extern int exit();
#endif
#include <signal.h>
#ifndef VMS
#ifndef _IRIX
#include <time.h>
#endif
@ -79,15 +78,15 @@ extern int exit();
#include <sys/types.h>
#include <sys/times.h>
#endif
#else /* VMS */
#include <types.h>
struct tms {
time_t tms_utime;
time_t tms_stime;
time_t tms_uchild; /* I dunno... */
time_t tms_uchildsys; /* so these names are a guess :-) */
}
/* Depending on the VMS version, the tms structure is perhaps defined.
The __TMS macro will show if it was. If it wasn't defined, we should
undefine TIMES, since that tells the rest of the program how things
should be handled. -- Richard Levitte */
#if defined(VMS) && defined(__DECC) && !defined(__TMS)
#undef TIMES
#endif
#ifndef TIMES
#include <sys/timeb.h>
#endif

View File

@ -59,7 +59,7 @@
/* define PART1, PART2, PART3 or PART4 to build only with a few of the options.
* This is for machines with 64k code segment size restrictions. */
#ifndef MSDOS
#if !defined(MSDOS) && (!defined(VMS) || defined(__DECC))
#define TIMES
#endif
@ -71,7 +71,6 @@
extern void exit();
#endif
#include <signal.h>
#ifndef VMS
#ifndef _IRIX
#include <time.h>
#endif
@ -79,15 +78,15 @@ extern void exit();
#include <sys/types.h>
#include <sys/times.h>
#endif
#else /* VMS */
#include <types.h>
struct tms {
time_t tms_utime;
time_t tms_stime;
time_t tms_uchild; /* I dunno... */
time_t tms_uchildsys; /* so these names are a guess :-) */
}
/* Depending on the VMS version, the tms structure is perhaps defined.
The __TMS macro will show if it was. If it wasn't defined, we should
undefine TIMES, since that tells the rest of the program how things
should be handled. -- Richard Levitte */
#if defined(VMS) && defined(__DECC) && !defined(__TMS)
#undef TIMES
#endif
#ifndef TIMES
#include <sys/timeb.h>
#endif

View File

@ -105,7 +105,11 @@ LHASH *CONF_load(LHASH *h, char *file, long *line)
goto err;
}
#ifdef VMS
in=fopen(file,"r");
#else
in=fopen(file,"rb");
#endif
if (in == NULL)
{
SYSerr(SYS_F_FOPEN,get_last_sys_error());

View File

@ -73,10 +73,17 @@ extern "C" {
#include <openssl/err.h>
#include <openssl/opensslconf.h>
#ifndef VMS
#define X509_CERT_AREA OPENSSLDIR
#define X509_CERT_DIR OPENSSLDIR "/certs"
#define X509_CERT_FILE OPENSSLDIR "/cert.pem"
#define X509_PRIVATE_DIR OPENSSLDIR "/private"
#else
#define X509_CERT_AREA "SSLROOT:[000000]"
#define X509_CERT_DIR "SSLCERTS:"
#define X509_CERT_FILE "SSLCERTS:cert.pem"
#define X509_PRIVATE_DIR "SSLPRIVATE:"
#endif
#define X509_CERT_DIR_EVP "SSL_CERT_DIR"
#define X509_CERT_FILE_EVP "SSL_CERT_FILE"

1218
crypto/crypto-lib.com Normal file

File diff suppressed because it is too large Load Diff

View File

@ -231,7 +231,7 @@ typedef struct crypto_ex_data_func_st
#endif /* MDEBUG */
/* Case insensiteve linking causes problems.... */
#ifdef WIN16
#if defined(WIN16) || defined(VMS)
#define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings
#endif

1001
crypto/des/des-lib.com Normal file

File diff suppressed because it is too large Load Diff

View File

@ -59,7 +59,19 @@
#include <stdio.h>
#include <stdlib.h>
#ifndef MSDOS
#ifndef VMS
#include <unistd.h>
#else /* VMS */
#ifdef __DECC
#include <unistd.h>
#if __CRTL_VER < 70000000
#define RAND
#endif
#else /* not __DECC */
#include <math.h>
#define RAND
#endif /* __DECC */
#endif /* VMS */
#else
#include <io.h>
#define RAND

View File

@ -69,6 +69,12 @@ extern "C" {
#include <stdio.h>
#include <openssl/opensslconf.h> /* DES_LONG */
#include <openssl/e_os.h> /* EXTERN */
#ifdef VMS
#undef des_init_random_number_generator
#define des_init_random_number_generator des_init_random_num_generator
#endif
typedef unsigned char des_cblock[8];
typedef unsigned char *des_cblocks; /* Unfortunately there's no way to say that
@ -132,9 +138,9 @@ typedef des_key_schedule bit_64;
#define des_fixup_key_parity des_set_odd_parity
#define des_check_key_parity check_parity
extern int des_check_key; /* defaults to false */
extern int des_rw_mode; /* defaults to DES_PCBC_MODE */
extern int des_set_weak_key_flag; /* set the weak key flag */
EXTERN int des_check_key; /* defaults to false */
EXTERN int des_rw_mode; /* defaults to DES_PCBC_MODE */
EXTERN int des_set_weak_key_flag; /* set the weak key flag */
const char *des_options(void);
void des_ecb3_encrypt(const des_cblock input, des_cblock output,

View File

@ -68,8 +68,10 @@
#include <stdio.h>
#include <stdlib.h>
#ifndef MSDOS
#if !defined(VMS) || defined(__DECC)
#include <unistd.h>
#endif
#endif
#include <openssl/des.h>
#include <openssl/opensslconf.h>
@ -84,6 +86,17 @@
#endif
#endif
#ifdef VMS
#ifndef __DECC
#include <math.h>
#define RAND
#else
#if __CRTL_VER < 70000000
#define RAND
#endif
#endif
#endif
#if defined(__STDC__) || defined(VMS) || defined(M_XENIX) || defined(MSDOS)
#include <string.h>
#endif
@ -418,7 +431,7 @@
PERM_OP(l,r,tt, 4,0x0f0f0f0fL); \
}
extern const DES_LONG des_SPtrans[8][64];
EXTERN const DES_LONG des_SPtrans[8][64];
void fcrypt_body(DES_LONG *out,des_key_schedule ks,
DES_LONG Eswap0, DES_LONG Eswap1);

View File

@ -59,7 +59,7 @@
/* define PART1, PART2, PART3 or PART4 to build only with a few of the options.
* This is for machines with 64k code segment size restrictions. */
#ifndef MSDOS
#if !defined(MSDOS) && (!defined(VMS) || defined(__DECC))
#define TIMES
#endif
@ -71,7 +71,6 @@
extern void exit();
#endif
#include <signal.h>
#ifndef VMS
#ifndef _IRIX
#include <time.h>
#endif
@ -79,19 +78,20 @@ extern void exit();
#include <sys/types.h>
#include <sys/times.h>
#endif
#else /* VMS */
#include <types.h>
struct tms {
time_t tms_utime;
time_t tms_stime;
time_t tms_uchild; /* I dunno... */
time_t tms_uchildsys; /* so these names are a guess :-) */
}
/* Depending on the VMS version, the tms structure is perhaps defined.
The __TMS macro will show if it was. If it wasn't defined, we should
undefine TIMES, since that tells the rest of the program how things
should be handled. -- Richard Levitte */
#if defined(VMS) && defined(__DECC) && !defined(__TMS)
#undef TIMES
#endif
#ifndef TIMES
#include <sys/timeb.h>
#endif
#if defined(sun) || defined(__ultrix)
#define _POSIX_SOURCE
#include <limits.h>

View File

@ -56,5 +56,5 @@
* [including the GNU Public Licence.]
*/
extern char *DES_version; /* SSLeay version string */
extern char *libdes_version; /* old libdes version string */
EXTERN char *DES_version; /* SSLeay version string */
EXTERN char *libdes_version; /* old libdes version string */

View File

@ -65,7 +65,9 @@
#include <stdio.h>
#include <stdlib.h>
#ifndef MSDOS
#if !defined(VMS) || defined(__DECC)
#include <unistd.h>
#endif /* VMS */
#else
#include <io.h>
#endif

View File

@ -60,8 +60,8 @@
#include "spr.h"
#include <openssl/opensslv.h>
const char *libdes_version="libdes v 3.24 - 20-Apr-1996 - eay";
const char *DES_version="DES" OPENSSL_VERSION_PTEXT;
GLOBAL const char *libdes_version="libdes v 3.24 - 20-Apr-1996 - eay";
GLOBAL const char *DES_version="DES" OPENSSL_VERSION_PTEXT;
const char *des_options(void)
{

View File

@ -63,7 +63,7 @@
/* This has some uglies in it but it works - even over sockets. */
/*extern int errno;*/
int des_rw_mode=DES_PCBC_MODE;
GLOBAL int des_rw_mode=DES_PCBC_MODE;
/*

View File

@ -86,6 +86,13 @@
#include <setjmp.h>
#include <errno.h>
#ifdef VMS /* prototypes for sys$whatever */
#include <starlet.h>
#ifdef __DECC
#pragma message disable DOLLARID
#endif
#endif
#ifdef WIN_CONSOLE_BUG
#include <windows.h>
#include <wincon.h>
@ -275,10 +282,10 @@ int des_read_pw(char *buf, char *buff, int size, const char *prompt,
memcpy(&(tty_new),&(tty_orig),sizeof(tty_orig));
#endif
#ifdef VMS
status = SYS$ASSIGN(&terminal,&channel,0,0);
status = sys$assign(&terminal,&channel,0,0);
if (status != SS$_NORMAL)
return(-1);
status=SYS$QIOW(0,channel,IO$_SENSEMODE,&iosb,0,0,tty_orig,12,0,0,0,0);
status=sys$qiow(0,channel,IO$_SENSEMODE,&iosb,0,0,tty_orig,12,0,0,0,0);
if ((status != SS$_NORMAL) || (iosb.iosb$w_value != SS$_NORMAL))
return(-1);
#endif
@ -298,7 +305,7 @@ int des_read_pw(char *buf, char *buff, int size, const char *prompt,
tty_new[0] = tty_orig[0];
tty_new[1] = tty_orig[1] | TT$M_NOECHO;
tty_new[2] = tty_orig[2];
status = SYS$QIOW(0,channel,IO$_SETMODE,&iosb,0,0,tty_new,12,0,0,0,0);
status = sys$qiow(0,channel,IO$_SETMODE,&iosb,0,0,tty_new,12,0,0,0,0);
if ((status != SS$_NORMAL) || (iosb.iosb$w_value != SS$_NORMAL))
return(-1);
#endif
@ -344,19 +351,19 @@ error:
perror("fgets(tty)");
#endif
/* What can we do if there is an error? */
#if defined(TTY_set) && !defined(VMS)
#if defined(TTY_set) && !defined(VMS)
if (ps >= 2) TTY_set(fileno(tty),&tty_orig);
#endif
#ifdef VMS
if (ps >= 2)
status = SYS$QIOW(0,channel,IO$_SETMODE,&iosb,0,0
status = sys$qiow(0,channel,IO$_SETMODE,&iosb,0,0
,tty_orig,12,0,0,0,0);
#endif
if (ps >= 1) popsig();
if (stdin != tty) fclose(tty);
#ifdef VMS
status = SYS$DASSGN(channel);
status = sys$dassgn(channel);
#endif
return(!ok);
}

View File

@ -68,7 +68,7 @@
#include "sk.h"
static int check_parity(const des_cblock key);
int des_check_key=0;
GLOBAL int des_check_key=0;
void des_set_odd_parity(des_cblock key)
{

View File

@ -59,7 +59,7 @@
/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */
/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */
#ifndef MSDOS
#if !defined(MSDOS) && (!defined(VMS) || defined(__DECC))
#define TIMES
#endif
@ -71,7 +71,6 @@
extern int exit();
#endif
#include <signal.h>
#ifndef VMS
#ifndef _IRIX
#include <time.h>
#endif
@ -79,15 +78,15 @@ extern int exit();
#include <sys/types.h>
#include <sys/times.h>
#endif
#else /* VMS */
#include <types.h>
struct tms {
time_t tms_utime;
time_t tms_stime;
time_t tms_uchild; /* I dunno... */
time_t tms_uchildsys; /* so these names are a guess :-) */
}
/* Depending on the VMS version, the tms structure is perhaps defined.
The __TMS macro will show if it was. If it wasn't defined, we should
undefine TIMES, since that tells the rest of the program how things
should be handled. -- Richard Levitte */
#if defined(VMS) && defined(__DECC) && !defined(__TMS)
#undef TIMES
#endif
#ifndef TIMES
#include <sys/timeb.h>
#endif

View File

@ -56,7 +56,7 @@
* [including the GNU Public Licence.]
*/
const DES_LONG des_SPtrans[8][64]={
GLOBAL const DES_LONG des_SPtrans[8][64]={
{
/* nibble 0 */
0x02080800L, 0x00080000L, 0x02000002L, 0x02080802L,

View File

@ -58,7 +58,7 @@
#include "des_locl.h"
extern int des_check_key;
EXTERN int des_check_key;
void des_string_to_key(const char *str, des_cblock key)
{

View File

@ -1,90 +0,0 @@
$! --- VMS.com ---
$!
$ GoSub defines
$ GoSub linker_options
$ If (P1 .nes. "")
$ Then
$ GoSub 'P1'
$ Else
$ GoSub lib
$ GoSub destest
$ GoSub rpw
$ GoSub speed
$ GoSub des
$ EndIF
$!
$ Exit
$!
$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$!
$DEFINES:
$ OPT_FILE := "VAX_LINKER_OPTIONS.OPT"
$!
$ CC_OPTS := "/NODebug/OPTimize/NOWarn"
$!
$ LINK_OPTS := "/NODebug/NOTraceback/Contiguous"
$!
$ OBJS = "cbc_cksm.obj,cbc_enc.obj,ecb_enc.obj,pcbc_enc.obj," + -
"qud_cksm.obj,rand_key.obj,read_pwd.obj,set_key.obj," + -
"str2key.obj,enc_read.obj,enc_writ.obj,fcrypt.obj," + -
"cfb_enc.obj,ecb3_enc.obj,ofb_enc.obj"
$!
$ LIBDES = "cbc_cksm.c,cbc_enc.c,ecb_enc.c,enc_read.c," + -
"enc_writ.c,pcbc_enc.c,qud_cksm.c,rand_key.c," + -
"read_pwd.c,set_key.c,str2key.c,fcrypt.c," + -
"cfb_enc.c,ecb3_enc.c,ofb_enc.c"
$ Return
$!
$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$!
$LINKER_OPTIONS:
$ If (f$search(OPT_FILE) .eqs. "")
$ Then
$ Create 'OPT_FILE'
$DECK
! Default system options file to link against the sharable C runtime library
!
Sys$Share:VAXcRTL.exe/Share
$EOD
$ EndIF
$ Return
$!
$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$!
$LIB:
$ CC 'CC_OPTS' 'LIBDES'
$ If (f$search("LIBDES.OLB") .nes. "")
$ Then Library /Object /Replace libdes 'OBJS'
$ Else Library /Create /Object libdes 'OBJS'
$ EndIF
$ Return
$!
$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$!
$DESTEST:
$ CC 'CC_OPTS' destest
$ Link 'link_opts' /Exec=destest destest.obj,libdes/LIBRARY,'opt_file'/Option
$ Return
$!
$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$!
$RPW:
$ CC 'CC_OPTS' rpw
$ Link 'link_opts' /Exec=rpw rpw.obj,libdes/LIBRARY,'opt_file'/Option
$ Return
$!
$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$!
$SPEED:
$ CC 'CC_OPTS' speed
$ Link 'link_opts' /Exec=speed speed.obj,libdes/LIBRARY,'opt_file'/Option
$ Return
$!
$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$!
$DES:
$ CC 'CC_OPTS' des
$ Link 'link_opts' /Exec=des des.obj,libdes/LIBRARY,'opt_file'/Option
$ Return

View File

@ -59,7 +59,7 @@
/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */
/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */
#ifndef MSDOS
#if !defined(MSDOS) && (!defined(VMS) || defined(__DECC))
#define TIMES
#endif
@ -71,7 +71,6 @@
extern int exit();
#endif
#include <signal.h>
#ifndef VMS
#ifndef _IRIX
#include <time.h>
#endif
@ -79,15 +78,15 @@ extern int exit();
#include <sys/types.h>
#include <sys/times.h>
#endif
#else /* VMS */
#include <types.h>
struct tms {
time_t tms_utime;
time_t tms_stime;
time_t tms_uchild; /* I dunno... */
time_t tms_uchildsys; /* so these names are a guess :-) */
}
/* Depending on the VMS version, the tms structure is perhaps defined.
The __TMS macro will show if it was. If it wasn't defined, we should
undefine TIMES, since that tells the rest of the program how things
should be handled. -- Richard Levitte */
#if defined(VMS) && defined(__DECC) && !defined(__TMS)
#undef TIMES
#endif
#ifndef TIMES
#include <sys/timeb.h>
#endif

128
crypto/install.com Normal file
View File

@ -0,0 +1,128 @@
$! INSTALL.COM -- Installs the files in a given directory tree
$!
$! Author: Richard Levitte <richard@levitte.org>
$! Time of creation: 22-MAY-1998 10:13
$!
$! P1 root of the directory tree
$!
$ IF P1 .EQS. ""
$ THEN
$ WRITE SYS$OUTPUT "First argument missing."
$ WRITE SYS$OUTPUT "Should be the directory where you want things installed."
$ EXIT
$ 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'.] /TRANS=CONC
$ DEFINE/NOLOG WRK_SSLVLIB WRK_SSLROOT:[VAX_LIB]
$ DEFINE/NOLOG WRK_SSLALIB WRK_SSLROOT:[ALPHA_LIB]
$ DEFINE/NOLOG WRK_SSLINCLUDE WRK_SSLROOT:[INCLUDE]
$
$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLROOT:[000000]
$ IF F$PARSE("WRK_SSLVLIB:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLVLIB:
$ IF F$PARSE("WRK_SSLALIB:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLALIB:
$ IF F$PARSE("WRK_SSLINCLUDE:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLINCLUDE:
$
$ SDIRS := ,MD2,MD5,SHA,MDC2,HMAC,RIPEMD,-
DES,RC2,RC4,RC5,IDEA,BF,CAST,-
BN,RSA,DSA,DH,-
BUFFER,BIO,STACK,LHASH,RAND,ERR,OBJECTS,-
EVP,ASN1,PEM,X509,X509V3,-
CONF,TXT_DB,PKCS7,PKCS12,COMP
$ EXHEADER_ := crypto.h,tmdiff.h,opensslv.h,opensslconf.h
$ EXHEADER_MD2 := md2.h
$ EXHEADER_MD5 := md5.h
$ EXHEADER_SHA := sha.h
$ EXHEADER_MDC2 := mdc2.h
$ EXHEADER_HMAC := hmac.h
$ EXHEADER_RIPEMD := ripemd.h
$ EXHEADER_DES := des.h
$ EXHEADER_RC2 := rc2.h
$ EXHEADER_RC4 := rc4.h
$ EXHEADER_RC5 := rc5.h
$ EXHEADER_IDEA := idea.h
$ EXHEADER_BF := blowfish.h
$ EXHEADER_CAST := cast.h
$ EXHEADER_BN := bn.h
$ EXHEADER_RSA := rsa.h
$ EXHEADER_DSA := dsa.h
$ EXHEADER_DH := dh.h
$ EXHEADER_BUFFER := buffer.h
$ EXHEADER_BIO := bio.h
$ EXHEADER_STACK := stack.h,safestack.h
$ EXHEADER_LHASH := lhash.h
$ EXHEADER_RAND := rand.h
$ EXHEADER_ERR := err.h
$ EXHEADER_OBJECTS := objects.h
$ EXHEADER_EVP := evp.h
$ EXHEADER_ASN1 := asn1.h,asn1_mac.h
$ EXHEADER_PEM := pem.h,pem2.h
$ EXHEADER_X509 := x509.h,x509_vfy.h
$ EXHEADER_X509V3 := x509v3.h
$ EXHEADER_CONF := conf.h
$ EXHEADER_TXT_DB := txt_db.h
$ EXHEADER_PKCS7 := pkcs7.h
$ EXHEADER_PKCS12 := pkcs12.h
$ EXHEADER_COMP := comp.h
$ LIBS := LIBCRYPTO
$
$ VEXE_DIR := [-.VAX.EXE.CRYPTO]
$ AEXE_DIR := [-.AXP.EXE.CRYPTO]
$
$ I = 0
$ LOOP_SDIRS:
$ D = F$EDIT(F$ELEMENT(I, ",", SDIRS),"TRIM")
$ I = I + 1
$ IF D .EQS. "," THEN GOTO LOOP_SDIRS_END
$ tmp = EXHEADER_'D'
$ IF D .EQS. ""
$ THEN
$ COPY 'tmp' WRK_SSLINCLUDE: /LOG
$ ELSE
$ COPY [.'D']'tmp' WRK_SSLINCLUDE: /LOG
$ ENDIF
$ GOTO LOOP_SDIRS
$ LOOP_SDIRS_END:
$
$ I = 0
$ LOOP_LIB:
$ E = F$EDIT(F$ELEMENT(I, ",", LIBS),"TRIM")
$ I = I + 1
$ IF E .EQS. "," THEN GOTO LOOP_LIB_END
$ SET NOON
$ IF F$SEARCH(VEXE_DIR+E+".OLB") .NES. ""
$ THEN
$ COPY 'VEXE_DIR''E'.OLB WRK_SSLVLIB:'E'.OLB/log
$ SET FILE/PROT=W:RE WRK_SSLVLIB:'E'.OLB
$ ENDIF
$ ! Preparing for the time when we have shareable images
$ IF F$SEARCH(VEXE_DIR+E+".EXE") .NES. ""
$ THEN
$ COPY 'VEXE_DIR''E'.EXE WRK_SSLVLIB:'E'.EXE/log
$ SET FILE/PROT=W:RE WRK_SSLVLIB:'E'.EXE
$ ENDIF
$ IF F$SEARCH(AEXE_DIR+E+".OLB") .NES. ""
$ THEN
$ COPY 'AEXE_DIR''E'.OLB WRK_SSLALIB:'E'.OLB/log
$ SET FILE/PROT=W:RE WRK_SSLALIB:'E'.OLB
$ ENDIF
$ ! Preparing for the time when we have shareable images
$ IF F$SEARCH(AEXE_DIR+E+".EXE") .NES. ""
$ THEN
$ COPY 'AEXE_DIR''E'.EXE WRK_SSLALIB:'E'.EXE/log
$ SET FILE/PROT=W:RE WRK_SSLALIB:'E'.EXE
$ ENDIF
$ SET ON
$ GOTO LOOP_LIB
$ LOOP_LIB_END:
$
$ EXIT

View File

@ -1,31 +0,0 @@
$!
$! Compile crypto.c as several subset modules and insert in crypto-xxx.olb.
$! If P1 is specifed, it specifies alternate list of subsets to compile.
$!
$ libname = "CRYPTO-AXP.OLB"
$ subset_list = "LIB,ASN1,BN,BUFFER,CONF,DES,DH,DSA,ERROR,EVP,IDEA,LHASH,MD," + -
"METH,OBJECTS,PEM,RAND,RC,RSA,SHA,STACK,TXT_DB,X509"
$ if p1 .nes. "" then subset_list = p1
$!
$ if f$getsyi("CPU") .lt. 128 then libname = "CRYPTO-VAX.OLB"
$ if f$search(libname) .eqs. "" then library/create/object/log 'libname'
$!
$ cc = "cc/include=[-.include]/prefix=all" + P2
$!
$ i = 0
$ next_subset:
$ subset = f$element(i,",",subset_list)
$ if subset .eqs. "," then goto done
$ i = i + 1
$ create crypto_'subset'.subset
#include "crypto.c"
$ ofile = "sys$disk:[]crypto_" + subset + ".obj"
$ on warning then goto next_subset
$ write sys$output "Compiling ", ofile
$ cc /object='ofile' crypto_'subset'.subset -
/define=(CRYPTO_SUBSET,CRYPTO_'subset'_SUBSET)
$ library/replace/log 'libname'/module=CRYPTO_'subset' 'ofile'
$ goto next_subset
$!
$ done:
$ exit

View File

@ -4,9 +4,11 @@
/* Generate 80386 code? */
#undef I386_ONLY
#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
#define OPENSSLDIR "/usr/local/ssl"
#endif
#endif
#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
#define IDEA_INT unsigned int

View File

@ -368,6 +368,16 @@ void PEM_dek_info(char *buf, const char *type, int len, char *str);
#ifndef SSLEAY_MACROS
#ifdef VMS
/* Too long names need to be abbreviated to at most 31 characters */
#undef PEM_write_NETSCAPE_CERT_SEQUENCE
#define PEM_write_NETSCAPE_CERT_SEQUENCE PEM_write_NETSCAPE_CERT_SEQ
#undef PEM_read_bio_NETSCAPE_CERT_SEQUENCE
#define PEM_read_bio_NETSCAPE_CERT_SEQUENCE PEM_read_bio_NETSCAPE_CERT_SEQ
#undef PEM_write_bio_NETSCAPE_CERT_SEQUENCE
#define PEM_write_bio_NETSCAPE_CERT_SEQUENCE PEM_write_bio_NETSCAPE_CERT_SEQ
#endif
#ifndef WIN16
X509 *PEM_read_X509(FILE *fp,X509 **x,int (*cb)());
X509_REQ *PEM_read_X509_REQ(FILE *fp,X509_REQ **x,int (*cb)());

View File

@ -56,6 +56,7 @@
* [including the GNU Public Licence.]
*/
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -113,7 +114,17 @@ int RAND_write_file(const char *file)
FILE *out;
int n;
out=fopen(file,"wb");
/* Under VMS, fopen(file, "wb") will craete a new version of the
same file. This is not good, so let's try updating an existing
one, and create file only if it doesn't already exist. This
should be completely harmless on system that have no file
versions. -- Richard Levitte */
out=fopen(file,"rb+");
if (out == NULL && errno == ENOENT)
{
errno = 0;
out=fopen(file,"wb");
}
if (out == NULL) goto err;
chmod(file,0600);
n=RAND_DATA;
@ -156,7 +167,9 @@ char *RAND_file_name(char *buf, int size)
if (((int)(strlen(s)+strlen(RFILE)+2)) > size)
return(RFILE);
strcpy(buf,s);
#ifndef VMS
strcat(buf,"/");
#endif
strcat(buf,RFILE);
ret=buf;
}

View File

@ -59,7 +59,7 @@
/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */
/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */
#ifndef MSDOS
#if !defined(MSDOS) && (!defined(VMS) || defined(__DECC))
#define TIMES
#endif
@ -71,7 +71,6 @@
extern int exit();
#endif
#include <signal.h>
#ifndef VMS
#ifndef _IRIX
#include <time.h>
#endif
@ -79,15 +78,15 @@ extern int exit();
#include <sys/types.h>
#include <sys/times.h>
#endif
#else /* VMS */
#include <types.h>
struct tms {
time_t tms_utime;
time_t tms_stime;
time_t tms_uchild; /* I dunno... */
time_t tms_uchildsys; /* so these names are a guess :-) */
}
/* Depending on the VMS version, the tms structure is perhaps defined.
The __TMS macro will show if it was. If it wasn't defined, we should
undefine TIMES, since that tells the rest of the program how things
should be handled. -- Richard Levitte */
#if defined(VMS) && defined(__DECC) && !defined(__TMS)
#undef TIMES
#endif
#ifndef TIMES
#include <sys/timeb.h>
#endif

View File

@ -59,7 +59,7 @@
/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */
/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */
#ifndef MSDOS
#if !defined(MSDOS) && (!defined(VMS) || defined(__DECC))
#define TIMES
#endif
@ -71,7 +71,6 @@
extern int exit();
#endif
#include <signal.h>
#ifndef VMS
#ifndef _IRIX
#include <time.h>
#endif
@ -79,15 +78,15 @@ extern int exit();
#include <sys/types.h>
#include <sys/times.h>
#endif
#else /* VMS */
#include <types.h>
struct tms {
time_t tms_utime;
time_t tms_stime;
time_t tms_uchild; /* I dunno... */
time_t tms_uchildsys; /* so these names are a guess :-) */
}
/* Depending on the VMS version, the tms structure is perhaps defined.
The __TMS macro will show if it was. If it wasn't defined, we should
undefine TIMES, since that tells the rest of the program how things
should be handled. -- Richard Levitte */
#if defined(VMS) && defined(__DECC) && !defined(__TMS)
#undef TIMES
#endif
#ifndef TIMES
#include <sys/timeb.h>
#endif

View File

@ -59,7 +59,7 @@
/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */
/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */
#ifndef MSDOS
#if !defined(MSDOS) && (!defined(VMS) || defined(__DECC))
#define TIMES
#endif
@ -71,7 +71,6 @@
extern int exit();
#endif
#include <signal.h>
#ifndef VMS
#ifndef _IRIX
#include <time.h>
#endif
@ -79,15 +78,15 @@ extern int exit();
#include <sys/types.h>
#include <sys/times.h>
#endif
#else /* VMS */
#include <types.h>
struct tms {
time_t tms_utime;
time_t tms_stime;
time_t tms_uchild; /* I dunno... */
time_t tms_uchildsys; /* so these names are a guess :-) */
}
/* Depending on the VMS version, the tms structure is perhaps defined.
The __TMS macro will show if it was. If it wasn't defined, we should
undefine TIMES, since that tells the rest of the program how things
should be handled. -- Richard Levitte */
#if defined(VMS) && defined(__DECC) && !defined(__TMS)
#undef TIMES
#endif
#ifndef TIMES
#include <sys/timeb.h>
#endif

View File

@ -67,27 +67,27 @@
#ifndef MSDOS
# ifndef WIN32
# define TIMES
# if !defined(VMS) || defined(__DECC)
# define TIMES
# endif
# endif
#endif
#ifndef VMS
# ifndef _IRIX
# include <time.h>
# endif
# ifdef TIMES
# include <sys/types.h>
# include <sys/times.h>
# endif
#else /* VMS */
# include <types.h>
struct tms {
time_t tms_utime;
time_t tms_stime;
time_t tms_uchild; /* I dunno... */
time_t tms_uchildsys; /* so these names are a guess :-) */
}
#endif /* VMS */
#ifndef _IRIX
# include <time.h>
#endif
#ifdef TIMES
# include <sys/types.h>
# include <sys/times.h>
#endif
/* Depending on the VMS version, the tms structure is perhaps defined.
The __TMS macro will show if it was. If it wasn't defined, we should
undefine TIMES, since that tells the rest of the program how things
should be handled. -- Richard Levitte */
#if defined(VMS) && defined(__DECC) && !defined(__TMS)
#undef TIMES
#endif
#if defined(sun) || defined(__ultrix)
#define _POSIX_SOURCE

View File

@ -63,6 +63,11 @@
extern "C" {
#endif
#ifdef VMS
#undef X509_REVOKED_get_ext_by_critical
#define X509_REVOKED_get_ext_by_critical X509_REVOKED_get_ext_by_critic
#endif
#include <openssl/stack.h>
#include <openssl/asn1.h>
#include <openssl/safestack.h>

View File

@ -259,6 +259,21 @@ struct x509_store_state_st /* X509_STORE_CTX */
/* The application is not happy */
#define X509_V_ERR_APPLICATION_VERIFICATION 50
/* These functions are being redefined in another directory,
and clash when the linker is case-insensitive, so let's
hide them a little, by giving them an extra 'o' at the
beginning of the name... */
#ifdef VMS
#undef X509v3_cleanup_extensions
#define X509v3_cleanup_extensions oX509v3_cleanup_extensions
#undef X509v3_add_extension
#define X509v3_add_extension oX509v3_add_extension
#undef X509v3_add_netscape_extensions
#define X509v3_add_netscape_extensions oX509v3_add_netscape_extensions
#undef X509v3_add_standard_extensions
#define X509v3_add_standard_extensions oX509v3_add_standard_extensions
#endif
#ifdef HEADER_LHASH_H
X509_OBJECT *X509_OBJECT_retrieve_by_subject(LHASH *h,int type,X509_NAME *name);
#endif

92
e_os.h
View File

@ -192,27 +192,68 @@ extern "C" {
#else /* The non-microsoft world world */
# ifdef VMS
# include <unixlib.h>
# else
# include <unistd.h>
# if defined(__VMS) && !defined(VMS)
# define VMS 1
# endif
# define OPENSSL_CONF "openssl.cnf"
# define SSLEAY_CONF OPENSSL_CONF
# define RFILE ".rnd"
# define LIST_SEPARATOR_CHAR ':'
# ifndef MONOLITH
# define EXIT(n) exit(n); return(n)
# ifdef VMS
/* some programs don't include stdlib, so exit() and others give implicit
function warnings */
# include <stdlib.h>
# if defined(__DECC)
# include <unistd.h>
# else
# include <unixlib.h>
# endif
# define OPENSSL_CONF "openssl.cnf"
# define SSLEAY_CONF OPENSSL_CONF
# define RFILE ".rnd"
# define LIST_SEPARATOR_CHAR ','
# define NUL_DEV "NLA0:"
/* We need to do this, because DEC C converts exit code 0 to 1, but not 1
to 0. We will convert 1 to 3! Also, add the inhibit message bit... */
# ifndef MONOLITH
# define EXIT(n) do { int __VMS_EXIT = n; \
if (__VMS_EXIT == 1) __VMS_EXIT = 3; \
__VMS_EXIT |= 0x10000000; \
exit(n); return(n); } while(0)
# else
# define EXIT(n) do { int __VMS_EXIT = n; \
if (__VMS_EXIT == 1) __VMS_EXIT = 3; \
__VMS_EXIT |= 0x10000000; \
return(n); } while(0)
# endif
# else
# define EXIT(n) return(n)
# include <unistd.h>
# define OPENSSL_CONF "openssl.cnf"
# define SSLEAY_CONF OPENSSL_CONF
# define RFILE ".rnd"
# define LIST_SEPARATOR_CHAR ':'
# define NUL_DEV "/dev/null"
# ifndef MONOLITH
# define EXIT(n) exit(n); return(n)
# else
# define EXIT(n) return(n)
# endif
# endif
# define NUL_DEV "/dev/null"
# define SSLeay_getpid() getpid()
#endif
/* Definitions of GLOBAL and EXTERN, to define and declare certain global
symbols that, with some compilers under VMS, have to be defined and
declared explicitely with globaldef and globalref. On other OS:es,
these macros are defined with something sensible. */
#if defined(VMS) && !defined(__DECC)
#define EXTERN globalref
#define GLOBAL globaldef
#else
#define EXTERN extern
#define GLOBAL
#endif
/*************/
#ifdef USE_SOCKETS
@ -236,16 +277,21 @@ extern HINSTANCE _hInstance;
# else
# include <sys/types.h>
# ifndef VMS
/* unix world */
# include <netdb.h>
# include <sys/types.h>
# include <sys/param.h>
# endif
# include <sys/time.h> /* Needed under linux for FD_XXX */
# include <netdb.h>
# if defined(VMS) && !defined(__DECC)
# include <socket.h>
# include <in.h>
# else
# include <sys/socket.h>
# ifdef FILIO_H
# include <sys/filio.h> /* Added for FIONBIO under unixware */
# endif
# include <sys/param.h>
# include <sys/time.h> /* Needed under linux for FD_XXX */
# include <netinet/in.h>
# endif
@ -261,11 +307,21 @@ extern HINSTANCE _hInstance;
# if defined(sun)
# include <sys/filio.h>
# else
# include <sys/ioctl.h>
# ifndef VMS
# include <sys/ioctl.h>
# else
/* ioctl is only in VMS > 7.0 and when socketshr is not used */
# if !defined(TCPIP_TYPE_SOCKETSHR) && defined(__VMS_VER) && (__VMS_VER > 70000000)
# include <sys/ioctl.h>
# endif
# endif
# endif
# ifdef VMS
# include <unixio.h>
# if defined(TCPIP_TYPE_SOCKETSHR)
# include <socketshr.h>
# endif
# endif
# define SSLeay_Read(a,b,c) read((a),(b),(c))

88
install.com Normal file
View File

@ -0,0 +1,88 @@
$! INSTALL.COM -- Installs the files in a given directory tree
$!
$! Author: Richard Levitte <richard@levitte.org>
$! Time of creation: 22-MAY-1998 10:13
$!
$! P1 root of the directory tree
$!
$ IF P1 .EQS. ""
$ THEN
$ WRITE SYS$OUTPUT "First argument missing."
$ WRITE SYS$OUTPUT "Should be the directory where you want things installed."
$ EXIT
$ ENDIF
$
$ ARCH = "AXP"
$ IF F$GETSYI("CPU") .LT. 128 THEN ARCH = "VAX"
$
$ 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" - "[000000." - "][" - "[" - "]"
$ ROOT = ROOT_DEV + "[" + ROOT_DIR
$
$ DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC
$ DEFINE/NOLOG WRK_SSLVLIB WRK_SSLROOT:[VAX_LIB]
$ DEFINE/NOLOG WRK_SSLALIB WRK_SSLROOT:[ALPHA_LIB]
$ DEFINE/NOLOG WRK_SSLLIB WRK_SSLROOT:[LIB]
$ DEFINE/NOLOG WRK_SSLINCLUDE WRK_SSLROOT:[INCLUDE]
$ DEFINE/NOLOG WRK_SSLVEXE WRK_SSLROOT:[VAX_EXE]
$ DEFINE/NOLOG WRK_SSLAEXE WRK_SSLROOT:[ALPHA_EXE]
$ DEFINE/NOLOG WRK_SSLCERTS WRK_SSLROOT:[CERTS]
$ DEFINE/NOLOG WRK_SSLPRIVATE WRK_SSLROOT:[PRIVATE]
$
$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLROOT:[000000]
$ IF F$PARSE("WRK_SSLVEXE:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLVEXE:
$ IF F$PARSE("WRK_SSLAEXE:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLAEXE:
$ IF F$PARSE("WRK_SSLVLIB:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLVLIB:
$ IF F$PARSE("WRK_SSLALIB:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLALIB:
$ IF F$PARSE("WRK_SSLLIB:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLLIB:
$ IF F$PARSE("WRK_SSLINCLUDE:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLINCLUDE:
$ IF F$PARSE("WRK_SSLCERTS:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLCERTS:
$ IF F$PARSE("WRK_SSLPRIVATE:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLPRIVATE:
$ IF F$PARSE("WRK_SSLROOT:[VMS]") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLROOT:[VMS]
$
$ SDIRS := CRYPTO,SSL,RSAREF,APPS,VMS!,TEST,TOOLS
$ EXHEADER := e_os.h
$
$ COPY 'EXHEADER' WRK_SSLINCLUDE: /LOG
$
$ I = 0
$ LOOP_SDIRS:
$ D = F$ELEMENT(I, ",", SDIRS)
$ I = I + 1
$ IF D .EQS. "," THEN GOTO LOOP_SDIRS_END
$ WRITE SYS$OUTPUT "Installing ",D," files."
$ SET DEFAULT [.'D']
$ @INSTALL 'ROOT']
$ SET DEFAULT [-]
$ GOTO LOOP_SDIRS
$ LOOP_SDIRS_END:
$
$ DEASSIGN WRK_SSLROOT
$ DEASSIGN WRK_SSLVLIB
$ DEASSIGN WRK_SSLALIB
$ DEASSIGN WRK_SSLLIB
$ DEASSIGN WRK_SSLINCLUDE
$ DEASSIGN WRK_SSLVEXE
$ DEASSIGN WRK_SSLAEXE
$ DEASSIGN WRK_SSLCERTS
$ DEASSIGN WRK_SSLPRIVATE
$
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT " Installation done!"
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT " You might want to purge ",ROOT,"...]"
$ WRITE SYS$OUTPUT ""
$
$ EXIT

View File

@ -1,65 +1,898 @@
$!
$! This procedure compiles the SSL sources into 2 libraries:
$! [.CRYPTO]CRYPTO-xxx.OLB ! crypto-graphics subroutines
$! [.SSL]SSL-xxx.OLB ! SSL protocol.
$! MAKEVMS.COM
$! Original Author: UNKNOWN
$! Rewritten By: Robert Byer
$! Vice-President
$! A-Com Computing, Inc.
$! byer@mail.all-net.net
$!
$! where 'xxx' specifies the machine achitecture: AXP or VAX
$! Changes by Richard Levitte <richard@levitte.org>
$!
$! To perform 1 sub-option, specify P1 as one of:
$! INCLUDE CRYPTO SSL SSL_TASK
$! This procedure creates the SSL libraries of "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB"
$! "[.xxx.EXE.SSL]LIBSSL.OLB" and if specified "[.xxx.EXE.RSAREF]LIBRSAGLUE.OLB".
$! The "xxx" denotes the machine architecture of AXP or VAX.
$!
$! Requirements:
$! DECC 4.0 (may work with other versions)
$! OpenVMS 6.1 (may work with other versions)
$! This procedures accepts two command line options listed below.
$!
$ original_default = f$environment("DEFAULT")
$ proc = f$environment("PROCEDURE")
$ proc_dir = f$parse("1.1;1",proc) - "1.1;1"
$ set default 'proc_dir'
$! Specify one of the following build options for P1.
$!
$! Copy all include files to [.include]
$! ALL Just build "everything".
$! DATE Just build the "[.INCLUDE.OPENSSL]DATE.H" file.
$! SOFTLINKS Just fix the Unix soft links.
$! RSAREF Just build the "[.xxx.EXE.RSAREF]LIBRSAGLUE.OLB" library.
$! CRYPTO Just build the "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" library.
$! SSL Just build the "[.xxx.EXE.SSL]LIBSSL.OLB" library.
$! SSL_TASK Just build the "[.xxx.EXE.SSL]SSL_TASK.EXE" program.
$! TEST Just build the "[.xxx.EXE.TEST]" test programs for OpenSSL.
$! APPS Just build the "[.xxx.EXE.APPS]" application programs for OpenSSL.
$!
$ set noon
$ if P1 .nes. "" then goto do_'p1'
$ do_include
$ write sys$output "Rebuilding [.include] directory..."
$ delete [.include]*.h;*
$ backup [.*...]*.h; includes.bck/save
$ backup includes.bck/save [.include]
$ delete includes.bck;
$ if p1 .nes. "" then goto cleanup
$!
$! Build crypto lib.
$! Specify RSAREF as P2 to compile using the RSAREF Library.
$! If you specify NORSAREF, it will compile without using RSAREF.
$! (If in the United States, You Must Compile Using RSAREF).
$!
$ do_crypto:
$ write sys$Output "Making CRYPTO library"
$ set default [.crypto]
$ @libvms
$ set default [-]
$ if p1 .nes. "" then goto cleanup
$! Note: The RSAREF libraries are NOT INCLUDED and you have to
$! download it from "ftp://ftp.rsa.com/rsaref". You have to
$! get the ".tar-Z" file as the ".zip" file dosen't have the
$! directory structure stored. You have to extract the file
$! into the [.RSAREF] directory as that is where the scripts
$! will look for the files.
$!
$! Build SSL lib.
$! Speficy DEBUG or NODEBUG as P3 to compile with or without debugging
$! information.
$!
$ do_ssl:
$ write sys$output "Making SSL library"
$ set default [.ssl]
$ libname = "ssl-axp.olb"
$ if f$getsyi("CPU") .lt. 128 then libname = "ssl-vax.olb"
$ if f$search(libname) .eqs. "" then library/create/log 'libname'
$ cc ssl.c/include=[-.include]/prefix=all
$ library/replace 'libname' ssl.obj
$ set default [-]
$ if p1 .nes. "" then goto cleanup
$! Specify which compiler at P4 to try to compile under.
$!
$ do_ssl_task:
$ write sys$output "Building SSL_TASK.EXE, the DECnet-based SSL engine"
$ set default [.ssl]
$ libname = "ssl-axp.olb"
$ if f$getsyi("CPU") .lt. 128 then libname = "ssl-vax.olb"
$ cc ssl_task/include=[-.include]/prefix=all
$ cryptolib = "[-.crypto]crypto-" + f$element(1,"-",libname)
$ link ssl_task,'libname'/library,'cryptolib'/library
$! VAXC For VAX C.
$! DECC For DEC C.
$! GNUC For GNU C.
$! LINK To only link the programs from existing object files.
$!
$ cleanup:
$ set default 'original_default'
$ write sys$output "Done"
$! If you don't speficy a compiler, it will try to determine which
$! "C" compiler to use.
$!
$! P5, if defined, sets a TCP/IP library to use, through one of the following
$! keywords:
$!
$! UCX for UCX or UCX emulation
$! SOCKETSHR for SOCKETSHR+NETLIB
$!
$! P6, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up)
$!
$!
$! Check Which Architecture We Are Using.
$!
$ IF (F$GETSYI("CPU").GE.128)
$ THEN
$!
$! The Architecture Is AXP.
$!
$ ARCH := AXP
$!
$! Else...
$!
$ ELSE
$!
$! The Architecture Is VAX.
$!
$ ARCH := VAX
$!
$! End The Architecture Check.
$!
$ ENDIF
$!
$! Check To Make Sure We Have Valid Command Line Parameters.
$!
$ GOSUB CHECK_OPTIONS
$!
$! Check To See What We Are To Do.
$!
$ IF (BUILDALL.EQS."TRUE")
$ THEN
$!
$! Since Nothing Special Was Specified, Do Everything.
$! First, Fix The Unix Softlinks.
$!
$ GOSUB SOFTLINKS
$!
$! Create The "DATE.H" Include File.
$!
$ GOSUB DATE
$!
$! Check To See If We Are Going To Be Building The
$! [.xxx.EXE.RSAREF]LIBRSAGLUE.OLB Library.
$!
$ IF (RSAREF.EQS."RSAREF")
$ THEN
$!
$! Build The [.xxx.EXE.RSAREF]LIBRSAGLUE.OLB Library.
$!
$ GOSUB RSAREF
$!
$! End The RSAREF Check.
$!
$ ENDIF
$!
$! Build The [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library.
$!
$ GOSUB CRYPTO
$!
$! Build The [.xxx.EXE.SSL]LIBSSL.OLB Library.
$!
$ GOSUB SSL
$!
$! Build The [.xxx.EXE.SSL]SSL_TASK.EXE DECNet SSL Engine.
$!
$ GOSUB SSL_TASK
$!
$! Build The [.xxx.EXE.TEST] OpenSSL Test Utilities.
$!
$ GOSUB TEST
$!
$! Build The [.xxx.EXE.APPS] OpenSSL Application Utilities.
$!
$ GOSUB APPS
$!
$! Else...
$!
$ ELSE
$!
$! Build Just What The User Wants Us To Build.
$!
$ GOSUB 'BUILDALL'
$ ENDIF
$!
$! Time To EXIT.
$!
$ EXIT
$!
$! Rebuild The "[.INCLUDE.OPENSSL]DATE.H" file.
$!
$ DATE:
$!
$! Tell The User We Are Creating The [.CRYPTO]DATE.H File.
$!
$ WRITE SYS$OUTPUT "Creating [.CRYPTO]DATE.H Include File."
$!
$! Create The [.CRYPTO]DATE.H File.
$!
$ OPEN/WRITE H_FILE SYS$DISK:[.CRYPTO]DATE.H
$!
$! Get The Current Date & Time.
$!
$ TIME = F$TIME()
$!
$! Write The [.CRYPTO]DATE.H File.
$!
$ WRITE H_FILE "#define DATE ""''TIME'"" "
$!
$! Close The [.CRYPTO]DATE.H File.
$!
$ CLOSE H_FILE
$!
$! That's All, Time To RETURN.
$!
$ RETURN
$!
$! Copy a lot of files around.
$!
$ SOFTLINKS:
$!
$! Tell The User We Are Partly Rebuilding The [.TEST] Directory.
$!
$ WRITE SYS$OUTPUT "Rebuilding The '[.APPS]MD5.C' And '[.APPS]RMD160.C' Files."
$!
$ DELETE SYS$DISK:[.APPS]MD5.C;*,RMD160.C;*
$!
$! Copy MD5.C from [.CRYPTO.MD5] into [.APPS]
$!
$ COPY SYS$DISK:[.CRYPTO.MD5]MD5.C SYS$DISK:[.APPS]
$!
$! Copy RMD160.C from [.CRYPTO.RIPEMD] into [.APPS]
$!
$ COPY SYS$DISK:[.CRYPTO.RIPEMD]RMD160.C SYS$DISK:[.APPS]
$!
$! Tell The User We Are Partly Rebuilding The [.TEST] Directory.
$!
$ WRITE SYS$OUTPUT "Rebuilding The '[.TEST]*.C' Files."
$!
$! First, We Have To "Rebuild" The "[.TEST]" Directory, So Delete
$! All The "C" Files That Are Currently There Now.
$!
$ DELETE SYS$DISK:[.TEST]*.C;*
$!
$! Copy all the *TEST.C files from [.CRYPTO...] into [.TEST]
$!
$ COPY SYS$DISK:[.CRYPTO.*]%*TEST.C SYS$DISK:[.TEST]
$!
$! Copy all the *TEST.C files from [.SSL...] into [.TEST]
$!
$ COPY SYS$DISK:[.SSL]%*TEST.C SYS$DISK:[.TEST]
$!
$! Tell The User We Are Rebuilding The [.INCLUDE.OPENSSL] Directory.
$!
$ WRITE SYS$OUTPUT "Rebuilding The '[.INCLUDE.OPENSSL]' Directory."
$!
$! First, make sure the directory exists
$!
$ IF F$PARSE("SYS$DISK:[.INCLUDE.OPENSSL]") .EQS. "" THEN -
CREATE/DIRECTORY SYS$DISK:[.INCLUDE.OPENSSL]
$!
$! Copy All The ".H" Files From The Main Directory.
$!
$ EXHEADER := e_os.h
$ COPY 'EXHEADER' SYS$DISK:[.INCLUDE.OPENSSL]
$!
$! Copy All The ".H" Files From The [.CRYPTO] Directory Tree.
$!
$ SDIRS := ,MD2,MD5,SHA,MDC2,HMAC,RIPEMD,-
DES,RC2,RC4,RC5,IDEA,BF,CAST,-
BN,RSA,DSA,DH,-
BUFFER,BIO,STACK,LHASH,RAND,ERR,OBJECTS,-
EVP,ASN1,PEM,X509,X509V3,-
CONF,TXT_DB,PKCS7,PKCS12,COMP
$ EXHEADER_ := crypto.h,tmdiff.h,opensslv.h,opensslconf.h
$ EXHEADER_MD2 := md2.h
$ EXHEADER_MD5 := md5.h
$ EXHEADER_SHA := sha.h
$ EXHEADER_MDC2 := mdc2.h
$ EXHEADER_HMAC := hmac.h
$ EXHEADER_RIPEMD := ripemd.h
$ EXHEADER_DES := des.h
$ EXHEADER_RC2 := rc2.h
$ EXHEADER_RC4 := rc4.h
$ EXHEADER_RC5 := rc5.h
$ EXHEADER_IDEA := idea.h
$ EXHEADER_BF := blowfish.h
$ EXHEADER_CAST := cast.h
$ EXHEADER_BN := bn.h
$ EXHEADER_RSA := rsa.h
$ EXHEADER_DSA := dsa.h
$ EXHEADER_DH := dh.h
$ EXHEADER_BUFFER := buffer.h
$ EXHEADER_BIO := bio.h
$ EXHEADER_STACK := stack.h,safestack.h
$ EXHEADER_LHASH := lhash.h
$ EXHEADER_RAND := rand.h
$ EXHEADER_ERR := err.h
$ EXHEADER_OBJECTS := objects.h
$ EXHEADER_EVP := evp.h
$ EXHEADER_ASN1 := asn1.h,asn1_mac.h
$ EXHEADER_PEM := pem.h,pem2.h
$ EXHEADER_X509 := x509.h,x509_vfy.h
$ EXHEADER_X509V3 := x509v3.h
$ EXHEADER_CONF := conf.h
$ EXHEADER_TXT_DB := txt_db.h
$ EXHEADER_PKCS7 := pkcs7.h
$ EXHEADER_PKCS12 := pkcs12.h
$ EXHEADER_COMP := comp.h
$
$ I = 0
$ LOOP_SDIRS:
$ D = F$EDIT(F$ELEMENT(I, ",", SDIRS),"TRIM")
$ I = I + 1
$ IF D .EQS. "," THEN GOTO LOOP_SDIRS_END
$ tmp = EXHEADER_'D'
$ IF D .EQS. ""
$ THEN
$ COPY [.CRYPTO]'tmp' SYS$DISK:[.INCLUDE.OPENSSL] /LOG
$ ELSE
$ COPY [.CRYPTO.'D']'tmp' SYS$DISK:[.INCLUDE.OPENSSL] /LOG
$ ENDIF
$ GOTO LOOP_SDIRS
$ LOOP_SDIRS_END:
$!
$! Copy All The ".H" Files From The [.RSAREF] Directory.
$!
$ EXHEADER := rsaref.h
$ COPY SYS$DISK:[.RSAREF]'EXHEADER' SYS$DISK:[.INCLUDE.OPENSSL]
$!
$! Copy All The ".H" Files From The [.SSL] Directory.
$!
$ EXHEADER := ssl.h,ssl2.h,ssl3.h,ssl23.h,tls1.h
$ COPY SYS$DISK:[.SSL]'EXHEADER' SYS$DISK:[.INCLUDE.OPENSSL]
$!
$! Purge all doubles
$!
$ PURGE SYS$DISK:[.INCLUDE.OPENSSL]*.H
$!
$! That's All, Time To RETURN.
$!
$ RETURN
$!
$! Build The "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" Library.
$!
$ CRYPTO:
$!
$! Tell The User What We Are Doing.
$!
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "Building The [.",ARCH,".EXE.CRYPTO]LIBCRYPTO.OLB Library."
$!
$! Go To The [.CRYPTO] Directory.
$!
$ SET DEFAULT SYS$DISK:[.CRYPTO]
$!
$! Build The [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library.
$!
$ @CRYPTO-LIB 'RSAREF' 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
$!
$! Go Back To The Main Directory.
$!
$ SET DEFAULT [-]
$!
$! Time To RETURN.
$!
$ RETURN
$!
$! Build The [.xxx.EXE.RSAREF]LIBRSAGLUE Library.
$!
$ RSAREF:
$!
$! Tell The User What We Are Doing.
$!
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "Building The [.",ARCH,".EXE.RSAREF]LIBRSAGLUE.OLB Library."
$!
$! Go To The [.RSAREF] Directory.
$!
$ SET DEFAULT SYS$DISK:[.RSAREF]
$!
$! Build The [.xxx.EXE.RSAREF]LIBRSAGLUE.OLB Library.
$!
$ @RSAREF-LIB LIBRARY 'DEBUGGER' "''COMPILER'" 'ISSEVEN'
$!
$! Go Back To The Main Directory.
$!
$ SET DEFAULT [-]
$!
$! Time To Return.
$!
$ RETURN
$!
$! Build The "[.xxx.EXE.SSL]LIBSSL.OLB" Library.
$!
$ SSL:
$!
$! Tell The User What We Are Doing.
$!
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "Building The [.",ARCH,".EXE.SSL]LIBSSL.OLB Library."
$!
$! Go To The [.SSL] Directory.
$!
$ SET DEFAULT SYS$DISK:[.SSL]
$!
$! Build The [.xxx.EXE.SSL]LIBSSL.OLB Library.
$!
$ @SSL-LIB LIBRARY 'RSAREF' 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
$!
$! Go Back To The Main Directory.
$!
$ SET DEFAULT [-]
$!
$! Time To Return.
$!
$ RETURN
$!
$! Build The "[.xxx.EXE.SSL]SSL_TASK.EXE" Program.
$!
$ SSL_TASK:
$!
$! Tell The User What We Are Doing.
$!
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "Building DECNet Based SSL Engine, [.",ARCH,".EXE.SSL]SSL_TASK.EXE"
$!
$! Go To The [.SSL] Directory.
$!
$ SET DEFAULT SYS$DISK:[.SSL]
$!
$! Build The [.xxx.EXE.SSL]SSL_TASK.EXE
$!
$ @SSL-LIB SSL_TASK 'RSAREF' 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
$!
$! Go Back To The Main Directory.
$!
$ SET DEFAULT [-]
$!
$! That's All, Time To RETURN.
$!
$ RETURN
$!
$! Build The OpenSSL Test Programs.
$!
$ TEST:
$!
$! Tell The User What We Are Doing.
$!
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "Building The OpenSSL [.",ARCH,".EXE.TEST] Test Utilities."
$!
$! Go To The [.TEST] Directory.
$!
$ SET DEFAULT SYS$DISK:[.TEST]
$!
$! Build The Test Programs.
$!
$ @MAKETESTS 'RSAREF' 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
$!
$! Go Back To The Main Directory.
$!
$ SET DEFAULT [-]
$!
$! That's All, Time To RETURN.
$!
$ RETURN
$!
$! Build The OpenSSL Application Programs.
$!
$ APPS:
$!
$! Tell The User What We Are Doing.
$!
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "Building OpenSSL [.",ARCH,".EXE.APPS] Applications."
$!
$! Go To The [.APPS] Directory.
$!
$ SET DEFAULT SYS$DISK:[.APPS]
$!
$! Build The Application Programs.
$!
$ @MAKEAPPS 'RSAREF' 'DEBUGGER' "''COMPILER'" "''TCPIP_TYPE'" 'ISSEVEN'
$!
$! Go Back To The Main Directory.
$!
$ SET DEFAULT [-]
$!
$! That's All, Time To RETURN.
$!
$ RETURN
$!
$! Check The User's Options.
$!
$ CHECK_OPTIONS:
$!
$! Check To See If P1 Is Blank.
$!
$ IF (P1.EQS."ALL")
$ THEN
$!
$! P1 Is ALL, So Build Everything.
$!
$ BUILDALL = "TRUE"
$!
$! Else...
$!
$ ELSE
$!
$! Else, Check To See If P1 Has A Valid Arguement.
$!
$ IF (P1.EQS."DATE").OR.(P1.EQS."SOFTLINKS").OR.(P1.EQS."CRYPTO") -
.OR.(P1.EQS."SSL").OR.(P1.EQS."RSAREF").OR.(P1.EQS."SSL_TASK") -
.OR.(P1.EQS."TEST").OR.(P1.EQS."APPS")
$ THEN
$!
$! A Valid Arguement.
$!
$ BUILDALL = P1
$!
$! Else...
$!
$ ELSE
$!
$! Tell The User We Don't Know What They Want.
$!
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "The Option ",P1," Is Invalid. The Valid Options Are:"
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT " ALL : Just Build Everything."
$ WRITE SYS$OUTPUT " DATE : Just build the [.INCLUDE.OPENSSL]DATE.H file."
$ WRITE SYS$OUTPUT " SOFTLINKS: Just Fix The Unix soft links."
$ WRITE SYS$OUTPUT " RSAREF : To Build Just The [.xxx.EXE.RSAREF]LIBRSAGLUE.OLB Library."
$ WRITE SYS$OUTPUT " CRYPTO : To Build Just The [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library."
$ WRITE SYS$OUTPUT " SSL : To Build Just The [.xxx.EXE.SSL]LIBSSL.OLB Library."
$ WRITE SYS$OUTPUT " SSL_TASK : To Build Just The [.xxx.EXE.SSL]SSL_TASK.EXE Program."
$ WRITE SYS$OUTPUT " TEST : To Build Just The OpenSSL Test Programs."
$ WRITE SYS$OUTPUT " APPS : To Build Just The OpenSSL Application Programs."
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT " Where 'xxx' Stands For:"
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT " AXP : Alpha Architecture."
$ WRITE SYS$OUTPUT " VAX : VAX Architecture."
$ WRITE SYS$OUTPUT ""
$!
$! Time To EXIT.
$!
$ EXIT
$!
$! End The Valid Argument Check.
$!
$ ENDIF
$!
$! End The P1 Check.
$!
$ ENDIF
$!
$! Check To See If P2 Is Blank.
$!
$ IF (P2.EQS."NORSAREF")
$ THEN
$!
$! P2 Is NORSAREF, So Compile Without RSAREF.
$!
$ RSAREF = "NORSAREF"
$!
$! Else...
$!
$ ELSE
$!
$! Check To See If We Are To Compile Using The RSAREF Library.
$!
$ IF (P2.EQS."RSAREF")
$ THEN
$!
$! Compile With RSAREF Library.
$!
$ RSAREF = "RSAREF"
$!
$! Else...
$!
$ ELSE
$!
$! Tell The User Entered An Invalid Option..
$!
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "The Option ",P2," Is Invalid. The Valid Options Are:"
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT " RSAREF : To Compile With The RSAREF Library."
$ WRITE SYS$OUTPUT " NORSAREF : To Compile With The Regular RSA Library."
$ WRITE SYS$OUTPUT ""
$!
$! Time To EXIT.
$!
$ EXIT
$!
$! End The Valid Arguemnt Check.
$!
$ ENDIF
$!
$! End The P2 Check.
$!
$ ENDIF
$!
$! Check To See If P3 Is Blank.
$!
$ IF (P3.EQS."NODEBUG")
$ THEN
$!
$! P3 Is NODEBUG, So Compile Without Debugger Information.
$!
$ DEBUGGER = "NODEBUG"
$!
$! Else...
$!
$ ELSE
$!
$! Check To See If We Are To Compile With Debugger Information.
$!
$ IF (P3.EQS."DEBUG")
$ THEN
$!
$! Compile With Debugger Information.
$!
$ DEBUGGER = "DEBUG"
$!
$! Else...
$!
$ ELSE
$!
$! Tell The User Entered An Invalid Option..
$!
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "The Option ",P3," Is Invalid. The Valid Options Are:"
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT " DEBUG : Compile With The Debugger Information."
$ WRITE SYS$OUTPUT " NODEBUG : Compile Without The Debugger Information."
$ WRITE SYS$OUTPUT ""
$!
$! Time To EXIT.
$!
$ EXIT
$!
$! End The Valid Arguement Check.
$!
$ ENDIF
$!
$! End The P3 Check.
$!
$ ENDIF
$!
$! Check To See If P4 Is Blank.
$!
$ IF (P4.EQS."")
$ THEN
$!
$! O.K., The User Didn't Specify A Compiler, Let's Try To
$! Find Out Which One To Use.
$!
$! Check To See If We Have GNU C.
$!
$ IF (F$TRNLNM("GNU_CC").NES."")
$ THEN
$!
$! Looks Like GNUC, Set To Use GNUC.
$!
$ COMPILER = "GNUC"
$!
$! Tell The User We Are Using GNUC.
$!
$ WRITE SYS$OUTPUT "Using GNU 'C' Compiler."
$!
$! End The GNU C Compiler Check.
$!
$ ENDIF
$!
$! Check To See If We Have VAXC Or DECC.
$!
$ IF (F$GETSYI("CPU").GE.128).OR.(F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC")
$ THEN
$!
$! Looks Like DECC, Set To Use DECC.
$!
$ COMPILER = "DECC"
$!
$! Tell The User We Are Using DECC.
$!
$ WRITE SYS$OUTPUT "Using DECC 'C' Compiler."
$!
$! Else...
$!
$ ELSE
$!
$! Looks Like VAXC, Set To Use VAXC.
$!
$ COMPILER = "VAXC"
$!
$! Tell The User We Are Using VAX C.
$!
$ WRITE SYS$OUTPUT "Using VAXC 'C' Compiler."
$!
$! End The DECC & VAXC Compiler Check.
$!
$ ENDIF
$!
$! Else...
$!
$ ELSE
$!
$! Check To See If The User Entered A Valid Paramter.
$!
$ IF (P4.EQS."VAXC").OR.(P4.EQS."DECC").OR.(P4.EQS."GNUC").OR.(P4.EQS."LINK")
$ THEN
$!
$! Check To See If The User Wanted To Just LINK.
$!
$ IF (P4.EQS."LINK")
$ THEN
$!
$! Looks Like LINK-only
$!
$ COMPILER = "LINK"
$!
$! Tell The User We Are Only Linking.
$!
$ WRITE SYS$OUTPUT "LINK Only. This actually NOT YET SUPPORTED!"
$!
$! End LINK Check.
$!
$ ENDIF
$!
$! Check To See If The User Wanted DECC.
$!
$ IF (P4.EQS."DECC")
$ THEN
$!
$! Looks Like DECC, Set To Use DECC.
$!
$ COMPILER = "DECC"
$!
$! Tell The User We Are Using DECC.
$!
$ WRITE SYS$OUTPUT "Using DECC 'C' Compiler."
$!
$! End DECC Check.
$!
$ ENDIF
$!
$! Check To See If We Are To Use VAXC.
$!
$ IF (P4.EQS."VAXC")
$ THEN
$!
$! Looks Like VAXC, Set To Use VAXC.
$!
$ COMPILER = "VAXC"
$!
$! Tell The User We Are Using VAX C.
$!
$ WRITE SYS$OUTPUT "Using VAXC 'C' Compiler."
$!
$! End VAXC Check
$!
$ ENDIF
$!
$! Check To See If We Are To Use GNU C.
$!
$ IF (P4.EQS."GNUC")
$ THEN
$!
$! Looks Like GNUC, Set To Use GNUC.
$!
$ COMPILER = "GNUC"
$!
$! Tell The User We Are Using GNUC.
$!
$ WRITE SYS$OUTPUT "Using GNU 'C' Compiler."
$!
$! End The GNU C Check.
$!
$ ENDIF
$!
$! Else The User Entered An Invalid Arguement.
$!
$ ELSE
$!
$! Tell The User We Don't Know What They Want.
$!
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "The Option ",P4," Is Invalid. The Valid Options Are:"
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT " VAXC : To Compile With VAX C."
$ WRITE SYS$OUTPUT " DECC : To Compile With DEC C."
$ WRITE SYS$OUTPUT " GNUC : To Compile With GNU C."
$ WRITE SYS$OUTPUT ""
$!
$! Time To EXIT.
$!
$ EXIT
$!
$! End The Valid Arguement Check.
$!
$ ENDIF
$!
$! End The P4 Check.
$!
$ ENDIF
$!
$! Time to check the contents of P5, and to make sure we get the correct library.
$!
$ IF P5.EQS."SOCKETSHR" .OR. P5.EQS."MULTINET" .OR. P5.EQS."UCX"
$ THEN
$!
$! Check to see if SOCKETSHR was chosen
$!
$ IF P5.EQS."SOCKETSHR"
$ THEN
$!
$! Set the library to use SOCKETSHR
$!
$ TCPIP_LIB = "[-.VMS]SOCKETSHR_SHR.OPT/OPT"
$!
$! Tell the user
$!
$ WRITE SYS$OUTPUT "Using SOCKETSHR for TCP/IP"
$!
$! Done with SOCKETSHR
$!
$ ENDIF
$!
$! Check to see if MULTINET was chosen
$!
$ IF P5.EQS."MULTINET"
$ THEN
$!
$! Set the library to use UCX emulation.
$!
$ P5 = "UCX"
$!
$! Tell the user
$!
$ WRITE SYS$OUTPUT "Using MultiNet via UCX emulation for TCP/IP"
$!
$! Done with MULTINET
$!
$ ENDIF
$!
$! Check to see if UCX was chosen
$!
$ IF P5.EQS."UCX"
$ THEN
$!
$! Set the library to use UCX.
$!
$ TCPIP_LIB = "[-.VMS]UCX_SHR_DECC.OPT/OPT"
$!
$! Tell the user
$!
$ WRITE SYS$OUTPUT "Using UCX or an emulation thereof for TCP/IP"
$!
$! Done with UCX
$!
$ ENDIF
$!
$! Set the TCPIP_TYPE symbol
$!
$ TCPIP_TYPE = P5
$!
$! Print info
$!
$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB
$!
$! Else The User Entered An Invalid Arguement.
$!
$ ELSE
$ IF P5 .NES. ""
$ THEN
$!
$! Tell The User We Don't Know What They Want.
$!
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "The Option ",P5," Is Invalid. The Valid Options Are:"
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT " SOCKETSHR : To link with SOCKETSHR TCP/IP library."
$ WRITE SYS$OUTPUT " UCX : To link with UCX TCP/IP library."
$ WRITE SYS$OUTPUT ""
$!
$! Time To EXIT.
$!
$ EXIT
$ ELSE
$!
$! Set the TCPIP_TYPE symbol
$!
$ TCPIP_TYPE = P5
$ ENDIF
$!
$! Done with TCP/IP libraries
$!
$ ENDIF
$!
$! Special Threads For OpenVMS v7.1 Or Later
$!
$! Written By: Richard Levitte
$! richard@levitte.org
$!
$!
$! Check To See If We Have A Option For P6.
$!
$ IF (P6.EQS."")
$ THEN
$!
$! Get The Version Of VMS We Are Using.
$!
$ ISSEVEN :=
$ TMP = F$ELEMENT(0,"-",F$EXTRACT(1,4,F$GETSYI("VERSION")))
$ TMP = F$INTEGER(F$ELEMENT(0,".",TMP)+F$ELEMENT(1,".",TMP))
$!
$! Check To See If The VMS Version Is v7.1 Or Later.
$!
$ IF (TMP.GE.71)
$ THEN
$!
$! We Have OpenVMS v7.1 Or Later, So Use The Special Threads.
$!
$ ISSEVEN := ,PTHREAD_USE_D4
$!
$! End The VMS Version Check.
$!
$ ENDIF
$!
$! End The P6 Check.
$!
$ ENDIF
$!
$! Time To RETURN...
$!
$ RETURN

View File

@ -17,7 +17,7 @@ AR= ar r
CFLAGS= $(INCLUDES) $(CFLAG)
GENERAL=Makefile
GENERAL=Makefile rsaref-lib.com install.com
TEST=
APPS=

69
rsaref/install.com Normal file
View File

@ -0,0 +1,69 @@
$! INSTALL.COM -- Installs the files in a given directory tree
$!
$! Author: Richard Levitte <richard@levitte.org>
$! Time of creation: 22-MAY-1998 10:13
$!
$! P1 root of the directory tree
$!
$ IF P1 .EQS. ""
$ THEN
$ WRITE SYS$OUTPUT "First argument missing."
$ WRITE SYS$OUTPUT "Should be the directory where you want things installed."
$ EXIT
$ 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'.] /TRANS=CONC
$ DEFINE/NOLOG WRK_SSLVLIB WRK_SSLROOT:[VAX_LIB]
$ DEFINE/NOLOG WRK_SSLALIB WRK_SSLROOT:[ALPHA_LIB]
$
$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLROOT:[000000]
$ IF F$PARSE("WRK_SSLVLIB:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLVLIB:
$ IF F$PARSE("WRK_SSLALIB:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLALIB:
$
$ LIBS := LIBRSAGLUE
$
$ VEXE_DIR := [-.VAX.EXE.CRYPTO]
$ AEXE_DIR := [-.AXP.EXE.CRYPTO]
$
$ I = 0
$ LOOP_LIB:
$ E = F$EDIT(F$ELEMENT(I, ",", LIBS),"TRIM")
$ I = I + 1
$ IF E .EQS. "," THEN GOTO LOOP_LIB_END
$ SET NOON
$ IF F$SEARCH(VEXE_DIR+E+".OLB") .NES. ""
$ THEN
$ COPY 'VEXE_DIR''E'.OLB WRK_SSLVLIB:'E'.OLB/log
$ SET FILE/PROT=W:RE WRK_SSLVLIB:'E'.OLB
$ ENDIF
$ ! Preparing for the time when we have shareable images
$ IF F$SEARCH(VEXE_DIR+E+".EXE") .NES. ""
$ THEN
$ COPY 'VEXE_DIR''E'.EXE WRK_SSLVLIB:'E'.EXE/log
$ SET FILE/PROT=W:RE WRK_SSLVLIB:'E'.EXE
$ ENDIF
$ IF F$SEARCH(AEXE_DIR+E+".OLB") .NES. ""
$ THEN
$ COPY 'AEXE_DIR''E'.OLB WRK_SSLALIB:'E'.OLB/log
$ SET FILE/PROT=W:RE WRK_SSLALIB:'E'.OLB
$ ENDIF
$ ! Preparing for the time when we have shareable images
$ IF F$SEARCH(AEXE_DIR+E+".EXE") .NES. ""
$ THEN
$ COPY 'AEXE_DIR''E'.EXE WRK_SSLALIB:'E'.EXE/log
$ SET FILE/PROT=W:RE WRK_SSLALIB:'E'.EXE
$ ENDIF
$ SET ON
$ GOTO LOOP_LIB
$ LOOP_LIB_END:
$
$ EXIT

901
rsaref/rsaref-lib.com Normal file
View File

@ -0,0 +1,901 @@
$!
$! RSAREF-LIB.COM
$! Written By: Robert Byer
$! Vice-President
$! A-Com Computing, Inc.
$! byer@mail.all-net.net
$!
$! Changes by Richard Levitte <richard@levitte.org>
$!
$! This command files compiles and creates the "[.xxx.EXE.RSAREF]LIBRSAGLUE.OLB"
$! library. The "xxx" denotes the machine architecture of AXP or VAX.
$!
$! Specify one of the following to build just that part or "ALL" to
$! just build everything.
$!
$! ALL To Just Build "Everything".
$! LIBRARY To Just Build The [.xxx.EXE.RSAREF]LIBRSAGLUE.OLB Library.
$! DHDEMO To Just Build The [.xxx.EXE.RSAREF]DHDEMO.EXE Program.
$! RDEMO To Just Build The [.xxx.EXE.RSAREF]RDEMO.EXE Program.
$!
$! Specify DEBUG or NODEBUG as P2 to compile with or without debugging
$! information.
$!
$! Specify which compiler at P3 to try to compile under.
$!
$! VAXC For VAX C.
$! DECC For DEC C.
$! GNUC For GNU C.
$!
$! If you don't speficy a compiler, it will prompt you for one.
$!
$! P4, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up)
$!
$!
$! Check Which Architecture We Are Using.
$!
$ IF (F$GETSYI("CPU").GE.128)
$ THEN
$!
$! The Architecture Is AXP
$!
$ ARCH := AXP
$!
$! Else...
$!
$ ELSE
$!
$! The Architecture Is VAX.
$!
$ ARCH := VAX
$!
$! End The Architecture Check.
$!
$ ENDIF
$!
$! Check To Make Sure We Have Valid Command Line Parameters.
$!
$ GOSUB CHECK_OPTIONS
$!
$! Initialise logical names and such
$!
$ GOSUB INITIALISE
$!
$! Tell The User What Kind of Machine We Run On.
$!
$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine."
$!
$! Define The OBJ Directory Name.
$!
$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.RSAREF]
$!
$! Check To See If The Architecture Specific OBJ Directory Exists.
$!
$ IF (F$PARSE(OBJ_DIR).EQS."")
$ THEN
$!
$! It Dosen't Exist, So Create It.
$!
$ CREATE/DIR 'OBJ_DIR'
$!
$! End The Architecture Specific OBJ Directory Check.
$!
$ ENDIF
$!
$! Define The EXE Directory Name.
$!
$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.RSAREF]
$!
$! Check To See If The Architecture Specific EXE Directory Exists.
$!
$ IF (F$PARSE(EXE_DIR).EQS."")
$ THEN
$!
$! It Dosen't Exist, So Create It.
$!
$ CREATE/DIR 'EXE_DIR'
$!
$! End The Architecture Specific EXE Directory Check.
$!
$ ENDIF
$!
$! Define The Library Name.
$!
$ LIB_NAME := 'EXE_DIR'LIBRSAGLUE.OLB
$!
$! Check To See What We Are To Do.
$!
$ IF (BUILDALL.EQS."TRUE")
$ THEN
$!
$! Since Nothing Special Was Specified, Do Everything.
$!
$ GOSUB LIBRARY
$ GOSUB DHDEMO
$ GOSUB RDEMO
$!
$! Else...
$!
$ ELSE
$!
$! Build Just What The User Wants Us To Build.
$!
$ GOSUB 'BUILDALL'
$!
$! End The BUILDALL Check.
$!
$ ENDIF
$!
$! Time To EXIT.
$!
$ EXIT:
$ GOSUB CLEANUP
$ EXIT
$!
$ LIBRARY:
$!
$! Tell The User That We Are Compiling.
$!
$ WRITE SYS$OUTPUT "Compiling The ",LIB_NAME," Files."
$!
$! Check To See If We Already Have A "LIBRSAGLUE.OLB" Library...
$!
$ IF (F$SEARCH(LIB_NAME).EQS."")
$ THEN
$!
$! Guess Not, Create The Library.
$!
$ LIBRARY/CREATE/OBJECT 'LIB_NAME'
$!
$! End The Library Exist Check.
$!
$ ENDIF
$!
$! Define The RSAREF Library Files.
$!
$ LIB_RSAREF = "DESC,DIGIT,MD2C,MD5C,NN,PRIME,RSA,R_DH,R_ENCODE,R_ENHANC," + -
"R_KEYGEN,R_RANDOM,R_STDLIB"
$!
$! Define A File Counter And Set It To "0".
$!
$ FILE_COUNTER = 0
$!
$! Top Of The File Loop.
$!
$ NEXT_FILE:
$!
$! O.K, Extract The File Name From The File List.
$!
$ FILE_NAME = F$ELEMENT(FILE_COUNTER,",",LIB_RSAREF)
$!
$! Check To See If We Are At The End Of The File List.
$!
$ IF (FILE_NAME.EQS.",") THEN GOTO FILE_DONE
$!
$! Increment The Counter.
$!
$ FILE_COUNTER = FILE_COUNTER + 1
$!
$! Create The Source File Name.
$!
$ SOURCE_FILE = "SYS$DISK:[.SOURCE]" + FILE_NAME + ".C"
$!
$! Tell The User We Are Compiling The Source File.
$!
$ WRITE SYS$OUTPUT " ",FILE_NAME,".C"
$!
$! Create The Object File Name.
$!
$ OBJECT_FILE = OBJ_DIR + FILE_NAME + ".OBJ"
$ ON WARNING THEN GOTO NEXT_FILE
$!
$! Check To See If The File We Want To Compile Actually Exists.
$!
$ IF (F$SEARCH(SOURCE_FILE).EQS."")
$ THEN
$!
$! Tell The User That The File Dosen't Exist.
$!
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "The File ",SOURCE_FILE," Dosen't Exist."
$ WRITE SYS$OUTPUT ""
$!
$! Exit The Build.
$!
$ EXIT
$!
$! End The File Exist Check.
$!
$ ENDIF
$!
$! Compile The File.
$!
$ ON ERROR THEN GOTO NEXT_FILE
$ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
$!
$! Add It To The Library.
$!
$ LIBRARY/REPLACE/OBJECT 'LIB_NAME' 'OBJECT_FILE'
$!
$! Time To Clean Up The Object File.
$!
$ DELETE 'OBJECT_FILE';*
$!
$! Go Back And Do It Again.
$!
$ GOTO NEXT_FILE
$!
$! All Done With This Library Part.
$!
$ FILE_DONE:
$!
$! Tell The User That We Are All Done.
$!
$ WRITE SYS$OUTPUT "Library ",LIB_NAME," Built."
$!
$! All Done, Time To Return.
$!
$ RETURN
$!
$! Compile The [.xxx.EXE.RSAREF]DHDEMO Program.
$!
$ DHDEMO:
$!
$! Check To See If We Have The Proper Libraries.
$!
$ GOSUB LIB_CHECK
$!
$! Check To See If We Have A Linker Option File.
$!
$ GOSUB CHECK_OPT_FILE
$!
$! Check To See If The File We Want To Compile Actually Exists.
$!
$ IF (F$SEARCH("SYS$DISK:[.RDEMO]DHDEMO.C").EQS."")
$ THEN
$!
$! Tell The User That The File Dosen't Exist.
$!
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "The File [.RDEMO]DHDEMO.C Dosen't Exist."
$ WRITE SYS$OUTPUT ""
$!
$! Exit The Build.
$!
$ EXIT
$!
$! End The [.RDEMO]DHDEMO.C File Check.
$!
$ ENDIF
$!
$! Tell The User What We Are Building.
$!
$ WRITE SYS$OUTPUT "Building ",EXE_DIR,"DHDEMO.EXE"
$!
$! Compile The DHDEMO Program.
$!
$ CC/OBJECT='OBJ_DIR'DHDEMO.OBJ SYS$DISK:[.RDEMO]DHDEMO.C
$!
$! Link The DHDEMO Program.
$!
$ LINK/'DEBUGGER'/'TRACEBACK'/CONTIGUOUS -
/EXE='EXE_DIR'DHDEMO.EXE 'OBJ_DIR'DHDEMO.OBJ, -
'LIB_NAME'/LIBRARY,'OPT_FILE'/OPTION
$!
$! All Done, Time To Return.
$!
$ RETURN
$!
$! Compile The RDEMO Program.
$!
$ RDEMO:
$!
$! Check To See If We Have The Proper Libraries.
$!
$ GOSUB LIB_CHECK
$!
$! Check To See If We Have A Linker Option File.
$!
$ GOSUB CHECK_OPT_FILE
$!
$! Check To See If The File We Want To Compile Actually Exists.
$!
$ IF (F$SEARCH("SYS$DISK:[.RDEMO]RDEMO.C").EQS."")
$ THEN
$!
$! Tell The User That The File Dosen't Exist.
$!
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "The File [.RDEMO]RDEMO.C Dosen't Exist."
$ WRITE SYS$OUTPUT ""
$!
$! Exit The Build.
$!
$ EXIT
$!
$! End The [.RDEMO]RDEMO.C File Check.
$!
$ ENDIF
$!
$! Tell The User What We Are Building.
$!
$ WRITE SYS$OUTPUT "Building ",EXE_DIR,"RDEMO.EXE"
$!
$! Compile The RDEMO Program.
$!
$ CC/OBJECT='OBJ_DIR'RDEMO.OBJ SYS$DISK:[.RDEMO]RDEMO.C
$!
$! Link The RDEMO Program.
$!
$ LINK/'DEBUGGER'/'TRACEBACK'/CONTIGUOUS -
/EXE='EXE_DIR'RDEMO.EXE 'OBJ_DIR'RDEMO.OBJ, -
'LIB_NAME'/LIBRARY,'OPT_FILE'/OPTION
$!
$! All Done, Time To Return.
$!
$ RETURN
$!
$! Check For The Link Option FIle.
$!
$ CHECK_OPT_FILE:
$!
$! Check To See If We Need To Make A VAX C Option File.
$!
$ IF (COMPILER.EQS."VAXC")
$ THEN
$!
$! Check To See If We Already Have A VAX C Linker Option File.
$!
$ IF (F$SEARCH(OPT_FILE).EQS."")
$ THEN
$!
$! We Need A VAX C Linker Option File.
$!
$ CREATE 'OPT_FILE'
$DECK
!
! Default System Options File To Link Agianst
! The Sharable VAX C Runtime Library.
!
SYS$SHARE:VAXCRTL.EXE/SHARE
$EOD
$!
$! End The Option File Check.
$!
$ ENDIF
$!
$! End The VAXC Check.
$!
$ ENDIF
$!
$! Check To See If We Need A GNU C Option File.
$!
$ IF (COMPILER.EQS."GNUC")
$ THEN
$!
$! Check To See If We Already Have A GNU C Linker Option File.
$!
$ IF (F$SEARCH(OPT_FILE).EQS."")
$ THEN
$!
$! We Need A GNU C Linker Option File.
$!
$ CREATE 'OPT_FILE'
$DECK
!
! Default System Options File To Link Agianst
! The Sharable C Runtime Library.
!
GNU_CC:[000000]GCCLIB/LIBRARY
SYS$SHARE:VAXCRTL/SHARE
$EOD
$!
$! End The Option File Check.
$!
$ ENDIF
$!
$! End The GNU C Check.
$!
$ ENDIF
$!
$! Check To See If We Need A DEC C Option File.
$!
$ IF (COMPILER.EQS."DECC")
$ THEN
$!
$! Check To See If We Already Have A DEC C Linker Option File.
$!
$ IF (F$SEARCH(OPT_FILE).EQS."")
$ THEN
$!
$! Figure Out If We Need An AXP Or A VAX Linker Option File.
$!
$ IF (ARCH.EQS."VAX")
$ THEN
$!
$! We Need A DEC C Linker Option File For VAX.
$!
$ CREATE 'OPT_FILE'
$DECK
!
! Default System Options File To Link Agianst
! The Sharable DEC C Runtime Library.
!
SYS$SHARE:DECC$SHR.EXE/SHARE
$EOD
$!
$! Else...
$!
$ ELSE
$!
$! Create The AXP Linker Option File.
$!
$ CREATE 'OPT_FILE'
$DECK
!
! Default System Options File For AXP To Link Agianst
! The Sharable C Runtime Library.
!
SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE
SYS$SHARE:CMA$OPEN_RTL/SHARE
$EOD
$!
$! End The VAX/AXP DEC C Option File Check.
$!
$ ENDIF
$!
$! End The Option File Search.
$!
$ ENDIF
$!
$! End The DEC C Check.
$!
$ ENDIF
$!
$! Tell The User What Linker Option File We Are Using.
$!
$ WRITE SYS$OUTPUT "Using Linker Option File ",OPT_FILE,"."
$!
$! Time To RETURN.
$!
$ RETURN
$ LIB_CHECK:
$!
$! Look For The Library LIBRSAGLUE.OLB.
$!
$ IF (F$SEARCH(LIB_NAME).EQS."")
$ THEN
$!
$! Tell The User We Can't Find The [.xxx.EXE.RSAREF]LIBRSAGLUE.OLB Library.
$!
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "Can't Find The Library ",LIB_NAME,"."
$ WRITE SYS$OUTPUT "We Can't Link Without It."
$ WRITE SYS$OUTPUT ""
$!
$! And Ask If They Would Like To Build It.
$!
$ INQUIRE YESNO "Would You Like To Build The Library Now (Y/N)?"
$!
$! Check The Answer.
$!
$ IF (YESNO.EQS."Y").OR.(YESNO.EQS."y")
$ THEN
$!
$! Then Build The Library.
$!
$ GOSUB LIBRARY
$!
$! When Done With That, RETURN To Finish What Ever We Were Doing
$! That Needed The Library.
$!
$ RETURN
$!
$! Else...
$!
$ ELSE
$!
$! Since We Can't Link Without It, Exit.
$!
$ EXIT
$!
$! End The Answer Check.
$!
$ ENDIF
$!
$! End The Library Check.
$!
$ ENDIF
$!
$! Time To Return.
$!
$ RETURN
$!
$! Check The User's Options.
$!
$ CHECK_OPTIONS:
$!
$! Check To See If P1 Is Blank.
$!
$ IF (P1.EQS."ALL")
$ THEN
$!
$! P1 Is Blank, So Build Everything.
$!
$ BUILDALL = "TRUE"
$!
$! Else...
$!
$ ELSE
$!
$! Else, Check To See If P1 Has A Valid Arguement.
$!
$ IF (P1.EQS."LIBRARY").OR.(P1.EQS."DHDEMO").OR.(P1.EQS."RDEMO")
$ THEN
$!
$! A Valid Arguement.
$!
$ BUILDALL = P1
$!
$! Else....
$!
$ ELSE
$!
$! Tell The User We Don't Know What They Want.
$!
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "The Option ",P1," Is Invalid. The Valid Options Are:"
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT " ALL : To Just Build Everything."
$ WRITE SYS$OUTPUT " LIBRARY : To Compile Just The [.xxx.EXE.RSAREF]LIBRSAGLUE.OLB Library."
$ WRITE SYS$OUTPUT " DHDEMO : To Compile Just The [.xxx.EXE.RSAREF]DHDEMO Program."
$ WRITE SYS$OUTPUT " RDEMO : To Compile Just The [.xxx.EXE.RSAREF]RDEMO Program.
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT " Where 'xxx' Stands For:"
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT " AXP : Alpha Architecture."
$ WRITE SYS$OUTPUT " VAX : VAX Architecture."
$ WRITE SYS$OUTPUT ""
$!
$! Time To EXIT.
$!
$ EXIT
$!
$! End The Valid Arguement Check.
$!
$ ENDIF
$!
$! End The P1 Check.
$!
$ ENDIF
$!
$! Check To See If P2 Is Blank.
$!
$ IF (P2.EQS."NODEBUG")
$ THEN
$!
$! P2 Is "NODEBUG" So Compile Without Debugger Information.
$!
$ DEBUGGER = "NODEBUG"
$ TRACEBACK = "NOTRACEBACK"
$ GCC_OPTIMIZE = "OPTIMIZE"
$ CC_OPTIMIZE = "OPTIMIZE"
$ WRITE SYS$OUTPUT "No Debugger Information Will Be Produced During Compile."
$ WRITE SYS$OUTPUT "Compiling With Compiler Optimization."
$ ELSE
$!
$! Check To See If We Are To Compile With Debugger Information.
$!
$ IF (P2.EQS."DEBUG")
$ THEN
$!
$! Compile With Debugger Information.
$!
$ DEBUGGER = "DEBUG"
$ TRACEBACK = "TRACEBACK"
$ GCC_OPTIMIZE = "NOOPTIMIZE"
$ CC_OPTIMIZE = "NOOPTIMIZE"
$ WRITE SYS$OUTPUT "Debugger Information Will Be Produced During Compile."
$ WRITE SYS$OUTPUT "Compiling Without Compiler Optimization."
$ ELSE
$!
$! Tell The User Entered An Invalid Option..
$!
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "The Option ",P2," Is Invalid. The Valid Options Are:"
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT " DEBUG : Compile With The Debugger Information."
$ WRITE SYS$OUTPUT " NODEBUG : Compile Without The Debugger Information."
$ WRITE SYS$OUTPUT ""
$!
$! Time To EXIT.
$!
$ EXIT
$!
$! End The Valid Arguement Check.
$!
$ ENDIF
$!
$! End The P2 Check.
$!
$ ENDIF
$!
$! Special Threads For OpenVMS v7.1 Or Later.
$!
$! Written By: Richard Levitte
$! richard@levitte.org
$!
$!
$! Check To See If We Have A Option For P4.
$!
$ IF (P4.EQS."")
$ THEN
$!
$! Get The Version Of VMS We Are Using.
$!
$ ISSEVEN :=
$ TMP = F$ELEMENT(0,"-",F$EXTRACT(1,4,F$GETSYI("VERSION")))
$ TMP = F$INTEGER(F$ELEMENT(0,".",TMP)+F$ELEMENT(1,".",TMP))
$!
$! Check To See If The VMS Version Is v7.1 Or Later.
$!
$ IF (TMP.GE.71)
$ THEN
$!
$! We Have OpenVMS v7.1 Or Later, So Use The Special Threads.
$!
$ ISSEVEN := ,PTHREAD_USE_D4
$!
$! End The VMS Version Check.
$!
$ ENDIF
$!
$! End The P4 Check.
$!
$ ENDIF
$!
$! Check To See If P3 Is Blank.
$!
$ IF (P3.EQS."")
$ THEN
$!
$! O.K., The User Didn't Specify A Compiler, Let's Try To
$! Find Out Which One To Use.
$!
$! Check To See If We Have GNU C.
$!
$ IF (F$TRNLNM("GNU_CC").NES."")
$ THEN
$!
$! Looks Like GNUC, Set To Use GNUC.
$!
$ COMPILER = "GNUC"
$!
$! End The GNU C Compiler Check.
$!
$ ELSE
$!
$! Check To See If We Have VAXC Or DECC.
$!
$ IF (ARCH.EQS."ALPHA").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."")
$ THEN
$!
$! Looks Like DECC, Set To Use DECC.
$!
$ COMPILER = "DECC"
$!
$! Tell The User We Are Using DECC.
$!
$ WRITE SYS$OUTPUT "Using DECC 'C' Compiler."
$!
$! Else...
$!
$ ELSE
$!
$! Looks Like VAXC, Set To Use VAXC.
$!
$ COMPILER = "VAXC"
$!
$! End The VAXC Compiler Check.
$!
$ ENDIF
$!
$! End The DECC & VAXC Compiler Check.
$!
$ ENDIF
$!
$! End The Compiler Check.
$!
$ ENDIF
$!
$! Set Up Initial CC Definitions, Possibly With User Ones
$!
$ CCDEFS = "VMS=1"
$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS
$ CCEXTRAFLAGS = ""
$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS
$ CCDISABLEWARNINGS = ""
$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN -
CCDISABLEWARNINGS = USER_CCDISABLEWARNINGS
$!
$! Check To See If The User Entered A Valid Paramter.
$!
$ IF (P3.EQS."VAXC").OR.(P3.EQS."DECC").OR.(P3.EQS."GNUC")
$ THEN
$!
$! Check To See If The User Wanted DECC.
$!
$ IF (P3.EQS."DECC")
$ THEN
$!
$! Looks Like DECC, Set To Use DECC.
$!
$ COMPILER = "DECC"
$!
$! Tell The User We Are Using DECC.
$!
$ WRITE SYS$OUTPUT "Using DECC 'C' Compiler."
$!
$! Use DECC...
$!
$ CC = "CC"
$ IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" -
THEN CC = "CC/DECC"
$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + -
"/NOLIST/PREFIX=ALL" + -
"/INCLUDE=(SYS$DISK:[-.CRYPTO],SYS$DISK:[.SOURCE])" + CCEXTRAFLAGS
$!
$! Define The Linker Options File Name.
$!
$ OPT_FILE = "SYS$DISK:[]VAX_DECC_OPTIONS.OPT"
$!
$! End DECC Check.
$!
$ ENDIF
$!
$! Check To See If We Are To Use VAXC.
$!
$ IF (P3.EQS."VAXC")
$ THEN
$!
$! Looks Like VAXC, Set To Use VAXC.
$!
$ COMPILER = "VAXC"
$!
$! Tell The User We Are Using VAX C.
$!
$ WRITE SYS$OUTPUT "Using VAXC 'C' Compiler."
$!
$! Compile Using VAXC.
$!
$ CC = "CC"
$ IF ARCH.EQS."AXP"
$ THEN
$ WRITE SYS$OUTPUT "There is no VAX C on Alpha!"
$ EXIT
$ ENDIF
$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC"
$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
"/INCLUDE=(SYS$DISK:[-.CRYPTO],SYS$DISK:[.SOURCE])" + CCEXTRAFLAGS
$ CCDEFS = CCDEFS + ",""VAXC"""
$!
$! Define <sys> As SYS$COMMON:[SYSLIB]
$!
$ DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB]
$!
$! Define The Linker Options File Name.
$!
$ OPT_FILE = "SYS$DISK:[]VAX_VAXC_OPTIONS.OPT"
$!
$! End VAXC Check
$!
$ ENDIF
$!
$! Check To See If We Are To Use GNU C.
$!
$ IF (P3.EQS."GNUC")
$ THEN
$!
$! Looks Like GNUC, Set To Use GNUC.
$!
$ COMPILER = "GNUC"
$!
$! Tell The User We Are Using GNUC.
$!
$ WRITE SYS$OUTPUT "Using GNU 'C' Compiler."
$!
$! Use GNU C...
$!
$ CC = "GCC/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
"/INCLUDE=(SYS$DISK:[-.CRYPTO],SYS$DISK:[.SOURCE])" + CCEXTRAFLAGS
$!
$! Define The Linker Options File Name.
$!
$ OPT_FILE = "SYS$DISK:[]VAX_GNUC_OPTIONS.OPT"
$!
$! End The GNU C Check.
$!
$ ENDIF
$!
$! Set up default defines
$!
$ CCDEFS = """FLAT_INC=1""," + CCDEFS
$ CCDEFS = CCDEFS + ",""RSAref=1"""
$!
$! Finish up the definition of CC.
$!
$ IF COMPILER .EQS. "DECC"
$ THEN
$ IF CCDISABLEWARNINGS .NES. ""
$ THEN
$ CCDISABLEWARNINGS = "/WARNING=(DISABLE=(" + CCDISABLEWARNINGS + "))"
$ ENDIF
$ ELSE
$ CCDISABLEWARNINGS = ""
$ ENDIF
$ CC = CC + "/DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS
$!
$! Show user the result
$!
$ WRITE SYS$OUTPUT "Main Compiling Command: ",CC
$!
$! Else The User Entered An Invalid Arguement.
$!
$ ELSE
$!
$! Tell The User We Don't Know What They Want.
$!
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "The Option ",P3," Is Invalid. The Valid Options Are:"
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT " VAXC : To Compile With VAX C."
$ WRITE SYS$OUTPUT " DECC : To Compile With DEC C."
$ WRITE SYS$OUTPUT " GNUC : To Compile With GNU C."
$ WRITE SYS$OUTPUT ""
$!
$! Time To EXIT.
$!
$ EXIT
$!
$! End The P3 Check.
$!
$ ENDIF
$!
$! Time To RETURN...
$!
$ RETURN
$!
$ INITIALISE:
$!
$! Save old value of the logical name OPENSSL
$!
$ __SAVE_OPENSSL = F$TRNLNM("OPENSSL","LNM$PROCESS_TABLE")
$!
$! Save directory information
$!
$ __HERE = F$PARSE(F$PARSE("A.;",F$ENVIRONMENT("PROCEDURE"))-"A.;","[]A.;") - "A.;"
$ __TOP = __HERE - "RSAREF]"
$ __INCLUDE = __TOP + "INCLUDE.OPENSSL]"
$!
$! Set up the logical name OPENSSL to point at the include directory
$!
$ DEFINE OPENSSL/NOLOG '__INCLUDE'
$!
$! Done
$!
$ RETURN
$!
$ CLEANUP:
$!
$! Restore the logical name OPENSSL if it had a value
$!
$ IF __SAVE_OPENSSL .EQS. ""
$ THEN
$ DEASSIGN OPENSSL
$ ELSE
$ DEFINE/NOLOG OPENSSL '__SAVE_OPENSSL'
$ ENDIF
$!
$! Done
$!
$ RETURN

View File

@ -17,7 +17,7 @@ AR= ar r
CFLAGS= $(INCLUDES) $(CFLAG)
GENERAL=Makefile README
GENERAL=Makefile README ssl-lib.com install.com
TEST=ssltest.c
APPS=

102
ssl/install.com Normal file
View File

@ -0,0 +1,102 @@
$! INSTALL.COM -- Installs the files in a given directory tree
$!
$! Author: Richard Levitte <richard@levitte.org>
$! Time of creation: 22-MAY-1998 10:13
$!
$! P1 root of the directory tree
$!
$ IF P1 .EQS. ""
$ THEN
$ WRITE SYS$OUTPUT "First argument missing."
$ WRITE SYS$OUTPUT "Should be the directory where you want things installed."
$ EXIT
$ 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'.] /TRANS=CONC
$ DEFINE/NOLOG WRK_SSLVLIB WRK_SSLROOT:[VAX_LIB]
$ DEFINE/NOLOG WRK_SSLALIB WRK_SSLROOT:[ALPHA_LIB]
$ DEFINE/NOLOG WRK_SSLINCLUDE WRK_SSLROOT:[INCLUDE]
$ DEFINE/NOLOG WRK_SSLVEXE WRK_SSLROOT:[VAX_EXE]
$ DEFINE/NOLOG WRK_SSLAEXE WRK_SSLROOT:[ALPHA_EXE]
$
$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLROOT:[000000]
$ IF F$PARSE("WRK_SSLVLIB:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLVLIB:
$ IF F$PARSE("WRK_SSLALIB:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLALIB:
$ IF F$PARSE("WRK_SSLINCLUDE:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLINCLUDE:
$ IF F$PARSE("WRK_SSLVEXE:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLVEXE:
$ IF F$PARSE("WRK_SSLAEXE:") .EQS. "" THEN -
CREATE/DIR/LOG WRK_SSLAEXE:
$
$ EXHEADER := ssl.h,ssl2.h,ssl3.h,ssl23.h,tls1.h
$ E_EXE := ssl_task
$ LIBS := LIBSSL
$
$ VEXE_DIR := [-.VAX.EXE.SSL]
$ AEXE_DIR := [-.AXP.EXE.SSL]
$
$ COPY 'EXHEADER' WRK_SSLINCLUDE:/LOG
$
$ I = 0
$ LOOP_EXE:
$ E = F$EDIT(F$ELEMENT(I, ",", E_EXE),"TRIM")
$ I = I + 1
$ IF E .EQS. "," THEN GOTO LOOP_EXE_END
$ SET NOON
$ IF F$SEARCH(VEXE_DIR+E+".EXE") .NES. ""
$ THEN
$ COPY 'VEXE_DIR''E'.EXE WRK_SSLVEXE:'E'.EXE/log
$ SET FILE/PROT=W:RE WRK_SSLVEXE:'E'.EXE
$ ENDIF
$ IF F$SEARCH(AEXE_DIR+E+".EXE") .NES. ""
$ THEN
$ COPY 'AEXE_DIR''E'.EXE WRK_SSLAEXE:'E'.EXE/log
$ SET FILE/PROT=W:RE WRK_SSLAEXE:'E'.EXE
$ ENDIF
$ SET ON
$ GOTO LOOP_EXE
$ LOOP_EXE_END:
$
$ I = 0
$ LOOP_LIB:
$ E = F$EDIT(F$ELEMENT(I, ",", LIBS),"TRIM")
$ I = I + 1
$ IF E .EQS. "," THEN GOTO LOOP_LIB_END
$ SET NOON
$ IF F$SEARCH(VEXE_DIR+E+".OLB") .NES. ""
$ THEN
$ COPY 'VEXE_DIR''E'.OLB WRK_SSLVLIB:'E'.OLB/log
$ SET FILE/PROT=W:RE WRK_SSLVLIB:'E'.OLB
$ ENDIF
$ ! Preparing for the time when we have shareable images
$ IF F$SEARCH(VEXE_DIR+E+".EXE") .NES. ""
$ THEN
$ COPY 'VEXE_DIR''E'.EXE WRK_SSLVLIB:'E'.EXE/log
$ SET FILE/PROT=W:RE WRK_SSLVLIB:'E'.EXE
$ ENDIF
$ IF F$SEARCH(AEXE_DIR+E+".OLB") .NES. ""
$ THEN
$ COPY 'AEXE_DIR''E'.OLB WRK_SSLALIB:'E'.OLB/log
$ SET FILE/PROT=W:RE WRK_SSLALIB:'E'.OLB
$ ENDIF
$ ! Preparing for the time when we have shareable images
$ IF F$SEARCH(AEXE_DIR+E+".EXE") .NES. ""
$ THEN
$ COPY 'AEXE_DIR''E'.EXE WRK_SSLALIB:'E'.EXE/log
$ SET FILE/PROT=W:RE WRK_SSLALIB:'E'.EXE
$ ENDIF
$ SET ON
$ GOTO LOOP_LIB
$ LOOP_LIB_END:
$
$ EXIT

View File

@ -68,7 +68,7 @@ const char *ssl2_version_str="SSLv2" OPENSSL_VERSION_PTEXT;
#define SSL2_NUM_CIPHERS (sizeof(ssl2_ciphers)/sizeof(SSL_CIPHER))
SSL_CIPHER ssl2_ciphers[]={
GLOBAL SSL_CIPHER ssl2_ciphers[]={
/* NULL_WITH_MD5 v3 */
#if 0
{

View File

@ -67,7 +67,8 @@ const char *ssl3_version_str="SSLv3" OPENSSL_VERSION_PTEXT;
#define SSL3_NUM_CIPHERS (sizeof(ssl3_ciphers)/sizeof(SSL_CIPHER))
static long ssl3_default_timeout(void );
SSL_CIPHER ssl3_ciphers[]={
GLOBAL SSL_CIPHER ssl3_ciphers[]={
/* The RSA ciphers */
/* Cipher 01 */
{

1199
ssl/ssl-lib.com Normal file

File diff suppressed because it is too large Load Diff

View File

@ -61,7 +61,7 @@
#include <string.h>
#define USE_SOCKETS
#include "../e_os.h"
#include <openssl/e_os.h>
#include <openssl/buffer.h>
#include <openssl/stack.h>

View File

@ -698,10 +698,6 @@ struct ssl_st
#define SSL_get_timeout(a) SSL_SESSION_get_timeout(a)
#define SSL_set_timeout(a,b) SSL_SESSION_set_timeout((a),(b))
/* VMS linker has a 31 char name limit */
#define SSL_CTX_set_cert_verify_callback(a,b,c) \
SSL_CTX_set_cert_verify_cb((a),(b),(c))
#if 1 /*SSLEAY_MACROS*/
#define d2i_SSL_SESSION_bio(bp,s_id) (SSL_SESSION *)ASN1_d2i_bio( \
(char *(*)())SSL_SESSION_new,(char *(*)())d2i_SSL_SESSION, \
@ -818,6 +814,21 @@ struct ssl_st
#define SSL_CTX_add_extra_chain_cert(ctx,x509) \
SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509)
/* VMS uses only 31 characters for symbols. */
#ifdef VMS
#undef SSL_CTX_set_cert_verify_callback
#define SSL_CTX_set_cert_verify_callback SSL_CTX_set_cert_verify_cb
#undef SSL_CTX_use_certificate_chain_file
#define SSL_CTX_use_certificate_chain_file SSL_CTX_use_cert_chain_file
#undef SSL_CTX_set_default_verify_paths
#define SSL_CTX_set_default_verify_paths SSL_CTX_set_def_verify_paths
#undef SSL_get_ex_data_X509_STORE_CTX_idx
#define SSL_get_ex_data_X509_STORE_CTX_idx SSL_get_ex_data_X509_STOR_CTX_i
#undef SSL_add_file_cert_subjects_to_stack
#define SSL_add_file_cert_subjects_to_stack SSL_add_file_cert_sub_to_stack
#undef SSL_add_dir_cert_subjects_to_stack
#define SSL_add_dir_cert_subjects_to_stack SSL_add_dir_cert_sub_to_stack
#endif
#ifdef HEADER_BIO_H
BIO_METHOD *BIO_f_ssl(void);
@ -933,7 +944,7 @@ int (*SSL_CTX_get_verify_callback(SSL_CTX *ctx))(int,X509_STORE_CTX *);
void SSL_CTX_set_verify(SSL_CTX *ctx,int mode,
int (*callback)(int, X509_STORE_CTX *));
void SSL_CTX_set_verify_depth(SSL_CTX *ctx,int depth);
void SSL_CTX_set_cert_verify_cb(SSL_CTX *ctx, int (*cb)(),char *arg);
void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, int (*cb)(),char *arg);
#ifndef NO_RSA
int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa);
#endif

View File

@ -107,8 +107,10 @@
#include <stdio.h>
#include <sys/types.h>
#ifndef WIN32
#ifndef VMS
#include <dirent.h>
#endif
#endif
#include <openssl/objects.h>
#include <openssl/bio.h>
#include <openssl/pem.h>
@ -640,6 +642,7 @@ err:
*/
#ifndef WIN32
#ifndef VMS /* XXXX This may be fixed in the future */
int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack,
const char *dir)
@ -673,3 +676,4 @@ int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack,
}
#endif
#endif

View File

@ -70,7 +70,7 @@ static STACK *ssl_ctx_meth=NULL;
static int ssl_meth_num=0;
static int ssl_ctx_meth_num=0;
SSL3_ENC_METHOD ssl3_undef_enc_method={
GLOBAL SSL3_ENC_METHOD ssl3_undef_enc_method={
ssl_undefined_function,
ssl_undefined_function,
ssl_undefined_function,

View File

@ -334,9 +334,14 @@ typedef struct ssl3_comp_st
COMP_METHOD *method; /* The method :-) */
} SSL3_COMP;
extern SSL3_ENC_METHOD ssl3_undef_enc_method;
extern SSL_CIPHER ssl2_ciphers[];
extern SSL_CIPHER ssl3_ciphers[];
EXTERN SSL3_ENC_METHOD ssl3_undef_enc_method;
EXTERN SSL_CIPHER ssl2_ciphers[];
EXTERN SSL_CIPHER ssl3_ciphers[];
#ifdef VMS
#undef SSL_COMP_get_compression_methods
#define SSL_COMP_get_compression_methods SSL_COMP_get_compress_methods
#endif
SSL_METHOD *ssl_bad_method(int ver);

View File

@ -124,7 +124,7 @@ int LIB$INIT_TIMER(), LIB$SHOW_TIMER();
#include <string.h> /* from ssltest.c */
#include <errno.h>
#include <openssl/buffer.h>
#include "../e_os.h"
#include <openssl/e_os.h>
#include <openssl/x509.h>
#include <openssl/ssl.h>
#include <openssl/err.h>
@ -224,8 +224,12 @@ int main ( int argc, char **argv )
printf("cipher list: %s\n", cipher ? cipher : "{undefined}" );
SSL_load_error_strings();
SSLeay_add_all_algorithms();
/* DRM, this was the original, but there is no such thing as SSLv2()
s_ctx=SSL_CTX_new(SSLv2());
*/
s_ctx=SSL_CTX_new(SSLv2_server_method());
if (s_ctx == NULL) goto end;
@ -267,8 +271,12 @@ int doit(io_channel chan, SSL_CTX *s_ctx )
c_to_s=BIO_new(BIO_s_rtcp());
s_to_c=BIO_new(BIO_s_rtcp());
if ((s_to_c == NULL) || (c_to_s == NULL)) goto err;
/* original, DRM 24-SEP-1997
BIO_set_fd ( c_to_s, "", chan );
BIO_set_fd ( s_to_c, "", chan );
*/
BIO_set_fd ( c_to_s, 0, chan );
BIO_set_fd ( s_to_c, 0, chan );
c_bio=BIO_new(BIO_f_ssl());
s_bio=BIO_new(BIO_f_ssl());

View File

@ -74,8 +74,13 @@
#define NO_SSL2
#endif
#define TEST_SERVER_CERT "../apps/server.pem"
#define TEST_CLIENT_CERT "../apps/client.pem"
#ifdef VMS
# define TEST_SERVER_CERT "SYS$DISK:[-.APPS]SERVER.PEM"
# define TEST_CLIENT_CERT "SYS$DISK:[-.APPS]CLIENT.PEM"
#else
# define TEST_SERVER_CERT "../apps/server.pem"
# define TEST_CLIENT_CERT "../apps/client.pem"
#endif
int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx);
#ifndef NO_RSA

View File

@ -19,7 +19,10 @@ EX_LIBS= #-lnsl -lsocket
CFLAGS= $(INCLUDES) $(CFLAG)
GENERAL=Makefile.ssl
GENERAL=Makefile.ssl maketests.com \
tests.com testenc.com tx509.com trsa.com tcrl.com tsid.com treq.com \
tpkcs7.com tpkcs7d.com tverify.com testgen.com testss.com testssl.com \
testca.com VMSca-response.1 VMSca-response.2
DLIBCRYPTO= ../libcrypto.a
DLIBSSL= ../libssl.a

1
test/VMSca-response.1 Normal file
View File

@ -0,0 +1 @@

2
test/VMSca-response.2 Normal file
View File

@ -0,0 +1,2 @@
y
y

1053
test/maketests.com Normal file

File diff suppressed because it is too large Load Diff

78
test/tcrl.com Normal file
View File

@ -0,0 +1,78 @@
$! TCRL.COM -- Tests crl keys
$
$ __arch := VAX
$ if f$getsyi("cpu") .ge. 128 then __arch := AXP
$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
$
$ cmd := mcr 'exe_dir'openssl crl
$
$ t := testcrl.pem
$ if p1 .nes. "" then t = p1
$
$ write sys$output "testing CRL conversions"
$ copy 't' fff.p
$
$ write sys$output "p -> d"
$ 'cmd' -in fff.p -inform p -outform d -out f.d
$ if $severity .ne. 1 then exit 3
$! write sys$output "p -> t"
$! 'cmd' -in fff.p -inform p -outform t -out f.t
$! if $severity .ne. 1 then exit 3
$ write sys$output "p -> p"
$ 'cmd' -in fff.p -inform p -outform p -out f.p
$ if $severity .ne. 1 then exit 3
$
$ write sys$output "d -> d"
$ 'cmd' -in f.d -inform d -outform d -out ff.d1
$ if $severity .ne. 1 then exit 3
$! write sys$output "t -> d"
$! 'cmd' -in f.t -inform t -outform d -out ff.d2
$! if $severity .ne. 1 then exit 3
$ write sys$output "p -> d"
$ 'cmd' -in f.p -inform p -outform d -out ff.d3
$ if $severity .ne. 1 then exit 3
$
$! write sys$output "d -> t"
$! 'cmd' -in f.d -inform d -outform t -out ff.t1
$! if $severity .ne. 1 then exit 3
$! write sys$output "t -> t"
$! 'cmd' -in f.t -inform t -outform t -out ff.t2
$! if $severity .ne. 1 then exit 3
$! write sys$output "p -> t"
$! 'cmd' -in f.p -inform p -outform t -out ff.t3
$! if $severity .ne. 1 then exit 3
$
$ write sys$output "d -> p"
$ 'cmd' -in f.d -inform d -outform p -out ff.p1
$ if $severity .ne. 1 then exit 3
$! write sys$output "t -> p"
$! 'cmd' -in f.t -inform t -outform p -out ff.p2
$! if $severity .ne. 1 then exit 3
$ write sys$output "p -> p"
$ 'cmd' -in f.p -inform p -outform p -out ff.p3
$ if $severity .ne. 1 then exit 3
$
$ difference/output=nl: fff.p f.p
$ if $severity .ne. 1 then exit 3
$ difference/output=nl: fff.p ff.p1
$ if $severity .ne. 1 then exit 3
$! difference/output=nl: fff.p ff.p2
$! if $severity .ne. 1 then exit 3
$ difference/output=nl: fff.p ff.p3
$ if $severity .ne. 1 then exit 3
$
$! difference/output=nl: f.t ff.t1
$! if $severity .ne. 1 then exit 3
$! difference/output=nl: f.t ff.t2
$! if $severity .ne. 1 then exit 3
$! difference/output=nl: f.t ff.t3
$! if $severity .ne. 1 then exit 3
$
$ difference/output=nl: f.p ff.p1
$ if $severity .ne. 1 then exit 3
$! difference/output=nl: f.p ff.p2
$! if $severity .ne. 1 then exit 3
$ difference/output=nl: f.p ff.p3
$ if $severity .ne. 1 then exit 3
$
$ delete f.*;*,ff.*;*,fff.*;*

76
test/testca.com Normal file
View File

@ -0,0 +1,76 @@
$! TESTCA.COM
$
$ __arch := VAX
$ if f$getsyi("cpu") .ge. 128 then __arch := AXP
$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
$
$ openssl := mcr 'exe_dir'openssl
$
$ SSLEAY_CONFIG="-config ""CAss.cnf"""
$
$ set noon
$ if f$search("demoCA.dir") .nes. ""
$ then
$ call deltree [.demoCA]*.*
$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) demoCA.dir;*
$ delete demoCA.dir;*
$ endif
$ set on
$ open/read sys$ca_input VMSca-response.1
$ @[-.apps]CA.com -input sys$ca_input -newca
$ close sys$ca_input
$ if $severity .ne. 1 then exit 3
$
$
$ SSLEAY_CONFIG="-config ""Uss.cnf"""
$ @[-.apps]CA.com -newreq
$ if $severity .ne. 1 then exit 3
$
$
$ SSLEAY_CONFIG="-config [-.apps]openssl-vms.cnf"
$ open/read sys$ca_input VMSca-response.2
$ @[-.apps]CA.com -input sys$ca_input -sign
$ close sys$ca_input
$ if $severity .ne. 1 then exit 3
$
$
$ @[-.apps]CA.com -verify newcert.pem
$ if $severity .ne. 1 then exit 3
$
$ set noon
$ call deltree [.demoCA]*.*
$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) demoCA.dir;*
$ delete demoCA.dir;*,newcert.pem;*,newreq.pem;*
$ set on
$! #usage: CA -newcert|-newreq|-newca|-sign|-verify
$
$ exit
$
$ deltree: subroutine ! P1 is a name of a directory
$ on control_y then goto dt_STOP
$ on warning then goto dt_exit
$ _dt_def = f$trnlnm("SYS$DISK")+f$directory()
$ if f$parse(p1) .eqs. "" then exit
$ set default 'f$parse(p1,,,"DEVICE")''f$parse(p1,,,"DIRECTORY")'
$ p1 = f$parse(p1,,,"NAME") + f$parse(p1,,,"TYPE")
$ _fp = f$parse(".DIR",p1)
$ dt_loop:
$ _f = f$search(_fp)
$ if _f .eqs. "" then goto dt_loopend
$ call deltree [.'f$parse(_f,,,"NAME")']*.*
$ goto dt_loop
$ dt_loopend:
$ _fp = f$parse(p1,".;*")
$ if f$search(_fp) .eqs. "" then goto dt_exit
$ set noon
$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) '_fp'
$ set on
$ delete/nolog '_fp'
$ dt_exit:
$ set default '_dt_def'
$ exit
$ dt_STOP:
$ set default '_dt_def'
$ stop/id=""
$ exit
$ endsubroutine

50
test/testenc.com Normal file
View File

@ -0,0 +1,50 @@
$! TESTENC.COM -- Test encoding and decoding
$
$ __arch := VAX
$ if f$getsyi("cpu") .ge. 128 then __arch := AXP
$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
$
$ testsrc := makefile.ssl
$ test := p.txt
$ cmd := mcr 'exe_dir'openssl
$
$ copy 'testsrc' 'test'
$
$ write sys$output "cat"
$ 'cmd' enc -in 'test' -out 'test'-cipher
$ 'cmd' enc -in 'test'-cipher -out 'test'-clear
$ difference/output=nl: 'test' 'test'-clear
$ if $severity .ne. 1 then exit 3
$ delete 'test'-cipher;*,'test'-clear;*
$
$ write sys$output "base64"
$ 'cmd' enc -a -e -in 'test' -out 'test'-cipher
$ 'cmd' enc -a -d -in 'test'-cipher -out 'test'-clear
$ difference/output=nl: 'test' 'test'-clear
$ if $severity .ne. 1 then exit 3
$ delete 'test'-cipher;*,'test'-clear;*
$
$ define/user sys$output 'test'-cipher-commands
$ 'cmd' list-cipher-commands
$ open/read f 'test'-cipher-commands
$ loop_cipher_commands:
$ read/end=loop_cipher_commands_end f i
$ write sys$output i
$ 'cmd' 'i' -bufsize 113 -e -k test -in 'test' -out 'test'-'i'-cipher
$ 'cmd' 'i' -bufsize 157 -d -k test -in 'test'-'i'-cipher -out 'test'-'i'-clear
$ difference/output=nl: 'test' 'test'-'i'-clear
$ if $severity .ne. 1 then exit 3
$ delete 'test'-'i'-cipher;*,'test'-'i'-clear;*
$
$ write sys$output i," base64"
$ 'cmd' 'i' -bufsize 113 -a -e -k test -in 'test' -out 'test'-'i'-cipher
$ 'cmd' 'i' -bufsize 157 -a -d -k test -in 'test'-'i'-cipher -out 'test'-'i'-clear
$ difference/output=nl: 'test' 'test'-'i'-clear
$ if $severity .ne. 1 then exit 3
$ delete 'test'-'i'-cipher;*,'test'-'i'-clear;*
$
$ goto loop_cipher_commands
$ loop_cipher_commands_end:
$ close f
$ delete 'test'-cipher-commands;*
$ delete 'test';*

33
test/testgen.com Normal file
View File

@ -0,0 +1,33 @@
$! TETSGEN.COM
$
$ __arch := VAX
$ if f$getsyi("cpu") .ge. 128 then __arch := AXP
$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
$
$ T := testcert
$ KEY = 512
$ CA := [-.certs]testca.pem
$
$ set noon
$ delete 'T'.1;*,'T'.2;*,'T'.key;*
$ set on
$
$ write sys$output "generating certificate request"
$
$ write sys$output "There should be a 2 sequences of .'s and some +'s."
$ write sys$output "There should not be more that at most 80 per line"
$ write sys$output "This could take some time."
$
$ mcr 'exe_dir'openssl req -config test.cnf -new -out testreq.pem
$ if $severity .ne. 1
$ then
$ write sys$output "problems creating request"
$ exit 3
$ endif
$
$ mcr 'exe_dir'openssl req -verify -in testreq.pem -noout
$ if $severity .ne. 1
$ then
$ write sys$output "signature on req is wrong"
$ exit 3
$ endif

203
test/tests.com Normal file
View File

@ -0,0 +1,203 @@
$! TESTS.COM -- Performs the necessary tests
$!
$! P1 tests to be performed. Empty means all.
$
$ __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 := AXP
$ texe_dir := sys$disk:[-.'__arch'.exe.test]
$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
$
$ set default '__here'
$ on control_y then goto exit
$ on error then goto exit
$
$ if p1 .nes. ""
$ then
$ tests = p1
$ else
$ tests := -
test_des,test_idea,test_sha,test_md5,test_hmac,test_md2,test_mdc2,-
test_rc2,test_rc4,test_rc5,test_bf,test_cast,-
test_rand,test_bn,test_enc,test_x509,test_rsa,test_crl,test_sid,-
test_reqgen,test_req,test_pkcs7,test_verify,test_dh,test_dsa,-
test_ss,test_ssl,test_ca
$ endif
$ tests = f$edit(tests,"COLLAPSE")
$
$ BNTEST := bntest
$ EXPTEST := exptest
$ IDEATEST := ideatest
$ SHATEST := shatest
$ SHA1TEST := sha1test
$ MDC2TEST := mdc2test
$ RMDTEST := rmdtest
$ MD2TEST := md2test
$ MD5TEST := md5test
$ HMACTEST := hmactest
$ RC2TEST := rc2test
$ RC4TEST := rc4test
$ RC5TEST := rc5test
$ BFTEST := bftest
$ CASTTEST := casttest
$ DESTEST := destest
$ RANDTEST := randtest
$ DHTEST := dhtest
$ DSATEST := dsatest
$ METHTEST := methtest
$ SSLTEST := ssltest
$ RSATEST := rsa_oaep_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
$ goto 'tests_e'
$
$ test_des:
$ mcr 'texe_dir''destest'
$ goto loop_tests
$ test_idea:
$ mcr 'texe_dir''ideatest'
$ goto loop_tests
$ test_sha:
$ mcr 'texe_dir''shatest'
$ mcr 'texe_dir''sha1test'
$ goto loop_tests
$ test_mdc2:
$ mcr 'texe_dir''mdc2test'
$ goto loop_tests
$ test_md5:
$ mcr 'texe_dir''md5test'
$ goto loop_tests
$ test_hmac:
$ mcr 'texe_dir''hmactest'
$ goto loop_tests
$ test_md2:
$ mcr 'texe_dir''md2test'
$ goto loop_tests
$ test_rmd:
$ mcr 'texe_dir''rmdtest'
$ goto loop_tests
$ test_bf:
$ mcr 'texe_dir''bftest'
$ goto loop_tests
$ test_cast:
$ mcr 'texe_dir''casttest'
$ goto loop_tests
$ test_rc2:
$ mcr 'texe_dir''rc2test'
$ goto loop_tests
$ test_rc4:
$ mcr 'texe_dir''rc4test'
$ goto loop_tests
$ test_rc5:
$ mcr 'texe_dir''rc5test'
$ goto loop_tests
$ test_rand:
$ mcr 'texe_dir''randtest'
$ goto loop_tests
$ test_enc:
$ @testenc.com
$ goto loop_tests
$ test_x509:
$ define sys$error nla0:
$ write sys$output "test normal x509v1 certificate"
$ @tx509.com
$ write sys$output "test first x509v3 certificate"
$ @tx509.com v3-cert1.pem
$ write sys$output "test second x509v3 certificate"
$ @tx509.com v3-cert2.pem
$ deassign sys$error
$ goto loop_tests
$ test_rsa:
$ define sys$error nla0:
$ @trsa.com
$ deassign sys$error
$ mcr 'texe_dir''rsatest'
$ goto loop_tests
$ test_crl:
$ define sys$error nla0:
$ @tcrl.com
$ deassign sys$error
$ goto loop_tests
$ test_sid:
$ define sys$error nla0:
$ @tsid.com
$ deassign sys$error
$ goto loop_tests
$ test_req:
$ define sys$error nla0:
$ @treq.com
$ @treq.com testreq2.pem
$ deassign sys$error
$ goto loop_tests
$ test_pkcs7:
$ define sys$error nla0:
$ @tpkcs7.com
$ @tpkcs7d.com
$ deassign sys$error
$ goto loop_tests
$ test_bn:
$ write sys$output "starting big number library test, could take a while..."
$ create bntest-vms.fdl
FILE
ORGANIZATION sequential
RECORD
FORMAT stream_lf
$ create/fdl=bntest-vms.fdl bntest-vms.sh
$ open/append foo bntest-vms.sh
$ type/output=foo: sys$input:
<< __FOO__ bc | awk '{ \
if ($$0 != "0") {print "error"; exit(1); } \
if (((NR+1)%64) == 0) print NR+1," tests done"; }'
$ define/user sys$output bntest-vms.tmp
$ mcr 'texe_dir''bntest'
$ copy bntest-vms.tmp foo:
$ delete bntest-vms.tmp;*
$ type/output=foo: sys$input:
__FOO__
$ close foo
$ write sys$output "-- copy the [.test]bntest-vms.sh file to a Unix system and run it"
$ write sys$output "-- through sh or bash to verify that the bignum operations went well."
$ write sys$output ""
$ write sys$output "test a^b%c implementations"
$ mcr 'texe_dir''exptest'
$ goto loop_tests
$ 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
$ goto loop_tests
$ test_dh:
$ write sys$output "Generate as set of DH parameters"
$ mcr 'texe_dir''dhtest'
$ goto loop_tests
$ test_dsa:
$ write sys$output "Generate as set of DSA parameters"
$ mcr 'texe_dir''dsatest'
$ goto loop_tests
$ test_reqgen:
$ write sys$output "Generate and verify a certificate request"
$ @testgen.com
$ goto loop_tests
$ test_ss:
$ write sys$output "Generate and certify a test certificate"
$ @testss.com
$ goto loop_tests
$ test_ssl:
$ write sys$output "test SSL protocol"
$ @testssl.com
$ goto loop_tests
$ test_ca:
$ write sys$output "Generate and certify a test certificate via the 'ca' program"
$ @testca.com
$ goto loop_tests
$
$
$ exit:
$ set default '__save_default'
$ exit

104
test/testss.com Normal file
View File

@ -0,0 +1,104 @@
$! TESTSS.COM
$
$ __arch := VAX
$ if f$getsyi("cpu") .ge. 128 then __arch := AXP
$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
$
$ digest="-mdc2"
$ reqcmd := mcr 'exe_dir'openssl req
$ x509cmd := mcr 'exe_dir'openssl x509 'digest'
$ verifycmd := mcr 'exe_dir'openssl verify
$
$ CAkey="""keyCA.ss"""
$ CAcert="""certCA.ss"""
$ CAreq="""reqCA.ss"""
$ CAconf="""CAss.cnf"""
$ CAreq2="""req2CA.ss""" ! temp
$
$ Uconf="""Uss.cnf"""
$ Ukey="""keyU.ss"""
$ Ureq="""reqU.ss"""
$ Ucert="""certU.ss"""
$
$ write sys$output ""
$ write sys$output "make a certificate request using 'req'"
$ 'reqcmd' -config 'CAconf' -out 'CAreq' -keyout 'CAkey' -new ! -out err.ss
$ if $severity .ne. 1
$ then
$ write sys$output "error using 'req' to generate a certificate request"
$ exit 3
$ endif
$ write sys$output ""
$ write sys$output "convert the certificate request into a self signed certificate using 'x509'"
$ define /user sys$output err.ss
$ 'x509cmd' "-CAcreateserial" -in 'CAreq' -days 30 -req -out 'CAcert' -signkey 'CAkey'
$ if $severity .ne. 1
$ then
$ write sys$output "error using 'x509' to self sign a certificate request"
$ exit 3
$ endif
$
$ write sys$output ""
$ write sys$output "convert a certificate into a certificate request using 'x509'"
$ define /user sys$output err.ss
$ 'x509cmd' -in 'CAcert' -x509toreq -signkey 'CAkey' -out 'CAreq2'
$ if $severity .ne. 1
$ then
$ write sys$output "error using 'x509' convert a certificate to a certificate request"
$ exit 3
$ endif
$
$ 'reqcmd' -verify -in 'CAreq' -noout
$ if $severity .ne. 1
$ then
$ write sys$output "first generated request is invalid"
$ exit 3
$ endif
$
$ 'reqcmd' -verify -in 'CAreq2' -noout
$ if $severity .ne. 1
$ then
$ write sys$output "second generated request is invalid"
$ exit 3
$ endif
$
$ 'verifycmd' "-CAfile" 'CAcert' 'CAcert'
$ if $severity .ne. 1
$ then
$ write sys$output "first generated cert is invalid"
$ exit 3
$ endif
$
$ write sys$output ""
$ write sys$output "make another certificate request using 'req'"
$ define /user sys$output err.ss
$ 'reqcmd' -config 'Uconf' -out 'Ureq' -keyout 'Ukey' -new
$ if $severity .ne. 1
$ then
$ write sys$output "error using 'req' to generate a certificate request"
$ exit 3
$ endif
$
$ write sys$output ""
$ write sys$output "sign certificate request with the just created CA via 'x509'"
$ define /user sys$output err.ss
$ 'x509cmd' "-CAcreateserial" -in 'Ureq' -days 30 -req -out 'Ucert' "-CA" 'CAcert' "-CAkey" 'CAkey'
$ if $severity .ne. 1
$ then
$ write sys$output "error using 'x509' to sign a certificate request"
$ exit 3
$ endif
$
$ 'verifycmd' "-CAfile" 'CAcert' 'Ucert'
$ write sys$output ""
$ write sys$output "Certificate details"
$ 'x509cmd' -subject -issuer -startdate -enddate -noout -in 'Ucert'
$
$ write sys$output ""
$ write sys$output "The generated CA certificate is ",CAcert
$ write sys$output "The generated CA private key is ",CAkey
$
$ write sys$output "The generated user certificate is ",Ucert
$ write sys$output "The generated user private key is ",Ukey
$
$ delete err.ss;*

63
test/testssl.com Normal file
View File

@ -0,0 +1,63 @@
$! TESTSSL.COM
$
$ __arch := VAX
$ if f$getsyi("cpu") .ge. 128 then __arch := AXP
$ exe_dir := sys$disk:[-.'__arch'.exe.test]
$
$ copy/concatenate [-.certs]*.pem certs.tmp
$
$ write sys$output "test sslv2"
$ mcr 'exe_dir'ssltest -ssl2
$ if $severity .ne. 1 then goto exit3
$
$ write sys$output "test sslv2 with server authentication"
$ mcr 'exe_dir'ssltest -ssl2 -server_auth "-CAfile" certs.tmp
$ if $severity .ne. 1 then goto exit3
$
$ write sys$output "test sslv2 with client authentication"
$ mcr 'exe_dir'ssltest -ssl2 -client_auth "-CAfile" certs.tmp
$ if $severity .ne. 1 then goto exit3
$
$ write sys$output "test sslv2 with both client and server authentication"
$ mcr 'exe_dir'ssltest -ssl2 -server_auth -client_auth "-CAfile" certs.tmp
$ if $severity .ne. 1 then goto exit3
$
$ write sys$output "test sslv3"
$ mcr 'exe_dir'ssltest -ssl3
$ if $severity .ne. 1 then goto exit3
$
$ write sys$output "test sslv3 with server authentication"
$ mcr 'exe_dir'ssltest -ssl3 -server_auth "-CAfile" certs.tmp
$ if $severity .ne. 1 then goto exit3
$
$ write sys$output "test sslv3 with client authentication"
$ mcr 'exe_dir'ssltest -ssl3 -client_auth "-CAfile" certs.tmp
$ if $severity .ne. 1 then goto exit3
$
$ write sys$output "test sslv3 with both client and server authentication"
$ mcr 'exe_dir'ssltest -ssl3 -server_auth -client_auth "-CAfile" certs.tmp
$ if $severity .ne. 1 then goto exit3
$
$ write sys$output "test sslv2/sslv3"
$ mcr 'exe_dir'ssltest
$ if $severity .ne. 1 then goto exit3
$
$ write sys$output "test sslv2/sslv3 with server authentication"
$ mcr 'exe_dir'ssltest -server_auth "-CAfile" certs.tmp
$ if $severity .ne. 1 then goto exit3
$
$ write sys$output "test sslv2/sslv3 with client authentication"
$ mcr 'exe_dir'ssltest -client_auth "-CAfile" certs.tmp
$ if $severity .ne. 1 then goto exit3
$
$ write sys$output "test sslv2/sslv3 with both client and server authentication"
$ mcr 'exe_dir'ssltest -server_auth -client_auth "-CAfile" certs.tmp
$ if $severity .ne. 1 then goto exit3
$
$ RET = 1
$ goto exit
$ exit3:
$ RET = 3
$ exit:
$ delete certs.tmp;*
$ exit 'RET'

Some files were not shown because too many files have changed in this diff Show More