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?
Asked
Active
Viewed 827 times
3
Felipe
- 1,688
- 3
- 19
- 31
-
1Well OpenSSL handles most cryptography things in Bitcoin. – Jori Apr 19 '14 at 17:06
-
2In 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? – Apr 20 '14 at 19:43
2 Answers
4
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.
John L. Jegutanis
- 621
- 5
- 7
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.
Diego Basch
- 336
- 1
- 5