summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Gatto <matthias.gatto@outscale.com>2020-07-03 15:12:57 +0200
committerDaniel Stenberg <daniel@haxx.se>2020-12-21 15:26:41 +0100
commitd52564bacb82712a8a1221ec982d7966d7a90a3e (patch)
treeea69048559d946464f9e6248c70458e8b47d693d
parentd13179db3e88ddcca087175e35332c2b04b08770 (diff)
downloadcurl-d52564bacb82712a8a1221ec982d7966d7a90a3e.tar.gz
http: add hmac support for sha256
It seems current hmac implementation use md5 for the hash, V4 signature require sha256, so I've added the needed struct in this commit. I've added the functions that do the hmac in v4 signature file as a static function ,in the next patch of the serie, because it's used only by this file. Signed-off-by: Matthias Gatto <matthias.gatto@outscale.com>
-rw-r--r--lib/curl_sha256.h3
-rw-r--r--lib/sha256.c20
2 files changed, 23 insertions, 0 deletions
diff --git a/lib/curl_sha256.h b/lib/curl_sha256.h
index 0fceb6329..b4579d769 100644
--- a/lib/curl_sha256.h
+++ b/lib/curl_sha256.h
@@ -24,6 +24,9 @@
***************************************************************************/
#ifndef CURL_DISABLE_CRYPTO_AUTH
+#include "curl_hmac.h"
+
+extern const struct HMAC_params Curl_HMAC_SHA256[1];
#define SHA256_DIGEST_LENGTH 32
diff --git a/lib/sha256.c b/lib/sha256.c
index 910d7ae1e..c64ee0936 100644
--- a/lib/sha256.c
+++ b/lib/sha256.c
@@ -27,6 +27,7 @@
#include "warnless.h"
#include "curl_sha256.h"
+#include "curl_hmac.h"
#if defined(USE_OPENSSL)
@@ -491,4 +492,23 @@ void Curl_sha256it(unsigned char *output, const unsigned char *input,
SHA256_Final(output, &ctx);
}
+
+const struct HMAC_params Curl_HMAC_SHA256[] = {
+ {
+ /* Hash initialization function. */
+ CURLX_FUNCTION_CAST(HMAC_hinit_func, SHA256_Init),
+ /* Hash update function. */
+ CURLX_FUNCTION_CAST(HMAC_hupdate_func, SHA256_Update),
+ /* Hash computation end function. */
+ CURLX_FUNCTION_CAST(HMAC_hfinal_func, SHA256_Final),
+ /* Size of hash context structure. */
+ sizeof(SHA256_CTX),
+ /* Maximum key length. */
+ 64,
+ /* Result size. */
+ 32
+ }
+};
+
+
#endif /* CURL_DISABLE_CRYPTO_AUTH */