aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelen <jjelen@redhat.com>2016-11-05 16:51:05 +0100
committerAndreas Schneider <asn@cryptomilk.org>2018-06-29 17:08:54 +0200
commit7933756b5a63359827e28f769f6b83f0d22c7e98 (patch)
tree3dd2f3b4cdaf6b9fba2186282637a70192d54ebe
parent837e367d2d19166c28a87ad785e2e2c45d1c291a (diff)
downloadlibssh-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.c17
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