Thanks for your reply.

For some reason I was convinced that I needed a RandomPool to generate
RSA key pairs, so I was struggling with deterministically seeding that
pool.

However RSA::PrivateKey actually uses a RandomNumberGenerator so LCG
works great!

M


On Sep 15, 6:48 am, Jeffrey Walton <[email protected]> wrote:
> On Sep 13, 9:18 pm, Marco <[email protected]> wrote:
>
>
>
>
>
>
>
> > How can i create a DETERMINISTIC, seeded random source?
>
> > I tried various examples from the wiki, like the one below, and none
> > of them generates the same block twice.
>
> > What am I missing?
>
> > const unsigned int SEEDSIZE = 16;
> > byte pcbSeed[ SEEDSIZE ];
>
> > const unsigned int BLOCKSIZE = 16 * 8;
> > byte pcbScratch[ BLOCKSIZE ];
>
> > //Set the seed to "xxxx...x"
> > for(size_t i = 0; i < SEEDSIZE; ++i) {
> >     pcbSeed[i] =  (byte)'x';
>
> > }
>
> > CryptoPP::RandomPool rng;
> > // also tried
> > // CryptoPP::AutoSeededX917RNG<CryptoPP::DES_EDE3> rng(true, false);
>
> RandomPool is a PGP style pool, and its not deterministic. For example
> RandomPool makes the following call:
>     time_t t = time(NULL);
>     ...
>
> AutoSeededX917RNG is not not deterministic either.
> IncorporateEntropy() calls Reseed(), which looks like:
>     OS_GenerateRandomBlock(blocking, seed, seed.size());
>     if (length > 0)
>      {
>         SHA256 hash;
>         hash.Update(seed, seed.size());
>         hash.Update(input, length);
>         hash.TruncatedFinal(seed, UnsignedMin(hash.DigestSize(),
> seed.size()));
>     }
>
> OS_GenerateRandomBlock will use OS provided services, such as /dev/
> [u]random or CryptGenRandom.
>
> The source for RandPool can be found 
> athttp://www.cryptopp.com/docs/ref/randpool_8cpp_source.html,
> and AutoSeededX917RNG athttp://www.cryptopp.com/docs/ref/osrng_8h_source.html.
>
> LCGs are 
> deterministic.http://www.cryptopp.com/docs/ref/class_l_c___r_n_g.html.
>
> Jeff

-- 
You received this message because you are subscribed to the "Crypto++ Users" 
Google Group.
To unsubscribe, send an email to [email protected].
More information about Crypto++ and this group is available at 
http://www.cryptopp.com.

Reply via email to