30 lines
1.1 KiB
JavaScript
30 lines
1.1 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 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);
|
|
});
|
|
});
|