Skip to content

Commit 02c4cc5

Browse files
committed
Make CHash256/CHash160 output to Span
1 parent 0ef97b1 commit 02c4cc5

13 files changed

+28
-26
lines changed

src/bench/verify_script.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ static void VerifyScriptBench(benchmark::Bench& bench)
3434
key.Set(vchKey.begin(), vchKey.end(), false);
3535
CPubKey pubkey = key.GetPubKey();
3636
uint160 pubkeyHash;
37-
CHash160().Write(pubkey).Finalize(pubkeyHash.begin());
37+
CHash160().Write(pubkey).Finalize(pubkeyHash);
3838

3939
// Script.
4040
CScript scriptPubKey = CScript() << witnessversion << ToByteVector(pubkeyHash);

src/blockfilter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ uint256 BlockFilter::GetHash() const
291291
const std::vector<unsigned char>& data = GetEncodedFilter();
292292

293293
uint256 result;
294-
CHash256().Write(data).Finalize(result.begin());
294+
CHash256().Write(data).Finalize(result);
295295
return result;
296296
}
297297

@@ -303,6 +303,6 @@ uint256 BlockFilter::ComputeHeader(const uint256& prev_header) const
303303
CHash256()
304304
.Write(filter_hash)
305305
.Write(prev_header)
306-
.Finalize(result.begin());
306+
.Finalize(result);
307307
return result;
308308
}

src/hash.h

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,11 @@ class CHash256 {
2525
public:
2626
static const size_t OUTPUT_SIZE = CSHA256::OUTPUT_SIZE;
2727

28-
void Finalize(unsigned char hash[OUTPUT_SIZE]) {
28+
void Finalize(Span<unsigned char> output) {
29+
assert(output.size() == OUTPUT_SIZE);
2930
unsigned char buf[CSHA256::OUTPUT_SIZE];
3031
sha.Finalize(buf);
31-
sha.Reset().Write(buf, CSHA256::OUTPUT_SIZE).Finalize(hash);
32+
sha.Reset().Write(buf, CSHA256::OUTPUT_SIZE).Finalize(output.data());
3233
}
3334

3435
CHash256& Write(Span<const unsigned char> input) {
@@ -49,10 +50,11 @@ class CHash160 {
4950
public:
5051
static const size_t OUTPUT_SIZE = CRIPEMD160::OUTPUT_SIZE;
5152

52-
void Finalize(unsigned char hash[OUTPUT_SIZE]) {
53+
void Finalize(Span<unsigned char> output) {
54+
assert(output.size() == OUTPUT_SIZE);
5355
unsigned char buf[CSHA256::OUTPUT_SIZE];
5456
sha.Finalize(buf);
55-
CRIPEMD160().Write(buf, CSHA256::OUTPUT_SIZE).Finalize(hash);
57+
CRIPEMD160().Write(buf, CSHA256::OUTPUT_SIZE).Finalize(output.data());
5658
}
5759

5860
CHash160& Write(Span<const unsigned char> input) {
@@ -73,7 +75,7 @@ inline uint256 Hash(const T1 pbegin, const T1 pend)
7375
static const unsigned char pblank[1] = {};
7476
uint256 result;
7577
CHash256().Write({pbegin == pend ? pblank : (const unsigned char*)&pbegin[0], (pend - pbegin) * sizeof(pbegin[0])})
76-
.Finalize((unsigned char*)&result);
78+
.Finalize(result);
7779
return result;
7880
}
7981

@@ -85,7 +87,7 @@ inline uint256 Hash(const T1 p1begin, const T1 p1end,
8587
uint256 result;
8688
CHash256().Write({p1begin == p1end ? pblank : (const unsigned char*)&p1begin[0], (p1end - p1begin) * sizeof(p1begin[0])})
8789
.Write({p2begin == p2end ? pblank : (const unsigned char*)&p2begin[0], (p2end - p2begin) * sizeof(p2begin[0])})
88-
.Finalize((unsigned char*)&result);
90+
.Finalize(result);
8991
return result;
9092
}
9193

@@ -96,7 +98,7 @@ inline uint160 Hash160(const T1 pbegin, const T1 pend)
9698
static unsigned char pblank[1] = {};
9799
uint160 result;
98100
CHash160().Write({pbegin == pend ? pblank : (const unsigned char*)&pbegin[0], (pend - pbegin) * sizeof(pbegin[0])})
99-
.Finalize((unsigned char*)&result);
101+
.Finalize(result);
100102
return result;
101103
}
102104

@@ -135,7 +137,7 @@ class CHashWriter
135137
// invalidates the object
136138
uint256 GetHash() {
137139
uint256 result;
138-
ctx.Finalize((unsigned char*)&result);
140+
ctx.Finalize(result);
139141
return result;
140142
}
141143

src/key.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ bool CKey::VerifyPubKey(const CPubKey& pubkey) const {
237237
std::string str = "Bitcoin key verification\n";
238238
GetRandBytes(rnd, sizeof(rnd));
239239
uint256 hash;
240-
CHash256().Write(MakeUCharSpan(str)).Write(rnd).Finalize(hash.begin());
240+
CHash256().Write(MakeUCharSpan(str)).Write(rnd).Finalize(hash);
241241
std::vector<unsigned char> vchSig;
242242
Sign(hash, vchSig);
243243
return pubkey.Verify(hash, vchSig);

src/net.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -696,7 +696,7 @@ const uint256& V1TransportDeserializer::GetMessageHash() const
696696
{
697697
assert(Complete());
698698
if (data_hash.IsNull())
699-
hasher.Finalize(data_hash.begin());
699+
hasher.Finalize(data_hash);
700700
return data_hash;
701701
}
702702

src/script/interpreter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -986,9 +986,9 @@ bool EvalScript(std::vector<std::vector<unsigned char> >& stack, const CScript&
986986
else if (opcode == OP_SHA256)
987987
CSHA256().Write(vch.data(), vch.size()).Finalize(vchHash.data());
988988
else if (opcode == OP_HASH160)
989-
CHash160().Write(vch).Finalize(vchHash.data());
989+
CHash160().Write(vch).Finalize(vchHash);
990990
else if (opcode == OP_HASH256)
991-
CHash256().Write(vch).Finalize(vchHash.data());
991+
CHash256().Write(vch).Finalize(vchHash);
992992
popstack(stack);
993993
stack.push_back(vchHash);
994994
}

src/test/crypto_tests.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -743,7 +743,7 @@ BOOST_AUTO_TEST_CASE(sha256d64)
743743
in[j] = InsecureRandBits(8);
744744
}
745745
for (int j = 0; j < i; ++j) {
746-
CHash256().Write({in + 64 * j, 64}).Finalize(out1 + 32 * j);
746+
CHash256().Write({in + 64 * j, 64}).Finalize({out1 + 32 * j, 32});
747747
}
748748
SHA256D64(out2, in, i);
749749
BOOST_CHECK(memcmp(out1, out2, 32 * i) == 0);

src/test/fuzz/crypto.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,12 @@ void test_one_input(const std::vector<uint8_t>& buffer)
7373
switch (fuzzed_data_provider.ConsumeIntegralInRange<int>(0, 8)) {
7474
case 0: {
7575
data.resize(CHash160::OUTPUT_SIZE);
76-
hash160.Finalize(data.data());
76+
hash160.Finalize(data);
7777
break;
7878
}
7979
case 1: {
8080
data.resize(CHash256::OUTPUT_SIZE);
81-
hash256.Finalize(data.data());
81+
hash256.Finalize(data);
8282
break;
8383
}
8484
case 2: {

src/test/key_tests.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ BOOST_AUTO_TEST_CASE(key_key_negation)
196196
std::string str = "Bitcoin key verification\n";
197197
GetRandBytes(rnd, sizeof(rnd));
198198
uint256 hash;
199-
CHash256().Write(MakeUCharSpan(str)).Write(rnd).Finalize(hash.begin());
199+
CHash256().Write(MakeUCharSpan(str)).Write(rnd).Finalize(hash);
200200

201201
// import the static test key
202202
CKey key = DecodeSecret(strSecret1C);

src/test/merkle_tests.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ static void MerkleComputation(const std::vector<uint256>& leaves, uint256* proot
6060
}
6161
}
6262
mutated |= (inner[level] == h);
63-
CHash256().Write(inner[level]).Write(h).Finalize(h.begin());
63+
CHash256().Write(inner[level]).Write(h).Finalize(h);
6464
}
6565
// Store the resulting hash at inner position level.
6666
inner[level] = h;
@@ -86,7 +86,7 @@ static void MerkleComputation(const std::vector<uint256>& leaves, uint256* proot
8686
if (pbranch && matchh) {
8787
pbranch->push_back(h);
8888
}
89-
CHash256().Write(h).Write(h).Finalize(h.begin());
89+
CHash256().Write(h).Write(h).Finalize(h);
9090
// Increment count to the value it would have if two entries at this
9191
// level had existed.
9292
count += (((uint32_t)1) << level);
@@ -101,7 +101,7 @@ static void MerkleComputation(const std::vector<uint256>& leaves, uint256* proot
101101
matchh = true;
102102
}
103103
}
104-
CHash256().Write(inner[level]).Write(h).Finalize(h.begin());
104+
CHash256().Write(inner[level]).Write(h).Finalize(h);
105105
level++;
106106
}
107107
}

0 commit comments

Comments
 (0)