Campbell Barton added the comment:

@serhiy.storchaka, while a properly working function that uses getrandbits 
isn't so complex, its not trivial either.

It needs to create smaller chunks and join them (also check zero size case 
which raises an error if passed).

eg:

```
    def urandom_from_random(rng, length):
        if length == 0:
            return b''
    
        import sys
        chunk_size = 65535
        chunks = []
        while length >= chunk_size:
            chunks.append(rng.getrandbits(chunk_size * 8).to_bytes(chunk_size, 
sys.byteorder))
            length -= chunk_size
        if length:
            chunks.append(rng.getrandbits(length * 8).to_bytes(length, 
sys.byteorder))
        result = b''.join(chunks)
        return result
```

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue27096>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to