Here is a revised patch for DJGPP compatibility on 0.9.7-stable. I
think this takes care of the problem with the patch breaking Makefiles
on other platforms. I also removed the egd code, since it really
didn't work on DJGPP/WATT-32. Revised patch also copied to the US Bureau
of Industry and Security.
Doug
--
Doug Kaufman
Internet: [EMAIL PROTECTED]
--- OpenSSL-0.9.7/Configure.orig 2004-08-04 00:10:26.000000000 -0800
+++ OpenSSL-0.9.7/Configure 2004-08-04 19:10:36.000000000 -0800
@@ -526,7 +526,7 @@
"Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486
-Wall:::CYGWIN32::BN_LLONG ${x86_gcc_des}
${x86_gcc_opts}:${x86_out_asm}:win32:cygwin-shared:::.dll",
# DJGPP
-"DJGPP", "gcc:-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2
-Wall:::MSDOS:-L/dev/env/WATT_ROOT/lib -lwatt:BN_LLONG ${x86_gcc_des}
${x86_gcc_opts}::::::::::",
+"DJGPP", "gcc:-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN -fomit-frame-pointer
-fno-strict-aliasing -O2 -Wall:::MSDOS:-L/dev/env/WATT_ROOT/lib -lwatt:BN_LLONG
${x86_gcc_des} ${x86_gcc_opts}::::::::::",
# Ultrix from Bernhard Simon <[EMAIL PROTECTED]>
"ultrix-cc","cc:-std1 -O -Olimit 2500 -DL_ENDIAN::(unknown):::::::",
@@ -1168,8 +1168,8 @@
}
$des_obj=$des_enc unless (!$fips && $des_obj =~ /\.o$/);
my $fips_des_obj='asm/fips-dx86-elf.o';
-$fips_des_obj=$fips_des_enc unless $processor eq '386';
-my $fips_sha1_obj='asm/sx86-elf.o' if $processor eq '386';
+$fips_des_obj=$fips_des_enc unless ($processor eq '386' && $target ne 'DJGPP');
+my $fips_sha1_obj='asm/sx86-elf.o' if ($processor eq '386' && $target ne 'DJGPP');
$bf_obj=$bf_enc unless ($bf_obj =~ /\.o$/);
$cast_obj=$cast_enc unless ($cast_obj =~ /\.o$/);
$rc4_obj=$rc4_enc unless ($rc4_obj =~ /\.o$/);
--- OpenSSL-0.9.7/crypto/des/des_enc.c.ori 2004-05-11 05:00:58.000000000 -0800
+++ OpenSSL-0.9.7/crypto/des/des_enc.c 2004-08-01 17:14:50.000000000 -0800
@@ -293,7 +293,7 @@
#ifndef DES_DEFAULT_OPTIONS
-#if !defined(OPENSSL_FIPS) || !defined(I386_ONLY)
+#if !defined(OPENSSL_FIPS) || !defined(I386_ONLY) || defined(__DJGPP__)
#undef CBC_ENC_C__DONT_UPDATE_IV
#include "ncbc_enc.c" /* DES_ncbc_encrypt */
--- OpenSSL-0.9.7/crypto/rand/rand_unix.c.ori 2003-12-27 09:01:10.000000000 -0800
+++ OpenSSL-0.9.7/crypto/rand/rand_unix.c 2004-08-02 21:40:54.000000000 -0800
@@ -142,6 +142,26 @@
return 1;
}
#else
+#ifdef __DJGPP__
+int RAND_poll(void)
+{
+ long rnd = 0;
+ int i, rnd1 = 0;
+ unsigned char buf[ENTROPY_NEEDED];
+
+ for (i = 0; i < sizeof(buf); i++) {
+ srand(rawclock() + i);
+ rnd1 = rand();
+ srandom(rnd1);
+ rnd = random();
+ buf[i] = rnd;
+ }
+ RAND_add(buf, sizeof(buf), ENTROPY_NEEDED);
+ memset(buf, 0, sizeof(buf));
+
+ return 1;
+}
+#else
int RAND_poll(void)
{
unsigned long l;
@@ -255,6 +275,7 @@
#endif
#endif
+#endif
#if defined(OPENSSL_SYS_VXWORKS)
int RAND_poll(void)
--- OpenSSLl-0.9.7/fips/openssl_fips_fingerprint.ori 2004-06-27 00:01:44.000000000
-0800
+++ OpenSSLl-0.9.7/fips/openssl_fips_fingerprint 2004-08-01 17:55:24.000000000
-0800
@@ -11,7 +11,11 @@
# case shared libraries are built.
if [ "X$TOP" != "X" ]
then
- PATH=$TOP/apps:$PATH
+ if test "$OSTYPE" = msdosdjgpp; then
+ PATH=$TOP/apps\;$PATH
+ else
+ PATH=$TOP/apps:$PATH
+ fi
LD_LIBRARY_PATH=$TOP; export LD_LIBRARY_PATH
else
LD_LIBRARY_PATH=.; export LD_LIBRARY_PATH
--- OpenSSL-0.9.7/fips/aes/Makefile.orig 2004-06-27 00:01:44.000000000 -0800
+++ OpenSSL-0.9.7/fips/aes/Makefile 2004-08-06 05:41:32.000000000 -0800
@@ -19,7 +19,6 @@
GENERAL=Makefile
TEST=fips_aesavs.c
-TESTDATA=fips_aes_data
APPS=
LIB=$(TOP)/libcrypto.a
@@ -52,17 +51,15 @@
links:
@$(PERL) $(TOP)/util/mklink.pl $(TOP)/include/openssl $(EXHEADER)
@$(PERL) $(TOP)/util/mklink.pl $(TOP)/test $(TEST)
- @$(PERL) $(TOP)/util/mklink.pl $(TOP)/test $(TESTDATA)
@$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS)
install:
- @if test -n "$(EXHEADER)"; then \
- for i in $(EXHEADER) ; \
- do \
+ @for i in "" $(EXHEADER) ; do \
+ if test "x" != "x$$i"; then \
(cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
- done; \
- fi
+ fi; \
+ done
tags:
ctags $(SRC)
--- OpenSSL-0.9.7/fips/des/Makefile.orig 2004-07-17 05:00:56.000000000 -0800
+++ OpenSSL-0.9.7/fips/des/Makefile 2004-08-06 05:43:40.000000000 -0800
@@ -56,13 +56,12 @@
@$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS)
install:
- @if test -n "$(EXHEADER)"; then \
- for i in $(EXHEADER) ; \
- do \
+ @for i in "" $(EXHEADER) ; do \
+ if test "x" != "x$$i"; then \
(cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
- done; \
- fi
+ fi; \
+ done
tags:
ctags $(SRC)
--- OpenSSL-0.9.7/fips/dh/Makefile.orig 2004-06-21 01:07:38.000000000 -0800
+++ OpenSSL-0.9.7/fips/dh/Makefile 2004-08-06 05:46:06.000000000 -0800
@@ -54,13 +54,12 @@
@$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS)
install:
- @if test -n "$(EXHEADER)"; then \
- for i in $(EXHEADER) ; \
- do \
+ @for i in "" $(EXHEADER) ; do \
+ if test "x" != "x$$i"; then \
(cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
- done; \
- fi
+ fi; \
+ done
tags:
ctags $(SRC)
--- OpenSSL-0.9.7/fips/dsa/Makefile.orig 2004-06-27 00:01:46.000000000 -0800
+++ OpenSSL-0.9.7/fips/dsa/Makefile 2004-08-06 05:48:02.000000000 -0800
@@ -54,13 +54,12 @@
@$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS)
install:
- @if test -n "$(EXHEADER)"; then \
- for i in $(EXHEADER) ; \
- do \
+ @for i in "" $(EXHEADER) ; do \
+ if test "x" != "x$$i"; then \
(cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
- done; \
- fi
+ fi; \
+ done
tags:
ctags $(SRC)
--- OpenSSL-0.9.7/fips/rsa/Makefile.orig 2004-06-27 00:01:46.000000000 -0800
+++ OpenSSL-0.9.7/fips/rsa/Makefile 2004-08-06 05:50:00.000000000 -0800
@@ -54,13 +54,12 @@
@$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS)
install:
- @if test -n "$(EXHEADER)"; then \
- for i in $(EXHEADER) ; \
- do \
+ @for i in "" $(EXHEADER) ; do \
+ if test "x" != "x$$i"; then \
(cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
- done; \
- fi
+ fi; \
+ done
tags:
ctags $(SRC)
--- OpenSSL-0.9.7/fips/sha1/Makefile.orig 2004-06-27 00:01:46.000000000 -0800
+++ OpenSSL-0.9.7/fips/sha1/Makefile 2004-08-06 05:52:02.000000000 -0800
@@ -64,13 +64,12 @@
@$(PERL) $(TOP)/util/mklink.pl $(TOP)/apps $(APPS)
install:
- @if test -n "$(EXHEADER)"; then \
- for i in $(EXHEADER) ; \
- do \
+ @for i in "" $(EXHEADER) ; do \
+ if test "x" != "x$$i"; then \
(cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \
chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \
- done; \
- fi
+ fi; \
+ done
tags:
ctags $(SRC)
--- OpenSSL-0.9.7/fips/sha1/fips_sha1test.c.ori 2004-08-01 17:33:16.000000000 -0800
+++ OpenSSL-0.9.7/fips/sha1/fips_sha1test.c 2004-08-03 23:56:22.000000000 -0800
@@ -6,6 +6,11 @@
#include <openssl/sha.h>
#include <openssl/err.h>
#include <openssl/fips.h>
+#ifdef __DJGPP__
+#include <io.h>
+#include <fcntl.h>
+#include <unistd.h>
+#endif
#ifndef OPENSSL_FIPS
int main(int argc, char *argv[])
@@ -64,6 +69,11 @@
FILE *fp;
int phase;
+#ifdef __DJGPP__
+ _fmode=O_BINARY;
+ if (!isatty(fileno(stdout)))
+ setmode(fileno(stdout), O_BINARY);
+#endif
if(argc != 2)
{
fprintf(stderr,"%s <test vector file>\n",argv[0]);
--- OpenSSL-0.9.7/test/Makefile.ori 2004-08-01 17:37:06.000000000 -0800
+++ OpenSSL-0.9.7/test/Makefile 2004-08-01 18:34:44.000000000 -0800
@@ -320,7 +320,7 @@
$(CC) -o $(FIPS_AESTEST)$(EXE_EXT) $(CFLAGS) $(FIPS_AESTEST).o $(PEX_LIBS)
$(LIBCRYPTO) $(EX_LIBS) ; \
fi
if egrep 'define OPENSSL_FIPS' $(TOP)/include/openssl/opensslconf.h >
/dev/null; then \
- TOP=$(TOP) $(TOP)/fips/openssl_fips_fingerprint $(TOP)/libcrypto.a
$(FIPS_AESTEST); \
+ TOP=$(TOP) $(TOP)/fips/openssl_fips_fingerprint $(TOP)/libcrypto.a
$(FIPS_AESTEST)$(EXE_EXT); \
fi
$(RSATEST)$(EXE_EXT): $(RSATEST).o $(DLIBCRYPTO)
@@ -394,7 +394,7 @@
$(CC) -o $(FIPS_SHA1TEST)$(EXE_EXT) $(CFLAGS) $(FIPS_SHA1TEST).o $(PEX_LIBS)
$(LIBCRYPTO) $(EX_LIBS) ; \
fi
if egrep 'define OPENSSL_FIPS' $(TOP)/include/openssl/opensslconf.h >
/dev/null; then \
- TOP=$(TOP) $(TOP)/fips/openssl_fips_fingerprint $(TOP)/libcrypto.a
$(FIPS_SHA1TEST); \
+ TOP=$(TOP) $(TOP)/fips/openssl_fips_fingerprint $(TOP)/libcrypto.a
$(FIPS_SHA1TEST)$(EXE_EXT); \
fi
$(RMDTEST)$(EXE_EXT): $(RMDTEST).o $(DLIBCRYPTO)
@@ -493,7 +493,7 @@
$(CC) -o $(FIPS_DESTEST)$(EXE_EXT) $(CFLAGS) $(FIPS_DESTEST).o $(PEX_LIBS)
$(LIBCRYPTO) $(EX_LIBS) ; \
fi
if egrep 'define OPENSSL_FIPS' $(TOP)/include/openssl/opensslconf.h >
/dev/null; then \
- TOP=$(TOP) $(TOP)/fips/openssl_fips_fingerprint $(TOP)/libcrypto.a
$(FIPS_DESTEST); \
+ TOP=$(TOP) $(TOP)/fips/openssl_fips_fingerprint $(TOP)/libcrypto.a
$(FIPS_DESTEST)$(EXE_EXT); \
fi
$(RANDTEST)$(EXE_EXT): $(RANDTEST).o $(DLIBCRYPTO)
@@ -511,7 +511,7 @@
$(CC) -o $(FIPS_RANDTEST)$(EXE_EXT) $(CFLAGS) $(FIPS_RANDTEST).o $(PEX_LIBS)
$(LIBCRYPTO) $(EX_LIBS) ; \
fi
if egrep 'define OPENSSL_FIPS' $(TOP)/include/openssl/opensslconf.h >
/dev/null; then \
- TOP=$(TOP) $(TOP)/fips/openssl_fips_fingerprint $(TOP)/libcrypto.a
$(FIPS_RANDTEST); \
+ TOP=$(TOP) $(TOP)/fips/openssl_fips_fingerprint $(TOP)/libcrypto.a
$(FIPS_RANDTEST)$(EXE_EXT); \
fi
$(DHTEST)$(EXE_EXT): $(DHTEST).o $(DLIBCRYPTO)
@@ -537,7 +537,7 @@
$(CC) -o $(FIPS_DSATEST)$(EXE_EXT) $(CFLAGS) $(FIPS_DSATEST).o $(PEX_LIBS)
$(LIBCRYPTO) $(EX_LIBS) ; \
fi
if egrep 'define OPENSSL_FIPS' $(TOP)/include/openssl/opensslconf.h >
/dev/null; then \
- TOP=$(TOP) $(TOP)/fips/openssl_fips_fingerprint $(TOP)/libcrypto.a
$(FIPS_DSATEST); \
+ TOP=$(TOP) $(TOP)/fips/openssl_fips_fingerprint $(TOP)/libcrypto.a
$(FIPS_DSATEST)$(EXE_EXT); \
fi
$(METHTEST)$(EXE_EXT): $(METHTEST).o $(DLIBCRYPTO)
@@ -556,7 +556,7 @@
$(CC) -o $(SSLTEST)$(EXE_EXT) $(CFLAGS) $(SSLTEST).o $(PEX_LIBS) $(LIBSSL)
$(LIBKRB5) $(LIBCRYPTO) $(EX_LIBS) ; \
fi
if egrep 'define OPENSSL_FIPS' $(TOP)/include/openssl/opensslconf.h >
/dev/null; then \
- TOP=$(TOP) $(TOP)/fips/openssl_fips_fingerprint $(TOP)/libcrypto.a
$(SSLTEST); \
+ TOP=$(TOP) $(TOP)/fips/openssl_fips_fingerprint $(TOP)/libcrypto.a
$(SSLTEST)$(EXE_EXT); \
fi
$(ENGINETEST)$(EXE_EXT): $(ENGINETEST).o $(DLIBCRYPTO)