diff options
| -rw-r--r-- | lib/curl_md4.h | 6 | ||||
| -rw-r--r-- | lib/curl_ntlm_core.c | 3 | ||||
| -rw-r--r-- | lib/md4.c | 48 | 
3 files changed, 52 insertions, 5 deletions
diff --git a/lib/curl_md4.h b/lib/curl_md4.h index 979a82b62..59935480d 100644 --- a/lib/curl_md4.h +++ b/lib/curl_md4.h @@ -25,7 +25,8 @@  #include "curl_setup.h"  #if defined(USE_GNUTLS_NETTLE) || defined(USE_GNUTLS) || \ -    defined(USE_OPENSSL) || defined(USE_NSS) || defined(USE_OS400CRYPTO) || \ +    defined(USE_OPENSSL) || defined(USE_SECTRANSP) || defined(USE_NSS) || \ +    defined(USE_OS400CRYPTO) || \      (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C))  #define MD4_DIGEST_LENGTH 16 @@ -33,7 +34,8 @@  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_NSS) || defined(USE_OS400CRYPTO) || +    defined(USE_OPENSSL) || defined(USE_SECTRANSP) || defined(USE_NSS) || +    defined(USE_OS400CRYPTO) ||      (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C)) */  #endif /* HEADER_CURL_MD4_H */ diff --git a/lib/curl_ntlm_core.c b/lib/curl_ntlm_core.c index 9ad0de8f7..332d9409a 100644 --- a/lib/curl_ntlm_core.c +++ b/lib/curl_ntlm_core.c @@ -103,6 +103,7 @@  #  include <CommonCrypto/CommonCryptor.h>  #  include <CommonCrypto/CommonDigest.h> +#  include "curl_md4.h"  #elif defined(USE_OS400CRYPTO)  #  include "cipher.mih"  /* mih/cipher */ @@ -579,7 +580,7 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struct Curl_easy *data,      Curl_md4it(ntbuffer, pw, 2 * len);  #endif  #elif defined(USE_SECTRANSP) -    (void)CC_MD4(pw, (CC_LONG)(2 * len), ntbuffer); +    Curl_md4it(ntbuffer, pw, 2 * len);  #elif defined(USE_OS400CRYPTO)      Curl_md4it(ntbuffer, pw, 2 * len);  #elif defined(USE_WIN32_CRYPTO) @@ -92,6 +92,48 @@ static void MD4_Final(unsigned char *result, MD4_CTX *ctx)  #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" + +typedef struct { +  void *data; +  unsigned long size; +} MD4_CTX; + +static void MD4_Init(MD4_CTX *ctx) +{ +  ctx->data = NULL; +  ctx->size = 0; +} + +static void MD4_Update(MD4_CTX *ctx, const void *data, unsigned long size) +{ +  if(ctx->data == NULL) { +    ctx->data = malloc(size); +    if(ctx->data != NULL) { +      memcpy(ctx->data, data, size); +      ctx->size = size; +    } +  } +} + +static void MD4_Final(unsigned char *result, MD4_CTX *ctx) +{ +  if(ctx->data != NULL) { +    (void)CC_MD4(ctx->data, (CC_LONG) ctx->size, result); + +    Curl_safefree(ctx->data); +    ctx->size = 0; +  } +} +  #elif defined(USE_NSS) || defined(USE_OS400CRYPTO) || \      (defined(USE_OPENSSL) && defined(OPENSSL_NO_MD4)) || \      (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C)) @@ -389,7 +431,8 @@ 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_NSS) || defined(USE_OS400CRYPTO) || \ +    defined(USE_OPENSSL) || defined(USE_SECTRANSP) || defined(USE_NSS) || \ +    defined(USE_OS400CRYPTO) || \      (defined(USE_OPENSSL) && defined(OPENSSL_NO_MD4)) || \      (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C)) @@ -402,5 +445,6 @@ 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_NSS) || defined(USE_OS400CRYPTO) || \ +    defined(USE_OPENSSL) || defined(USE_SECTRANSP) || defined(USE_NSS) || +    defined(USE_OS400CRYPTO) ||      (defined(USE_MBEDTLS) && !defined(MBEDTLS_MD4_C)) */  | 
