1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-23 08:38:49 -05:00

cmake: Enable SMB for Windows builds

- Define USE_WIN32_CRYPTO by default. This enables SMB.

- Show whether SMB is enabled in the "Enabled features" output.

- Fix mingw compiler warning for call to CryptHashData by casting away
  const param. mingw CryptHashData prototype is wrong.

Closes https://github.com/curl/curl/pull/4717
This commit is contained in:
Marc Aldorasi 2019-12-13 17:23:11 -05:00 committed by Jay Satiro
parent c9c551f1f9
commit ea6d6205d9
3 changed files with 22 additions and 6 deletions

View File

@ -172,6 +172,7 @@ if(HTTP_ONLY)
set(CURL_DISABLE_RTSP ON) set(CURL_DISABLE_RTSP ON)
set(CURL_DISABLE_POP3 ON) set(CURL_DISABLE_POP3 ON)
set(CURL_DISABLE_IMAP ON) set(CURL_DISABLE_IMAP ON)
set(CURL_DISABLE_SMB ON)
set(CURL_DISABLE_SMTP ON) set(CURL_DISABLE_SMTP ON)
set(CURL_DISABLE_GOPHER ON) set(CURL_DISABLE_GOPHER ON)
endif() endif()
@ -412,6 +413,10 @@ if(USE_NGHTTP2)
list(APPEND CURL_LIBS ${NGHTTP2_LIBRARIES}) list(APPEND CURL_LIBS ${NGHTTP2_LIBRARIES})
endif() endif()
if(WIN32)
set(USE_WIN32_CRYPTO ON)
endif()
if(NOT CURL_DISABLE_LDAP) if(NOT CURL_DISABLE_LDAP)
if(WIN32) if(WIN32)
option(USE_WIN32_LDAP "Use Windows LDAP implementation" ON) option(USE_WIN32_LDAP "Use Windows LDAP implementation" ON)
@ -1199,6 +1204,14 @@ if(BUILD_TESTING)
add_subdirectory(tests) add_subdirectory(tests)
endif() endif()
# NTLM support requires crypto function adaptions from various SSL libs
# TODO alternative SSL libs tests for SSP1, GNUTLS, NSS
if(NOT CURL_DISABLE_CRYPTO_AUTH AND (USE_OPENSSL OR USE_WINDOWS_SSPI OR USE_DARWINSSL OR USE_MBEDTLS OR USE_WIN32_CRYPTO))
set(use_ntlm ON)
else()
set(use_ntlm OFF)
endif()
# Helper to populate a list (_items) with a label when conditions (the remaining # Helper to populate a list (_items) with a label when conditions (the remaining
# args) are satisfied # args) are satisfied
function(_add_if label) function(_add_if label)
@ -1228,11 +1241,9 @@ _add_if("Kerberos" NOT CURL_DISABLE_CRYPTO_AUTH AND
(HAVE_GSSAPI OR USE_WINDOWS_SSPI)) (HAVE_GSSAPI OR USE_WINDOWS_SSPI))
# NTLM support requires crypto function adaptions from various SSL libs # NTLM support requires crypto function adaptions from various SSL libs
# TODO alternative SSL libs tests for SSP1, GNUTLS, NSS # TODO alternative SSL libs tests for SSP1, GNUTLS, NSS
if(NOT CURL_DISABLE_CRYPTO_AUTH AND (USE_OPENSSL OR USE_WINDOWS_SSPI OR USE_SECTRANSP OR USE_MBEDTLS OR USE_NSS)) _add_if("NTLM" use_ntlm)
_add_if("NTLM" 1) # TODO missing option (autoconf: --enable-ntlm-wb)
# TODO missing option (autoconf: --enable-ntlm-wb) _add_if("NTLM_WB" use_ntlm AND NOT CURL_DISABLE_HTTP AND NTLM_WB_ENABLED)
_add_if("NTLM_WB" NOT CURL_DISABLE_HTTP AND NTLM_WB_ENABLED)
endif()
# TODO missing option (--enable-tls-srp), depends on GNUTLS_SRP/OPENSSL_SRP # TODO missing option (--enable-tls-srp), depends on GNUTLS_SRP/OPENSSL_SRP
_add_if("TLS-SRP" USE_TLS_SRP) _add_if("TLS-SRP" USE_TLS_SRP)
# TODO option --with-nghttp2 tests for nghttp2 lib and nghttp2/nghttp2.h header # TODO option --with-nghttp2 tests for nghttp2 lib and nghttp2/nghttp2.h header
@ -1261,6 +1272,8 @@ _add_if("POP3" NOT CURL_DISABLE_POP3)
_add_if("POP3S" NOT CURL_DISABLE_POP3 AND SSL_ENABLED) _add_if("POP3S" NOT CURL_DISABLE_POP3 AND SSL_ENABLED)
_add_if("IMAP" NOT CURL_DISABLE_IMAP) _add_if("IMAP" NOT CURL_DISABLE_IMAP)
_add_if("IMAPS" NOT CURL_DISABLE_IMAP AND SSL_ENABLED) _add_if("IMAPS" NOT CURL_DISABLE_IMAP AND SSL_ENABLED)
_add_if("SMB" NOT CURL_DISABLE_SMB AND use_ntlm)
_add_if("SMBS" NOT CURL_DISABLE_SMB AND SSL_ENABLED AND use_ntlm)
_add_if("SMTP" NOT CURL_DISABLE_SMTP) _add_if("SMTP" NOT CURL_DISABLE_SMTP)
_add_if("SMTPS" NOT CURL_DISABLE_SMTP AND SSL_ENABLED) _add_if("SMTPS" NOT CURL_DISABLE_SMTP AND SSL_ENABLED)
_add_if("SCP" USE_LIBSSH2) _add_if("SCP" USE_LIBSSH2)

View File

@ -73,6 +73,9 @@
#define CURL_EXTERN_SYMBOL #define CURL_EXTERN_SYMBOL
#endif #endif
/* Allow SMB to work on Windows */
#cmakedefine USE_WIN32_CRYPTO
/* Use Windows LDAP implementation */ /* Use Windows LDAP implementation */
#cmakedefine USE_WIN32_LDAP 1 #cmakedefine USE_WIN32_LDAP 1

View File

@ -156,7 +156,7 @@ static void MD4_Init(MD4_CTX *ctx)
static void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size) static void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size)
{ {
CryptHashData(ctx->hHash, data, (unsigned int) size, 0); CryptHashData(ctx->hHash, (BYTE *)data, (unsigned int) size, 0);
} }
static void MD4_Final(unsigned char *result, MD4_CTX *ctx) static void MD4_Final(unsigned char *result, MD4_CTX *ctx)