in src/rand.c [101:130]
void RAND_seed(csprng *rng,int rawlen,const char *raw)
{
/* initialise from at least 128 byte string of raw *
* random (keyboard?) input, and 32-bit time-of-day */
int i;
char digest[32];
uchar b[4];
hash256 sh;
rng->pool_ptr=0;
for (i=0; i<NK; i++) rng->ira[i]=0;
if (rawlen>0)
{
HASH256_init(&sh);
for (i=0; i<rawlen; i++)
HASH256_process(&sh,raw[i]);
HASH256_hash(&sh,digest);
/* initialise PRNG from distilled randomness */
for (i=0; i<8; i++)
{
b[0]=digest[4*i];
b[1]=digest[4*i+1];
b[2]=digest[4*i+2];
b[3]=digest[4*i+3];
sirand(rng,pack(b));
}
}
fill_pool(rng);
}