Skip to content

Commit

Permalink
Use HMAC_CTX_new() and not HMAC_CTX_init()
Browse files Browse the repository at this point in the history
  • Loading branch information
alandekok committed Oct 31, 2016
1 parent 9a45077 commit fcd7120
Showing 1 changed file with 20 additions and 20 deletions.
40 changes: 20 additions & 20 deletions src/modules/rlm_eap/lib/base/mppe_keys.c
Expand Up @@ -62,51 +62,51 @@ static void P_hash(EVP_MD const *evp_md,
unsigned char const *seed, unsigned int seed_len,
unsigned char *out, unsigned int out_len)
{
HMAC_CTX ctx_a, ctx_out;
HMAC_CTX *ctx_a, *ctx_out;
unsigned char a[HMAC_MAX_MD_CBLOCK];
unsigned int size;

HMAC_CTX_init(&ctx_a);
HMAC_CTX_init(&ctx_out);
ctx_a = HMAC_CTX_new();
ctx_out = HMAC_CTX_new();
#ifdef EVP_MD_CTX_FLAG_NON_FIPS_ALLOW
HMAC_CTX_set_flags(&ctx_a, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
HMAC_CTX_set_flags(&ctx_out, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
HMAC_CTX_set_flags(ctx_a, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
HMAC_CTX_set_flags(ctx_out, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
#endif
HMAC_Init_ex(&ctx_a, secret, secret_len, evp_md, NULL);
HMAC_Init_ex(&ctx_out, secret, secret_len, evp_md, NULL);
HMAC_Init_ex(ctx_a, secret, secret_len, evp_md, NULL);
HMAC_Init_ex(ctx_out, secret, secret_len, evp_md, NULL);

size = HMAC_size(&ctx_out);
size = HMAC_size(ctx_out);

/* Calculate A(1) */
HMAC_Update(&ctx_a, seed, seed_len);
HMAC_Final(&ctx_a, a, NULL);
HMAC_Update(ctx_a, seed, seed_len);
HMAC_Final(ctx_a, a, NULL);

while (1) {
/* Calculate next part of output */
HMAC_Update(&ctx_out, a, size);
HMAC_Update(&ctx_out, seed, seed_len);
HMAC_Update(ctx_out, a, size);
HMAC_Update(ctx_out, seed, seed_len);

/* Check if last part */
if (out_len < size) {
HMAC_Final(&ctx_out, a, NULL);
HMAC_Final(ctx_out, a, NULL);
memcpy(out, a, out_len);
break;
}

/* Place digest in output buffer */
HMAC_Final(&ctx_out, out, NULL);
HMAC_Init_ex(&ctx_out, NULL, 0, NULL, NULL);
HMAC_Final(ctx_out, out, NULL);
HMAC_Init_ex(ctx_out, NULL, 0, NULL, NULL);
out += size;
out_len -= size;

/* Calculate next A(i) */
HMAC_Init_ex(&ctx_a, NULL, 0, NULL, NULL);
HMAC_Update(&ctx_a, a, size);
HMAC_Final(&ctx_a, a, NULL);
HMAC_Init_ex(ctx_a, NULL, 0, NULL, NULL);
HMAC_Update(ctx_a, a, size);
HMAC_Final(ctx_a, a, NULL);
}

HMAC_CTX_cleanup(&ctx_a);
HMAC_CTX_cleanup(&ctx_out);
HMAC_CTX_free(ctx_a);
HMAC_CTX_free(ctx_out);
memset(a, 0, sizeof(a));
}

Expand Down

0 comments on commit fcd7120

Please sign in to comment.