user1761: 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?

user13746: 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.

user13520: 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.

1761: <p>Is it an internal PRNG? Is it fed  from <code>/dev/random</code> or <code>/dev/urandom</code>? How secure is it? If I have a hardware (TRNG) plugged in feeding my <code>/dev/random</code> will this source of entropy get used by <code>bitcoind</code>?</p>
 13746: <p>As others mentioned Bitcoin core uses <a href="http://wiki.openssl.org/index.php/Random_Numbers#Sources" rel="nofollow">OpenSSL random sources</a>.</p>

<p>This means that it uses any random source available, like:</p>

<ul>
<li>the operation system, i.e. interrupts</li>
<li>random sources of the CPU or the chip set</li>
<li>dedicated hardware for entropy generation</li>
</ul>

<p>So in order to make sure your hardware random generator works with Bitcoin you must make sure it works with OpenSSL.</p>
 13520: <p><a href="https://github.com/bitcoin/bitcoin/blob/2aed2b30b112aaaf7d46df4fd947648ca8df4e67/src/key.cpp#L363" rel="nofollow">It uses RAND_bytes from OpenSSL</a>. The relevant call is <code>CKey::MakeNewKey</code>.</p>

<p><code>getnewaddress</code> 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.</p>
