Bitcoin Core  27.99.0
P2P Digital Currency
hasher.cpp
Go to the documentation of this file.
1 // Copyright (c) 2019-2022 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 <crypto/siphash.h>
6 #include <random.h>
7 #include <span.h>
8 #include <util/hasher.h>
9 
10 SaltedTxidHasher::SaltedTxidHasher() : k0(GetRand<uint64_t>()), k1(GetRand<uint64_t>()) {}
11 
13  k0(deterministic ? 0x8e819f2607a18de6 : GetRand<uint64_t>()),
14  k1(deterministic ? 0xf4020d2e3983b0eb : GetRand<uint64_t>())
15 {}
16 
17 SaltedSipHasher::SaltedSipHasher() : m_k0(GetRand<uint64_t>()), m_k1(GetRand<uint64_t>()) {}
18 
20 {
21  return CSipHasher(m_k0, m_k1).Write(script).Finalize();
22 }
SipHash-2-4.
Definition: siphash.h:15
uint64_t Finalize() const
Compute the 64-bit SipHash-2-4 of the data written so far.
Definition: siphash.cpp:77
CSipHasher & Write(uint64_t data)
Hash a 64-bit integer worth of data It is treated as if this was the little-endian interpretation of ...
Definition: siphash.cpp:28
SaltedOutpointHasher(bool deterministic=false)
Definition: hasher.cpp:12
size_t operator()(const Span< const unsigned char > &script) const
Definition: hasher.cpp:19
const uint64_t m_k0
Salt.
Definition: hasher.h:93
const uint64_t m_k1
Definition: hasher.h:93
T GetRand(T nMax=std::numeric_limits< T >::max()) noexcept
Generate a uniform random integer of type T in the range [0..nMax) nMax defaults to std::numeric_limi...
Definition: random.h:81