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 */ | 
