BLAKE2S_BLOCK_SIZE
uint8_t buf[BLAKE2S_BLOCK_SIZE];
blake2s_update(state, block, BLAKE2S_BLOCK_SIZE);
explicit_bzero(block, BLAKE2S_BLOCK_SIZE);
memcpy(m, block, BLAKE2S_BLOCK_SIZE);
block += BLAKE2S_BLOCK_SIZE;
const size_t fill = BLAKE2S_BLOCK_SIZE - state->buflen;
blake2s_compress(state, state->buf, 1, BLAKE2S_BLOCK_SIZE);
if (inlen > BLAKE2S_BLOCK_SIZE) {
const size_t nblocks = DIV_ROUND_UP(inlen, BLAKE2S_BLOCK_SIZE);
blake2s_compress(state, in, nblocks - 1, BLAKE2S_BLOCK_SIZE);
in += BLAKE2S_BLOCK_SIZE * (nblocks - 1);
inlen -= BLAKE2S_BLOCK_SIZE * (nblocks - 1);
BLAKE2S_BLOCK_SIZE - state->buflen); /* Padding */
uint8_t block[BLAKE2S_BLOCK_SIZE] = { 0 };
uint8_t x_key[BLAKE2S_BLOCK_SIZE] __aligned(sizeof(uint32_t)) = { 0 };
if (keylen > BLAKE2S_BLOCK_SIZE) {
for (i = 0; i < BLAKE2S_BLOCK_SIZE; ++i)
blake2s_update(&state, x_key, BLAKE2S_BLOCK_SIZE);
for (i = 0; i < BLAKE2S_BLOCK_SIZE; ++i)
blake2s_update(&state, x_key, BLAKE2S_BLOCK_SIZE);
explicit_bzero(x_key, BLAKE2S_BLOCK_SIZE);