[Openvpn-devel,v2] msvc: OpenSSL 1.1.x support

Message ID 1571315023-17044-1-git-send-email-lstipakov@gmail.com
State Accepted
Headers show
Series [Openvpn-devel,v2] msvc: OpenSSL 1.1.x support | expand

Commit Message

Lev Stipakov Oct. 17, 2019, 1:23 a.m. UTC
Since we release Windows client with OpenSSL 1.1.0
(and will switch to 1.1.1 in the next release),
it makes sense to use a newer version in VS build.

This patch adds msvc-specific defines which imply
that underlying OpenSSL is 1.1.x (works with 1.1.0 and 1.1.1).

Also OpenSSL library names in project file are updated.

Signed-off-by: Lev Stipakov <lstipakov@gmail.com>
---

v2: clarify in comment and commit message that
    this supports 1.1.x, which is 1.1.0 and 1.1.1.


 config-msvc.h               | 37 +++++++++++++++++++++++++++++++++++++
 src/openvpn/openvpn.vcxproj |  8 ++++----
 2 files changed, 41 insertions(+), 4 deletions(-)

Comments

Simon Rozman Oct. 30, 2019, 4:30 a.m. UTC | #1
Hi,

Unfortunately, I have no Visual Studio 2017 available any more. So, I had to upgrade the openvpn-build and openvpn to build with VS2019 first.

Tested with OpenSSL 1.1.1d and this patch is indeed required to build openvpn.exe.

Acked-by: Simon Rozman <simon@rozman.si>

Best regards,
Simon

On 17.10.2019, 14:27, "Lev Stipakov" <lstipakov@gmail.com> wrote:

    Since we release Windows client with OpenSSL 1.1.0
    (and will switch to 1.1.1 in the next release),
    it makes sense to use a newer version in VS build.
    
    This patch adds msvc-specific defines which imply
    that underlying OpenSSL is 1.1.x (works with 1.1.0 and 1.1.1).
    
    Also OpenSSL library names in project file are updated.
    
    Signed-off-by: Lev Stipakov <lstipakov@gmail.com>
    ---
    
    v2: clarify in comment and commit message that
        this supports 1.1.x, which is 1.1.0 and 1.1.1.
    
    
     config-msvc.h               | 37 +++++++++++++++++++++++++++++++++++++
     src/openvpn/openvpn.vcxproj |  8 ++++----
     2 files changed, 41 insertions(+), 4 deletions(-)
    
    diff --git a/config-msvc.h b/config-msvc.h
    index 45fae8b..875da4a 100644
    --- a/config-msvc.h
    +++ b/config-msvc.h
    @@ -76,6 +76,43 @@
     #define HAVE_POLL 1
     
     #define HAVE_OPENSSL_ENGINE 1
    +/* hardcode usage of OpenSSL 1.1.x */
    +#define HAVE_EVP_MD_CTX_RESET 1
    +#define HAVE_EVP_MD_CTX_FREE 1
    +#define HAVE_EVP_MD_CTX_NEW 1
    +#define HAVE_HMAC_CTX_RESET 1
    +#define HAVE_HMAC_CTX_FREE 1
    +#define HAVE_HMAC_CTX_NEW 1
    +#define HAVE_SSL_CTX_GET_DEFAULT_PASSWD_CB_USERDATA 1
    +#define HAVE_SSL_CTX_GET_DEFAULT_PASSWD_CB 1
    +#define HAVE_X509_GET0_PUBKEY 1
    +#define HAVE_X509_STORE_GET0_OBJECTS 1
    +#define HAVE_X509_OBJECT_FREE 1
    +#define HAVE_X509_OBJECT_GET_TYPE 1
    +#define HAVE_EVP_PKEY_GET0_RSA 1
    +#define HAVE_EVP_PKEY_GET0_EC_KEY 1
    +#define HAVE_EVP_PKEY_ID 1
    +#define HAVE_EVP_PKEY_GET0_DSA 1
    +#define HAVE_RSA_SET_FLAGS 1
    +#define HAVE_RSA_GET0_KEY 1
    +#define HAVE_RSA_SET0_KEY 1
    +#define HAVE_RSA_BITS 1
    +#define HAVE_DSA_GET0_PQG 1
    +#define HAVE_DSA_BITS 1
    +#define HAVE_RSA_METH_NEW 1
    +#define HAVE_RSA_METH_FREE 1
    +#define HAVE_RSA_METH_SET_PUB_ENC 1
    +#define HAVE_RSA_METH_SET_PUB_DEC 1
    +#define HAVE_RSA_METH_SET_PRIV_ENC 1
    +#define HAVE_RSA_METH_SET_PRIV_DEC 1
    +#define HAVE_RSA_METH_SET_INIT 1
    +#define HAVE_RSA_METH_SET_SIGN 1
    +#define HAVE_RSA_METH_SET_FINISH 1
    +#define HAVE_RSA_METH_SET0_APP_DATA 1
    +#define HAVE_RSA_METH_GET0_APP_DATA 1
    +#define HAVE_EC_GROUP_ORDER_BITS 1
    +#define OPENSSL_NO_EC 1
    +#define HAVE_EVP_CIPHER_CTX_RESET 1
     
     #define PATH_SEPARATOR     '\\'
     #define PATH_SEPARATOR_STR "\\"
    diff --git a/src/openvpn/openvpn.vcxproj b/src/openvpn/openvpn.vcxproj
    index 3b0ee60..4ffff2b 100644
    --- a/src/openvpn/openvpn.vcxproj
    +++ b/src/openvpn/openvpn.vcxproj
    @@ -78,7 +78,7 @@
         </ClCompile>
         <ResourceCompile />
         <Link>
    -      <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libeay32.lib;ssleay32.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
    +      <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libssl.lib;libcrypto.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
           <AdditionalLibraryDirectories>$(OPENSSL_HOME)/lib;$(LZO_HOME)/lib;$(PKCS11H_HOME)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
           <SubSystem>Console</SubSystem>
         </Link>
    @@ -91,7 +91,7 @@
         </ClCompile>
         <ResourceCompile />
         <Link>
    -      <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libeay32.lib;ssleay32.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
    +      <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libssl.lib;libcrypto.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
           <AdditionalLibraryDirectories>$(OPENSSL_HOME)/lib;$(LZO_HOME)/lib;$(PKCS11H_HOME)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
           <SubSystem>Console</SubSystem>
         </Link>
    @@ -104,7 +104,7 @@
         </ClCompile>
         <ResourceCompile />
         <Link>
    -      <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libeay32.lib;ssleay32.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
    +      <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libssl.lib;libcrypto.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
           <AdditionalLibraryDirectories>$(OPENSSL_HOME)/lib;$(LZO_HOME)/lib;$(PKCS11H_HOME)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
           <SubSystem>Console</SubSystem>
         </Link>
    @@ -117,7 +117,7 @@
         </ClCompile>
         <ResourceCompile />
         <Link>
    -      <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libeay32.lib;ssleay32.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
    +      <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libssl.lib;libcrypto.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
           <AdditionalLibraryDirectories>$(OPENSSL_HOME)/lib;$(LZO_HOME)/lib;$(PKCS11H_HOME)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
           <SubSystem>Console</SubSystem>
         </Link>
    -- 
    2.7.4
    
    
    
    _______________________________________________
    Openvpn-devel mailing list
    Openvpn-devel@lists.sourceforge.net
    https://lists.sourceforge.net/lists/listinfo/openvpn-devel
Gert Doering Nov. 2, 2019, 9:32 a.m. UTC | #2
Your patch has been applied to the master branch.

(I have not done more than "see that there are no code changes involved"
- if Simon and you say the build system changes are fine, I just believe so)

commit 277844321a981c66b781b7ef10aaf4097b702eb8
Author: Lev Stipakov
Date:   Thu Oct 17 15:23:43 2019 +0300

     msvc: OpenSSL 1.1.x support

     Signed-off-by: Lev Stipakov <lstipakov@gmail.com>
     Acked-by: Simon Rozman <simon@rozman.si>
     Message-Id: <1571315023-17044-1-git-send-email-lstipakov@gmail.com>
     URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg18948.html
     Signed-off-by: Gert Doering <gert@greenie.muc.de>


--
kind regards,

Gert Doering

Patch

diff --git a/config-msvc.h b/config-msvc.h
index 45fae8b..875da4a 100644
--- a/config-msvc.h
+++ b/config-msvc.h
@@ -76,6 +76,43 @@ 
 #define HAVE_POLL 1
 
 #define HAVE_OPENSSL_ENGINE 1
+/* hardcode usage of OpenSSL 1.1.x */
+#define HAVE_EVP_MD_CTX_RESET 1
+#define HAVE_EVP_MD_CTX_FREE 1
+#define HAVE_EVP_MD_CTX_NEW 1
+#define HAVE_HMAC_CTX_RESET 1
+#define HAVE_HMAC_CTX_FREE 1
+#define HAVE_HMAC_CTX_NEW 1
+#define HAVE_SSL_CTX_GET_DEFAULT_PASSWD_CB_USERDATA 1
+#define HAVE_SSL_CTX_GET_DEFAULT_PASSWD_CB 1
+#define HAVE_X509_GET0_PUBKEY 1
+#define HAVE_X509_STORE_GET0_OBJECTS 1
+#define HAVE_X509_OBJECT_FREE 1
+#define HAVE_X509_OBJECT_GET_TYPE 1
+#define HAVE_EVP_PKEY_GET0_RSA 1
+#define HAVE_EVP_PKEY_GET0_EC_KEY 1
+#define HAVE_EVP_PKEY_ID 1
+#define HAVE_EVP_PKEY_GET0_DSA 1
+#define HAVE_RSA_SET_FLAGS 1
+#define HAVE_RSA_GET0_KEY 1
+#define HAVE_RSA_SET0_KEY 1
+#define HAVE_RSA_BITS 1
+#define HAVE_DSA_GET0_PQG 1
+#define HAVE_DSA_BITS 1
+#define HAVE_RSA_METH_NEW 1
+#define HAVE_RSA_METH_FREE 1
+#define HAVE_RSA_METH_SET_PUB_ENC 1
+#define HAVE_RSA_METH_SET_PUB_DEC 1
+#define HAVE_RSA_METH_SET_PRIV_ENC 1
+#define HAVE_RSA_METH_SET_PRIV_DEC 1
+#define HAVE_RSA_METH_SET_INIT 1
+#define HAVE_RSA_METH_SET_SIGN 1
+#define HAVE_RSA_METH_SET_FINISH 1
+#define HAVE_RSA_METH_SET0_APP_DATA 1
+#define HAVE_RSA_METH_GET0_APP_DATA 1
+#define HAVE_EC_GROUP_ORDER_BITS 1
+#define OPENSSL_NO_EC 1
+#define HAVE_EVP_CIPHER_CTX_RESET 1
 
 #define PATH_SEPARATOR     '\\'
 #define PATH_SEPARATOR_STR "\\"
diff --git a/src/openvpn/openvpn.vcxproj b/src/openvpn/openvpn.vcxproj
index 3b0ee60..4ffff2b 100644
--- a/src/openvpn/openvpn.vcxproj
+++ b/src/openvpn/openvpn.vcxproj
@@ -78,7 +78,7 @@ 
     </ClCompile>
     <ResourceCompile />
     <Link>
-      <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libeay32.lib;ssleay32.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libssl.lib;libcrypto.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>$(OPENSSL_HOME)/lib;$(LZO_HOME)/lib;$(PKCS11H_HOME)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <SubSystem>Console</SubSystem>
     </Link>
@@ -91,7 +91,7 @@ 
     </ClCompile>
     <ResourceCompile />
     <Link>
-      <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libeay32.lib;ssleay32.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libssl.lib;libcrypto.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>$(OPENSSL_HOME)/lib;$(LZO_HOME)/lib;$(PKCS11H_HOME)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <SubSystem>Console</SubSystem>
     </Link>
@@ -104,7 +104,7 @@ 
     </ClCompile>
     <ResourceCompile />
     <Link>
-      <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libeay32.lib;ssleay32.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libssl.lib;libcrypto.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>$(OPENSSL_HOME)/lib;$(LZO_HOME)/lib;$(PKCS11H_HOME)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <SubSystem>Console</SubSystem>
     </Link>
@@ -117,7 +117,7 @@ 
     </ClCompile>
     <ResourceCompile />
     <Link>
-      <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libeay32.lib;ssleay32.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>legacy_stdio_definitions.lib;Ncrypt.lib;libssl.lib;libcrypto.lib;lzo2.lib;pkcs11-helper.dll.lib;gdi32.lib;ws2_32.lib;wininet.lib;crypt32.lib;iphlpapi.lib;winmm.lib;Fwpuclnt.lib;Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>$(OPENSSL_HOME)/lib;$(LZO_HOME)/lib;$(PKCS11H_HOME)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <SubSystem>Console</SubSystem>
     </Link>