|
1 | 1 | /* eslint no-unused-expressions: "off" */ |
2 | | -const chai = require("chai"); |
3 | | -const chaiAsPromised = require("chai-as-promised"); |
4 | | -chai.use(chaiAsPromised); |
5 | | -chai.should(); |
| 2 | +const chai = require('chai') |
| 3 | +const chaiAsPromised = require('chai-as-promised') |
| 4 | +chai.use(chaiAsPromised) |
| 5 | +chai.should() |
6 | 6 |
|
7 | | -const mfkdf = require("../../src"); |
8 | | -const { suite, test } = require("mocha"); |
| 7 | +const mfkdf = require('../../src') |
| 8 | +const { suite, test } = require('mocha') |
9 | 9 | // const crypto = require('crypto') |
10 | 10 |
|
11 | | -suite("site", () => { |
12 | | - test("Go beyond passwords", async () => { |
| 11 | +suite('site', () => { |
| 12 | + test('Go beyond passwords', async () => { |
13 | 13 | const keyPolicy = JSON.stringify( |
14 | 14 | ( |
15 | 15 | await mfkdf.setup.key([ |
16 | | - await mfkdf.setup.factors.password("Tr0ub4dour"), |
| 16 | + await mfkdf.setup.factors.password('Tr0ub4dour'), |
17 | 17 | await mfkdf.setup.factors.hotp({ |
18 | | - secret: Buffer.from("abcdefghijklmnopqrst"), |
| 18 | + secret: Buffer.from('abcdefghijklmnopqrst') |
19 | 19 | }), |
20 | 20 | await mfkdf.setup.factors.uuid({ |
21 | | - id: "recovery", |
22 | | - uuid: "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d", |
23 | | - }), |
| 21 | + id: 'recovery', |
| 22 | + uuid: '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d' |
| 23 | + }) |
24 | 24 | ]) |
25 | 25 | ).policy |
26 | | - ); |
| 26 | + ) |
27 | 27 |
|
28 | 28 | const derivedKey = await mfkdf.derive.key(JSON.parse(keyPolicy), { |
29 | | - password: mfkdf.derive.factors.password("Tr0ub4dour"), |
| 29 | + password: mfkdf.derive.factors.password('Tr0ub4dour'), |
30 | 30 | hotp: mfkdf.derive.factors.hotp(241063), |
31 | 31 | recovery: mfkdf.derive.factors.uuid( |
32 | | - "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" |
33 | | - ), |
34 | | - }); |
| 32 | + '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d' |
| 33 | + ) |
| 34 | + }) |
35 | 35 |
|
36 | | - derivedKey.should.be.a("object"); |
37 | | - }); |
| 36 | + derivedKey.should.be.a('object') |
| 37 | + }) |
38 | 38 |
|
39 | | - test("Increased key entropy", async () => { |
| 39 | + test('Increased key entropy', async () => { |
40 | 40 | Math.floor( |
41 | 41 | ( |
42 | 42 | await mfkdf.setup.key([ |
43 | | - await mfkdf.setup.factors.password("Tr0ub4dour"), |
| 43 | + await mfkdf.setup.factors.password('Tr0ub4dour') |
44 | 44 | ]) |
45 | 45 | ).entropyBits.real |
46 | | - ).should.equal(16); |
| 46 | + ).should.equal(16) |
47 | 47 |
|
48 | 48 | Math.floor( |
49 | 49 | ( |
50 | 50 | await mfkdf.setup.key([ |
51 | | - await mfkdf.setup.factors.password("Tr0ub4dour"), |
| 51 | + await mfkdf.setup.factors.password('Tr0ub4dour'), |
52 | 52 | await mfkdf.setup.factors.hotp(), |
53 | | - await mfkdf.setup.factors.hmacsha1(), |
| 53 | + await mfkdf.setup.factors.hmacsha1() |
54 | 54 | ]) |
55 | 55 | ).entropyBits.real |
56 | | - ).should.equal(196); |
57 | | - }); |
| 56 | + ).should.equal(196) |
| 57 | + }) |
58 | 58 |
|
59 | | - test("Enforce advanced policies", async () => { |
| 59 | + test('Enforce advanced policies', async () => { |
60 | 60 | const policyBasedKey = await mfkdf.policy.setup( |
61 | 61 | await mfkdf.policy.or( |
62 | | - await mfkdf.setup.factors.uuid({ id: "recoveryCode" }), |
| 62 | + await mfkdf.setup.factors.uuid({ id: 'recoveryCode' }), |
63 | 63 | await mfkdf.policy.and( |
64 | | - await mfkdf.setup.factors.password("Tr0ub4dour"), |
| 64 | + await mfkdf.setup.factors.password('Tr0ub4dour'), |
65 | 65 | await mfkdf.setup.factors.totp() |
66 | 66 | ) |
67 | 67 | ) |
68 | | - ); |
69 | | - policyBasedKey.should.be.a("object"); |
70 | | - }); |
| 68 | + ) |
| 69 | + policyBasedKey.should.be.a('object') |
| 70 | + }) |
71 | 71 |
|
72 | | - test("Self-service factor recovery", async () => { |
| 72 | + test('Self-service factor recovery', async () => { |
73 | 73 | const keyPolicy = JSON.stringify( |
74 | 74 | ( |
75 | | - await mfkdf.setup.key([ |
76 | | - await mfkdf.setup.factors.password("password"), |
77 | | - await mfkdf.setup.factors.hotp({ |
78 | | - secret: Buffer.from("abcdefghijklmnopqrst"), |
79 | | - }), |
80 | | - await mfkdf.setup.factors.uuid({ |
81 | | - id: "recoveryCode", |
82 | | - uuid: "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d", |
83 | | - }), |
84 | | - ]) |
| 75 | + await mfkdf.setup.key( |
| 76 | + [ |
| 77 | + await mfkdf.setup.factors.password('password'), |
| 78 | + await mfkdf.setup.factors.hotp({ |
| 79 | + secret: Buffer.from('abcdefghijklmnopqrst') |
| 80 | + }), |
| 81 | + await mfkdf.setup.factors.uuid({ |
| 82 | + id: 'recoveryCode', |
| 83 | + uuid: '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d' |
| 84 | + }) |
| 85 | + ], |
| 86 | + { threshold: 2 } |
| 87 | + ) |
85 | 88 | ).policy |
86 | | - ); |
| 89 | + ) |
87 | 90 |
|
88 | 91 | const key = await mfkdf.derive.key(JSON.parse(keyPolicy), { |
89 | 92 | hotp: mfkdf.derive.factors.hotp(241063), |
90 | 93 | recoveryCode: mfkdf.derive.factors.uuid( |
91 | | - "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d" |
92 | | - ), |
93 | | - }); |
| 94 | + '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d' |
| 95 | + ) |
| 96 | + }) |
94 | 97 |
|
95 | 98 | await key.recoverFactor( |
96 | | - await mfkdf.setup.factors.password("myNewPassword", { id: "password" }) |
97 | | - ); // modify key to use new password factor |
98 | | - }); |
99 | | -}); |
| 99 | + await mfkdf.setup.factors.password('myNewPassword', { id: 'password' }) |
| 100 | + ) // modify key to use new password factor |
| 101 | + }) |
| 102 | +}) |
0 commit comments