sha512.h raw

   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_SHA512_H
   6  #define BITCOIN_CRYPTO_SHA512_H
   7  
   8  #include <cstdint>
   9  #include <cstdlib>
  10  
  11  /** A hasher class for SHA-512. */
  12  class CSHA512
  13  {
  14  private:
  15      uint64_t s[8];
  16      unsigned char buf[128];
  17      uint64_t bytes{0};
  18  
  19  public:
  20      static constexpr size_t OUTPUT_SIZE = 64;
  21  
  22      CSHA512();
  23      CSHA512& Write(const unsigned char* data, size_t len);
  24      void Finalize(unsigned char hash[OUTPUT_SIZE]);
  25      CSHA512& Reset();
  26      uint64_t Size() const { return bytes; }
  27  };
  28  
  29  #endif // BITCOIN_CRYPTO_SHA512_H
  30