libcrypto: Use newer API for HMAC

This is for OpenSSL 1.1.0 support.

Cherry-picked from cf1e808e2f

Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
This commit is contained in:
Jakub Jelen
2016-11-05 16:51:05 +01:00
committed by Andreas Schneider
parent 837e367d2d
commit 7933756b5a

View File

@@ -323,32 +323,33 @@ void ssh_mac_final(unsigned char *md, ssh_mac_ctx ctx) {
HMACCTX hmac_init(const void *key, int len, enum ssh_hmac_e type) { HMACCTX hmac_init(const void *key, int len, enum ssh_hmac_e type) {
HMACCTX ctx = NULL; HMACCTX ctx = NULL;
ctx = malloc(sizeof(*ctx)); ctx = HMAC_CTX_new();
if (ctx == NULL) { if (ctx == NULL) {
return NULL; return NULL;
} }
#ifndef OLD_CRYPTO #ifndef OLD_CRYPTO
HMAC_CTX_init(ctx); // openssl 0.9.7 requires it. HMAC_CTX_reset(ctx); // openssl 0.9.7 requires it.
#endif #endif
switch(type) { switch(type) {
case SSH_HMAC_SHA1: case SSH_HMAC_SHA1:
HMAC_Init(ctx, key, len, EVP_sha1()); HMAC_Init_ex(ctx, key, len, EVP_sha1(), NULL);
break; break;
case SSH_HMAC_SHA256: case SSH_HMAC_SHA256:
HMAC_Init(ctx, key, len, EVP_sha256()); HMAC_Init_ex(ctx, key, len, EVP_sha256(), NULL);
break; break;
case SSH_HMAC_SHA384: case SSH_HMAC_SHA384:
HMAC_Init(ctx, key, len, EVP_sha384()); HMAC_Init_ex(ctx, key, len, EVP_sha384(), NULL);
break; break;
case SSH_HMAC_SHA512: case SSH_HMAC_SHA512:
HMAC_Init(ctx, key, len, EVP_sha512()); HMAC_Init_ex(ctx, key, len, EVP_sha512(), NULL);
break; break;
case SSH_HMAC_MD5: case SSH_HMAC_MD5:
HMAC_Init(ctx, key, len, EVP_md5()); HMAC_Init_ex(ctx, key, len, EVP_md5(), NULL);
break; break;
default: default:
HMAC_CTX_free(ctx);
SAFE_FREE(ctx); SAFE_FREE(ctx);
ctx = NULL; ctx = NULL;
} }
@@ -364,7 +365,7 @@ void hmac_final(HMACCTX ctx, unsigned char *hashmacbuf, unsigned int *len) {
HMAC_Final(ctx,hashmacbuf,len); HMAC_Final(ctx,hashmacbuf,len);
#ifndef OLD_CRYPTO #ifndef OLD_CRYPTO
HMAC_CTX_cleanup(ctx); HMAC_CTX_reset(ctx);
#else #else
HMAC_cleanup(ctx); HMAC_cleanup(ctx);
#endif #endif