/ src / crypto / hmac_sha256.h
hmac_sha256.h
 1  // Copyright (c) 2014-present The Bitcoin Core developers
 2  // Distributed under the MIT software license, see the accompanying
 3  // file COPYING or http://www.opensource.org/licenses/mit-license.php.
 4  
 5  #ifndef BITCOIN_CRYPTO_HMAC_SHA256_H
 6  #define BITCOIN_CRYPTO_HMAC_SHA256_H
 7  
 8  #include <crypto/sha256.h>
 9  
10  #include <cstddef>
11  
12  /** A hasher class for HMAC-SHA-256. */
13  class CHMAC_SHA256
14  {
15  private:
16      CSHA256 outer;
17      CSHA256 inner;
18  
19  public:
20      static const size_t OUTPUT_SIZE = 32;
21  
22      CHMAC_SHA256(const unsigned char* key, size_t keylen);
23      CHMAC_SHA256& Write(const unsigned char* data, size_t len)
24      {
25          inner.Write(data, len);
26          return *this;
27      }
28      void Finalize(unsigned char hash[OUTPUT_SIZE]);
29  };
30  
31  #endif // BITCOIN_CRYPTO_HMAC_SHA256_H