diff options
author | Steve Holme <steve_holme@hotmail.com> | 2020-02-23 22:37:43 +0000 |
---|---|---|
committer | Steve Holme <steve_holme@hotmail.com> | 2020-02-24 06:56:35 +0000 |
commit | 7def168a4f6423686e8df5a4f02bce2806b763bf (patch) | |
tree | c11db784e95024229afe97c2bc28b11f65581120 /lib/hmac.c | |
parent | fa009cc798f736e1751e62e47e4daee149cdc812 (diff) |
ntlm: Moved the HMAC MD5 function into the HMAC module as a generic function
Diffstat (limited to 'lib/hmac.c')
-rw-r--r-- | lib/hmac.c | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/lib/hmac.c b/lib/hmac.c index bf49ebec5..ae68827be 100644 --- a/lib/hmac.c +++ b/lib/hmac.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -30,6 +30,7 @@ #include "curl_hmac.h" #include "curl_memory.h" +#include "warnless.h" /* The last #include file should be: */ #include "memdebug.h" @@ -129,4 +130,40 @@ int Curl_HMAC_final(HMAC_context *ctxt, unsigned char *result) return 0; } +/* + * Curl_hmacit() + * + * This is used to generate a HMAC hash, for the specified input data, given + * the specified hash function and key. + * + * Parameters: + * + * hashparams [in] - The hash function (Curl_HMAC_MD5). + * key [in] - The key to use. + * keylen [in] - The length of the key. + * data [in] - The data to encrypt. + * datalen [in] - The length of the data. + * output [in/out] - The output buffer. + * + * Returns CURLE_OK on success. + */ +CURLcode Curl_hmacit(const HMAC_params *hashparams, + const unsigned char *key, const size_t keylen, + const unsigned char *data, const size_t datalen, + unsigned char *output) +{ + HMAC_context *ctxt = Curl_HMAC_init(hashparams, key, curlx_uztoui(keylen)); + + if(!ctxt) + return CURLE_OUT_OF_MEMORY; + + /* Update the digest with the given challenge */ + Curl_HMAC_update(ctxt, data, curlx_uztoui(datalen)); + + /* Finalise the digest */ + Curl_HMAC_final(ctxt, output); + + return CURLE_OK; +} + #endif /* CURL_DISABLE_CRYPTO_AUTH */ |