2

Is it an internal PRNG? Is it fed from /dev/random or /dev/urandom? How secure is it? If I have a hardware (TRNG) plugged in feeding my /dev/random will this source of entropy get used by bitcoind?

  • 1
    Well OpenSSL handles most cryptography things in Bitcoin. – Jori Apr 19 '14 at 17:06
  • 2
    In this particular case, it's the RAND_bytes call from OpenSSL. – Diego Basch Apr 19 '14 at 21:46
  • 1
    @DiegoBasch: May I suggest you upgrade your comment to an answer, ideally with a link to the source? – pyramids Apr 20 '14 at 19:43
3

As others mentioned Bitcoin core uses OpenSSL random sources.

This means that it uses any random source available, like:

  • the operation system, i.e. interrupts
  • random sources of the CPU or the chip set
  • dedicated hardware for entropy generation

So in order to make sure your hardware random generator works with Bitcoin you must make sure it works with OpenSSL.

3

It uses RAND_bytes from OpenSSL. The relevant call is CKey::MakeNewKey.

getnewaddress is in rpcwallet.cpp. It tries to get a key from the pool, and if the pool is empty it allocates a new one which is populated using RAND_bytes.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.