add_user_random(): new osrand_bytes param

This commit is contained in:
The MMGen Project 2026-08-05 17:24:56 +00:00
commit 1fe733d159
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
2 changed files with 6 additions and 4 deletions

View file

@ -313,6 +313,7 @@ class Crypto:
rand_bytes,
*,
desc,
osrand_bytes = 8,
urand = {'data': b'', 'counter': 0}):
assert type(rand_bytes) is bytes, 'add_user_random_chk1'
@ -326,8 +327,9 @@ class Crypto:
# counter protects against very evil rng that might repeatedly output the same data
urand['counter'] += 1
os_rand = os.urandom(8)
assert len(os_rand) == 8, f'OS random number generator returned {len(os_rand)} (!= 8) bytes!'
os_rand = os.urandom(osrand_bytes)
assert len(os_rand) == osrand_bytes, (
f'OS random number generator returned {len(os_rand)} (!= {osrand_bytes}) bytes!')
import hmac
key = hmac.digest(

View file

@ -11,5 +11,5 @@ if overlay_fake_os.getenv('MMGEN_TEST_SUITE_DETERMINISTIC'):
Crypto.get_random = lambda self, length: overlay_fake_urandom(
len(overlay_fake_get_random_orig(self, length)))
Crypto.add_user_random = lambda self, rand_bytes, desc: overlay_fake_urandom(
len(overlay_fake_add_user_random_orig(self, rand_bytes, desc=desc)))
Crypto.add_user_random = lambda self, rand_bytes, *, desc, osrand_bytes=8: overlay_fake_urandom(
len(overlay_fake_add_user_random_orig(self, rand_bytes, desc=desc, osrand_bytes=osrand_bytes)))