summaryrefslogtreecommitdiff
path: root/python/genkat_aead.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/genkat_aead.py')
-rwxr-xr-xpython/genkat_aead.py81
1 files changed, 0 insertions, 81 deletions
diff --git a/python/genkat_aead.py b/python/genkat_aead.py
deleted file mode 100755
index e9f9101..0000000
--- a/python/genkat_aead.py
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/usr/bin/env python3
-
-import lilliput
-from os import makedirs, path
-
-
-MAX_MESSAGE_LENGTH = 32
-MAX_ADATA_LENGTH = 32
-
-CRYPTO_NPUBBYTES = 120//8
-
-
-def bstr(buf):
- return ''.join('{:02X}'.format(b) for b in buf)
-
-
-def print_bstr(output, label, buf):
- print('{l} = {b}'.format(l=label, b=bstr(buf)), file=output)
-
-
-class DecryptionError(Exception):
- def __init__(self, expected, actual, mode, keylen):
- self.expected = expected
- self.actual = actual
- self.mode = mode
- self.keylen = keylen
-
- def __str__(self):
- return '({s.mode} / {s.keylen}) Expected {exp}; got {act}'.format(
- s=self,
- exp=bstr(self.expected),
- act=bstr(self.actual)
- )
-
-
-def generate_test_vectors(mode, keylen):
- print('generating for', mode, keylen)
-
- directory = 'crypto_aead/lilliputae{mode}{keylen}v1'.format(
- mode=mode*'i', keylen=keylen
- )
-
- makedirs(directory, exist_ok=True)
-
- output_path = path.join(
- directory, 'LWC_AEAD_KAT_{keylen}_120.txt'.format(keylen=keylen)
- )
-
- with open(output_path, 'w') as output:
-
- count = 1
- for mlen in range(MAX_MESSAGE_LENGTH+1):
- for adlen in range(MAX_ADATA_LENGTH+1):
- print('Count = {c}'.format(c=count), file=output)
-
- msg = bytes(range(mlen))
- ad = bytes(range(adlen))
-
- print_bstr(output, 'Key', bytes(range(keylen//8)))
- print_bstr(output, 'Nonce', bytes(range(CRYPTO_NPUBBYTES)))
- print_bstr(output, 'PT', msg)
- print_bstr(output, 'AD', ad)
-
- ct, tag = lilliput.mainEnc(msg, ad, mode, keylen)
-
- print_bstr(output, 'CT', ct+tag)
-
- msg2 = lilliput.mainDec(ct, tag, ad, mode, keylen)
-
- if msg != msg2:
- raise DecryptionError(msg, msg2, mode, keylen)
-
- count+=1
-
- print(file=output)
-
-
-if __name__ == '__main__':
- for mode in 1, 2:
- for keylen in 128, 192, 256:
- generate_test_vectors(mode, keylen)