From: Dr. Stephen Henson Date: Mon, 6 Feb 2006 14:16:38 +0000 (+0000) Subject: Use and build fips_premain_dso.exe and fips_standalone_sha1.exe from VC++ X-Git-Tag: OpenSSL_FIPS_1_0~2 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=33d3b6043ae42d9f889164dc53afe6cd857d7f25;p=oweals%2Fopenssl.git Use and build fips_premain_dso.exe and fips_standalone_sha1.exe from VC++ instead of those from mingw build. Visual Studio Express 2005 doesn't like fips_premain_dso.exe from mingw used against its DLLs. --- diff --git a/util/mk1mf.pl b/util/mk1mf.pl index 2f1cb5d42b..ac0906c0f3 100755 --- a/util/mk1mf.pl +++ b/util/mk1mf.pl @@ -374,18 +374,25 @@ if ($fips_premain_c_path eq "") $fips_premain_c_path = "\$(FIPSLIB_D)${o}fips_premain.c"; } -if ($fips_sha1_exe_path eq "") +if ($fips) + { + if ($fips_sha1_exe_path eq "") + { + $fips_sha1_exe_path = + "\$(BIN_D)${o}fips_standalone_sha1$exep"; + } + } + else { - $fips_sha1_exe_path = - "fips-1.0${o}sha${o}fips_standalone_sha1$exep"; + $fips_sha1_exe_path = ""; } if ($fips_premain_dso_exe_path eq "") { - $fips_premain_dso_exe_path = "fips-1.0${o}fips_premain_dso$exep"; + $fips_premain_dso_exe_path = "\$(BIN_D)${o}fips_premain_dso$exep"; } -# $ex_build_targets .= "\$(FIPSLIB_D)${o}\$(E_PREMAIN_DSO)$exep" if ($fips_canister_build); +# $ex_build_targets .= "\$(BIN_D)${o}\$(E_PREMAIN_DSO)$exep" if ($fips); if ($fips) { @@ -555,7 +562,7 @@ LIBS_DEP=\$(O_CRYPTO) \$(O_SSL) $ex_libs_dep EOF $rules=<<"EOF"; -all: banner \$(TMP_D) \$(BIN_D) \$(TEST_D) \$(LIB_D) \$(INCO_D) headers lib exe $ex_build_targets +all: banner \$(TMP_D) \$(BIN_D) \$(TEST_D) \$(LIB_D) \$(INCO_D) \$(FIPS_SHA1_EXE) headers lib exe $ex_build_targets banner: $banner @@ -667,14 +674,22 @@ $rules.=&do_compile_rule("\$(OBJ_D)",$e_exe,'-DMONOLITH $(APP_CFLAGS)'); # Special case rules for fips_start and fips_end fips_premain_dso -if ($fips && $fips_canister_build) +if ($fips) { - $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_start$obj", - "fips-1.0${o}fips_canister.c", "-DFIPS_START \$(SHLIB_CFLAGS)"); - $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_end$obj", - "fips-1.0${o}fips_canister.c", "\$(SHLIB_CFLAGS)"); + if ($fips_canister_build) + { + $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_start$obj", + "fips-1.0${o}fips_canister.c", + "-DFIPS_START \$(SHLIB_CFLAGS)"); + $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_end$obj", + "fips-1.0${o}fips_canister.c", "\$(SHLIB_CFLAGS)"); + } $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_standalone_sha1$obj", - "fips-1.0${o}sha${o}fips_standalone_sha1.c", "\$(SHLIB_CFLAGS)"); + "fips-1.0${o}sha${o}fips_standalone_sha1.c", + "\$(SHLIB_CFLAGS)"); + $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_sha1dgst$obj", + "fips-1.0${o}sha${o}fips_sha1dgst.c", + "\$(SHLIB_CFLAGS)") unless $fips_canister_build; $rules.=&cc_compile_target("\$(OBJ_D)${o}\$(E_PREMAIN_DSO)$obj", "fips-1.0${o}fips_premain.c", "-DFINGERPRINT_PREMAIN_DSO_LOAD \$(SHLIB_CFLAGS)"); @@ -763,8 +778,9 @@ if ($fips) if ($shlib) { $rules.= &do_lib_rule("\$(CRYPTOOBJ) \$(O_FIPSCANISTER)", - "\$(O_CRYPTO)",$crypto,$shlib, "\$(SO_CRYPTO)", - "0xFB00000"); + "\$(O_CRYPTO)", + "$crypto", + $shlib, "\$(SO_CRYPTO)", "0xFB00000"); } else { @@ -781,22 +797,16 @@ if ($fips) } -if ($fips && $fips_canister_build) - { - $rules.= &do_rlink_rule("\$(O_FIPSCANISTER)", "\$(OBJ_D)${o}fips_start$obj \$(FIPSOBJ) \$(OBJ_D)${o}fips_end$obj", "\$(FIPSLIB_D)${o}fips_standalone_sha1$exep", ""); - $rules.=&do_link_rule("\$(FIPSLIB_D)${o}\$(E_PREMAIN_DSO)$exep","\$(OBJ_D)${o}\$(E_PREMAIN_DSO)$obj \$(O_CRYPTO) \$(O_FIPSCANISTER)","","\$(EX_LIBS)", 1); - } - - $rules.=&do_link_rule("\$(FIPSLIB_D)${o}fips_standalone_sha1$exep","\$(OBJ_D)${o}fips_standalone_sha1$obj \$(OBJ_D)${o}fips_sha1dgst$obj","","", 1); - if ($fips) { - $rules.=&do_link_rule("\$(BIN_D)$o\$(E_EXE)$exep","\$(E_OBJ)","\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)",0,"\$(BIN_D)$o\$(E_EXE)$exep"); - } -else - { - $rules.=&do_link_rule("\$(BIN_D)$o\$(E_EXE)$exep","\$(E_OBJ)","\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)"); + $rules.= &do_rlink_rule("\$(O_FIPSCANISTER)", "\$(OBJ_D)${o}fips_start$obj \$(FIPSOBJ) \$(OBJ_D)${o}fips_end$obj", "\$(FIPSLIB_D)${o}fips_standalone_sha1$exep", "") if $fips_canister_build; + $rules.=&do_link_rule("\$(PREMAIN_DSO_EXE)","\$(OBJ_D)${o}\$(E_PREMAIN_DSO)$obj \$(CRYPTOOBJ) \$(O_FIPSCANISTER)","","\$(EX_LIBS)", 1); + + $rules.=&do_link_rule("\$(FIPS_SHA1_EXE)","\$(OBJ_D)${o}fips_standalone_sha1$obj \$(OBJ_D)${o}fips_sha1dgst$obj","","", 1); } + + $rules.=&do_link_rule("\$(BIN_D)$o\$(E_EXE)$exep","\$(E_OBJ)","\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)",0); + print $defs; if ($platform eq "linux-elf") { diff --git a/util/pl/VC-32-GMAKE.pl b/util/pl/VC-32-GMAKE.pl index 0c65aff752..b5bbcac6c2 100644 --- a/util/pl/VC-32-GMAKE.pl +++ b/util/pl/VC-32-GMAKE.pl @@ -23,8 +23,6 @@ $rm='rm'; $zlib_lib="zlib1.lib"; -$fips_canister_build = 1 if $fips; - # C compiler stuff $cc='cl'; $cflags=' -MD -W3 -WX -Ox -O2 -Ob2 -Gs0 -GF -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32'; diff --git a/util/pl/VC-32.pl b/util/pl/VC-32.pl index 37187061e1..5bc50e2485 100644 --- a/util/pl/VC-32.pl +++ b/util/pl/VC-32.pl @@ -146,7 +146,7 @@ sub do_lib_rule if ($fips && $target =~ /O_CRYPTO/) { $ex.=" ms${o}_chkstk.o"; - $ret.="$target: $objs $fips_get_sig\n"; + $ret.="$target: $objs \$(PREMAIN_DSO_EXE)\n"; $ret.="\tSET FIPS_LINK=\$(LINK)\n"; $ret.="\tSET FIPS_CC=\$(CC)\n"; $ret.="\tSET FIPS_CC_ARGS=/Fo\$(OBJ_D)${o}fips_premain.obj \$(SHLIB_CFLAGS) -c\n"; @@ -177,8 +177,9 @@ sub do_link_rule $ret.="$target: $files $dep_libs\n"; if ($standalone) { - $ret.=" \$(LINK) \$(LFLAGS) $efile$target @<<\n"; - $ret.=" $files $libs\n<<\n"; + $ret.=" \$(LINK) \$(LFLAGS) $efile$target @<<\n\t"; + $ret.="ms/_chkstk.o " if ($files =~ /O_FIPSCANISTER/); + $ret.="$files $libs\n<<\n"; } elsif ($fips && !$shlib) {