24 0x0000000000000001, 0x0000000000008082, 0x800000000000808a,
25 0x8000000080008000, 0x000000000000808b, 0x0000000080000001,
26 0x8000000080008081, 0x8000000000008009, 0x000000000000008a,
27 0x0000000000000088, 0x0000000080008009, 0x000000008000000a,
28 0x000000008000808b, 0x800000000000008b, 0x8000000000008089,
29 0x8000000000008003, 0x8000000000008002, 0x8000000000000080,
30 0x000000000000800a, 0x800000008000000a, 0x8000000080008081,
31 0x8000000000008080, 0x0000000080000001, 0x8000000080008008
123 size_t i, rsiz, rsizw;
125 static_assert(
HASH_DATA_AREA <=
sizeof(temp),
"Bad keccak preconditions");
126 if (mdlen <= 0 || (mdlen > 100 &&
sizeof(st) != (size_t)mdlen))
134 memset(st, 0,
sizeof(st));
136 for ( ; inlen >= rsiz; inlen -= rsiz, in += rsiz) {
137 for (i = 0; i < rsizw; i++) {
139 memcpy(&ina, in + i * 8, 8);
146 if (inlen + 1 >=
sizeof(temp) || inlen > rsiz || rsiz - inlen + inlen + 1 >=
sizeof(temp) || rsiz == 0 || rsiz - 1 >=
sizeof(temp) || rsizw * 8 >
sizeof(temp))
154 memset(temp + inlen, 0, rsiz - inlen);
155 temp[rsiz - 1] |= 0x80;
157 for (i = 0; i < rsizw; i++)
162 if (((
size_t)mdlen %
sizeof(
uint64_t)) != 0)
void * memcpy(void *a, const void *b, size_t c)
Definition glibc_compat.cpp:16
void keccak(const uint8_t *in, size_t inlen, uint8_t *md, int mdlen)
Definition keccak.c:119