#!/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()