diff options
author | Jakub Jelen <jjelen@redhat.com> | 2016-11-05 16:51:05 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2018-06-29 17:08:54 +0200 |
commit | 7933756b5a63359827e28f769f6b83f0d22c7e98 (patch) | |
tree | 3dd2f3b4cdaf6b9fba2186282637a70192d54ebe | |
parent | 837e367d2d19166c28a87ad785e2e2c45d1c291a (diff) | |
download | libssh-7933756b5a63359827e28f769f6b83f0d22c7e98.tar.gz libssh-7933756b5a63359827e28f769f6b83f0d22c7e98.tar.xz libssh-7933756b5a63359827e28f769f6b83f0d22c7e98.zip |
libcrypto: Use newer API for HMAC
This is for OpenSSL 1.1.0 support.
Cherry-picked from cf1e808e2ffa1f26644fb5d2cb82a919f323deba
Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
-rw-r--r-- | src/libcrypto.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/libcrypto.c b/src/libcrypto.c index 8d1fd4d8..7cbbfd4a 100644 --- a/src/libcrypto.c +++ b/src/libcrypto.c @@ -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 ctx = NULL; - ctx = malloc(sizeof(*ctx)); + ctx = HMAC_CTX_new(); if (ctx == NULL) { return NULL; } #ifndef OLD_CRYPTO - HMAC_CTX_init(ctx); // openssl 0.9.7 requires it. + HMAC_CTX_reset(ctx); // openssl 0.9.7 requires it. #endif switch(type) { case SSH_HMAC_SHA1: - HMAC_Init(ctx, key, len, EVP_sha1()); + HMAC_Init_ex(ctx, key, len, EVP_sha1(), NULL); break; case SSH_HMAC_SHA256: - HMAC_Init(ctx, key, len, EVP_sha256()); + HMAC_Init_ex(ctx, key, len, EVP_sha256(), NULL); break; case SSH_HMAC_SHA384: - HMAC_Init(ctx, key, len, EVP_sha384()); + HMAC_Init_ex(ctx, key, len, EVP_sha384(), NULL); break; case SSH_HMAC_SHA512: - HMAC_Init(ctx, key, len, EVP_sha512()); + HMAC_Init_ex(ctx, key, len, EVP_sha512(), NULL); break; case SSH_HMAC_MD5: - HMAC_Init(ctx, key, len, EVP_md5()); + HMAC_Init_ex(ctx, key, len, EVP_md5(), NULL); break; default: + HMAC_CTX_free(ctx); SAFE_FREE(ctx); ctx = NULL; } @@ -364,7 +365,7 @@ void hmac_final(HMACCTX ctx, unsigned char *hashmacbuf, unsigned int *len) { HMAC_Final(ctx,hashmacbuf,len); #ifndef OLD_CRYPTO - HMAC_CTX_cleanup(ctx); + HMAC_CTX_reset(ctx); #else HMAC_cleanup(ctx); #endif |