@voiceflow/encryption 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/encryption.service.test.d.ts +2 -0
- package/build/cjs/encryption.service.test.d.ts.map +1 -0
- package/build/cjs/encryption.service.test.js +77 -0
- package/build/cjs/encryption.service.test.js.map +1 -0
- package/build/esm/encryption.service.test.d.ts +2 -0
- package/build/esm/encryption.service.test.d.ts.map +1 -0
- package/build/esm/encryption.service.test.js +72 -0
- package/build/esm/encryption.service.test.js.map +1 -0
- package/package.json +5 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encryption.service.test.d.ts","sourceRoot":"","sources":["../../src/encryption.service.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const vitest_1 = require("vitest");
|
|
7
|
+
const aes_256_gcm_1 = require("./aes-256-gcm");
|
|
8
|
+
const encryption_service_1 = __importDefault(require("./encryption.service"));
|
|
9
|
+
(0, vitest_1.describe)('EncryptionService', () => {
|
|
10
|
+
// 32-byte key (256 bits) required for AES-256
|
|
11
|
+
const MOCK_KEY = Buffer.from('0123456789abcdef0123456789abcdef').toString('base64');
|
|
12
|
+
(0, vitest_1.describe)('constructor', () => {
|
|
13
|
+
(0, vitest_1.it)('creates instance with valid encryption key', () => {
|
|
14
|
+
(0, vitest_1.expect)(() => new encryption_service_1.default(MOCK_KEY)).not.toThrow();
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
(0, vitest_1.describe)('encrypt', () => {
|
|
18
|
+
let service;
|
|
19
|
+
(0, vitest_1.beforeEach)(() => {
|
|
20
|
+
service = new encryption_service_1.default(MOCK_KEY);
|
|
21
|
+
});
|
|
22
|
+
(0, vitest_1.it)('encrypts plaintext string', () => {
|
|
23
|
+
const plaintext = 'test-data';
|
|
24
|
+
const encrypted = service.encrypt(plaintext);
|
|
25
|
+
(0, vitest_1.expect)(encrypted).toBeDefined();
|
|
26
|
+
(0, vitest_1.expect)(encrypted.iv).toBeDefined();
|
|
27
|
+
(0, vitest_1.expect)(encrypted.mac).toBeDefined();
|
|
28
|
+
(0, vitest_1.expect)(encrypted.value).toBeDefined();
|
|
29
|
+
(0, vitest_1.expect)(encrypted.value).not.toBe(plaintext);
|
|
30
|
+
// Verify we can decrypt it back
|
|
31
|
+
const decrypted = service.decrypt(encrypted);
|
|
32
|
+
(0, vitest_1.expect)(decrypted).toBe(plaintext);
|
|
33
|
+
});
|
|
34
|
+
(0, vitest_1.it)('produces different ciphertext for same plaintext', () => {
|
|
35
|
+
const plaintext = 'test-data';
|
|
36
|
+
const encrypted1 = service.encrypt(plaintext);
|
|
37
|
+
const encrypted2 = service.encrypt(plaintext);
|
|
38
|
+
// Should have different IVs
|
|
39
|
+
(0, vitest_1.expect)(encrypted1.iv).not.toBe(encrypted2.iv);
|
|
40
|
+
// Should have different ciphertext
|
|
41
|
+
(0, vitest_1.expect)(encrypted1.value).not.toBe(encrypted2.value);
|
|
42
|
+
// But both should decrypt to the same plaintext
|
|
43
|
+
(0, vitest_1.expect)(service.decrypt(encrypted1)).toBe(service.decrypt(encrypted2));
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
(0, vitest_1.describe)('decrypt', () => {
|
|
47
|
+
let service;
|
|
48
|
+
(0, vitest_1.beforeEach)(() => {
|
|
49
|
+
service = new encryption_service_1.default(MOCK_KEY);
|
|
50
|
+
});
|
|
51
|
+
(0, vitest_1.it)('decrypts valid encrypted data', () => {
|
|
52
|
+
const plaintext = 'test-data';
|
|
53
|
+
const encrypted = (0, aes_256_gcm_1.encryptAes256Gcm)(plaintext, MOCK_KEY);
|
|
54
|
+
const decrypted = service.decrypt(encrypted);
|
|
55
|
+
(0, vitest_1.expect)(decrypted).toBe(plaintext);
|
|
56
|
+
});
|
|
57
|
+
(0, vitest_1.it)('throws error for invalid encrypted data', () => {
|
|
58
|
+
const invalidData = {
|
|
59
|
+
iv: 'invalid',
|
|
60
|
+
mac: 'invalid',
|
|
61
|
+
value: 'invalid',
|
|
62
|
+
};
|
|
63
|
+
(0, vitest_1.expect)(() => service.decrypt(invalidData)).toThrow();
|
|
64
|
+
});
|
|
65
|
+
(0, vitest_1.it)('throws error for tampered encrypted data', () => {
|
|
66
|
+
const plaintext = 'test-data';
|
|
67
|
+
const encrypted = service.encrypt(plaintext);
|
|
68
|
+
// Tamper with the encrypted data
|
|
69
|
+
const tampered = {
|
|
70
|
+
...encrypted,
|
|
71
|
+
value: `${encrypted.value}tampered`,
|
|
72
|
+
};
|
|
73
|
+
(0, vitest_1.expect)(() => service.decrypt(tampered)).toThrow();
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
//# sourceMappingURL=encryption.service.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encryption.service.test.js","sourceRoot":"","sources":["../../src/encryption.service.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encryption.service.test.d.ts","sourceRoot":"","sources":["../../src/encryption.service.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it } from 'vitest';
|
|
2
|
+
import { encryptAes256Gcm } from './aes-256-gcm.js';
|
|
3
|
+
import EncryptionService from './encryption.service.js';
|
|
4
|
+
describe('EncryptionService', () => {
|
|
5
|
+
// 32-byte key (256 bits) required for AES-256
|
|
6
|
+
const MOCK_KEY = Buffer.from('0123456789abcdef0123456789abcdef').toString('base64');
|
|
7
|
+
describe('constructor', () => {
|
|
8
|
+
it('creates instance with valid encryption key', () => {
|
|
9
|
+
expect(() => new EncryptionService(MOCK_KEY)).not.toThrow();
|
|
10
|
+
});
|
|
11
|
+
});
|
|
12
|
+
describe('encrypt', () => {
|
|
13
|
+
let service;
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
service = new EncryptionService(MOCK_KEY);
|
|
16
|
+
});
|
|
17
|
+
it('encrypts plaintext string', () => {
|
|
18
|
+
const plaintext = 'test-data';
|
|
19
|
+
const encrypted = service.encrypt(plaintext);
|
|
20
|
+
expect(encrypted).toBeDefined();
|
|
21
|
+
expect(encrypted.iv).toBeDefined();
|
|
22
|
+
expect(encrypted.mac).toBeDefined();
|
|
23
|
+
expect(encrypted.value).toBeDefined();
|
|
24
|
+
expect(encrypted.value).not.toBe(plaintext);
|
|
25
|
+
// Verify we can decrypt it back
|
|
26
|
+
const decrypted = service.decrypt(encrypted);
|
|
27
|
+
expect(decrypted).toBe(plaintext);
|
|
28
|
+
});
|
|
29
|
+
it('produces different ciphertext for same plaintext', () => {
|
|
30
|
+
const plaintext = 'test-data';
|
|
31
|
+
const encrypted1 = service.encrypt(plaintext);
|
|
32
|
+
const encrypted2 = service.encrypt(plaintext);
|
|
33
|
+
// Should have different IVs
|
|
34
|
+
expect(encrypted1.iv).not.toBe(encrypted2.iv);
|
|
35
|
+
// Should have different ciphertext
|
|
36
|
+
expect(encrypted1.value).not.toBe(encrypted2.value);
|
|
37
|
+
// But both should decrypt to the same plaintext
|
|
38
|
+
expect(service.decrypt(encrypted1)).toBe(service.decrypt(encrypted2));
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
describe('decrypt', () => {
|
|
42
|
+
let service;
|
|
43
|
+
beforeEach(() => {
|
|
44
|
+
service = new EncryptionService(MOCK_KEY);
|
|
45
|
+
});
|
|
46
|
+
it('decrypts valid encrypted data', () => {
|
|
47
|
+
const plaintext = 'test-data';
|
|
48
|
+
const encrypted = encryptAes256Gcm(plaintext, MOCK_KEY);
|
|
49
|
+
const decrypted = service.decrypt(encrypted);
|
|
50
|
+
expect(decrypted).toBe(plaintext);
|
|
51
|
+
});
|
|
52
|
+
it('throws error for invalid encrypted data', () => {
|
|
53
|
+
const invalidData = {
|
|
54
|
+
iv: 'invalid',
|
|
55
|
+
mac: 'invalid',
|
|
56
|
+
value: 'invalid',
|
|
57
|
+
};
|
|
58
|
+
expect(() => service.decrypt(invalidData)).toThrow();
|
|
59
|
+
});
|
|
60
|
+
it('throws error for tampered encrypted data', () => {
|
|
61
|
+
const plaintext = 'test-data';
|
|
62
|
+
const encrypted = service.encrypt(plaintext);
|
|
63
|
+
// Tamper with the encrypted data
|
|
64
|
+
const tampered = {
|
|
65
|
+
...encrypted,
|
|
66
|
+
value: `${encrypted.value}tampered`,
|
|
67
|
+
};
|
|
68
|
+
expect(() => service.decrypt(tampered)).toThrow();
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=encryption.service.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encryption.service.test.js","sourceRoot":"","sources":["../../src/encryption.service.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voiceflow/encryption",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Voiceflow encryption library",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"main": "build/cjs/main.js",
|
|
@@ -24,11 +24,14 @@
|
|
|
24
24
|
"test:types": "yarn g:tsc --noEmit",
|
|
25
25
|
"test:unit": "yarn g:vitest run --coverage"
|
|
26
26
|
},
|
|
27
|
+
"engines": {
|
|
28
|
+
"node": "20"
|
|
29
|
+
},
|
|
27
30
|
"volta": {
|
|
28
31
|
"extends": "../../package.json"
|
|
29
32
|
},
|
|
30
33
|
"publishConfig": {
|
|
31
34
|
"access": "public"
|
|
32
35
|
},
|
|
33
|
-
"gitHead": "
|
|
36
|
+
"gitHead": "db852b0cbef17d080c71361782acf6cb9d16a84c"
|
|
34
37
|
}
|