summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Holme <steve_holme@hotmail.com>2019-04-14 19:24:28 +0100
committerSteve Holme <steve_holme@hotmail.com>2019-08-04 18:01:29 +0100
commit850a295b41543a11c5a0b5f4943e9b4fbc20da59 (patch)
tree9dd50cae65b3923d6215f57e6d8c2476f4f2d10a
parent72e5fd83b2c00f85dc7218d83fee1d4efffb9b51 (diff)
downloadcurl-850a295b41543a11c5a0b5f4943e9b4fbc20da59.tar.gz
md4: Use our own MD4 implementation when no crypto libraries are available
Closes #3780
-rw-r--r--lib/curl_md4.h10
-rw-r--r--lib/curl_ntlm_core.c5
-rw-r--r--lib/md4.c39
3 files changed, 11 insertions, 43 deletions
diff --git a/lib/curl_md4.h b/lib/curl_md4.h
index 60087803d..82df708ce 100644
--- a/lib/curl_md4.h
+++ b/lib/curl_md4.h
@@ -24,18 +24,12 @@
#include "curl_setup.h"
-#if defined(USE_GNUTLS_NETTLE) || defined(USE_GNUTLS) || \
- defined(USE_OPENSSL) || defined(USE_SECTRANSP) || \
- defined(USE_WIN32_CRYPTO) || defined(USE_NSS) || \
- defined(USE_OS400CRYPTO) || defined(USE_MBEDTLS)
+#if !defined(CURL_DISABLE_CRYPTO_AUTH)
#define MD4_DIGEST_LENGTH 16
void Curl_md4it(unsigned char *output, const unsigned char *input, size_t len);
-#endif /* defined(USE_GNUTLS_NETTLE) || defined(USE_GNUTLS) ||
- defined(USE_OPENSSL) || defined(USE_SECTRANSP) ||
- defined(USE_WIN32_CRYPTO) || defined(USE_NSS) ||
- defined(USE_OS400CRYPTO) || defined(USE_MBEDTLS) */
+#endif /* !defined(CURL_DISABLE_CRYPTO_AUTH) */
#endif /* HEADER_CURL_MD4_H */
diff --git a/lib/curl_ntlm_core.c b/lib/curl_ntlm_core.c
index b2a6afc0c..19f9b61d8 100644
--- a/lib/curl_ntlm_core.c
+++ b/lib/curl_ntlm_core.c
@@ -556,12 +556,7 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struct Curl_easy *data,
return result;
/* Create NT hashed password. */
-#if defined(USE_OPENSSL) || defined(USE_GNUTLS_NETTLE) || \
- defined(USE_GNUTLS) || defined(USE_NSS) || defined(USE_MBEDTLS) || \
- defined(USE_SECTRANSP) || defined(USE_OS400CRYPTO) || \
- defined(USE_WIN32_CRYPTO)
Curl_md4it(ntbuffer, pw, 2 * len);
-#endif
memset(ntbuffer + 16, 0, 21 - 16);
diff --git a/lib/md4.c b/lib/md4.c
index 0729c3954..bbf897508 100644
--- a/lib/md4.c
+++ b/lib/md4.c
@@ -22,6 +22,11 @@
#include "curl_setup.h"
+#if !defined(CURL_DISABLE_CRYPTO_AUTH)
+
+#include "curl_md4.h"
+#include "warnless.h"
+
#ifdef USE_OPENSSL
#include <openssl/opensslconf.h>
#endif
@@ -33,8 +38,6 @@
#include <nettle/md4.h>
-#include "curl_md4.h"
-#include "warnless.h"
#include "curl_memory.h"
/* The last #include file should be: */
@@ -61,8 +64,6 @@ static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
#include <gcrypt.h>
-#include "curl_md4.h"
-#include "warnless.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -89,15 +90,10 @@ static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
/* When OpenSSL is available we use the MD4-functions from OpenSSL */
#include <openssl/md4.h>
-#include "curl_md4.h"
-#include "warnless.h"
-
#elif defined(USE_SECTRANSP)
#include <CommonCrypto/CommonDigest.h>
-#include "curl_md4.h"
-#include "warnless.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -138,8 +134,6 @@ static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
#include <wincrypt.h>
-#include "curl_md4.h"
-#include "warnless.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -184,8 +178,6 @@ static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
#include <mbedtls/md4.h>
-#include "curl_md4.h"
-#include "warnless.h"
#include "curl_memory.h"
/* The last #include file should be: */
#include "memdebug.h"
@@ -222,12 +214,9 @@ static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
}
}
-#elif defined(USE_NSS) || defined(USE_OS400CRYPTO) || \
- (defined(USE_OPENSSL) && defined(OPENSSL_NO_MD4)) || \
- (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C))
-/* The NSS, OS/400, and when not included, OpenSSL and mbed TLS crypto
- * libraries do not provide the MD4 hash algorithm, so we use this
- * implementation of it
+#else
+/* When no other crypto library is available, or the crypto library doesn't
+ * support MD4, we use this code segment this implementation of it
*
* This is an OpenSSL-compatible implementation of the RSA Data Security, Inc.
* MD4 Message-Digest Algorithm (RFC 1320).
@@ -265,8 +254,6 @@ static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
* compile-time configuration.
*/
-#include "curl_md4.h"
-#include "warnless.h"
#include <string.h>
@@ -518,11 +505,6 @@ static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
#endif /* CRYPTO LIBS */
-#if defined(USE_GNUTLS_NETTLE) || defined(USE_GNUTLS) || \
- defined(USE_OPENSSL) || defined(USE_SECTRANSP) || \
- defined(USE_WIN32_CRYPTO) || defined(USE_NSS) || \
- defined(USE_OS400CRYPTO) || defined(USE_MBEDTLS)
-
void Curl_md4it(unsigned char *output, const unsigned char *input, size_t len)
{
MD4_CTX ctx;
@@ -531,7 +513,4 @@ void Curl_md4it(unsigned char *output, const unsigned char *input, size_t len)
MD4_Final(output, &ctx);
}
-#endif /* defined(USE_GNUTLS_NETTLE) || defined(USE_GNUTLS) ||
- defined(USE_OPENSSL) || defined(USE_SECTRANSP) ||
- defined(USE_WIN32_CRYPTO) || defined(USE_NSS) ||
- defined(USE_OS400CRYPTO) || defined(USE_MBEDTLS) */
+#endif /* CURL_DISABLE_CRYPTO_AUTH */