summaryrefslogtreecommitdiff
path: root/python/lilliput.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/lilliput.py')
-rw-r--r--python/lilliput.py55
1 files changed, 24 insertions, 31 deletions
diff --git a/python/lilliput.py b/python/lilliput.py
index 79f14e5..3fe41bf 100644
--- a/python/lilliput.py
+++ b/python/lilliput.py
@@ -1,34 +1,23 @@
import lilliput_ae_1
import lilliput_ae_2
-import parameters_i_128 as i_128
-import parameters_i_192 as i_192
-import parameters_i_256 as i_256
-import parameters_ii_128 as ii_128
-import parameters_ii_192 as ii_192
-import parameters_ii_256 as ii_256
-
BLOCK_BYTES = 16
N_BYTES = 15
-def GetParameters(mode = 1, length = 128) :
- if(mode == 1 and length == 128) :
- return (i_128.KEY_BITS, i_128.TWEAK_BITS, i_128.ROUNDS)
-
- if(mode == 1 and length == 192) :
- return (i_192.KEY_BITS, i_192.TWEAK_BITS, i_192.ROUNDS)
+def _getParameters(mode=1, key_length=128) :
+ rounds = {
+ 128: 32,
+ 192: 36,
+ 256: 42
+ }
- if(mode == 1 and length == 256) :
- return (i_256.KEY_BITS, i_256.TWEAK_BITS, i_256.ROUNDS)
+ tweak_lengths = {
+ 1: 192,
+ 2: 128
+ }
- if(mode == 2 and length == 128) :
- return (ii_128.KEY_BITS, ii_128.TWEAK_BITS, ii_128.ROUNDS)
+ return tweak_lengths[mode], rounds[key_length]
- if(mode == 2 and length == 192) :
- return (ii_192.KEY_BITS, ii_192.TWEAK_BITS, ii_192.ROUNDS)
-
- if(mode == 2 and length == 256) :
- return (ii_256.KEY_BITS, ii_256.TWEAK_BITS, ii_256.ROUNDS)
def ArrayToBlockbytesMatrix(array) :
length = len(array)
@@ -53,18 +42,21 @@ def BlockbytesMatrixToBytes(matrix):
############################################
-def _checkInputs(key, length, nonce):
- if len(key) != length//8:
- raise ValueError('invalid key size: {} != {}'.format(len(key), length//8))
+def _checkInputs(key, nonce):
+ valid_key_lengths = (128, 192, 256)
+
+ if len(key)*8 not in valid_key_lengths:
+ raise ValueError('invalid key size: {} not in {}'.format(len(key)*8, valid_key_lengths))
if len(nonce) != N_BYTES:
raise ValueError('nonce must be {}-byte long'.format(N_BYTES))
-def mainEnc(plaintext, adata, key, nonce, mode=1, length=128):
- _checkInputs(key, length, nonce)
+def mainEnc(plaintext, adata, key, nonce, mode):
+ _checkInputs(key, nonce)
- (key_bits, tweak_bits, rounds) = GetParameters(mode, length)
+ key_bits = len(key)*8
+ tweak_bits, rounds = _getParameters(mode, key_bits)
A = adata
M = plaintext
@@ -84,10 +76,11 @@ def mainEnc(plaintext, adata, key, nonce, mode=1, length=128):
return BlockbytesMatrixToBytes(C), bytes(tag)
-def mainDec(ciphertext, tag, adata, key, nonce, mode=1, length=128):
- _checkInputs(key, length, nonce)
+def mainDec(ciphertext, tag, adata, key, nonce, mode):
+ _checkInputs(key, nonce)
- (key_bits, tweak_bits, rounds) = GetParameters(mode, length)
+ key_bits = len(key)*8
+ tweak_bits, rounds = _getParameters(mode, key_bits)
A = adata
C = ciphertext