@futdevpro/fsm-dynamo 1.10.50 → 1.10.52

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.
@@ -0,0 +1,48 @@
1
+ /**
2
+ * A utility class for secure encryption and decryption of data
3
+ * Uses AES-256-CBC with deterministic IV and salt for consistent results
4
+ */
5
+ export declare class DyFM_Crypto {
6
+ private static readonly defaultErrorUserMsg;
7
+ /**
8
+ * Validates the encryption key
9
+ */
10
+ private static validateKey;
11
+ /**
12
+ * Safely serializes data to JSON
13
+ */
14
+ private static safeSerialize;
15
+ /**
16
+ * Safely deserializes JSON data
17
+ */
18
+ private static safeDeserialize;
19
+ /**
20
+ * Derives a 256-bit key from the passphrase using SHA256
21
+ */
22
+ private static deriveKey;
23
+ /**
24
+ * Creates a deterministic IV from the key only
25
+ */
26
+ private static createDeterministicIV;
27
+ /**
28
+ * Encrypts data using AES-256-CBC with deterministic key and IV
29
+ * @param data The data to encrypt
30
+ * @param key The encryption key
31
+ * @returns URL-safe encrypted string
32
+ * @throws {DyFM_Error} if encryption fails
33
+ */
34
+ static encrypt<T>(data: T, key: string): string;
35
+ /**
36
+ * Decrypts data that was encrypted using encrypt()
37
+ * @param encryptedData The encrypted data
38
+ * @param key The decryption key
39
+ * @returns The decrypted data
40
+ * @throws {DyFM_Error} if decryption fails
41
+ */
42
+ static decrypt<T>(encryptedData: string, key: string): T;
43
+ /**
44
+ * Gets default error settings
45
+ */
46
+ private static getDefaultErrorSettings;
47
+ }
48
+ //# sourceMappingURL=crypto-2-non-stable.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-2-non-stable.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/crypto/_collections/crypto-2-non-stable.util.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAEY;IAEvD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAkB1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAY5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IA6B9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAIxB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAKpC;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IA0C/C;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC;IAyDxD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;CAQvC"}
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DyFM_Crypto = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const CryptoJS = tslib_1.__importStar(require("crypto-js"));
6
+ const error_control_model_1 = require("../../../_models/control-models/error.control-model");
7
+ /**
8
+ * A utility class for secure encryption and decryption of data
9
+ * Uses AES-256-CBC with deterministic IV and salt for consistent results
10
+ */
11
+ class DyFM_Crypto {
12
+ static defaultErrorUserMsg = `We encountered an unhandled Authentication Error, ` +
13
+ `\nplease contact the responsible development team.`;
14
+ /**
15
+ * Validates the encryption key
16
+ */
17
+ static validateKey(key) {
18
+ if (!key || typeof key !== 'string') {
19
+ throw new error_control_model_1.DyFM_Error({
20
+ status: 401,
21
+ message: 'Encryption key is required and must be a string',
22
+ errorCode: 'DyFM-CRY-KEY-REQ'
23
+ });
24
+ }
25
+ if (key.trim().length === 0) {
26
+ throw new error_control_model_1.DyFM_Error({
27
+ status: 401,
28
+ message: 'Encryption key cannot be empty or whitespace-only',
29
+ errorCode: 'DyFM-CRY-KEY-EMPTY'
30
+ });
31
+ }
32
+ }
33
+ /**
34
+ * Safely serializes data to JSON
35
+ */
36
+ static safeSerialize(data) {
37
+ try {
38
+ return JSON.stringify(data);
39
+ }
40
+ catch (error) {
41
+ throw new error_control_model_1.DyFM_Error({
42
+ ...this.getDefaultErrorSettings('safeSerialize', error),
43
+ errorCode: 'DyFM-CRY-SER',
44
+ message: 'Failed to serialize data'
45
+ });
46
+ }
47
+ }
48
+ /**
49
+ * Safely deserializes JSON data
50
+ */
51
+ static safeDeserialize(data) {
52
+ try {
53
+ let parsed = JSON.parse(data);
54
+ // Handle double-stringified JSON
55
+ if (typeof parsed === 'string') {
56
+ try {
57
+ parsed = JSON.parse(parsed);
58
+ }
59
+ catch {
60
+ // If second parse fails, return the string as is
61
+ return parsed;
62
+ }
63
+ }
64
+ // Handle primitive values
65
+ if (typeof parsed === 'string' || typeof parsed === 'number' || typeof parsed === 'boolean') {
66
+ return parsed;
67
+ }
68
+ return parsed;
69
+ }
70
+ catch (error) {
71
+ throw new error_control_model_1.DyFM_Error({
72
+ ...this.getDefaultErrorSettings('safeDeserialize', error),
73
+ errorCode: 'DyFM-CRY-DES',
74
+ message: 'Failed to deserialize data'
75
+ });
76
+ }
77
+ }
78
+ /**
79
+ * Derives a 256-bit key from the passphrase using SHA256
80
+ */
81
+ static deriveKey(key) {
82
+ return CryptoJS.SHA256(key);
83
+ }
84
+ /**
85
+ * Creates a deterministic IV from the key only
86
+ */
87
+ static createDeterministicIV(key) {
88
+ const hash = CryptoJS.SHA256(key + ':iv');
89
+ return CryptoJS.lib.WordArray.create(hash.words.slice(0, 4)); // Use first 16 bytes (128 bits)
90
+ }
91
+ /**
92
+ * Encrypts data using AES-256-CBC with deterministic key and IV
93
+ * @param data The data to encrypt
94
+ * @param key The encryption key
95
+ * @returns URL-safe encrypted string
96
+ * @throws {DyFM_Error} if encryption fails
97
+ */
98
+ static encrypt(data, key) {
99
+ try {
100
+ // Validate key
101
+ this.validateKey(key);
102
+ // Validate data
103
+ if (data === undefined || data === null) {
104
+ throw new error_control_model_1.DyFM_Error({
105
+ status: 401,
106
+ message: 'Data cannot be undefined or null',
107
+ errorCode: 'DyFM-CRY-DATA-NULL'
108
+ });
109
+ }
110
+ // Convert data to string
111
+ const dataStr = this.safeSerialize(data);
112
+ // Derive key and IV
113
+ const aesKey = this.deriveKey(key);
114
+ const iv = this.createDeterministicIV(key);
115
+ // Encrypt the data with deterministic key and IV
116
+ const encrypted = CryptoJS.AES.encrypt(dataStr, aesKey, {
117
+ iv: iv,
118
+ mode: CryptoJS.mode.CBC,
119
+ padding: CryptoJS.pad.Pkcs7
120
+ });
121
+ // Convert to URL-safe base64
122
+ const base64 = encrypted.ciphertext.toString(CryptoJS.enc.Base64);
123
+ return base64
124
+ .replace(/\+/g, '-')
125
+ .replace(/\//g, '_')
126
+ .replace(/=+$/, '');
127
+ }
128
+ catch (error) {
129
+ throw new error_control_model_1.DyFM_Error({
130
+ ...this.getDefaultErrorSettings('encrypt', error),
131
+ errorCode: 'DyFM-CRY-ENC',
132
+ });
133
+ }
134
+ }
135
+ /**
136
+ * Decrypts data that was encrypted using encrypt()
137
+ * @param encryptedData The encrypted data
138
+ * @param key The decryption key
139
+ * @returns The decrypted data
140
+ * @throws {DyFM_Error} if decryption fails
141
+ */
142
+ static decrypt(encryptedData, key) {
143
+ try {
144
+ // Validate key
145
+ this.validateKey(key);
146
+ // Validate encrypted data
147
+ if (!encryptedData || typeof encryptedData !== 'string') {
148
+ throw new error_control_model_1.DyFM_Error({
149
+ status: 401,
150
+ message: 'Encrypted data is required and must be a string',
151
+ errorCode: 'DyFM-CRY-DATA-REQ'
152
+ });
153
+ }
154
+ // Convert from URL-safe base64
155
+ let base64 = encryptedData
156
+ .replace(/-/g, '+')
157
+ .replace(/_/g, '/');
158
+ // Add padding if needed
159
+ const padLength = 4 - (base64.length % 4);
160
+ if (padLength < 4) {
161
+ base64 += '='.repeat(padLength);
162
+ }
163
+ // Derive key and IV
164
+ const aesKey = this.deriveKey(key);
165
+ const iv = this.createDeterministicIV(key);
166
+ // Decrypt the data
167
+ const encryptedWA = CryptoJS.enc.Base64.parse(base64);
168
+ const decrypted = CryptoJS.AES.decrypt({ ciphertext: encryptedWA }, aesKey, {
169
+ iv: iv,
170
+ mode: CryptoJS.mode.CBC,
171
+ padding: CryptoJS.pad.Pkcs7
172
+ });
173
+ // Parse JSON
174
+ const decryptedStr = decrypted.toString(CryptoJS.enc.Utf8);
175
+ if (!decryptedStr) {
176
+ throw new error_control_model_1.DyFM_Error({
177
+ status: 401,
178
+ message: 'Failed to decrypt data - invalid key or corrupted data',
179
+ errorCode: 'DyFM-CRY-DEC-FAIL'
180
+ });
181
+ }
182
+ return this.safeDeserialize(decryptedStr);
183
+ }
184
+ catch (error) {
185
+ throw new error_control_model_1.DyFM_Error({
186
+ ...this.getDefaultErrorSettings('decrypt', error),
187
+ errorCode: 'DyFM-CRY-DRY',
188
+ });
189
+ }
190
+ }
191
+ /**
192
+ * Gets default error settings
193
+ */
194
+ static getDefaultErrorSettings(operation, error) {
195
+ return {
196
+ status: error?.___status ?? error?.status ?? 401,
197
+ message: `Crypto operation "${operation}" failed; ` + error_control_model_1.DyFM_Error.getAnyMessage(error),
198
+ error: error,
199
+ errorCode: 'DyFM-CRY-ERR'
200
+ };
201
+ }
202
+ }
203
+ exports.DyFM_Crypto = DyFM_Crypto;
204
+ //# sourceMappingURL=crypto-2-non-stable.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-2-non-stable.util.js","sourceRoot":"","sources":["../../../../src/_modules/crypto/_collections/crypto-2-non-stable.util.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const crypto_util_1 = require("./crypto.util");
3
+ const crypto_2_non_stable_util_1 = require("./crypto-2-non-stable.util");
4
4
  describe('| DyFM_Crypto', () => {
5
5
  const testKey = 'test-secret-key-123';
6
6
  const testData = { id: 1, name: 'test' };
7
7
  describe('| encrypt', () => {
8
8
  it('| should successfully encrypt data', () => {
9
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
9
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(testData, testKey);
10
10
  expect(encrypted).toBeDefined();
11
11
  expect(typeof encrypted).toBe('string');
12
12
  expect(encrypted).toMatch(/^[A-Za-z0-9\-_]+$/);
@@ -14,13 +14,13 @@ describe('| DyFM_Crypto', () => {
14
14
  it('| should encrypt different data with different results', () => {
15
15
  const data1 = { id: 1 };
16
16
  const data2 = { id: 2 };
17
- const encrypted1 = crypto_util_1.DyFM_Crypto.encrypt(data1, testKey);
18
- const encrypted2 = crypto_util_1.DyFM_Crypto.encrypt(data2, testKey);
17
+ const encrypted1 = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(data1, testKey);
18
+ const encrypted2 = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(data2, testKey);
19
19
  expect(encrypted1).not.toEqual(encrypted2);
20
20
  });
21
21
  it('| should throw DyFM_Error when encryption fails', () => {
22
22
  // @ts-ignore - Testing invalid input
23
- expect(() => crypto_util_1.DyFM_Crypto.encrypt(undefined, testKey)).toThrow();
23
+ expect(() => crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(undefined, testKey)).toThrow();
24
24
  });
25
25
  it('| should handle complex objects', () => {
26
26
  const complexData = {
@@ -31,8 +31,8 @@ describe('| DyFM_Crypto', () => {
31
31
  array: [1, 2, 3]
32
32
  }
33
33
  };
34
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(complexData, testKey);
35
- const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
34
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(complexData, testKey);
35
+ const decrypted = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
36
36
  expect(decrypted).toEqual(complexData);
37
37
  });
38
38
  it('| should get the same result with the same input', () => {
@@ -45,8 +45,8 @@ describe('| DyFM_Crypto', () => {
45
45
  }
46
46
  };
47
47
  const expectedResult = JSON.stringify(complexData);
48
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(complexData, testKey);
49
- const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
48
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(complexData, testKey);
49
+ const decrypted = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
50
50
  const result = JSON.stringify(decrypted);
51
51
  expect(result).toBe(expectedResult);
52
52
  });
@@ -57,66 +57,66 @@ describe('| DyFM_Crypto', () => {
57
57
  nested: { value: 'nested-value', array: [1, 2, 3] }
58
58
  };
59
59
  const originalData = JSON.stringify(complexData);
60
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(complexData, testKey);
61
- const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
60
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(complexData, testKey);
61
+ const decrypted = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
62
62
  const result = JSON.stringify(decrypted);
63
63
  expect(result).toBe(originalData);
64
64
  });
65
65
  it('| should handle arrays', () => {
66
66
  const arrayData = [1, 'test', { nested: true }];
67
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(arrayData, testKey);
68
- const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
67
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(arrayData, testKey);
68
+ const decrypted = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
69
69
  expect(decrypted).toEqual(arrayData);
70
70
  });
71
71
  it('| should handle primitive values', () => {
72
72
  const stringData = 'test string';
73
73
  const numberData = 42;
74
74
  const booleanData = true;
75
- const encryptedString = crypto_util_1.DyFM_Crypto.encrypt(stringData, testKey);
76
- const encryptedNumber = crypto_util_1.DyFM_Crypto.encrypt(numberData, testKey);
77
- const encryptedBoolean = crypto_util_1.DyFM_Crypto.encrypt(booleanData, testKey);
78
- expect(crypto_util_1.DyFM_Crypto.decrypt(encryptedString, testKey)).toBe(stringData);
79
- expect(crypto_util_1.DyFM_Crypto.decrypt(encryptedNumber, testKey)).toBe(numberData);
80
- expect(crypto_util_1.DyFM_Crypto.decrypt(encryptedBoolean, testKey)).toBe(booleanData);
75
+ const encryptedString = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(stringData, testKey);
76
+ const encryptedNumber = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(numberData, testKey);
77
+ const encryptedBoolean = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(booleanData, testKey);
78
+ expect(crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encryptedString, testKey)).toBe(stringData);
79
+ expect(crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encryptedNumber, testKey)).toBe(numberData);
80
+ expect(crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encryptedBoolean, testKey)).toBe(booleanData);
81
81
  });
82
82
  });
83
83
  describe('| decrypt', () => {
84
84
  it('| should successfully decrypt encrypted data', () => {
85
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
86
- const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
85
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(testData, testKey);
86
+ const decrypted = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
87
87
  expect(decrypted).toEqual(testData);
88
88
  });
89
89
  it('| should throw DyFM_Error when decryption fails', () => {
90
- expect(() => crypto_util_1.DyFM_Crypto.decrypt('invalid-encrypted-data', testKey)).toThrow();
90
+ expect(() => crypto_2_non_stable_util_1.DyFM_Crypto.decrypt('invalid-encrypted-data', testKey)).toThrow();
91
91
  });
92
92
  it('| should throw DyFM_Error when using wrong key', () => {
93
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
94
- expect(() => crypto_util_1.DyFM_Crypto.decrypt(encrypted, 'wrong-key')).toThrow();
93
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(testData, testKey);
94
+ expect(() => crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted, 'wrong-key')).toThrow();
95
95
  });
96
96
  it('| should throw DyFM_Error when encrypted data is modified', () => {
97
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
97
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(testData, testKey);
98
98
  const modified = encrypted.slice(0, -1) + 'A';
99
- expect(() => crypto_util_1.DyFM_Crypto.decrypt(modified, testKey)).toThrow();
99
+ expect(() => crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(modified, testKey)).toThrow();
100
100
  });
101
101
  });
102
102
  describe('| URL-safe encryption', () => {
103
103
  it('| should produce URL-safe strings', () => {
104
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
104
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(testData, testKey);
105
105
  expect(encrypted).toMatch(/^[A-Za-z0-9\-_]+$/);
106
106
  });
107
107
  it('| should work in HTTP headers', () => {
108
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
108
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(testData, testKey);
109
109
  const header = `Bearer ${encrypted}`;
110
110
  const extracted = header.split(' ')[1];
111
- const decrypted = crypto_util_1.DyFM_Crypto.decrypt(extracted, testKey);
111
+ const decrypted = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(extracted, testKey);
112
112
  expect(decrypted).toEqual(testData);
113
113
  });
114
114
  it('| should work in URLs', () => {
115
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
115
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(testData, testKey);
116
116
  const url = `https://example.com/api?token=${encrypted}`;
117
117
  const params = new URLSearchParams(url.split('?')[1]);
118
118
  const extracted = params.get('token');
119
- const decrypted = crypto_util_1.DyFM_Crypto.decrypt(extracted, testKey);
119
+ const decrypted = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(extracted, testKey);
120
120
  expect(decrypted).toEqual(testData);
121
121
  });
122
122
  });
@@ -124,14 +124,14 @@ describe('| DyFM_Crypto', () => {
124
124
  describe('| empty and null values', () => {
125
125
  it('| should handle empty objects', () => {
126
126
  const emptyObj = {};
127
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(emptyObj, testKey);
128
- const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
127
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(emptyObj, testKey);
128
+ const decrypted = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
129
129
  expect(decrypted).toEqual(emptyObj);
130
130
  });
131
131
  it('| should handle empty arrays', () => {
132
132
  const emptyArr = [];
133
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(emptyArr, testKey);
134
- const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
133
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(emptyArr, testKey);
134
+ const decrypted = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
135
135
  expect(decrypted).toEqual(emptyArr);
136
136
  });
137
137
  it('| should handle null values in objects', () => {
@@ -140,8 +140,8 @@ describe('| DyFM_Crypto', () => {
140
140
  name: null,
141
141
  nested: { value: null }
142
142
  };
143
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(dataWithNull, testKey);
144
- const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
143
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(dataWithNull, testKey);
144
+ const decrypted = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
145
145
  expect(decrypted).toEqual(dataWithNull);
146
146
  });
147
147
  it('| should handle undefined values in objects', () => {
@@ -150,41 +150,41 @@ describe('| DyFM_Crypto', () => {
150
150
  name: undefined,
151
151
  nested: { value: undefined }
152
152
  };
153
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(dataWithUndefined, testKey);
154
- const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
153
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(dataWithUndefined, testKey);
154
+ const decrypted = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
155
155
  expect(decrypted).toEqual({ id: 1, nested: {} });
156
156
  });
157
157
  });
158
158
  describe('| key edge cases', () => {
159
159
  it('| should handle very long keys', () => {
160
160
  const longKey = 'a'.repeat(1000);
161
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, longKey);
162
- const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, longKey);
161
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(testData, longKey);
162
+ const decrypted = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted, longKey);
163
163
  expect(decrypted).toEqual(testData);
164
164
  });
165
165
  it('| should handle empty key', () => {
166
- expect(() => crypto_util_1.DyFM_Crypto.encrypt(testData, '')).toThrow();
166
+ expect(() => crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(testData, '')).toThrow();
167
167
  });
168
168
  it('| should handle whitespace-only keys', () => {
169
- expect(() => crypto_util_1.DyFM_Crypto.encrypt(testData, ' ')).toThrow();
169
+ expect(() => crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(testData, ' ')).toThrow();
170
170
  });
171
171
  });
172
172
  describe('| encrypted data manipulation', () => {
173
173
  it('| should detect when encrypted data is truncated', () => {
174
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
174
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(testData, testKey);
175
175
  const truncated = encrypted.slice(0, -10);
176
- expect(() => crypto_util_1.DyFM_Crypto.decrypt(truncated, testKey)).toThrow();
176
+ expect(() => crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(truncated, testKey)).toThrow();
177
177
  });
178
178
  it('| should detect when encrypted data is extended', () => {
179
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
179
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(testData, testKey);
180
180
  const extended = encrypted + 'A'.repeat(10);
181
- expect(() => crypto_util_1.DyFM_Crypto.decrypt(extended, testKey)).toThrow();
181
+ expect(() => crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(extended, testKey)).toThrow();
182
182
  });
183
183
  it('| should detect when encrypted data is modified in the middle', () => {
184
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
184
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(testData, testKey);
185
185
  const midPoint = Math.floor(encrypted.length / 2);
186
186
  const modified = encrypted.slice(0, midPoint) + 'X' + encrypted.slice(midPoint + 1);
187
- expect(() => crypto_util_1.DyFM_Crypto.decrypt(modified, testKey)).toThrow();
187
+ expect(() => crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(modified, testKey)).toThrow();
188
188
  });
189
189
  });
190
190
  describe('| JSON handling edge cases', () => {
@@ -200,8 +200,8 @@ describe('| DyFM_Crypto', () => {
200
200
  };
201
201
  // Simulate double stringification
202
202
  const doubleStringified = JSON.stringify(JSON.stringify(testData));
203
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(doubleStringified, testKey);
204
- const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
203
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(doubleStringified, testKey);
204
+ const decrypted = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
205
205
  // Should be able to parse the decrypted data back to the original object
206
206
  const parsed = JSON.parse(decrypted);
207
207
  expect(parsed).toEqual(testData);
@@ -451,8 +451,8 @@ describe('| DyFM_Crypto', () => {
451
451
  '239': '}',
452
452
  '240': '}'
453
453
  };
454
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(charByCharData, testKey);
455
- const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
454
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(charByCharData, testKey);
455
+ const decrypted = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
456
456
  // Should be able to parse the decrypted data back to the original object
457
457
  expect(decrypted).toEqual(charByCharData);
458
458
  });
@@ -466,11 +466,11 @@ describe('| DyFM_Crypto', () => {
466
466
  };
467
467
  const key = 'test-secret-key-123';
468
468
  // Simulate different environments by creating new instances
469
- const encrypted1 = crypto_util_1.DyFM_Crypto.encrypt(testData, key);
470
- const encrypted2 = crypto_util_1.DyFM_Crypto.encrypt(testData, key);
469
+ const encrypted1 = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(testData, key);
470
+ const encrypted2 = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(testData, key);
471
471
  expect(encrypted1).toBe(encrypted2);
472
- expect(crypto_util_1.DyFM_Crypto.decrypt(encrypted1, key)).toEqual(testData);
473
- expect(crypto_util_1.DyFM_Crypto.decrypt(encrypted2, key)).toEqual(testData);
472
+ expect(crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted1, key)).toEqual(testData);
473
+ expect(crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted2, key)).toEqual(testData);
474
474
  });
475
475
  it('| should maintain encryption consistency with different data types', () => {
476
476
  const testCases = [
@@ -480,8 +480,8 @@ describe('| DyFM_Crypto', () => {
480
480
  { data: { nested: { value: true } }, key: 'key4' }
481
481
  ];
482
482
  testCases.forEach(({ data, key }) => {
483
- const encrypted1 = crypto_util_1.DyFM_Crypto.encrypt(data, key);
484
- const encrypted2 = crypto_util_1.DyFM_Crypto.encrypt(data, key);
483
+ const encrypted1 = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(data, key);
484
+ const encrypted2 = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(data, key);
485
485
  expect(encrypted1).toBe(encrypted2);
486
486
  });
487
487
  });
@@ -499,17 +499,17 @@ describe('| DyFM_Crypto', () => {
499
499
  };
500
500
  const key = 'db-storage-key';
501
501
  // Simulate database storage and retrieval
502
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(originalData, key);
502
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(originalData, key);
503
503
  const storedData = encrypted; // Simulating database storage
504
504
  const retrievedData = storedData; // Simulating database retrieval
505
- const decrypted = crypto_util_1.DyFM_Crypto.decrypt(retrievedData, key);
505
+ const decrypted = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(retrievedData, key);
506
506
  expect(decrypted).toEqual(originalData);
507
507
  });
508
508
  it('| should handle multiple encryption/decryption cycles for database operations', () => {
509
509
  const userData = {
510
510
  id: 1,
511
511
  name: 'test user',
512
- lastLogin: new Date().toISOString(),
512
+ lastLogin: '2024-01-01T10:00:00.000Z',
513
513
  preferences: {
514
514
  language: 'en',
515
515
  timezone: 'UTC'
@@ -517,15 +517,15 @@ describe('| DyFM_Crypto', () => {
517
517
  };
518
518
  const key = 'persistent-key';
519
519
  // Simulate multiple database operations
520
- const encrypted1 = crypto_util_1.DyFM_Crypto.encrypt(userData, key);
521
- const decrypted1 = crypto_util_1.DyFM_Crypto.decrypt(encrypted1, key);
522
- // Simulate data update
520
+ const encrypted1 = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(userData, key);
521
+ const decrypted1 = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted1, key);
522
+ // Simulate data update with a different timestamp
523
523
  const updatedData = {
524
524
  ...decrypted1,
525
- lastLogin: new Date().toISOString()
525
+ lastLogin: '2024-01-02T15:30:00.000Z'
526
526
  };
527
- const encrypted2 = crypto_util_1.DyFM_Crypto.encrypt(updatedData, key);
528
- const decrypted2 = crypto_util_1.DyFM_Crypto.decrypt(encrypted2, key);
527
+ const encrypted2 = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(updatedData, key);
528
+ const decrypted2 = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted2, key);
529
529
  expect(decrypted1).toEqual(userData);
530
530
  expect(decrypted2).toEqual(updatedData);
531
531
  expect(decrypted2.lastLogin).not.toBe(userData.lastLogin);
@@ -541,10 +541,10 @@ describe('| DyFM_Crypto', () => {
541
541
  };
542
542
  const key = 'sensitive-data-key';
543
543
  // Simulate multiple database operations with the same data
544
- const encrypted1 = crypto_util_1.DyFM_Crypto.encrypt(sensitiveData, key);
545
- const decrypted1 = crypto_util_1.DyFM_Crypto.decrypt(encrypted1, key);
546
- const encrypted2 = crypto_util_1.DyFM_Crypto.encrypt(decrypted1, key);
547
- const decrypted2 = crypto_util_1.DyFM_Crypto.decrypt(encrypted2, key);
544
+ const encrypted1 = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(sensitiveData, key);
545
+ const decrypted1 = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted1, key);
546
+ const encrypted2 = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(decrypted1, key);
547
+ const decrypted2 = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted2, key);
548
548
  expect(decrypted1).toEqual(sensitiveData);
549
549
  expect(decrypted2).toEqual(sensitiveData);
550
550
  expect(encrypted1).toBe(encrypted2); // Different encryption instances
@@ -555,10 +555,12 @@ describe('| DyFM_Crypto', () => {
555
555
  const unicodeData = {
556
556
  text: 'Hello 世界! 🌍',
557
557
  emoji: '👋',
558
- special: '!@#$%^&*()_+-=[]{}|;:,.<>?éáűúőóüöíÉÁŰÚŐÓÜÖÍ'
558
+ special: '!!!@@@###$$$%%%^^^&&&***((()))___+++---===[[[]]]{{{}}}|||;;;:::,,,...<<<>>>' +
559
+ 'ĐĐĐđđđßßߤ¤¤×××÷÷÷¨¨¨¨~~~ˇˇˇ^^^˘˘˘°°°˛˛˛```˙˙˙´´´˝˝˝˝¸¸¸§§§' +
560
+ '???ééééáááűűűúúúőőőóóóüüüöööíííÉÉÉÁÁÁŰŰŰÚÚÚŐŐŐÓÓÓÜÖÖÖÍÍÍ'
559
561
  };
560
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(unicodeData, testKey);
561
- const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
562
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(unicodeData, testKey);
563
+ const decrypted = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
562
564
  expect(decrypted).toEqual(unicodeData);
563
565
  });
564
566
  it('| should handle special characters in object keys', () => {
@@ -568,8 +570,8 @@ describe('| DyFM_Crypto', () => {
568
570
  'key-with-special-chars!@#': 'value',
569
571
  'key-with-unicode-世界': 'value'
570
572
  };
571
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(specialKeyData, testKey);
572
- const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
573
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(specialKeyData, testKey);
574
+ const decrypted = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
573
575
  expect(decrypted).toEqual(specialKeyData);
574
576
  });
575
577
  it('| should handle special characters in nested objects', () => {
@@ -580,8 +582,8 @@ describe('| DyFM_Crypto', () => {
580
582
  }
581
583
  }
582
584
  };
583
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(nestedData, testKey);
584
- const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
585
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(nestedData, testKey);
586
+ const decrypted = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
585
587
  expect(decrypted).toEqual(nestedData);
586
588
  });
587
589
  it('| should handle special characters in arrays', () => {
@@ -590,8 +592,8 @@ describe('| DyFM_Crypto', () => {
590
592
  { 'special-key': 'value with !@#' },
591
593
  ['nested', 'array', 'with', 'special', 'chars!@#']
592
594
  ];
593
- const encrypted = crypto_util_1.DyFM_Crypto.encrypt(arrayData, testKey);
594
- const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
595
+ const encrypted = crypto_2_non_stable_util_1.DyFM_Crypto.encrypt(arrayData, testKey);
596
+ const decrypted = crypto_2_non_stable_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
595
597
  expect(decrypted).toEqual(arrayData);
596
598
  });
597
599
  });
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.util.spec.js","sourceRoot":"","sources":["../../../../src/_modules/crypto/_collections/crypto.util.spec.ts"],"names":[],"mappings":"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G;oBACR,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK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"}
1
+ {"version":3,"file":"crypto.util.spec.js","sourceRoot":"","sources":["../../../../src/_modules/crypto/_collections/crypto.util.spec.ts"],"names":[],"mappings":"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G;oBACR,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/fsm-dynamo",
3
- "version": "01.10.50",
3
+ "version": "01.10.52",
4
4
  "description": "Full Stack Model Collection for Dynamic (NodeJS-Typescript) Framework called Dynamo, by Future Development Ltd.",
5
5
  "DyBu_settings": {
6
6
  "packageType": "full-stack-package",
@@ -0,0 +1,224 @@
1
+ import * as CryptoJS from 'crypto-js';
2
+ import {
3
+ DyFM_Error,
4
+ DyFM_Error_Settings
5
+ } from '../../../_models/control-models/error.control-model';
6
+
7
+
8
+ /**
9
+ * A utility class for secure encryption and decryption of data
10
+ * Uses AES-256-CBC with deterministic IV and salt for consistent results
11
+ */
12
+ export class DyFM_Crypto {
13
+ private static readonly defaultErrorUserMsg =
14
+ `We encountered an unhandled Authentication Error, ` +
15
+ `\nplease contact the responsible development team.`;
16
+
17
+ /**
18
+ * Validates the encryption key
19
+ */
20
+ private static validateKey(key: string): void {
21
+ if (!key || typeof key !== 'string') {
22
+ throw new DyFM_Error({
23
+ status: 401,
24
+ message: 'Encryption key is required and must be a string',
25
+ errorCode: 'DyFM-CRY-KEY-REQ'
26
+ });
27
+ }
28
+
29
+ if (key.trim().length === 0) {
30
+ throw new DyFM_Error({
31
+ status: 401,
32
+ message: 'Encryption key cannot be empty or whitespace-only',
33
+ errorCode: 'DyFM-CRY-KEY-EMPTY'
34
+ });
35
+ }
36
+ }
37
+
38
+ /**
39
+ * Safely serializes data to JSON
40
+ */
41
+ private static safeSerialize<T>(data: T): string {
42
+ try {
43
+ return JSON.stringify(data);
44
+ } catch (error) {
45
+ throw new DyFM_Error({
46
+ ...this.getDefaultErrorSettings('safeSerialize', error),
47
+ errorCode: 'DyFM-CRY-SER',
48
+ message: 'Failed to serialize data'
49
+ });
50
+ }
51
+ }
52
+
53
+ /**
54
+ * Safely deserializes JSON data
55
+ */
56
+ private static safeDeserialize<T>(data: string): T {
57
+ try {
58
+ let parsed = JSON.parse(data);
59
+
60
+ // Handle double-stringified JSON
61
+ if (typeof parsed === 'string') {
62
+ try {
63
+ parsed = JSON.parse(parsed);
64
+ } catch {
65
+ // If second parse fails, return the string as is
66
+ return parsed as T;
67
+ }
68
+ }
69
+
70
+ // Handle primitive values
71
+ if (typeof parsed === 'string' || typeof parsed === 'number' || typeof parsed === 'boolean') {
72
+ return parsed as T;
73
+ }
74
+
75
+ return parsed as T;
76
+ } catch (error) {
77
+ throw new DyFM_Error({
78
+ ...this.getDefaultErrorSettings('safeDeserialize', error),
79
+ errorCode: 'DyFM-CRY-DES',
80
+ message: 'Failed to deserialize data'
81
+ });
82
+ }
83
+ }
84
+
85
+ /**
86
+ * Derives a 256-bit key from the passphrase using SHA256
87
+ */
88
+ private static deriveKey(key: string): CryptoJS.lib.WordArray {
89
+ return CryptoJS.SHA256(key);
90
+ }
91
+
92
+ /**
93
+ * Creates a deterministic IV from the key only
94
+ */
95
+ private static createDeterministicIV(key: string): CryptoJS.lib.WordArray {
96
+ const hash = CryptoJS.SHA256(key + ':iv');
97
+ return CryptoJS.lib.WordArray.create(hash.words.slice(0, 4)); // Use first 16 bytes (128 bits)
98
+ }
99
+
100
+ /**
101
+ * Encrypts data using AES-256-CBC with deterministic key and IV
102
+ * @param data The data to encrypt
103
+ * @param key The encryption key
104
+ * @returns URL-safe encrypted string
105
+ * @throws {DyFM_Error} if encryption fails
106
+ */
107
+ static encrypt<T>(data: T, key: string): string {
108
+ try {
109
+ // Validate key
110
+ this.validateKey(key);
111
+
112
+ // Validate data
113
+ if (data === undefined || data === null) {
114
+ throw new DyFM_Error({
115
+ status: 401,
116
+ message: 'Data cannot be undefined or null',
117
+ errorCode: 'DyFM-CRY-DATA-NULL'
118
+ });
119
+ }
120
+
121
+ // Convert data to string
122
+ const dataStr = this.safeSerialize(data);
123
+
124
+ // Derive key and IV
125
+ const aesKey = this.deriveKey(key);
126
+ const iv = this.createDeterministicIV(key);
127
+
128
+ // Encrypt the data with deterministic key and IV
129
+ const encrypted = CryptoJS.AES.encrypt(dataStr, aesKey, {
130
+ iv: iv,
131
+ mode: CryptoJS.mode.CBC,
132
+ padding: CryptoJS.pad.Pkcs7
133
+ });
134
+
135
+ // Convert to URL-safe base64
136
+ const base64 = encrypted.ciphertext.toString(CryptoJS.enc.Base64);
137
+ return base64
138
+ .replace(/\+/g, '-')
139
+ .replace(/\//g, '_')
140
+ .replace(/=+$/, '');
141
+ } catch (error) {
142
+ throw new DyFM_Error({
143
+ ...this.getDefaultErrorSettings('encrypt', error),
144
+ errorCode: 'DyFM-CRY-ENC',
145
+ });
146
+ }
147
+ }
148
+
149
+ /**
150
+ * Decrypts data that was encrypted using encrypt()
151
+ * @param encryptedData The encrypted data
152
+ * @param key The decryption key
153
+ * @returns The decrypted data
154
+ * @throws {DyFM_Error} if decryption fails
155
+ */
156
+ static decrypt<T>(encryptedData: string, key: string): T {
157
+ try {
158
+ // Validate key
159
+ this.validateKey(key);
160
+
161
+ // Validate encrypted data
162
+ if (!encryptedData || typeof encryptedData !== 'string') {
163
+ throw new DyFM_Error({
164
+ status: 401,
165
+ message: 'Encrypted data is required and must be a string',
166
+ errorCode: 'DyFM-CRY-DATA-REQ'
167
+ });
168
+ }
169
+
170
+ // Convert from URL-safe base64
171
+ let base64 = encryptedData
172
+ .replace(/-/g, '+')
173
+ .replace(/_/g, '/');
174
+
175
+ // Add padding if needed
176
+ const padLength = 4 - (base64.length % 4);
177
+ if (padLength < 4) {
178
+ base64 += '='.repeat(padLength);
179
+ }
180
+
181
+ // Derive key and IV
182
+ const aesKey = this.deriveKey(key);
183
+ const iv = this.createDeterministicIV(key);
184
+
185
+ // Decrypt the data
186
+ const encryptedWA = CryptoJS.enc.Base64.parse(base64);
187
+ const decrypted = CryptoJS.AES.decrypt({ ciphertext: encryptedWA }, aesKey, {
188
+ iv: iv,
189
+ mode: CryptoJS.mode.CBC,
190
+ padding: CryptoJS.pad.Pkcs7
191
+ });
192
+
193
+ // Parse JSON
194
+ const decryptedStr = decrypted.toString(CryptoJS.enc.Utf8);
195
+
196
+ if (!decryptedStr) {
197
+ throw new DyFM_Error({
198
+ status: 401,
199
+ message: 'Failed to decrypt data - invalid key or corrupted data',
200
+ errorCode: 'DyFM-CRY-DEC-FAIL'
201
+ });
202
+ }
203
+
204
+ return this.safeDeserialize<T>(decryptedStr);
205
+ } catch (error) {
206
+ throw new DyFM_Error({
207
+ ...this.getDefaultErrorSettings('decrypt', error),
208
+ errorCode: 'DyFM-CRY-DRY',
209
+ });
210
+ }
211
+ }
212
+
213
+ /**
214
+ * Gets default error settings
215
+ */
216
+ private static getDefaultErrorSettings(operation: string, error?: any): DyFM_Error_Settings {
217
+ return {
218
+ status: (error as DyFM_Error)?.___status ?? (error as any)?.status ?? 401,
219
+ message: `Crypto operation "${operation}" failed; ` + DyFM_Error.getAnyMessage(error),
220
+ error: error,
221
+ errorCode: 'DyFM-CRY-ERR'
222
+ };
223
+ }
224
+ }
@@ -1,4 +1,4 @@
1
- import { DyFM_Crypto } from './crypto.util';
1
+ import { DyFM_Crypto } from './crypto-2-non-stable.util';
2
2
 
3
3
  describe('| DyFM_Crypto', () => {
4
4
  const testKey = 'test-secret-key-123';
@@ -572,7 +572,7 @@ describe('| DyFM_Crypto', () => {
572
572
  const userData: UserData = {
573
573
  id: 1,
574
574
  name: 'test user',
575
- lastLogin: new Date().toISOString(),
575
+ lastLogin: '2024-01-01T10:00:00.000Z',
576
576
  preferences: {
577
577
  language: 'en',
578
578
  timezone: 'UTC'
@@ -584,10 +584,10 @@ describe('| DyFM_Crypto', () => {
584
584
  const encrypted1 = DyFM_Crypto.encrypt(userData, key);
585
585
  const decrypted1 = DyFM_Crypto.decrypt(encrypted1, key) as UserData;
586
586
 
587
- // Simulate data update
587
+ // Simulate data update with a different timestamp
588
588
  const updatedData: UserData = {
589
589
  ...decrypted1,
590
- lastLogin: new Date().toISOString()
590
+ lastLogin: '2024-01-02T15:30:00.000Z'
591
591
  };
592
592
  const encrypted2 = DyFM_Crypto.encrypt(updatedData, key);
593
593
  const decrypted2 = DyFM_Crypto.decrypt(encrypted2, key) as UserData;
@@ -625,7 +625,9 @@ describe('| DyFM_Crypto', () => {
625
625
  const unicodeData = {
626
626
  text: 'Hello 世界! 🌍',
627
627
  emoji: '👋',
628
- special: '!@#$%^&*()_+-=[]{}|;:,.<>?éáűúőóüöíÉÁŰÚŐÓÜÖÍ'
628
+ special: '!!!@@@###$$$%%%^^^&&&***((()))___+++---===[[[]]]{{{}}}|||;;;:::,,,...<<<>>>' +
629
+ 'ĐĐĐđđđßßߤ¤¤×××÷÷÷¨¨¨¨~~~ˇˇˇ^^^˘˘˘°°°˛˛˛```˙˙˙´´´˝˝˝˝¸¸¸§§§' +
630
+ '???ééééáááűűűúúúőőőóóóüüüöööíííÉÉÉÁÁÁŰŰŰÚÚÚŐŐŐÓÓÓÜÖÖÖÍÍÍ'
629
631
  };
630
632
  const encrypted = DyFM_Crypto.encrypt(unicodeData, testKey);
631
633
  const decrypted = DyFM_Crypto.decrypt(encrypted, testKey);
Binary file