/
keys-test.js.es6
74 lines (64 loc) · 2.27 KB
/
keys-test.js.es6
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
70
71
72
73
74
import {
generateKeyPair,
exportPublicKey,
importPublicKey,
exportPrivateKey,
importPrivateKey,
rsaEncrypt,
rsaDecrypt,
generateSalt,
generatePassphraseKey,
generateKey,
exportKey,
importKey,
encrypt,
decrypt
} from "discourse/plugins/discourse-encrypt/lib/keys";
QUnit.module("discourse-encrypt:lib:keys");
test("generateKeyPair", async assert => {
const [publicKey, privateKey] = await generateKeyPair();
assert.ok(publicKey instanceof CryptoKey);
assert.ok(privateKey instanceof CryptoKey);
});
test("exportPublicKey & importPublicKey", async assert => {
const publicKey = (await generateKeyPair())[0];
const exported = await exportPublicKey(publicKey);
assert.ok((await importPublicKey(exported)) instanceof CryptoKey);
});
test("exportPrivateKey & importPrivateKey", async assert => {
const key = await generatePassphraseKey("passphrase", generateSalt());
const privateKey = (await generateKeyPair())[1];
const exported = await exportPrivateKey(privateKey, key);
assert.ok((await importPrivateKey(exported, key)) instanceof CryptoKey);
});
test("rsaEncrypt & rsaDecrypt", async assert => {
const [publicKey, privateKey] = await generateKeyPair();
const plaintext = "this is a message";
const ciphertext = await rsaEncrypt(publicKey, plaintext);
const plaintext2 = await rsaDecrypt(privateKey, ciphertext);
assert.equal(plaintext, plaintext2);
});
test("generateSalt", async assert => {
assert.equal(24, generateSalt().length);
});
test("generatePassphraseKey", async assert => {
const key = await generatePassphraseKey("passphrase", generateSalt());
assert.ok(key instanceof CryptoKey);
});
test("generateKey", async assert => {
const key = await generateKey();
assert.ok(key instanceof CryptoKey);
});
test("exportKey & importKey", async assert => {
const [publicKey, privateKey] = await generateKeyPair();
const key = await generateKey();
const exported = await exportKey(key, publicKey);
assert.ok((await importKey(exported, privateKey)) instanceof CryptoKey);
});
test("encrypt & decrypt", async assert => {
const key = await generateKey();
const plaintext = "this is a message";
const ciphertext = await encrypt(key, plaintext);
const plaintext2 = await decrypt(key, ciphertext);
assert.equal(plaintext, plaintext2);
});