summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKévin Le Gouguec <kevin.legouguec@airbus.com>2019-03-14 16:35:02 +0100
committerKévin Le Gouguec <kevin.legouguec@airbus.com>2019-03-21 14:49:15 +0100
commit57ccbe8a1589a275d44c0c1de1fe7122f70b105c (patch)
tree81ed3dbd32bd70acf29fe4394304ef9becd17751
parenta7abd1a33ca68e2e2db59332b612db69ffb31496 (diff)
downloadlilliput-ae-implem-57ccbe8a1589a275d44c0c1de1fe7122f70b105c.tar.xz
[implem-python] Retrait de A_BITS/M_BITS (2/2)
-rw-r--r--python/lilliput_ae_2.py56
1 files changed, 21 insertions, 35 deletions
diff --git a/python/lilliput_ae_2.py b/python/lilliput_ae_2.py
index 164c3df..720e1aa 100644
--- a/python/lilliput_ae_2.py
+++ b/python/lilliput_ae_2.py
@@ -13,20 +13,16 @@ from helpers import (
)
-BLOCK_BITS = 128
KEY_BITS = 128
TWEAK_BITS = 128
TWEAKEY_BITS = KEY_BITS + TWEAK_BITS
LANE_BITS = 64
LANES = int((TWEAKEY_BITS) / LANE_BITS)
-BLOCK_BYTES = int(BLOCK_BITS / 8)
KEY_BYTES = int(KEY_BITS / 8)
TWEAK_BYTES = int(TWEAK_BITS / 8)
TWEAKEY_BYTES = int(TWEAKEY_BITS / 8)
-M_BITS = BLOCK_BITS
-
def InitParameters(key_bits) :
global KEY_BITS
@@ -68,14 +64,14 @@ def LowPart(array, number_bits) :
################################################################################
-def TweakTag(j, padded = 0) :
+def TweakTag(j, padded):
tweak = [0 for byte in range(0, TWEAK_BYTES)]
tweak[TWEAK_BYTES - 1] |= ((j >> 120) & 0xf)
for byte in range(TWEAK_BYTES - 2, -1, -1) :
tweak[byte] = (j >> (8 * byte)) & 0xff
- if padded == 1 :
+ if padded:
tweak[TWEAK_BYTES - 1] |= 0x40
return tweak
@@ -103,22 +99,20 @@ def AddTagJ(tag, j) :
def MesssageAuthTag(M, N, Auth, key) :
- l = int(M_BITS / BLOCK_BITS)
- if int(M_BITS % BLOCK_BITS) > 0 :
- will_padd = 1
- else :
- will_padd = 0
+ l = len(M)//BLOCK_BYTES
+ padding_bytes = len(M)%BLOCK_BYTES
tag = list(Auth)
+ M = ArrayToBlockbytesMatrix(M)
for j in range(0, l) :
- tweak = TweakTag(j, padded = 0)
+ tweak = TweakTag(j, False)
encryption = ltbc.LilliputTBCEnc(tweak, key, M[j])
tag = XorState(tag, encryption)
- if will_padd == 1 :
- tweak = TweakTag(l, padded = 1)
- m_padded = Padding10LSB(M[l], M_BITS % BLOCK_BITS)
+ if padding_bytes > 0 :
+ tweak = TweakTag(l, True)
+ m_padded = Padding10LSB(M[l], 8*padding_bytes)
encryption = ltbc.LilliputTBCEnc(tweak, key, m_padded)
tag = XorState(tag, encryption)
@@ -130,25 +124,23 @@ def MesssageAuthTag(M, N, Auth, key) :
def MessageEncryption(M, N, tag, key) :
- l = int(M_BITS / BLOCK_BITS)
- if int(M_BITS % BLOCK_BITS) > 0 :
- will_padd = 1
- else :
- will_padd = 0
+ l = len(M)//BLOCK_BYTES
+ padding_bytes = len(M)%BLOCK_BYTES
- C = [[0 for byte in range(0, 16)] for j in range(0, l + will_padd)]
+ M = ArrayToBlockbytesMatrix(M)
+ C = []
for j in range(0, l) :
tweak = AddTagJ(tag, j)
padded_nounce = list(N) + [0x00]
encryption = ltbc.LilliputTBCEnc(tweak, key, padded_nounce)
- C[j] = XorState(M[j], encryption)
+ C.append(XorState(M[j], encryption))
- if will_padd :
+ if padding_bytes > 0:
tweak = AddTagJ(tag, l)
padded_nounce = list(N) + [0x00]
encryption = ltbc.LilliputTBCEnc(tweak, key, padded_nounce)
- C[l] = XorState(M[l], encryption)
+ C.append(XorState(M[l], encryption))
return C
@@ -156,10 +148,6 @@ def MessageEncryption(M, N, tag, key) :
def SCT2Enc(A, M, N, key) :
InitParameters(len(key)*8)
- global M_BITS
- M_BITS = len(M)*8
-
- M = ArrayToBlockbytesMatrix(M)
K = list(key)
Auth = BuildAuth(TWEAK_BITS, A, K)
@@ -172,15 +160,13 @@ def SCT2Enc(A, M, N, key) :
def SCT2Dec(A, C, N, tag, key) :
InitParameters(len(key)*8)
- global M_BITS
- M_BITS = len(C)*8
-
- C = ArrayToBlockbytesMatrix(C)
K = list(key)
- M = MessageEncryption(C, N, tag, K)
+ M = BlockbytesMatrixToBytes(
+ MessageEncryption(C, N, tag, K)
+ )
Auth = BuildAuth(TWEAK_BITS, A, K)
tag2 = MesssageAuthTag(M, N, Auth, K)
- if(tag == tag2) :
- return BlockbytesMatrixToBytes(M)
+ if tag == tag2:
+ return M