Messages in this thread | | | From | Bernd Edlinger <> | Subject | Re: [PATCHv3] random: Make /dev/random wait for crng_ready | Date | Sun, 17 Feb 2019 13:48:41 +0000 |
| |
On 2/17/19 9:44 AM, Bernd Edlinger wrote: > > + if (crng_ready() && !blocking_pool.initialized &&
After some more debugging I realize that blocking_pool.initialized is true after 128 bits of input entropy, but that is only 80 bits credited, due to the asymptotic 3/4 crediting formula.
I see that will also enable the code path below:
if (entropy_bits > random_write_wakeup_bits && r->initialized && r->entropy_total >= 2*random_read_wakeup_bits) { struct entropy_store *other = &blocking_pool;
if (other->entropy_count <= 3 * other->poolinfo->poolfracbits / 4) { schedule_work(&other->push_work); r->entropy_total = 0; }
when random_write_wakeup_bits is below 80, and random_read_wakeup_bits is also smallish. This depletes the input_pool in favor of the blocking pool, while we are actually waiting for the input_pool to reach 128 bits security strength, in order to seed the CRNG.
I am testing a new version and will post it later today.
Sorry for all the back-and forth.
Bernd.
| |