id,summary,reporter,owner,description,type,status,priority,milestone,component,resolution,keywords,cc,branch,branch_author,launchpad_bug
4468,twisted.python.randbytes,zooko,,"[source:twisted/python/randbytes.py] doesn't seem to offer a lot of functionality over {{{os.urandom}}}, except for two misfeatures:
1. The option of setting {{{fallback=True}}} so that it will automatically fallback to insecure random numbers if it can't generate secure ones. This is a terrible idea that nobody should ever do. Behavior like that is one of the causes of the Debian OpenSSL Fiasco, for example. If anyone has a legitimate use case for this behavior I would be fascinated to hear it.
2. The option of using PyCrypto's {{{Crypto.Util.randpool}}} if it is present. {{{randpool}}} is deprecated (according to the announcement at the top of http://www.dlitz.net/software/pycrypto/ on this date, which references [http://lists.dlitz.net/pipermail/pycrypto/2008q3/000000.html this mailing list thread]). I've looked at {{{randpool}}} a bit, and it doesn't offer any advantage over {{{os.urandom}}} that I can see other than the option of falling back to insecure random number generation if it can't generate secure random numbers. {{{randpool}}} also has a lot of other code to do some useless things about estimating entropy, sampling the current clock, and so on. I can't be sure that I understood its source code because that other stuff made it hard to understand the part I was interested in. The latest git version of PyCrypto comes with this warning: ""Deprecated. Use Random.new() instead. See http://www.pycrypto.org/randpool-broken"". However that link gives me a 404 Not Found.
I suspect both of these modules predate the {{{os.urandom}}} module that was introduced in Python 2.4. Now that Twisted no longer supports Python 2.3, perhaps the time has come to deprecate {{{twisted.python.randbytes}}} in favor of {{{os.urandom}}}.",enhancement,closed,normal,,core,fixed,security,zooko zooko@… thijs,branches/randbytes-without-pycrypto-4468,exarkun,