diff --git a/src/pyj/aes.pyj b/src/pyj/aes.pyj index d52fae0d40..adc8f77c61 100644 --- a/src/pyj/aes.pyj +++ b/src/pyj/aes.pyj @@ -310,17 +310,16 @@ class CBC(ModeOfOperation): class Counter: def __init__(self, initial_value, number_of_bytes=16): - self.number_of_bytes = number_of_bytes - self.bytes = Uint8Array(number_of_bytes) initial_value = initial_value or 1 if type(initial_value) is 'number': + self.bytes = Uint8Array(number_of_bytes) self.set_value(initial_value) else: - self.bytes.set(initial_value) + self.bytes = Uint8Array(initial_value) def set_value(self, value): c = self.bytes - for v'var index = self.number_of_bytes; index >= 0; index--': + for v'var index = self.bytes.length; index >= 0; index--': c[index] = value % 256 value >>= 8 @@ -329,7 +328,7 @@ class Counter: def increment(self): c = self.bytes - for v'var i = self.number_of_bytes; i >= 0; i--': + for v'var i = self.bytes.length; i >= 0; i--': if c[i] is 255: c[i] = 0 else: @@ -348,9 +347,8 @@ class CTR(ModeOfOperation): def __init__(self, key, counter): ModeOfOperation.__init__(self, key) - self.cval = counter self.wmem = Uint8Array(16) - self.counter = Counter(self.cval) + self.counter = Counter(counter) self.counter_index = 16 def _crypt(self, bytes): @@ -399,6 +397,7 @@ class CTR(ModeOfOperation): offset = tag_bytes.length return bytes_to_string(b, offset) + if __name__ == '__main__': text = 'testing a basic roundtrip ø̄ū'