const aead = require('../src/aead'); const crypto = require('crypto'); const stringutils = require('../src/stringutils'); function generateRandomUint8Array(length = 16) { const randomArray = new Uint8Array(length); crypto.getRandomValues(randomArray); return randomArray; } describe('aead.js functions', () => { it('encrypt and decrypt', () => { let msg = generateRandomUint8Array(117); let msg_hex = stringutils.arrayToHex(msg); let ad = generateRandomUint8Array(83); let iv = generateRandomUint8Array(); let key = generateRandomUint8Array(); let result = aead.keccakAEAD.encrypt(key, msg, iv, ad); let tag_encrypt_hex = stringutils.arrayToHex(result.tag); let cipher_hex = stringutils.arrayToHex(result.cipher); let result2 = aead.keccakAEAD.decrypt(key, result.cipher, iv, ad); let tag_decrypt_hex = stringutils.arrayToHex(result2.tag); let decrypted_hex = stringutils.arrayToHex(result2.plaintext); expect(decrypted_hex).toBe(msg_hex); expect(tag_decrypt_hex).toBe(tag_encrypt_hex); expect(cipher_hex === msg_hex).toBe(false); }); });