From 05d7aa5734bb02007387622dce801ec4d1eebaf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Wed, 30 May 2018 15:09:55 +0200 Subject: [PATCH] Fix various build failures on Windows (Courtesy of rockerinthelocker) --- config.h.win32 | 12 +++++++ lib/isc/win32/include/isc/platform.h.in | 3 -- win32utils/Configure | 44 +++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 3 deletions(-) diff --git a/config.h.win32 b/config.h.win32 index 4356a1a199..87a2dca778 100644 --- a/config.h.win32 +++ b/config.h.win32 @@ -330,6 +330,18 @@ typedef __int64 off_t; /* Define if your OpenSSL version supports GOST. */ @HAVE_OPENSSL_GOST@ +/* Define if your OpenSSL version supports DH functions. */ +@HAVE_DH_GET0_KEY@ + +/* Define if your OpenSSL version supports DSA functions. */ +@HAVE_DSA_GET0_PQG@ + +/* Define if your OpenSSL version supports ECDSA functions. */ +@HAVE_ECDSA_SIG_GET0@ + +/* Define if your OpenSSL version supports RSA functions. */ +@HAVE_RSA_SET0_KEY@ + /* Define if native PKCS#11 is used as cryptographic library provider */ @HAVE_PKCS11@ diff --git a/lib/isc/win32/include/isc/platform.h.in b/lib/isc/win32/include/isc/platform.h.in index 3b60b01e11..0aeebff249 100644 --- a/lib/isc/win32/include/isc/platform.h.in +++ b/lib/isc/win32/include/isc/platform.h.in @@ -56,9 +56,6 @@ #define ISC_PLATFORM_NEEDNTOP #define ISC_PLATFORM_NEEDPTON #define ISC_PLATFORM_HAVESOCKADDRSTORAGE -#if _MSC_VER >= 1900 -#define ISC_PLATFORM_HAVETFO -#endif #define ISC_PLATFORM_QUADFORMAT "I64" diff --git a/win32utils/Configure b/win32utils/Configure index 62e965ff35..4f77d26941 100644 --- a/win32utils/Configure +++ b/win32utils/Configure @@ -209,6 +209,10 @@ my @substdefh = ("AES_CC", "HAVE_OPENSSL_ED448", "HAVE_OPENSSL_EVP_AES", "HAVE_OPENSSL_GOST", + "HAVE_DH_GET0_KEY", + "HAVE_DSA_GET0_PQG", + "HAVE_ECDSA_SIG_GET0", + "HAVE_RSA_SET0_KEY", "HAVE_PKCS11", "HAVE_PKCS11_ECDSA", "HAVE_PKCS11_ED25519", @@ -1138,6 +1142,11 @@ if ($vcredist_path eq " --infer-- ") { "redist", "1033")); } + # 'VCToolsRedistDir' is available since Visual Studio 2017. + if ($ENV{"VCToolsRedistDir"}) { + push(@vcpaths, $ENV{"VCToolsRedistDir"}); + } + my $rfile; if ($want_win32 eq "yes") { $rfile = "vcredist_x86.exe"; @@ -1594,6 +1603,41 @@ EOF } } +# check OpenSSL built-in support for DH/DSA/ECDSA/RSA functions +if ($use_openssl eq "yes") { + if ($verbose) { + printf "checking OpenSSL built-in support for DH/DSA/ECDSA/RSA functions\n"; + } + open F, ">testosslfunc.c" || die $!; + print F << 'EOF'; +#include +#include + +int main() { + if (OPENSSL_VERSION_NUMBER >= 0x10100000L) { + return (0); + } + printf("\n\nFound OPENSSL_VERSION_NUMBER %#010x\n", + OPENSSL_VERSION_NUMBER); + printf("This version has no built-in support for DH/DSA/ECDSA/RSA functions.\n\n"); + return (1); +} +EOF + close F; + my $include = $configinc{"OPENSSL_INC"}; + my $library = $configlib{"OPENSSL_LIB"}; + $compret = `cl /nologo /MD /I "$include" testosslfunc.c "$library"`; + if (grep { -f and -x } ".\\testosslfunc.exe") { + `.\\testosslfunc.exe`; + if ($? == 0) { + $configdefh{"HAVE_DH_GET0_KEY"} = 1; + $configdefh{"HAVE_DSA_GET0_PQG"} = 1; + $configdefh{"HAVE_ECDSA_SIG_GET0"} = 1; + $configdefh{"HAVE_RSA_SET0_KEY"} = 1; + } + } +} + # check FIPS_mode if ($use_openssl eq "yes") {