29 #include "gtest/gtest.h" 35 #define KECCAK_BLOCKLEN 136 37 #define TEST_KECCAK(sz, chunks) \ 40 for (size_t i = 0; i < data.size(); ++i) \ 42 uint8_t md0[32], md1[32]; \ 43 keccak((const uint8_t*)data.data(), data.size(), md0, 32); \ 47 for (size_t i = 0; i < sizeof(chunks) / sizeof(chunks[0]); ++i) \ 49 ASSERT_TRUE(offset + chunks[i] <= data.size()); \ 50 keccak_update(&ctx, (const uint8_t*)data.data() + offset, chunks[i]); \ 51 offset += chunks[i]; \ 53 ASSERT_TRUE(offset == data.size()); \ 54 keccak_finish(&ctx, md1); \ 55 ASSERT_EQ(memcmp(md0, md1, 32), 0); 59 static const size_t chunks[] = {0};
65 static const size_t chunks[] = {1};
71 static const size_t chunks[] = {0, 1, 0};
77 static const size_t chunks[] = {1, 1};
83 static const size_t chunks[] = {0, 0, 1, 0, 2, 1, 0};
89 static const size_t chunks[] = {1, 14};
95 static const size_t chunks[] = {134, 1};
101 static const size_t chunks[] = {135, 0};
107 static const size_t chunks[] = {0, 135};
113 static const size_t chunks[] = {135, 1};
119 static const size_t chunks[] = {136, 0};
125 static const size_t chunks[] = {0, 136};
131 static const size_t chunks[] = {136};
137 static const size_t chunks[] = {136, 1};
143 static const size_t chunks[] = {1, 136};
152 for (
size_t i = 0; i <
sizeof(data) /
sizeof(data[0]); ++i)
156 for (
int offset = 0; offset < 64; ++offset)
158 memcpy(adata, data + offset, 6000);
#define TEST_KECCAK(sz, chunks)
void * memcpy(void *a, const void *b, size_t c)
#define ASSERT_TRUE(condition)
void keccak(const uint8_t *in, size_t inlen, uint8_t *md, int mdlen)
__attribute__((noreturn)) void CXA_THROW(void *ex