mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Make the number of bytes used by the counter configurable
This commit is contained in:
parent
cae0e38a97
commit
48f80f2a81
@ -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:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user