/ src / crypto / hmac_sha512.h
hmac_sha512.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_SHA512_H
 6  #define BITCOIN_CRYPTO_HMAC_SHA512_H
 7  
 8  #include <crypto/sha512.h>
 9  
10  #include <cstddef>
11  
12  /** A hasher class for HMAC-SHA-512. */
13  class CHMAC_SHA512
14  {
15  private:
16      CSHA512 outer;
17      CSHA512 inner;
18  
19  public:
20      static const size_t OUTPUT_SIZE = 64;
21  
22      CHMAC_SHA512(const unsigned char* key, size_t keylen);
23      CHMAC_SHA512& 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_SHA512_H