std::string data; \
data.resize(sz); \
for (size_t i = 0; i < data.size(); ++i) \
data[i] = i * 17; \
keccak((
const uint8_t*)data.data(), data.size(), md0, 32); \
keccak_init(&ctx); \
size_t offset = 0; \
for (size_t i = 0; i < sizeof(chunks) / sizeof(chunks[0]); ++i) \
{ \
ASSERT_TRUE(offset + chunks[i] <= data.size()); \
keccak_update(&ctx, (
const uint8_t*)data.data() + offset, chunks[i]); \
offset += chunks[i]; \
} \
ASSERT_TRUE(offset == data.size()); \
keccak_finish(&ctx, md1); \
ASSERT_EQ(memcmp(md0, md1, 32), 0);
37#define TEST_KECCAK(sz, chunks) \
38 std::string data; \
39 data.resize(sz); \
40 for (size_t i = 0; i < data.size(); ++i) \
41 data[i] = i * 17; \
42 uint8_t md0[32], md1[32]; \
43 keccak((const uint8_t*)data.data(), data.size(), md0, 32); \
44 KECCAK_CTX ctx; \
45 keccak_init(&ctx); \
46 size_t offset = 0; \
47 for (size_t i = 0; i < sizeof(chunks) / sizeof(chunks[0]); ++i) \
48 { \
49 ASSERT_TRUE(offset + chunks[i] <= data.size()); \
50 keccak_update(&ctx, (const uint8_t*)data.data() + offset, chunks[i]); \
51 offset += chunks[i]; \
52 } \
53 ASSERT_TRUE(offset == data.size()); \
54 keccak_finish(&ctx, md1); \
55 ASSERT_EQ(memcmp(md0, md1, 32), 0);