summaryrefslogtreecommitdiff
path: root/src/add_python/lilliput/ae_mode_1.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/add_python/lilliput/ae_mode_1.py')
-rw-r--r--src/add_python/lilliput/ae_mode_1.py77
1 files changed, 38 insertions, 39 deletions
diff --git a/src/add_python/lilliput/ae_mode_1.py b/src/add_python/lilliput/ae_mode_1.py
index c2fdd9e..cc550e8 100644
--- a/src/add_python/lilliput/ae_mode_1.py
+++ b/src/add_python/lilliput/ae_mode_1.py
@@ -22,12 +22,12 @@ from enum import Enum
from .constants import BLOCK_BYTES, NONCE_BYTES
from .helpers import (
- ArrayToBlockbytesMatrix,
- BlockbytesMatrixToBytes,
- BuildAuth,
- Padding10LSB,
+ bytes_to_block_matrix,
+ block_matrix_to_bytes,
+ build_auth,
+ pad10,
TagValidationError,
- XorState
+ xor_state
)
from . import tbc
@@ -36,7 +36,7 @@ TWEAK_BITS = 192
TWEAK_BYTES = TWEAK_BITS//8
-def _LowPart(array, number_bits):
+def _low_part(array, number_bits):
shifted = 0
for byte in range(0, len(array)):
shifted |= (array[byte] << (8 * byte))
@@ -61,13 +61,13 @@ def _LowPart(array, number_bits):
class _MessageTweak(Enum):
- BLOCK = 0b000
+ BLOCK = 0b0000
NO_PADDING = 0b0001
PAD = 0b0100
FINAL = 0b0101
-def _TweakMessage(N, j, padding):
+def _tweak_message(N, j, padding):
tweak = [0 for byte in range(0, TWEAK_BYTES)]
for byte in range(NONCE_BYTES-1, -1, -1):
tweak[byte + (TWEAK_BYTES-NONCE_BYTES)] |= (N[byte] & 0xf0) >> 4
@@ -82,90 +82,89 @@ def _TweakMessage(N, j, padding):
return tweak
-def _TreatMessageEnc(M, N, key):
+def _treat_message_enc(M, N, key):
checksum = [0 for byte in range(0, BLOCK_BYTES)]
l = len(M)//BLOCK_BYTES
padding_bytes = len(M)%BLOCK_BYTES
- M = ArrayToBlockbytesMatrix(M)
+ M = bytes_to_block_matrix(M)
C = []
for j in range(0, l):
- checksum = XorState(checksum, M[j])
- tweak = _TweakMessage(N, j, _MessageTweak.BLOCK)
+ checksum = xor_state(checksum, M[j])
+ tweak = _tweak_message(N, j, _MessageTweak.BLOCK)
C.append(tbc.encrypt(tweak, key, M[j]))
if padding_bytes == 0:
- tweak = _TweakMessage(N, l, _MessageTweak.NO_PADDING)
+ tweak = _tweak_message(N, l, _MessageTweak.NO_PADDING)
Final = tbc.encrypt(tweak, key, checksum)
else:
- m_padded = Padding10LSB(M[l])
- checksum = XorState(checksum, m_padded)
- tweak = _TweakMessage(N, l, _MessageTweak.PAD)
+ m_padded = pad10(M[l])
+ checksum = xor_state(checksum, m_padded)
+ tweak = _tweak_message(N, l, _MessageTweak.PAD)
pad = tbc.encrypt(tweak, key, [0 for byte in range(0, BLOCK_BYTES)])
- lower_part = _LowPart(pad, padding_bytes*8)
- C.append(XorState(M[l], lower_part))
- tweak_final = _TweakMessage(N, l+1, _MessageTweak.FINAL)
+ lower_part = _low_part(pad, padding_bytes*8)
+ C.append(xor_state(M[l], lower_part))
+ tweak_final = _tweak_message(N, l+1, _MessageTweak.FINAL)
Final = tbc.encrypt(tweak_final, key, checksum)
return (Final, C)
-def _TreatMessageDec(C, N, key):
+def _treat_message_dec(C, N, key):
checksum = [0 for byte in range(0, BLOCK_BYTES)]
l = len(C)//BLOCK_BYTES
padding_bytes = len(C)%BLOCK_BYTES
- C = ArrayToBlockbytesMatrix(C)
+ C = bytes_to_block_matrix(C)
M = []
for j in range(0, l):
- tweak = _TweakMessage(N, j, _MessageTweak.BLOCK)
+ tweak = _tweak_message(N, j, _MessageTweak.BLOCK)
M.append(tbc.decrypt(tweak, key, C[j]))
- checksum = XorState(checksum, M[j])
+ checksum = xor_state(checksum, M[j])
if padding_bytes == 0:
- tweak = _TweakMessage(N, l, _MessageTweak.NO_PADDING)
+ tweak = _tweak_message(N, l, _MessageTweak.NO_PADDING)
Final = tbc.encrypt(tweak, key, checksum)
else:
- tweak = _TweakMessage(N, l, _MessageTweak.PAD)
+ tweak = _tweak_message(N, l, _MessageTweak.PAD)
pad = tbc.encrypt(tweak, key, [0 for byte in range(0, BLOCK_BYTES)])
- lower_part = _LowPart(pad, padding_bytes*8)
- M.append(XorState(C[l], lower_part))
+ lower_part = _low_part(pad, padding_bytes*8)
+ M.append(xor_state(C[l], lower_part))
- m_padded = Padding10LSB(M[l])
- checksum = XorState(checksum, m_padded)
- tweak_final = _TweakMessage(N, l+1, _MessageTweak.FINAL)
+ m_padded = pad10(M[l])
+ checksum = xor_state(checksum, m_padded)
+ tweak_final = _tweak_message(N, l+1, _MessageTweak.FINAL)
Final = tbc.encrypt(tweak_final, key, checksum)
return (Final, M)
-################################################################################
def encrypt(A, M, N, key):
K = list(key)
- Auth = BuildAuth(TWEAK_BITS, A, K)
- (Final, C) = _TreatMessageEnc(M, N, K)
- tag = XorState(Auth, Final)
+ Auth = build_auth(TWEAK_BITS, A, K)
+ (Final, C) = _treat_message_enc(M, N, K)
+ tag = xor_state(Auth, Final)
- return BlockbytesMatrixToBytes(C), bytes(tag)
+ return block_matrix_to_bytes(C), bytes(tag)
def decrypt(A, C, N, tag, key):
K = list(key)
tag = list(tag)
- Auth = BuildAuth(TWEAK_BITS, A, K)
- (Final, M) = _TreatMessageDec(C, N, K)
- tag2 = XorState(Auth, Final)
+ Auth = build_auth(TWEAK_BITS, A, K)
+ (Final, M) = _treat_message_dec(C, N, K)
+ tag2 = xor_state(Auth, Final)
if tag != tag2:
raise TagValidationError(tag, tag2)
- return BlockbytesMatrixToBytes(M)
+ return block_matrix_to_bytes(M)