-
Notifications
You must be signed in to change notification settings - Fork 9
/
boringcrypto-test.js
69 lines (61 loc) · 3.11 KB
/
boringcrypto-test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
const assert = require('assert');
const expect = require('chai').expect;
const BoringCrypto = require('../lib/backend/boringcrypto');
const SymmetricKey = require('../lib/backend/key/symmetrickey');
const {SodiumPlus} = require('sodium-plus');
let sodium;
describe('BoringCrypto Tests', function () {
it('Encrypts and decrypts successfully', async function () {
if (!sodium) sodium = await SodiumPlus.auto();
this.timeout(5000);
let random_buf = await sodium.randombytes_buf(32);
let brng = new BoringCrypto();
let key = new SymmetricKey(random_buf);
let plaintext, exampleKey, exampleCipher;
// plaintext = 'This is a secret message';
plaintext = 'This is just a test message';
brng.encrypt(plaintext, key).then(
(encrypted) => {
brng.decrypt(encrypted, key).then(
(decrypted) => {
expect(decrypted).to.be.equal(plaintext);
}
);
}
);
brng.encrypt(plaintext, key, 'test aad')
.then(encrypted => {
let caught = false;
brng.decrypt(encrypted, key)
.catch((e) => {
caught = true;
expect(e.message).to.be.equal('Invalid MAC');
})
.then(() => {
if (!caught) {
assert(null, 'AAD not being used in calculation');
}
});
brng.decrypt(encrypted, key, 'test aad').then(
(decrypted) => {
expect(decrypted).to.be.equal(plaintext);
}
);
});
let exampleDecrypt;
exampleKey = Buffer.from('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'hex');
exampleCipher = await brng.encrypt('This is just a test message', exampleKey);
exampleDecrypt = await brng.decrypt(exampleCipher, exampleKey);
expect(exampleDecrypt.toString('utf-8')).to.be.equal('This is just a test message');
exampleCipher = 'brng:m3y71cMwhTB2e8YjPLzZ2mwBoMRP1BgqVs_He47bRT5DJbWVBwG_cNsn6xvsl4rT2Cu1QSOEFt_lRECl3w524LlzGwgZ30UDm1KfgaTi9scjmu4=';
exampleDecrypt = await brng.decrypt(exampleCipher, exampleKey);
expect(exampleDecrypt.toString('utf-8')).to.be.equal('This is just a test message');
exampleKey = Buffer.from('0b036de5605144ea7aeed8bd3a191c08fe1b0ed69d9c8ba0dcbe82372451bb31', 'hex');
exampleCipher = await brng.encrypt('This is just a test message', exampleKey);
exampleDecrypt = await brng.decrypt(exampleCipher, exampleKey);
expect(exampleDecrypt.toString('utf-8')).to.be.equal('This is just a test message');
exampleCipher = 'brng:s0oCG2qoJMTWNreJ3AYQhTYSL423gsDYFKmSMDBzOUubIbiNPWSFZmD8uXMO5dmAhuCf5dvTCtfVvl8MADVL0dmub-znB7nEDYH2eMJBCmX-Qyc=';
exampleDecrypt = await brng.decrypt(exampleCipher, exampleKey);
expect(exampleDecrypt.toString('utf-8')).to.be.equal('This is just a test message');
});
});