Commit 32fd54a9 authored by Richard Levitte's avatar Richard Levitte
Browse files

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: default avatarRich Salz <rsalz@openssl.org>
parent 74cabf3f
Loading
Loading
Loading
Loading
+17 −17
Original line number Diff line number Diff line
@@ -180,38 +180,46 @@ HMAC_CTX *HMAC_CTX_new(void)
    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)
{
    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);
    }
}

int HMAC_CTX_init(HMAC_CTX *ctx)
{
    hmac_ctx_cleanup(ctx);
    if (ctx->i_ctx == NULL)
        ctx->i_ctx = EVP_MD_CTX_create();
    else
        EVP_MD_CTX_init(ctx->i_ctx);
    if (ctx->i_ctx == NULL)
        goto err;
    if (ctx->o_ctx == NULL)
        ctx->o_ctx = EVP_MD_CTX_create();
    else
        EVP_MD_CTX_init(ctx->o_ctx);
    if (ctx->o_ctx == NULL)
        goto err;
    if (ctx->md_ctx == NULL)
        ctx->md_ctx = EVP_MD_CTX_create();
    else
        EVP_MD_CTX_init(ctx->md_ctx);
    if (ctx->md_ctx == NULL)
        goto err;
    ctx->md = NULL;
    return 1;
 err:
    HMAC_CTX_cleanup(ctx);
    hmac_ctx_cleanup(ctx);
    return 0;
}

@@ -230,18 +238,10 @@ int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx)
    dctx->md = sctx->md;
    return 1;
 err:
    HMAC_CTX_cleanup(dctx);
    hmac_ctx_cleanup(dctx);
    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,
                    const unsigned char *d, size_t n, unsigned char *md,
                    unsigned int *md_len)
+1 −2
Original line number Diff line number Diff line
@@ -70,9 +70,8 @@ extern "C" {

size_t HMAC_size(HMAC_CTX *e);
HMAC_CTX *HMAC_CTX_new(void);
void HMAC_CTX_free(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