コード例 #1
0
ファイル: mcl_rand.c プロジェクト: HackLinux/bootrom
/* Initialize RNG with some real entropy from some external source */
void MCL_RAND_seed(csprng *rng,int rawlen,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];
    mcl_hash256 sh;
    rng->pool_ptr=0;
    for (i=0;i<NK;i++) rng->ira[i]=0;
    if (rawlen>0)
    {
        MCL_HASH256_init(&sh);
        for (i=0;i<rawlen;i++)
            MCL_HASH256_process(&sh,raw[i]);
        MCL_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];
		//	printf("%08x\n",pack(b));
			sirand(rng,pack(b));
		}
    }
    fill_pool(rng);
}
コード例 #2
0
ファイル: MRSTRONG.C プロジェクト: karllen/Windows_Program
void strong_init(csprng *rng,int rawlen,char *raw,mr_unsign32 tod)
{ /* initialise from at least 128 byte string of raw  *
   * random (keyboard?) input, and 32-bit time-of-day */
    int i;
    mr_unsign32 hash[MR_HASH_BYTES/4];
    sha sh;
    rng->pool_ptr=0;
    for (i=0;i<NK;i++) rng->ira[i]=0;
    if (rawlen>0)
    {
        shs_init(&sh);
        for (i=0;i<rawlen;i++)
            shs_process(&sh,raw[i]);
        shs_hash(&sh,(char *)hash);

/* initialise PRNG from distilled randomness */

        for (i=0;i<MR_HASH_BYTES/4;i++) sirand(rng,hash[i]);
    }
    sirand(rng,tod);

    fill_pool(rng);
}
コード例 #3
0
ファイル: random.c プロジェクト: onlykey/libraries
/* Initialize RNG with some real entropy from some external source */
void RAND_seed(csprng *rng, char *digest)
{
    /* initialise from at least 128 byte string of raw  *
     * random (keyboard?) input, and 32-bit time-of-day */
    int i;
    uchar b[4];
    rng->pool_ptr=0;
    for (i=0; i<NK; i++) rng->ira[i]=0;

        /* 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];
            //	printf("%08x\n",pack(b));
            sirand(rng,pack(b));
        }
    fill_pool(rng);
}