Mercurial > p > roundup > code
diff roundup/scripts/roundup_server.py @ 5350:66a17c80e035
Force all uses of random to use SystemRandom and abort if
pseudorandom random.Random would be used rather than
Random.SystemRandom.
random.Random is returning the same value time after time. Even when
being seeded after instantiation, calls to the random.random()
function return the same value like it's not advanceing the state of
the generator.
So "fix" is to force use of system random generator to generate:
one time keys for password reset (action.py)
random passwords when resetting passwords (password.py)
serial number for auto ssl cert generation (roundup_server.py)
Message-ID's in email: mailgw.py, client.py
anti-csrf nonces (templating.py)
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sat, 07 Jul 2018 22:02:41 -0400 |
| parents | 762222535a0b |
| children | 91954be46a66 |
line wrap: on
line diff
--- a/roundup/scripts/roundup_server.py Thu Jul 05 22:48:50 2018 -0400 +++ b/roundup/scripts/roundup_server.py Sat Jul 07 22:02:41 2018 -0400 @@ -88,7 +88,17 @@ def auto_ssl(): print _('WARNING: generating temporary SSL certificate') - import OpenSSL, random + import OpenSSL + + try: + # Use the cryptographic source of randomness if available + from random import SystemRandom + random=SystemRandom() + except ImportError: + raise + from random import Random + random=Random() + pkey = OpenSSL.crypto.PKey() pkey.generate_key(OpenSSL.crypto.TYPE_RSA, 768) cert = OpenSSL.crypto.X509()
