Commit 38507506 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Preliminary VC++ build changes to support fipsdso. New perl script nksdef.pl to

work out how to split the DEF file between the two DLLs based on which symbols
the linker complains about (!).
parent f47f786f
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -5,7 +5,8 @@
 Changes between 0.9.7l and 0.9.7m-fips2 [xx XXX xxxx]

  *) New build option fipsdso to link fipscanister.o into a DSO called 
     libfips.so and modify build system to link against it.
     libfips.so and modify build system to link against it. Preliminary changes
     to VC++ build system to accomodate fipsdso.
     [Steve Henson]

  *) New version of RSA_{sign,verify} for FIPS code. This uses pregenerated
+2 −0
Original line number Diff line number Diff line
@@ -991,6 +991,8 @@ print "Configuring for $target\n";

my $IsWindows=scalar grep /^$target$/,@WinTargets;

$no_shared = 1 if ($IsWindows && $fipsdso);

$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target eq "mingw");
$exe_ext=".pm" if ($target eq "vos-gcc" or $target eq "debug-vos-gcc" or $target eq "vos-vcc" or $target eq "debug-vos-vcc");
$openssldir="/usr/local/ssl" if ($openssldir eq "" and $prefix eq "");
+2 −0
Original line number Diff line number Diff line
@@ -262,6 +262,8 @@ FIPS_EX_OBJ= ../crypto/aes/aes_cbc.o \
	../crypto/des/ecb_enc.o \
	../crypto/des/ofb64ede.o \
	../crypto/des/ofb64enc.o \
	../crypto/des/fcrypt_b.o \
	../crypto/des/fcrypt.o \
	../crypto/dh/dh_lib.o \
	../crypto/dsa/dsa_lib.o \
	../crypto/dsa/dsa_sign.o \
+30 −4
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ my $fips_premain_c_path = "";
my $fips_sha1_exe_path = "";

local $fipscanisterbuild = 0;
local $fipsdso = 0;

my $fipslibdir = "";
my $baseaddr = "";
@@ -450,6 +451,8 @@ if ($fips_premain_dso_exe_path eq "")

#	$ex_build_targets .= "\$(BIN_D)${o}\$(E_PREMAIN_DSO)$exep" if ($fips);

$ex_l_libs .= " \$(L_FIPS)" if $fipsdso;

if ($fips)
	{
	if (!$shlib)
@@ -587,6 +590,7 @@ PREMAIN_DSO_EXE=$fips_premain_dso_exe_path
E_EXE=openssl
SSL=$ssl
CRYPTO=$crypto
LIBFIPS=libfips

# BIN_D  - Binary output directory
# TEST_D - Binary test file output directory
@@ -605,10 +609,12 @@ INCL_D=\$(TMP_D)

O_SSL=     \$(LIB_D)$o$plib\$(SSL)$shlibp
O_CRYPTO=  \$(LIB_D)$o$plib\$(CRYPTO)$shlibp
O_FIPS=    \$(LIB_D)$o$plib\$(LIBFIPS)$shlibp
SO_SSL=    $plib\$(SSL)$so_shlibp
SO_CRYPTO= $plib\$(CRYPTO)$so_shlibp
L_SSL=     \$(LIB_D)$o$plib\$(SSL)$libp
L_CRYPTO=  \$(LIB_D)$o$plib\$(CRYPTO)$libp
L_FIPS=    \$(LIB_D)$o$plib\$(LIBFIPS)$libp

L_LIBS= \$(L_SSL) \$(L_CRYPTO) $ex_l_libs

@@ -841,10 +847,24 @@ if ($fips)
	{
	if ($shlib)
		{
		$rules.= &do_lib_rule("\$(CRYPTOOBJ) \$(O_FIPSCANISTER)",
			"\$(O_CRYPTO)",
			"$crypto",
		if ($fipsdso)
			{
			$rules.= &do_lib_rule("\$(CRYPTOOBJ)",
					"\$(O_CRYPTO)", "$crypto",
					$shlib, "", "");
			$rules.= &do_lib_rule(
				"\$(O_FIPSCANISTER)",
				"\$(O_FIPS)", "libfips",
				$shlib, "\$(SO_CRYPTO)", "\$(BASEADDR)");
			$rules.= &do_sdef_rule();
			}
		else
			{
			$rules.= &do_lib_rule(
				"\$(CRYPTOOBJ) \$(O_FIPSCANISTER)",
				"\$(O_CRYPTO)", "$crypto",
				$shlib, "\$(SO_CRYPTO)", "\$(BASEADDR)");
			}
		}
	else
		{
@@ -1189,6 +1209,12 @@ sub read_options
		$fips=1;
		$fipscanisterbuild=1;
		}
	elsif (/^fipsdso$/)
		{
		$fips=1;
		$fipscanisterbuild=1;
		$fipsdso=1;
		}
	elsif (/^([^=]*)=(.*)$/){ $VARS{$1}=$2; }
	elsif (/^-[lL].*$/)	{ $l_flags.="$_ "; }
	elsif ((!/^-help/) && (!/^-h/) && (!/^-\?/) && /^-.*$/)
+1 −2
Original line number Diff line number Diff line
@@ -130,8 +130,7 @@ foreach (@ARGV, split(/ /, $options))
	}
	$VMS=1 if $_ eq "VMS";
	$OS2=1 if $_ eq "OS2";
	$fips=1 if $_ eq "fips";
	$fips=1 if $_ eq "fipscanisterbuild";
	$fips=1 if /^fips/;

	$do_ssl=1 if $_ eq "ssleay";
	if ($_ eq "ssl") {
Loading