31 lines
1.2 KiB
JavaScript

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 nonce = generateRandomUint8Array();
let key = generateRandomUint8Array();
let result = aead.keccakAEAD.encrypt(key, msg, iv, ad, nonce);
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, nonce);
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);
});
});