void RAND_seed()

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);
}