summaryrefslogtreecommitdiff
path: root/src/algo_hmac.c
diff options
context:
space:
mode:
authorGlenn Strauss <gstrauss@gluelogic.com>2022-01-22 12:08:26 -0500
committerGlenn Strauss <gstrauss@gluelogic.com>2022-01-22 12:18:35 -0500
commit7901259fbbf4f06be2c6f44c6b0e7d98011bd246 (patch)
tree1b9d77dc547a02a2927821afd2b88860912afba6 /src/algo_hmac.c
parentd7a76d109e134b510d19972552ca1e3bed347104 (diff)
downloadlighttpd-git-7901259fbbf4f06be2c6f44c6b0e7d98011bd246.tar.gz
[core] fix HMAC with openssl 3.0
(thx ryandesign) x-ref: https://redmine.lighttpd.net/boards/2/topics/10240
Diffstat (limited to 'src/algo_hmac.c')
-rw-r--r--src/algo_hmac.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/algo_hmac.c b/src/algo_hmac.c
index 8876fe7b..0077855c 100644
--- a/src/algo_hmac.c
+++ b/src/algo_hmac.c
@@ -56,6 +56,9 @@ EVP_HMAC (const EVP_MD *evp_md, const void *key,
EVP_PKEY_free(pkey);
return (1 == rc) ? md : NULL;
}
+typedef size_t evp_siglen_t;
+#else
+typedef unsigned int evp_siglen_t;
#endif
#endif
@@ -99,10 +102,11 @@ li_hmac_sha1 (unsigned char digest[SHA_DIGEST_LENGTH],
return 0;
return 1;
#elif defined(USE_OPENSSL_CRYPTO)
+ evp_siglen_t dlen = SHA_DIGEST_LENGTH;
return (NULL != HMAC(EVP_sha1(),
(const unsigned char *)secret, (int)slen,
(const unsigned char *)msg, mlen,
- digest, NULL));
+ digest, &dlen));
#elif defined(USE_GNUTLS_CRYPTO)
return 0 ==
gnutls_hmac_fast(GNUTLS_MAC_SHA1,
@@ -174,10 +178,11 @@ li_hmac_sha256 (unsigned char digest[SHA256_DIGEST_LENGTH],
return 0;
return 1;
#elif defined(USE_OPENSSL_CRYPTO)
+ evp_siglen_t dlen = SHA256_DIGEST_LENGTH;
return (NULL != HMAC(EVP_sha256(),
(const unsigned char *)secret, (int)slen,
(const unsigned char *)msg, mlen,
- digest, NULL));
+ digest, &dlen));
#elif defined(USE_GNUTLS_CRYPTO)
return 0 ==
gnutls_hmac_fast(GNUTLS_MAC_SHA256,
@@ -249,10 +254,11 @@ li_hmac_sha512 (unsigned char digest[SHA512_DIGEST_LENGTH],
return 0;
return 1;
#elif defined(USE_OPENSSL_CRYPTO)
+ evp_siglen_t dlen = SHA512_DIGEST_LENGTH;
return (NULL != HMAC(EVP_sha512(),
(const unsigned char *)secret, (int)slen,
(const unsigned char *)msg, mlen,
- digest, NULL));
+ digest, &dlen));
#elif defined(USE_GNUTLS_CRYPTO)
return 0 ==
gnutls_hmac_fast(GNUTLS_MAC_SHA512,