Remove HMAC_CTX_cleanup and combine its functionality into EVP_MD_CTX_init
This follows the same idea as the combination of EVP_MD_CTX_cleanup and EVP_MD_CTX_init into one function. Reviewed-by: Rich Salz <rsalz@openssl.org>
This commit is contained in:
parent
74cabf3fef
commit
32fd54a9a3
2 changed files with 18 additions and 19 deletions
|
@ -180,38 +180,46 @@ HMAC_CTX *HMAC_CTX_new(void)
|
||||||
return ctx;
|
return ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void hmac_ctx_cleanup(HMAC_CTX *ctx)
|
||||||
|
{
|
||||||
|
EVP_MD_CTX_init(ctx->i_ctx);
|
||||||
|
EVP_MD_CTX_init(ctx->o_ctx);
|
||||||
|
EVP_MD_CTX_init(ctx->md_ctx);
|
||||||
|
ctx->md = NULL;
|
||||||
|
ctx->key_length = 0;
|
||||||
|
memset(ctx->key, 0, sizeof(HMAC_MAX_MD_CBLOCK));
|
||||||
|
}
|
||||||
|
|
||||||
void HMAC_CTX_free(HMAC_CTX *ctx)
|
void HMAC_CTX_free(HMAC_CTX *ctx)
|
||||||
{
|
{
|
||||||
if (ctx != NULL) {
|
if (ctx != NULL) {
|
||||||
HMAC_CTX_cleanup(ctx);
|
hmac_ctx_cleanup(ctx);
|
||||||
|
EVP_MD_CTX_destroy(ctx->i_ctx);
|
||||||
|
EVP_MD_CTX_destroy(ctx->o_ctx);
|
||||||
|
EVP_MD_CTX_destroy(ctx->md_ctx);
|
||||||
OPENSSL_free(ctx);
|
OPENSSL_free(ctx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int HMAC_CTX_init(HMAC_CTX *ctx)
|
int HMAC_CTX_init(HMAC_CTX *ctx)
|
||||||
{
|
{
|
||||||
|
hmac_ctx_cleanup(ctx);
|
||||||
if (ctx->i_ctx == NULL)
|
if (ctx->i_ctx == NULL)
|
||||||
ctx->i_ctx = EVP_MD_CTX_create();
|
ctx->i_ctx = EVP_MD_CTX_create();
|
||||||
else
|
|
||||||
EVP_MD_CTX_init(ctx->i_ctx);
|
|
||||||
if (ctx->i_ctx == NULL)
|
if (ctx->i_ctx == NULL)
|
||||||
goto err;
|
goto err;
|
||||||
if (ctx->o_ctx == NULL)
|
if (ctx->o_ctx == NULL)
|
||||||
ctx->o_ctx = EVP_MD_CTX_create();
|
ctx->o_ctx = EVP_MD_CTX_create();
|
||||||
else
|
|
||||||
EVP_MD_CTX_init(ctx->o_ctx);
|
|
||||||
if (ctx->o_ctx == NULL)
|
if (ctx->o_ctx == NULL)
|
||||||
goto err;
|
goto err;
|
||||||
if (ctx->md_ctx == NULL)
|
if (ctx->md_ctx == NULL)
|
||||||
ctx->md_ctx = EVP_MD_CTX_create();
|
ctx->md_ctx = EVP_MD_CTX_create();
|
||||||
else
|
|
||||||
EVP_MD_CTX_init(ctx->md_ctx);
|
|
||||||
if (ctx->md_ctx == NULL)
|
if (ctx->md_ctx == NULL)
|
||||||
goto err;
|
goto err;
|
||||||
ctx->md = NULL;
|
ctx->md = NULL;
|
||||||
return 1;
|
return 1;
|
||||||
err:
|
err:
|
||||||
HMAC_CTX_cleanup(ctx);
|
hmac_ctx_cleanup(ctx);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -230,18 +238,10 @@ int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx)
|
||||||
dctx->md = sctx->md;
|
dctx->md = sctx->md;
|
||||||
return 1;
|
return 1;
|
||||||
err:
|
err:
|
||||||
HMAC_CTX_cleanup(dctx);
|
hmac_ctx_cleanup(dctx);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HMAC_CTX_cleanup(HMAC_CTX *ctx)
|
|
||||||
{
|
|
||||||
EVP_MD_CTX_destroy(ctx->i_ctx);
|
|
||||||
EVP_MD_CTX_destroy(ctx->o_ctx);
|
|
||||||
EVP_MD_CTX_destroy(ctx->md_ctx);
|
|
||||||
memset(ctx, 0, sizeof(*ctx));
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len,
|
unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len,
|
||||||
const unsigned char *d, size_t n, unsigned char *md,
|
const unsigned char *d, size_t n, unsigned char *md,
|
||||||
unsigned int *md_len)
|
unsigned int *md_len)
|
||||||
|
|
|
@ -70,9 +70,8 @@ extern "C" {
|
||||||
|
|
||||||
size_t HMAC_size(HMAC_CTX *e);
|
size_t HMAC_size(HMAC_CTX *e);
|
||||||
HMAC_CTX *HMAC_CTX_new(void);
|
HMAC_CTX *HMAC_CTX_new(void);
|
||||||
void HMAC_CTX_free(HMAC_CTX *ctx);
|
|
||||||
int HMAC_CTX_init(HMAC_CTX *ctx);
|
int HMAC_CTX_init(HMAC_CTX *ctx);
|
||||||
void HMAC_CTX_cleanup(HMAC_CTX *ctx);
|
void HMAC_CTX_free(HMAC_CTX *ctx);
|
||||||
|
|
||||||
#ifdef OPENSSL_USE_DEPRECATED
|
#ifdef OPENSSL_USE_DEPRECATED
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue