BLAKE2S_HASH_SIZE
uint8_t i_hash[BLAKE2S_HASH_SIZE] __aligned(sizeof(uint32_t));
blake2s_init(&state, BLAKE2S_HASH_SIZE);
blake2s_init(&state, BLAKE2S_HASH_SIZE);
blake2s_init(&state, BLAKE2S_HASH_SIZE);
blake2s_update(&state, i_hash, BLAKE2S_HASH_SIZE);
explicit_bzero(i_hash, BLAKE2S_HASH_SIZE);
uint8_t out[BLAKE2S_HASH_SIZE + 1];
uint8_t sec[BLAKE2S_HASH_SIZE];
hmac(sec, x, ck, BLAKE2S_HASH_SIZE, x_len, NOISE_HASH_LEN);
hmac(out, out, sec, BLAKE2S_HASH_SIZE, 1, BLAKE2S_HASH_SIZE);
out[BLAKE2S_HASH_SIZE] = 2;
hmac(out, out, sec, BLAKE2S_HASH_SIZE, BLAKE2S_HASH_SIZE + 1, BLAKE2S_HASH_SIZE);
out[BLAKE2S_HASH_SIZE] = 3;
hmac(out, out, sec, BLAKE2S_HASH_SIZE, BLAKE2S_HASH_SIZE + 1, BLAKE2S_HASH_SIZE);
explicit_bzero(sec, BLAKE2S_HASH_SIZE);
explicit_bzero(out, BLAKE2S_HASH_SIZE + 1);
#define NOISE_HASH_LEN BLAKE2S_HASH_SIZE