Improve testing and API of CSHA256 compression.
This commit is contained in:
parent
d3612b1c94
commit
27a109af01
|
@ -11,19 +11,22 @@
|
|||
/** A hasher class for SHA-256. */
|
||||
class CSHA256
|
||||
{
|
||||
private:
|
||||
uint32_t s[8];
|
||||
unsigned char buf[64];
|
||||
size_t bytes;
|
||||
|
||||
public:
|
||||
static const size_t OUTPUT_SIZE = 32;
|
||||
|
||||
CSHA256();
|
||||
CSHA256& Write(const unsigned char* data, size_t len);
|
||||
void Finalize(unsigned char hash[OUTPUT_SIZE]);
|
||||
void FinalizeNoPadding(unsigned char hash[OUTPUT_SIZE], bool enforce_compression = true);
|
||||
void FinalizeNoPadding(unsigned char hash[OUTPUT_SIZE]) {
|
||||
FinalizeNoPadding(hash, true);
|
||||
};
|
||||
CSHA256& Reset();
|
||||
|
||||
private:
|
||||
uint32_t s[8];
|
||||
unsigned char buf[64];
|
||||
size_t bytes;
|
||||
void FinalizeNoPadding(unsigned char hash[OUTPUT_SIZE], bool enforce_compression);
|
||||
};
|
||||
|
||||
#endif // BITCOIN_CRYPTO_SHA256_H
|
||||
|
|
|
@ -30,6 +30,28 @@ BOOST_AUTO_TEST_CASE(compression)
|
|||
uint256 digest;
|
||||
BOOST_CHECK_THROW(hasher.FinalizeNoPadding(digest.begin()), std::length_error);
|
||||
}
|
||||
|
||||
{
|
||||
unsigned char preimage[65] = {};
|
||||
CSHA256 hasher;
|
||||
hasher.Write(&preimage[0], 65);
|
||||
uint256 digest;
|
||||
BOOST_CHECK_THROW(hasher.FinalizeNoPadding(digest.begin()), std::length_error);
|
||||
}
|
||||
|
||||
{
|
||||
unsigned char n = 0x00;
|
||||
CSHA256 hasher;
|
||||
for (size_t i = 0; i < 64; i++) {
|
||||
hasher.Write(&n, 1);
|
||||
}
|
||||
uint256 digest;
|
||||
|
||||
hasher.FinalizeNoPadding(digest.begin());
|
||||
|
||||
BOOST_CHECK_MESSAGE(digest == uint256S("d8a93718eaf9feba4362d2c091d4e58ccabe9f779957336269b4b917be9856da"),
|
||||
digest.GetHex());
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
|
Loading…
Reference in New Issue