lilliput-ae-reference-implementation

Implementations of Lilliput-AE submitted to the NIST LWC standardization process
git clone https://git.kevinlegouguec.net/lilliput-ae-reference-implementation
Log | Files | Refs | README

commit 62cff183e2e9e67549db0461589a05138ce2ed00
parent 97db0c6e5dc3576cdcca339acf3bb33b698dccd0
Author: Kévin Le Gouguec <kevin.legouguec@gmail.com>
Date:   Sun, 24 Mar 2019 17:33:38 +0100

[implem-python] Remplacement de _low_part par du "tranchage" natif

Diffstat:
Msrc/add_python/lilliput/ae_mode_1.py | 28++--------------------------
1 file changed, 2 insertions(+), 26 deletions(-)

diff --git a/src/add_python/lilliput/ae_mode_1.py b/src/add_python/lilliput/ae_mode_1.py @@ -36,30 +36,6 @@ TWEAK_BITS = 192 TWEAK_BYTES = TWEAK_BITS//8 -def _low_part(array, number_bits): - shifted = 0 - for byte in range(0, len(array)): - shifted |= (array[byte] << (8 * byte)) - - mask = 0 - for bit in range(0, number_bits): - mask |= (0x1 << bit) - - lower_part = shifted & mask - - will_pad = 0 - if number_bits % 8 != 0: - will_pad = 1 - - lower_part_byte = [] - nb_bytes = number_bits//8 + will_pad - for byte in range(nb_bytes): - lower_part_byte.append(lower_part & 0xff) - lower_part = lower_part >> 8 - - return lower_part_byte - - class _MessageTweak(Enum): BLOCK = 0b0000 NO_PADDING = 0b0001 @@ -106,7 +82,7 @@ def _treat_message_enc(M, N, key): tweak = _tweak_message(N, l, _MessageTweak.PAD) pad = tbc.encrypt(tweak, key, [0 for byte in range(0, BLOCK_BYTES)]) - lower_part = _low_part(pad, padding_bytes*8) + lower_part = pad[:padding_bytes] C.append(xor(M[l], lower_part)) tweak_final = _tweak_message(N, l+1, _MessageTweak.FINAL) Final = tbc.encrypt(tweak_final, key, checksum) @@ -135,7 +111,7 @@ def _treat_message_dec(C, N, key): else: tweak = _tweak_message(N, l, _MessageTweak.PAD) pad = tbc.encrypt(tweak, key, [0 for byte in range(0, BLOCK_BYTES)]) - lower_part = _low_part(pad, padding_bytes*8) + lower_part = pad[:padding_bytes] M.append(xor(C[l], lower_part)) m_padded = pad10(M[l])