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
    Commented Apr 19, 2014 at 17:06
  • 2
    In this particular case, it's the RAND_bytes call from OpenSSL. Commented Apr 19, 2014 at 21:46
  • 1
    @DiegoBasch: May I suggest you upgrade your comment to an answer, ideally with a link to the source?
    – user6049
    Commented Apr 20, 2014 at 19:43

2 Answers 2


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.


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 and acknowledge you have read our privacy policy.

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