diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/curl_md4.h | 6 | ||||
| -rw-r--r-- | lib/curl_ntlm_core.c | 8 | ||||
| -rw-r--r-- | lib/md4.c | 36 | 
3 files changed, 39 insertions, 11 deletions
| diff --git a/lib/curl_md4.h b/lib/curl_md4.h index b70ed0d88..f41e3921d 100644 --- a/lib/curl_md4.h +++ b/lib/curl_md4.h @@ -29,10 +29,12 @@      (defined(USE_OPENSSL) && defined(OPENSSL_NO_MD4)) || \      (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C)) +#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_NSS) || -    defined(USE_OS400CRYPTO) || +#endif /* defined(USE_GNUTLS_NETTLE) || defined(USE_GNUTLS) || +    defined(USE_NSS) || defined(USE_OS400CRYPTO) ||      (defined(USE_OPENSSL) && defined(OPENSSL_NO_MD4)) ||      (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C)) */ diff --git a/lib/curl_ntlm_core.c b/lib/curl_ntlm_core.c index d840aed47..d1b508cb7 100644 --- a/lib/curl_ntlm_core.c +++ b/lib/curl_ntlm_core.c @@ -83,9 +83,9 @@  #elif defined(USE_GNUTLS) +#  include "curl_md4.h"  #  include <gcrypt.h>  #  define MD5_DIGEST_LENGTH 16 -#  define MD4_DIGEST_LENGTH 16  #elif defined(USE_NSS) @@ -580,11 +580,7 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struct Curl_easy *data,  #elif defined(USE_GNUTLS_NETTLE)      Curl_md4it(ntbuffer, pw, 2 * len);  #elif defined(USE_GNUTLS) -    gcry_md_hd_t MD4pw; -    gcry_md_open(&MD4pw, GCRY_MD_MD4, 0); -    gcry_md_write(MD4pw, pw, 2 * len); -    memcpy(ntbuffer, gcry_md_read(MD4pw, 0), MD4_DIGEST_LENGTH); -    gcry_md_close(MD4pw); +    Curl_md4it(ntbuffer, pw, 2 * len);  #elif defined(USE_NSS)      Curl_md4it(ntbuffer, pw, 2 * len);  #elif defined(USE_MBEDTLS) @@ -57,6 +57,34 @@ static void MD4_Final(unsigned char *result, MD4_CTX *ctx)    md4_digest(ctx, MD4_DIGEST_SIZE, result);  } +#elif defined(USE_GNUTLS) + +#include <gcrypt.h> + +#include "curl_md4.h" +#include "warnless.h" +#include "curl_memory.h" +/* The last #include file should be: */ +#include "memdebug.h" + +typedef struct gcry_md_hd_t MD4_CTX; + +static void MD4_Init(MD4_CTX *ctx) +{ +  gcry_md_open(ctx, GCRY_MD_MD4, 0); +} + +static void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size) +{ +  gcry_md_write(*ctx, data, size); +} + +static void MD4_Final(unsigned char *result, MD4_CTX *ctx) +{ +  memcpy(result, gcry_md_read(ctx, 0), MD4_DIGEST_LENGTH); +  gcry_md_close(ctx); +} +  #elif defined(USE_NSS) || defined(USE_OS400CRYPTO) || \      (defined(USE_OPENSSL) && defined(OPENSSL_NO_MD4)) || \      (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C)) @@ -357,8 +385,9 @@ static void MD4_Final(unsigned char *result, MD4_CTX *ctx)  #endif /* CRYPTO LIBS */ -#if defined(USE_GNUTLS_NETTLE) || defined(USE_NSS) || \ -    defined(USE_OS400CRYPTO) || \ +#if defined(USE_GNUTLS_NETTLE) || defined(USE_GNUTLS) || \ +    defined(USE_NSS) || defined(USE_OS400CRYPTO) || \ +    (defined(USE_OPENSSL) && defined(OPENSSL_NO_MD4)) || \      (defined(USE_OPENSSL) && defined(OPENSSL_NO_MD4)) || \      (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C)) @@ -370,7 +399,8 @@ void Curl_md4it(unsigned char *output, const unsigned char *input, size_t len)    MD4_Final(output, &ctx);  } -#endif /* defined(USE_NSS) || defined(USE_OS400CRYPTO) || +#endif /* defined(USE_GNUTLS_NETTLE) || defined(USE_GNUTLS) || +    defined(USE_NSS) || defined(USE_OS400CRYPTO) ||      defined(USE_OS400CRYPTO) ||      (defined(USE_OPENSSL) && defined(OPENSSL_NO_MD4)) ||      (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C)) */ | 
