diff options
author | moparisthebest <admin@moparisthebest.com> | 2015-06-30 20:23:54 -0400 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2015-07-01 19:43:47 +0200 |
commit | 55b78c5ae94852ffb942ff979e6f25aebfeedb16 (patch) | |
tree | 73c9f909baac1e3f6bc9c3f09ed5819d4be18653 /lib/vtls/gtls.c | |
parent | c00b18d5406375627b98b47e68261ace85d1a581 (diff) |
SSL: Pinned public key hash support
Diffstat (limited to 'lib/vtls/gtls.c')
-rw-r--r-- | lib/vtls/gtls.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/vtls/gtls.c b/lib/vtls/gtls.c index 1db31e40c..c54dfc1d2 100644 --- a/lib/vtls/gtls.c +++ b/lib/vtls/gtls.c @@ -39,6 +39,7 @@ #ifdef USE_GNUTLS_NETTLE #include <gnutls/crypto.h> #include <nettle/md5.h> +#include <nettle/sha2.h> #else #include <gcrypt.h> #endif @@ -1557,6 +1558,25 @@ void Curl_gtls_md5sum(unsigned char *tmp, /* input */ #endif } +void Curl_gtls_sha256sum(const unsigned char *tmp, /* input */ + size_t tmplen, + unsigned char *sha256sum, /* output */ + size_t sha256len) +{ +#if defined(USE_GNUTLS_NETTLE) + struct sha256_ctx SHA256pw; + sha256_init(&SHA256pw); + sha256_update(&SHA256pw, (unsigned int)tmplen, tmp); + sha256_digest(&SHA256pw, (unsigned int)sha256len, sha256sum); +#elif defined(USE_GNUTLS) + gcry_md_hd_t SHA256pw; + gcry_md_open(&SHA256pw, GCRY_MD_SHA256, 0); + gcry_md_write(SHA256pw, tmp, tmplen); + memcpy(sha256sum, gcry_md_read (SHA256pw, 0), sha256len); + gcry_md_close(SHA256pw); +#endif +} + bool Curl_gtls_cert_status_request(void) { #ifdef HAS_OCSP |