void shake256()

in src/third_party_src/fips202.c [467:485]


void shake256(uint8_t *out, size_t outlen, const uint8_t *in, size_t inlen)
{
  unsigned int i;
  size_t nblocks = outlen/SHAKE256_RATE;
  uint8_t t[SHAKE256_RATE];
  uint64_t state[25];

  shake256_absorb(state, in, inlen);
  shake256_squeeze(out, nblocks, state);

  out += nblocks*SHAKE256_RATE;
  outlen -= nblocks*SHAKE256_RATE;

  if(outlen) {
    shake256_squeeze(t, 1, state);
    for(i=0;i<outlen;i++)
      out[i] = t[i];
  }
}