10 uint8_t*
getData(
size_t offset,
size_t )
override
12 return buffer + offset;
29 uint8_t buffer_[8 * BLOCK_SIZE + 1];
30 uint8_t* buffer = buffer_ + 1;
34 std::string dummyName;
36 auto dummyCallback = [](size_t, size_t) {};
38 SECTION(
"zero sized buffer") {
42 "LWPNACQDBZRYXW3VHJVCJ64QBZNGHOHHHZWCLNQ");
44 SECTION(
"size less than 1 block") {
46 memset(buffer, 0, 100);
48 "EOIEKIQO6BSNCNRX2UB2MB466INV6LICZ6MPUWQ");
49 memset(buffer + 20, 1, 10);
52 "GOTZVYW3WIE37XFCDOY66PLLXWGP6DPN3CQRHWA");
54 SECTION(
"3 full and 1 partial block") {
55 TigerTree tt(data, 3 * BLOCK_SIZE + 500, dummyName);
56 memset(buffer, 0, 3 * BLOCK_SIZE + 500);
58 "K6NHCUINLFZ7OUMUZ44JSRABL5C62WTCY2BONUI");
60 memset(buffer + BLOCK_SIZE + 500, 1, 10);
63 "WGRG4PY3CZDLYLTC6BZ2X3G22H6DEB77JH4XPBA");
65 memset(buffer + 2 * BLOCK_SIZE - 50, 1, 100);
68 "Y55VG6WSVEPWGPRZGCB4L2OYLI7CLVGQ6X6J4MY");
71 SECTION(
"7 full blocks (unbalanced internal binary tree)") {
72 TigerTree tt(data, 7 * BLOCK_SIZE, dummyName);
73 memset(buffer, 0, 7 * BLOCK_SIZE);
75 "FPSZ35773WS4WGBVXM255KWNETQZXMTEJGFMLTA");
77 memset(buffer + 500, 1, 500);
80 "NBCRBTHDNUDTAKZRMYO6TIQGQJIWX74BYNTYXBA");
83 memset(buffer + 3 * BLOCK_SIZE, 1, 4 * BLOCK_SIZE);
84 tt.
notifyChange(3 * BLOCK_SIZE, 4 * BLOCK_SIZE, dummyTime);
86 "PLHCYOTPV4TTXTUPHYGGVPMARGMFE4U5JYRV4VA");
The TigerTree class will query the to-be-hashed data via this abstract interface.
Calculate a tiger-tree-hash.
const TigerHash & calcHash(const std::function< void(size_t, size_t)> &progressCallback)
Calculate the hash value.
void notifyChange(size_t offset, size_t len, time_t time)
Inform this calculator about changes in the input data.
static constexpr size_t BLOCK_SIZE
This file implemented 3 utility functions:
bool isCacheStillValid(time_t &) override
Because TTH calculation of a large file takes some time (a few 1/10s for a harddisk image) we try to ...
uint8_t * getData(size_t offset, size_t) override
Return the requested portion of the to-be-hashed data block.
std::string toString() const