31 lines
1.2 KiB
JavaScript
31 lines
1.2 KiB
JavaScript
import { keccakAEAD } from '../src/public/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 = keccakAEAD.encrypt(key, msg, iv, ad, nonce);
|
|
let tag_encrypt_hex = stringutils.arrayToHex(result.tag);
|
|
let cipher_hex = stringutils.arrayToHex(result.cipher);
|
|
let result2 = 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);
|
|
});
|
|
});
|