MCPcopy Create free account
hub / github.com/ElementsProject/elements / SipHashUint256Extra

Function SipHashUint256Extra

src/crypto/siphash.cpp:134–173  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

132}
133
134uint64_t SipHashUint256Extra(uint64_t k0, uint64_t k1, const uint256& val, uint32_t extra)
135{
136 /* Specialized implementation for efficiency */
137 uint64_t d = val.GetUint64(0);
138
139 uint64_t v0 = 0x736f6d6570736575ULL ^ k0;
140 uint64_t v1 = 0x646f72616e646f6dULL ^ k1;
141 uint64_t v2 = 0x6c7967656e657261ULL ^ k0;
142 uint64_t v3 = 0x7465646279746573ULL ^ k1 ^ d;
143
144 SIPROUND;
145 SIPROUND;
146 v0 ^= d;
147 d = val.GetUint64(1);
148 v3 ^= d;
149 SIPROUND;
150 SIPROUND;
151 v0 ^= d;
152 d = val.GetUint64(2);
153 v3 ^= d;
154 SIPROUND;
155 SIPROUND;
156 v0 ^= d;
157 d = val.GetUint64(3);
158 v3 ^= d;
159 SIPROUND;
160 SIPROUND;
161 v0 ^= d;
162 d = (((uint64_t)36) << 56) | extra;
163 v3 ^= d;
164 SIPROUND;
165 SIPROUND;
166 v0 ^= d;
167 v2 ^= 0xFF;
168 SIPROUND;
169 SIPROUND;
170 SIPROUND;
171 SIPROUND;
172 return v0 ^ v1 ^ v2 ^ v3;
173}

Callers 3

BOOST_AUTO_TEST_CASEFunction · 0.85
FUZZ_TARGET_INITFunction · 0.85
operator()Method · 0.85

Calls 1

GetUint64Method · 0.80

Tested by 2

BOOST_AUTO_TEST_CASEFunction · 0.68
FUZZ_TARGET_INITFunction · 0.68