Bitcoin Core  21.99.0
P2P Digital Currency
hasher.cpp
Go to the documentation of this file.
1 // Copyright (c) 2019 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 <random.h>
6 #include <util/hasher.h>
7 
8 #include <limits>
9 
10 SaltedTxidHasher::SaltedTxidHasher() : k0(GetRand(std::numeric_limits<uint64_t>::max())), k1(GetRand(std::numeric_limits<uint64_t>::max())) {}
11 
12 SaltedOutpointHasher::SaltedOutpointHasher() : k0(GetRand(std::numeric_limits<uint64_t>::max())), k1(GetRand(std::numeric_limits<uint64_t>::max())) {}
13 
14 SaltedSipHasher::SaltedSipHasher() : m_k0(GetRand(std::numeric_limits<uint64_t>::max())), m_k1(GetRand(std::numeric_limits<uint64_t>::max())) {}
15 
17 {
18  return CSipHasher(m_k0, m_k1).Write(script.data(), script.size()).Finalize();
19 }
uint64_t GetRand(uint64_t nMax) noexcept
Generate a uniform random integer in the range [0..range).
Definition: random.cpp:592
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
size_t operator()(const Span< const unsigned char > &script) const
Definition: hasher.cpp:16
constexpr std::size_t size() const noexcept
Definition: span.h:182
const uint64_t k1
Definition: hasher.h:16
const uint64_t m_k0
Salt.
Definition: hasher.h:91
const uint64_t k0
Salt.
Definition: hasher.h:16
const uint64_t m_k1
Definition: hasher.h:91
static const unsigned char k1[32]
constexpr C * data() const noexcept
Definition: span.h:169
SipHash-2-4.
Definition: siphash.h:13
A Span is an object that can refer to a contiguous sequence of objects.
Definition: span.h:92