Support arbitrary length for the randbytes method

This commit is contained in:
Andika Wasisto 2020-08-12 03:42:19 +07:00
parent a299141f9a
commit 9cf1a177cc
2 changed files with 15 additions and 5 deletions

View file

@ -49,10 +49,22 @@ class QngWrapper:
def randbytes(self, length):
try:
return bytes(self.qng.RandBytes(length))
return self._randbytes_arbitrary_length(length)
except:
self.qng.Reset()
return self._randbytes_arbitrary_length(length)
def _randbytes_arbitrary_length(self, length):
if length <= 8192:
return bytes(self.qng.RandBytes(length))
else:
data = bytearray()
for x in range(length // 8192):
data.extend(bytearray(self.qng.RandBytes(8192)))
bytes_needed = length % 8192
if bytes_needed != 0:
data.extend(bytearray(self.qng.RandBytes(bytes_needed)))
return bytes(data)
def clear(self):
self.qng.Clear()