Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: levino on September 11, 2013, 12:06:19 PM



Title: Random number generators used by clients?
Post by: levino on September 11, 2013, 12:06:19 PM
Is there an overview which random number generator (hardware, software, algorithm) is used by the different bitcoin clients to generate r-values and private keys? Hope this has not been discussed before, google did not show any hits....


Title: Re: Random number generators used by clients?
Post by: deepceleron on September 11, 2013, 05:44:54 PM
So, again, my question is, can someone who knows about the client code confirm that it's ultimately using /dev/urandom?
The ultimate source of random data for keys is OpenSSL's rand_lib.c (https://github.com/openssl/openssl/blob/master/crypto/rand/rand_lib.c). This is where the build options will cause the answer to diverge; when you build Bitcoin, the answer is ultimately dependent upon build config options such as OPENSSL_FIPS (use the FIPS140 engine) and platform.

One would need to investigate the gitian-reproducible Bitcoin builds to give an answer about the official binaries; I've read enough OpenSSL code for this answer that I'm not gonna do this...