X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fhmac%2Fhmac.c;h=e1ec79e09337c1ecbcb9aa9e0760d0139011588e;hp=d31e880e6f735f113da60b8ee813a926e72cd9c1;hb=3bb4736289c49e01cb8d4a683ca3f9505dcba44b;hpb=ec577822f95a8bca0023c5c77cef1a4916822d4a diff --git a/crypto/hmac/hmac.c b/crypto/hmac/hmac.c index d31e880e6f..e1ec79e093 100644 --- a/crypto/hmac/hmac.c +++ b/crypto/hmac/hmac.c @@ -60,7 +60,7 @@ #include #include -void HMAC_Init(HMAC_CTX *ctx, const unsigned char *key, int len, +void HMAC_Init(HMAC_CTX *ctx, const void *key, int len, const EVP_MD *md) { int i,j,reset=0; @@ -88,9 +88,11 @@ void HMAC_Init(HMAC_CTX *ctx, const unsigned char *key, int len, else { memcpy(ctx->key,key,len); - memset(&(ctx->key[len]),0,sizeof(ctx->key)-len); ctx->key_length=len; } + if(ctx->key_length != HMAC_MAX_MD_CBLOCK) + memset(&ctx->key[ctx->key_length], 0, + HMAC_MAX_MD_CBLOCK - ctx->key_length); } if (reset) @@ -109,7 +111,7 @@ void HMAC_Init(HMAC_CTX *ctx, const unsigned char *key, int len, memcpy(&ctx->md_ctx,&ctx->i_ctx,sizeof(ctx->i_ctx)); } -void HMAC_Update(HMAC_CTX *ctx, unsigned char *data, int len) +void HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, int len) { EVP_DigestUpdate(&(ctx->md_ctx),data,len); } @@ -133,8 +135,9 @@ void HMAC_cleanup(HMAC_CTX *ctx) memset(ctx,0,sizeof(HMAC_CTX)); } -unsigned char *HMAC(EVP_MD *evp_md, unsigned char *key, int key_len, - unsigned char *d, int n, unsigned char *md, unsigned int *md_len) +unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, + const unsigned char *d, int n, unsigned char *md, + unsigned int *md_len) { HMAC_CTX c; static unsigned char m[EVP_MAX_MD_SIZE];