1
0
mirror of https://github.com/moparisthebest/curl synced 2024-08-13 17:03:50 -04:00

md4: use init/update/final functions in Secure Transport

We can use CC_MD4_Init/Update/Final without having to allocate memory
directly.

Closes #4979
This commit is contained in:
Nick Zitzmann 2020-02-23 20:23:52 -06:00 committed by Daniel Stenberg
parent 0e539970e4
commit 0b337ecc91
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

View File

@ -97,7 +97,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>
#elif defined(USE_SECTRANSP)
#elif (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && \
(__MAC_OS_X_VERSION_MAX_ALLOWED >= 1040)) || \
(defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && \
(__IPHONE_OS_VERSION_MAX_ALLOWED >= 20000))
#include <CommonCrypto/CommonDigest.h>
@ -106,36 +109,21 @@ static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
/* The last #include file should be: */
#include "memdebug.h"
typedef struct {
void *data;
unsigned long size;
} MD4_CTX;
typedef CC_MD4_CTX MD4_CTX;
static void MD4_Init(MD4_CTX *ctx)
{
ctx->data = NULL;
ctx->size = 0;
(void)CC_MD4_Init(ctx);
}
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;
}
}
(void)CC_MD4_Update(ctx, data, (CC_LONG)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;
}
(void)CC_MD4_Final(result, ctx);
}
#elif defined(USE_WIN32_CRYPTO)