hasher.cpp raw
1 // Copyright (c) 2019-2022 The Limenka 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() :
11 k0{FastRandomContext().rand64()},
12 k1{FastRandomContext().rand64()} {}
13
14 SaltedOutpointHasher::SaltedOutpointHasher(bool deterministic) :
15 k0{deterministic ? 0x8e819f2607a18de6 : FastRandomContext().rand64()},
16 k1{deterministic ? 0xf4020d2e3983b0eb : FastRandomContext().rand64()}
17 {}
18
19 SaltedSipHasher::SaltedSipHasher() :
20 m_k0{FastRandomContext().rand64()},
21 m_k1{FastRandomContext().rand64()} {}
22
23 size_t SaltedSipHasher::operator()(const Span<const unsigned char>& script) const
24 {
25 return CSipHasher(m_k0, m_k1).Write(script).Finalize();
26 }
27