mirror of
https://github.com/curl/curl.git
synced 2026-08-05 01:56:14 +03:00
md5, sha256: just deinit with a NULL digest
This commit is contained in:
parent
836d17e85e
commit
3c6d596905
3 changed files with 49 additions and 24 deletions
|
|
@ -53,7 +53,7 @@ static int my_md4_init(my_md4_ctx *ctx)
|
|||
if(!*ctx)
|
||||
return 0;
|
||||
|
||||
if(!EVP_DigestInit_ex(*ctx, EVP_md4(), NULL))
|
||||
if(!EVP_DigestInit_ex(*ctx, EVP_md4(), NULL)) {
|
||||
EVP_MD_CTX_free(*ctx);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
36
lib/md5.c
36
lib/md5.c
|
|
@ -65,10 +65,11 @@ static void my_md5_update(void *ctx,
|
|||
|
||||
static void my_md5_final(unsigned char *digest, void *ctx)
|
||||
{
|
||||
if(digest)
|
||||
#if NETTLE_VERSION_MAJOR >= 4
|
||||
md5_digest(ctx, digest);
|
||||
md5_digest(ctx, digest);
|
||||
#else
|
||||
md5_digest(ctx, MD5_DIGEST_LEN, digest);
|
||||
md5_digest(ctx, MD5_DIGEST_LEN, digest);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -102,7 +103,8 @@ static void my_md5_update(void *in,
|
|||
static void my_md5_final(unsigned char *digest, void *in)
|
||||
{
|
||||
EVP_MD_CTX **ctx = (EVP_MD_CTX **)in;
|
||||
(void)EVP_DigestFinal_ex(*ctx, digest, NULL);
|
||||
if(digest)
|
||||
(void)EVP_DigestFinal_ex(*ctx, digest, NULL);
|
||||
EVP_MD_CTX_free(*ctx);
|
||||
*ctx = NULL;
|
||||
}
|
||||
|
|
@ -127,7 +129,8 @@ static void my_md5_update(void *ctx,
|
|||
|
||||
static void my_md5_final(unsigned char *digest, void *ctx)
|
||||
{
|
||||
(void)wc_Md5Final(ctx, digest);
|
||||
if(digest)
|
||||
(void)wc_Md5Final(ctx, digest);
|
||||
}
|
||||
|
||||
#elif defined(USE_MBEDTLS) && \
|
||||
|
|
@ -153,8 +156,10 @@ static void my_md5_update(void *ctx,
|
|||
|
||||
static void my_md5_final(unsigned char *digest, void *ctx)
|
||||
{
|
||||
size_t actual_length;
|
||||
(void)psa_hash_finish(ctx, digest, MD5_DIGEST_LEN, &actual_length);
|
||||
if(digest) {
|
||||
size_t actual_length;
|
||||
(void)psa_hash_finish(ctx, digest, MD5_DIGEST_LEN, &actual_length);
|
||||
}
|
||||
}
|
||||
|
||||
#elif (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && \
|
||||
|
|
@ -191,7 +196,8 @@ static void my_md5_update(void *ctx,
|
|||
|
||||
static void my_md5_final(unsigned char *digest, void *ctx)
|
||||
{
|
||||
CC_MD5_Final(digest, ctx);
|
||||
if(digest)
|
||||
CC_MD5_Final(digest, ctx);
|
||||
}
|
||||
|
||||
#elif defined(USE_WIN32_CRYPTO)
|
||||
|
|
@ -229,12 +235,17 @@ static void my_md5_update(void *in,
|
|||
static void my_md5_final(unsigned char *digest, void *in)
|
||||
{
|
||||
my_md5_ctx *ctx = (my_md5_ctx *)in;
|
||||
unsigned long length = 0;
|
||||
CryptGetHashParam(ctx->hHash, HP_HASHVAL, NULL, &length, 0);
|
||||
if(length == MD5_DIGEST_LEN)
|
||||
CryptGetHashParam(ctx->hHash, HP_HASHVAL, digest, &length, 0);
|
||||
|
||||
if(digest) {
|
||||
unsigned long length = 0;
|
||||
CryptGetHashParam(ctx->hHash, HP_HASHVAL, NULL, &length, 0);
|
||||
if(length == MD5_DIGEST_LEN)
|
||||
CryptGetHashParam(ctx->hHash, HP_HASHVAL, digest, &length, 0);
|
||||
}
|
||||
|
||||
if(ctx->hHash)
|
||||
CryptDestroyHash(ctx->hHash);
|
||||
|
||||
if(ctx->hCryptProv)
|
||||
CryptReleaseContext(ctx->hCryptProv, 0);
|
||||
}
|
||||
|
|
@ -485,6 +496,9 @@ static void my_md5_final(unsigned char *digest, void *in)
|
|||
unsigned int used, available;
|
||||
my_md5_ctx *ctx = (my_md5_ctx *)in;
|
||||
|
||||
if(!digest)
|
||||
return;
|
||||
|
||||
used = ctx->lo & 0x3f;
|
||||
|
||||
ctx->buffer[used++] = 0x80;
|
||||
|
|
|
|||
35
lib/sha256.c
35
lib/sha256.c
|
|
@ -81,7 +81,8 @@ static void my_sha256_update(void *in,
|
|||
static void my_sha256_final(unsigned char *digest, void *in)
|
||||
{
|
||||
EVP_MD_CTX **ctx = (EVP_MD_CTX **)in;
|
||||
(void)EVP_DigestFinal_ex(*ctx, digest, NULL);
|
||||
if(digest)
|
||||
(void)EVP_DigestFinal_ex(*ctx, digest, NULL);
|
||||
EVP_MD_CTX_free(*ctx);
|
||||
*ctx = NULL;
|
||||
}
|
||||
|
|
@ -108,7 +109,8 @@ static void my_sha256_update(void *in,
|
|||
|
||||
static void my_sha256_final(unsigned char *digest, void *in)
|
||||
{
|
||||
(void)wc_Sha256Final(in, digest);
|
||||
if(digest)
|
||||
(void)wc_Sha256Final(in, digest);
|
||||
}
|
||||
|
||||
#elif defined(USE_GNUTLS)
|
||||
|
|
@ -132,10 +134,11 @@ static void my_sha256_update(void *ctx,
|
|||
|
||||
static void my_sha256_final(unsigned char *digest, void *ctx)
|
||||
{
|
||||
if(digest)
|
||||
#if NETTLE_VERSION_MAJOR >= 4
|
||||
sha256_digest(ctx, digest);
|
||||
sha256_digest(ctx, digest);
|
||||
#else
|
||||
sha256_digest(ctx, SHA256_DIGEST_SIZE, digest);
|
||||
sha256_digest(ctx, SHA256_DIGEST_SIZE, digest);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -163,9 +166,11 @@ static void my_sha256_update(void *ctx,
|
|||
|
||||
static void my_sha256_final(unsigned char *digest, void *ctx)
|
||||
{
|
||||
size_t actual_length;
|
||||
(void)psa_hash_finish(ctx, digest, CURL_SHA256_DIGEST_LENGTH,
|
||||
&actual_length);
|
||||
if(digest) {
|
||||
size_t actual_length;
|
||||
(void)psa_hash_finish(ctx, digest, CURL_SHA256_DIGEST_LENGTH,
|
||||
&actual_length);
|
||||
}
|
||||
}
|
||||
|
||||
#elif (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && \
|
||||
|
|
@ -191,7 +196,8 @@ static void my_sha256_update(void *ctx,
|
|||
|
||||
static void my_sha256_final(unsigned char *digest, void *ctx)
|
||||
{
|
||||
(void)CC_SHA256_Final(digest, ctx);
|
||||
if(digest)
|
||||
(void)CC_SHA256_Final(digest, ctx);
|
||||
}
|
||||
|
||||
#elif defined(USE_WIN32_CRYPTO)
|
||||
|
|
@ -230,11 +236,13 @@ static void my_sha256_update(void *in,
|
|||
static void my_sha256_final(unsigned char *digest, void *in)
|
||||
{
|
||||
my_sha256_ctx *ctx = (my_sha256_ctx *)in;
|
||||
unsigned long length = 0;
|
||||
|
||||
CryptGetHashParam(ctx->hHash, HP_HASHVAL, NULL, &length, 0);
|
||||
if(length == CURL_SHA256_DIGEST_LENGTH)
|
||||
CryptGetHashParam(ctx->hHash, HP_HASHVAL, digest, &length, 0);
|
||||
if(digest) {
|
||||
unsigned long length = 0;
|
||||
CryptGetHashParam(ctx->hHash, HP_HASHVAL, NULL, &length, 0);
|
||||
if(length == CURL_SHA256_DIGEST_LENGTH)
|
||||
CryptGetHashParam(ctx->hHash, HP_HASHVAL, digest, &length, 0);
|
||||
}
|
||||
|
||||
if(ctx->hHash)
|
||||
CryptDestroyHash(ctx->hHash);
|
||||
|
|
@ -430,6 +438,9 @@ static void my_sha256_final(unsigned char *out, void *ctx)
|
|||
struct sha256_state *md = ctx;
|
||||
int i;
|
||||
|
||||
if(!out)
|
||||
return;
|
||||
|
||||
if(md->curlen >= sizeof(md->buf))
|
||||
return;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue