summaryrefslogtreecommitdiff
path: root/test/python/genkat_aead.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/python/genkat_aead.py')
-rwxr-xr-xtest/python/genkat_aead.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/test/python/genkat_aead.py b/test/python/genkat_aead.py
new file mode 100755
index 0000000..01bed6f
--- /dev/null
+++ b/test/python/genkat_aead.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python3
+
+import crypto_aead
+
+
+MAX_MESSAGE_LENGTH = 32
+MAX_ADATA_LENGTH = 32
+
+
+def print_bstr(output, label, buf):
+ print('{l} = {b}'.format(l=label, b=buf.hex().upper()), file=output)
+
+
+def generate_test_vectors():
+ output_path = 'LWC_AEAD_KAT_{key}_{npub}.txt'.format(
+ key=crypto_aead.KEYBYTES*8, npub=crypto_aead.NPUBBYTES*8
+ )
+
+ npub = bytes(range(crypto_aead.NPUBBYTES))
+ key = bytes(range(crypto_aead.KEYBYTES))
+
+ 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', key)
+ print_bstr(output, 'Nonce', npub)
+ print_bstr(output, 'PT', msg)
+ print_bstr(output, 'AD', ad)
+
+ ct = crypto_aead.encrypt(msg, ad, npub, key)
+
+ print_bstr(output, 'CT', ct)
+
+ crypto_aead.decrypt(ct, ad, npub, key)
+
+ count += 1
+
+ print(file=output)
+
+
+if __name__ == '__main__':
+ generate_test_vectors()