RNDPOOLSIZE
ASSERT(rnbyte_cnt <= RNDPOOLSIZE);
while ((len > 0) && (rnbyte_cnt < RNDPOOLSIZE)) {
rindex = (rindex + 1) & (RNDPOOLSIZE - 1);
findex = rindex = (rindex + 1) & (RNDPOOLSIZE - 1);
ASSERT(len <= rnbyte_cnt && rnbyte_cnt <= RNDPOOLSIZE);
findex = (findex + 1) & (RNDPOOLSIZE - 1);
uint8_t rndpool[RNDPOOLSIZE];
(RNDPOOLSIZE - 1);
else if (rnbyte_cnt < RNDPOOLSIZE)
HashUpdate(&hashctx, (uint8_t *)srndpool, RNDPOOLSIZE);
pindex &= (RNDPOOLSIZE - 1);
(i) &= (RNDPOOLSIZE - 1); \
if (buffer_bytes >= RNDPOOLSIZE) {
for (i = 0; i < RNDPOOLSIZE/4; i++) {
pindex &= (RNDPOOLSIZE - 1);
bstart &= (RNDPOOLSIZE - 1);
for (i = 0; i < RNDPOOLSIZE/HASHSIZE + 1; i++) {
if (start + HASHBUFSIZE <= RNDPOOLSIZE)
RNDPOOLSIZE - start);
HASHBUFSIZE - RNDPOOLSIZE + start);
k = (start + HASHSIZE) & (RNDPOOLSIZE - 1);
k &= (RNDPOOLSIZE - 1);
start = (start + HASHSIZE) & (RNDPOOLSIZE - 1);
if (entropy_bits > CRYPTO_BYTES2BITS(RNDPOOLSIZE))
entropy_bits = CRYPTO_BYTES2BITS(RNDPOOLSIZE);
if (i > RNDPOOLSIZE) {
bcopy(srndpool, ptr, RNDPOOLSIZE);
ptr += RNDPOOLSIZE;
i -= RNDPOOLSIZE;
for (i = 0; i < RNDPOOLSIZE/4; i++) {
if (entropy_bits + ent >= CRYPTO_BYTES2BITS(RNDPOOLSIZE)) {
static uint32_t srndpool[RNDPOOLSIZE/4]; /* Pool of random bits */
static uint32_t buffer[RNDPOOLSIZE/4]; /* entropy mixed in later */