hasher.cpp raw

   1  // Copyright (c) 2019-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  #include <util/hasher.h>
   6  
   7  #include <crypto/siphash.h>
   8  #include <random.h>
   9  
  10  SaltedUint256Hasher::SaltedUint256Hasher() : m_hasher{
  11      FastRandomContext().rand64(),
  12      FastRandomContext().rand64()}
  13  {}
  14  
  15  SaltedTxidHasher::SaltedTxidHasher() : m_hasher{
  16      FastRandomContext().rand64(),
  17      FastRandomContext().rand64()}
  18  {}
  19  
  20  SaltedWtxidHasher::SaltedWtxidHasher() : m_hasher{
  21      FastRandomContext().rand64(),
  22      FastRandomContext().rand64()}
  23  {}
  24  
  25  SaltedOutpointHasher::SaltedOutpointHasher(bool deterministic) : m_hasher{
  26      deterministic ? 0x8e819f2607a18de6 : FastRandomContext().rand64(),
  27      deterministic ? 0xf4020d2e3983b0eb : FastRandomContext().rand64()}
  28  {}
  29  
  30  SaltedSipHasher::SaltedSipHasher() :
  31      m_k0{FastRandomContext().rand64()},
  32      m_k1{FastRandomContext().rand64()}
  33  {}
  34  
  35  size_t SaltedSipHasher::operator()(const std::span<const unsigned char>& script) const
  36  {
  37      return CSipHasher(m_k0, m_k1).Write(script).Finalize();
  38  }
  39