Make the number of bytes used by the counter configurable

This commit is contained in:
Kovid Goyal 2016-03-22 09:34:01 +05:30
parent cae0e38a97
commit 48f80f2a81

View File

@ -309,18 +309,18 @@ class CBC(ModeOfOperation):
class Counter: class Counter:
def __init__(self, initial_value): def __init__(self, initial_value, number_of_bytes=16):
self.bytes = Uint8Array(16) self.number_of_bytes = number_of_bytes
if not initial_value: self.bytes = Uint8Array(number_of_bytes)
self.set_value(1) initial_value = initial_value or 1
elif type(initial_value) is 'number': if type(initial_value) is 'number':
self.set_value(initial_value) self.set_value(initial_value)
else: else:
self.bytes.set(initial_value) self.bytes.set(initial_value)
def set_value(self, value): def set_value(self, value):
c = self.bytes c = self.bytes
for v'var index = 15; index >= 0; index--': for v'var index = self.number_of_bytes; index >= 0; index--':
c[index] = value % 256 c[index] = value % 256
value >>= 8 value >>= 8
@ -329,7 +329,7 @@ class Counter:
def increment(self): def increment(self):
c = self.bytes c = self.bytes
for v'var i = 15; i >= 0; i--': for v'var i = self.number_of_bytes; i >= 0; i--':
if c[i] is 255: if c[i] is 255:
c[i] = 0 c[i] = 0
else: else: