@futdevpro/fsm-dynamo 1.10.51 → 1.10.53
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/_collections/utils/shared.util.d.ts +4 -0
- package/build/_collections/utils/shared.util.d.ts.map +1 -1
- package/build/_collections/utils/shared.util.js +13 -0
- package/build/_collections/utils/shared.util.js.map +1 -1
- package/build/_collections/utils/stack.util.js +1 -1
- package/build/_models/control-models/data-property-params.control-model.js +6 -6
- package/build/_modules/crypto/_collections/crypto-2-non-stable.util.d.ts +48 -0
- package/build/_modules/crypto/_collections/crypto-2-non-stable.util.d.ts.map +1 -0
- package/build/_modules/crypto/_collections/crypto-2-non-stable.util.js +204 -0
- package/build/_modules/crypto/_collections/crypto-2-non-stable.util.js.map +1 -0
- package/build/_modules/crypto/_collections/crypto.util.d.ts +45 -13
- package/build/_modules/crypto/_collections/crypto.util.d.ts.map +1 -1
- package/build/_modules/crypto/_collections/crypto.util.js +96 -71
- package/build/_modules/crypto/_collections/crypto.util.js.map +1 -1
- package/build/_modules/crypto/_collections/crypto.util.spec.js +77 -77
- package/build/_modules/crypto/_collections/crypto.util.spec.js.map +1 -1
- package/futdevpro-fsm-dynamo-01.10.53.tgz +0 -0
- package/package.json +1 -1
- package/src/_collections/utils/shared.util.ts +13 -0
- package/src/_collections/utils/stack.util.ts +1 -1
- package/src/_models/control-models/data-property-params.control-model.ts +6 -6
- package/src/_modules/crypto/_collections/crypto-2-non-stable.util.ts +224 -0
- package/src/_modules/crypto/_collections/crypto.util.spec.ts +1 -1
- package/src/_modules/crypto/_collections/crypto.util.ts +143 -82
- package/build/_modules/crypto/_collections/crypto-non-stable.util.d.ts +0 -80
- package/build/_modules/crypto/_collections/crypto-non-stable.util.d.ts.map +0 -1
- package/build/_modules/crypto/_collections/crypto-non-stable.util.js +0 -229
- package/build/_modules/crypto/_collections/crypto-non-stable.util.js.map +0 -1
- package/futdevpro-fsm-dynamo-01.10.51.tgz +0 -0
- package/src/_modules/crypto/_collections/crypto-non-stable.util.ts +0 -285
|
@@ -94,5 +94,9 @@ export declare class DyFM_Shared {
|
|
|
94
94
|
object: any;
|
|
95
95
|
pathsOfAllDuplications: string[];
|
|
96
96
|
}[];
|
|
97
|
+
/**
|
|
98
|
+
* removes all undefined (will keep all null, false, 0, '', NaN etc.)
|
|
99
|
+
*/
|
|
100
|
+
static cleanObject(obj: any): void;
|
|
97
101
|
}
|
|
98
102
|
//# sourceMappingURL=shared.util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.util.d.ts","sourceRoot":"","sources":["../../../src/_collections/utils/shared.util.ts"],"names":[],"mappings":"AAGA,qBAAa,WAAW;IAEtB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE;IAgBjE;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,GAAG;IAYtE;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,GAAG,MAAM;IAe9E;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,GAAG,MAAM;IAerF;;;;;;OAMG;IACH,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,GAAG,GAAG,MAAM;IAmBvF;;;;;;;OAOG;IACH,MAAM,CAAC,uBAAuB,CAAC,CAAC,EAC9B,SAAS,EAAE,CAAC,EACZ,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EAAE,EACrB,SAAS,EAAE,GAAG,GACb,CAAC;IAiBJ,MAAM,CAAC,QAAQ,CAAC,iBAAiB,wCAA2B;IAC5D;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CAAC,CAAC,EACzB,IAAI,EAAE,CAAC,EACP,QAAQ,GAAE,MAAM,EAA4C,EAC5D,IAAI,GAAE,GAAG,EAAO,GAEf,GAAG;IA4BN;;;;;;;;;;OAUG;IACH,MAAM,CAAC,gBAAgB,CACrB,IAAI,EAAE,GAAG,EACT,QAAQ,GAAE,MAAM,EAA4C,EAC5D,IAAI,GAAE,GAAG,EAAO,EAChB,YAAY,GAAE;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,sBAAsB,EAAE,MAAM,EAAE,CAAA;KAAE,EAAO,GACrE;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,sBAAsB,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"shared.util.d.ts","sourceRoot":"","sources":["../../../src/_collections/utils/shared.util.ts"],"names":[],"mappings":"AAGA,qBAAa,WAAW;IAEtB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE;IAgBjE;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,GAAG;IAYtE;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,GAAG,MAAM;IAe9E;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,GAAG,MAAM;IAerF;;;;;;OAMG;IACH,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,GAAG,GAAG,MAAM;IAmBvF;;;;;;;OAOG;IACH,MAAM,CAAC,uBAAuB,CAAC,CAAC,EAC9B,SAAS,EAAE,CAAC,EACZ,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EAAE,EACrB,SAAS,EAAE,GAAG,GACb,CAAC;IAiBJ,MAAM,CAAC,QAAQ,CAAC,iBAAiB,wCAA2B;IAC5D;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CAAC,CAAC,EACzB,IAAI,EAAE,CAAC,EACP,QAAQ,GAAE,MAAM,EAA4C,EAC5D,IAAI,GAAE,GAAG,EAAO,GAEf,GAAG;IA4BN;;;;;;;;;;OAUG;IACH,MAAM,CAAC,gBAAgB,CACrB,IAAI,EAAE,GAAG,EACT,QAAQ,GAAE,MAAM,EAA4C,EAC5D,IAAI,GAAE,GAAG,EAAO,EAChB,YAAY,GAAE;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,sBAAsB,EAAE,MAAM,EAAE,CAAA;KAAE,EAAO,GACrE;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,sBAAsB,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE;IAsBtD;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;CAUnC"}
|
|
@@ -192,6 +192,19 @@ class DyFM_Shared {
|
|
|
192
192
|
});
|
|
193
193
|
return duplications;
|
|
194
194
|
}
|
|
195
|
+
/**
|
|
196
|
+
* removes all undefined (will keep all null, false, 0, '', NaN etc.)
|
|
197
|
+
*/
|
|
198
|
+
static cleanObject(obj) {
|
|
199
|
+
Object.keys(obj).forEach((key) => {
|
|
200
|
+
if (obj[key] === undefined) {
|
|
201
|
+
delete obj[key];
|
|
202
|
+
}
|
|
203
|
+
else if (typeof obj[key] === 'object') {
|
|
204
|
+
this.cleanObject(obj[key]);
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
}
|
|
195
208
|
}
|
|
196
209
|
exports.DyFM_Shared = DyFM_Shared;
|
|
197
210
|
//# sourceMappingURL=shared.util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.util.js","sourceRoot":"","sources":["../../../src/_collections/utils/shared.util.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"shared.util.js","sourceRoot":"","sources":["../../../src/_collections/utils/shared.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ const log_util_1 = require("./log.util");
|
|
|
10
10
|
function DyFM_getConstructionStackLocation(level = 0) {
|
|
11
11
|
let stack = new Error().stack;
|
|
12
12
|
// Split the stack into lines and remove the first line (Error:)
|
|
13
|
-
let stackLines = stack?.split('\n')?.slice(
|
|
13
|
+
let stackLines = stack?.split('\n')?.slice(2);
|
|
14
14
|
// Find the line that contains the constructor call
|
|
15
15
|
// It will be the FIRST line that doesn't contain 'getStackLocation'
|
|
16
16
|
let constructorLine = stackLines?.find(line => !line.includes('getStackLocation') &&
|
|
@@ -52,19 +52,19 @@ class DyFM_DataProperty_Params extends DyFM_DataProperty_Settings {
|
|
|
52
52
|
if (!set.type) {
|
|
53
53
|
log_util_1.DyFM_Log.error('DYNAMO ERROR: ', '\n type is missing from DynamoBEDataPropertyParams ' +
|
|
54
54
|
`key: "${set.key}"` +
|
|
55
|
-
`\n stackLocation: ${(0, stack_util_1.DyFM_getConstructionStackLocation)(
|
|
55
|
+
`\n stackLocation: ${(0, stack_util_1.DyFM_getConstructionStackLocation)(2)}`);
|
|
56
56
|
}
|
|
57
57
|
if (set.dependencyDataName) {
|
|
58
58
|
if (set.required === false) {
|
|
59
59
|
log_util_1.DyFM_Log.warn('DYNAMO WARNING: ', '\n required is not recommended to be false if dependency is set ' +
|
|
60
60
|
`key: "${set.key}"` +
|
|
61
|
-
`\n stackLocation: ${(0, stack_util_1.DyFM_getConstructionStackLocation)(
|
|
61
|
+
`\n stackLocation: ${(0, stack_util_1.DyFM_getConstructionStackLocation)(2)}`);
|
|
62
62
|
}
|
|
63
63
|
else if (set.required === undefined) {
|
|
64
64
|
log_util_1.DyFM_Log.warn('DYNAMO WARNING: ', '\n required is recommended to be set if dependency is set. ' +
|
|
65
65
|
`It will be set to true by while you are not setting it. ` +
|
|
66
66
|
`key: "${set.key}"` +
|
|
67
|
-
`\n stackLocation: ${(0, stack_util_1.DyFM_getConstructionStackLocation)(
|
|
67
|
+
`\n stackLocation: ${(0, stack_util_1.DyFM_getConstructionStackLocation)(2)}`);
|
|
68
68
|
set.required = true;
|
|
69
69
|
}
|
|
70
70
|
}
|
|
@@ -73,13 +73,13 @@ class DyFM_DataProperty_Params extends DyFM_DataProperty_Settings {
|
|
|
73
73
|
log_util_1.DyFM_Log.warn('DYNAMO WARNING: ', '\n vectorizedFrom and index are not recommended to be set at the same time. ' +
|
|
74
74
|
`It will be set to false by while you are not setting it. ` +
|
|
75
75
|
`key: "${set.key}"` +
|
|
76
|
-
`\n stackLocation: ${(0, stack_util_1.DyFM_getConstructionStackLocation)(
|
|
76
|
+
`\n stackLocation: ${(0, stack_util_1.DyFM_getConstructionStackLocation)(2)}`);
|
|
77
77
|
set.index = false;
|
|
78
78
|
}
|
|
79
79
|
if (!set.vectorizeUseIndex) {
|
|
80
80
|
throw new Error('vectorizeUseIndex is required if vectorizedFrom is set. ' +
|
|
81
81
|
`"${this.key}" property.` +
|
|
82
|
-
`\n stackLocation: ${(0, stack_util_1.DyFM_getConstructionStackLocation)(
|
|
82
|
+
`\n stackLocation: ${(0, stack_util_1.DyFM_getConstructionStackLocation)(2)}`);
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
Object.assign(this, set);
|
|
@@ -87,7 +87,7 @@ class DyFM_DataProperty_Params extends DyFM_DataProperty_Settings {
|
|
|
87
87
|
else {
|
|
88
88
|
log_util_1.DyFM_Log.error('DYNAMO ERROR: ', '\nMISSING DynamoBEDataPropertyParams constructor input ' +
|
|
89
89
|
`key: "${this.key}"` +
|
|
90
|
-
`\n stackLocation: ${(0, stack_util_1.DyFM_getConstructionStackLocation)(
|
|
90
|
+
`\n stackLocation: ${(0, stack_util_1.DyFM_getConstructionStackLocation)(2)}`);
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
constructed() {
|
|
@@ -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,45 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error codes for crypto operations
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Configuration options for encryption/decryption
|
|
6
|
+
*/
|
|
7
|
+
export interface CryptoConfig {
|
|
8
|
+
ivLength?: number;
|
|
9
|
+
saltLength?: number;
|
|
10
|
+
keyIterations?: number;
|
|
11
|
+
keySize?: number;
|
|
12
|
+
}
|
|
1
13
|
/**
|
|
2
14
|
* A utility class for secure encryption and decryption of data
|
|
3
|
-
* Uses AES-256-CBC with
|
|
15
|
+
* Uses AES-256-CBC with PBKDF2 key derivation
|
|
4
16
|
*/
|
|
5
17
|
export declare class DyFM_Crypto {
|
|
18
|
+
private static readonly DEFAULT_CONFIG;
|
|
6
19
|
private static readonly defaultErrorUserMsg;
|
|
7
20
|
/**
|
|
8
|
-
* Validates the
|
|
21
|
+
* Validates the input data and key
|
|
22
|
+
* @throws {DyFM_Error} if validation fails
|
|
9
23
|
*/
|
|
10
|
-
private static
|
|
24
|
+
private static validateInput;
|
|
11
25
|
/**
|
|
12
|
-
*
|
|
26
|
+
* Generates a deterministic IV based on the input data and key
|
|
13
27
|
*/
|
|
14
|
-
private static
|
|
28
|
+
private static generateIV;
|
|
15
29
|
/**
|
|
16
|
-
*
|
|
30
|
+
* Generates a deterministic salt based on the input data and key
|
|
17
31
|
*/
|
|
18
|
-
private static
|
|
32
|
+
private static generateSalt;
|
|
19
33
|
/**
|
|
20
|
-
* Derives a
|
|
34
|
+
* Derives a key using PBKDF2
|
|
21
35
|
*/
|
|
22
36
|
private static deriveKey;
|
|
23
37
|
/**
|
|
24
|
-
*
|
|
38
|
+
* Safely serializes data to JSON
|
|
25
39
|
*/
|
|
26
|
-
private static
|
|
40
|
+
private static safeSerialize;
|
|
41
|
+
/**
|
|
42
|
+
* Safely deserializes JSON data
|
|
43
|
+
*/
|
|
44
|
+
private static safeDeserialize;
|
|
27
45
|
/**
|
|
28
|
-
* Encrypts data using AES-256-CBC
|
|
46
|
+
* Encrypts data using AES-256-CBC
|
|
29
47
|
* @param data The data to encrypt
|
|
30
48
|
* @param key The encryption key
|
|
49
|
+
* @param config Optional configuration
|
|
31
50
|
* @returns URL-safe encrypted string
|
|
32
51
|
* @throws {DyFM_Error} if encryption fails
|
|
33
52
|
*/
|
|
34
|
-
static encrypt<T>(data: T, key: string): string;
|
|
53
|
+
static encrypt<T>(data: T, key: string, config?: CryptoConfig): string;
|
|
35
54
|
/**
|
|
36
55
|
* Decrypts data that was encrypted using encrypt()
|
|
37
56
|
* @param encryptedData The encrypted data
|
|
38
57
|
* @param key The decryption key
|
|
58
|
+
* @param config Optional configuration
|
|
39
59
|
* @returns The decrypted data
|
|
40
60
|
* @throws {DyFM_Error} if decryption fails
|
|
41
61
|
*/
|
|
42
|
-
static decrypt<T>(encryptedData: string, key: string): T;
|
|
62
|
+
static decrypt<T>(encryptedData: string, key: string, config?: CryptoConfig): T;
|
|
63
|
+
/**
|
|
64
|
+
* Generates a secure random key
|
|
65
|
+
* @param length Length of the key in bytes (default: 32)
|
|
66
|
+
* @returns A secure random key
|
|
67
|
+
*/
|
|
68
|
+
static generateKey(length?: number): string;
|
|
69
|
+
/**
|
|
70
|
+
* Validates if a string is a valid encrypted data
|
|
71
|
+
* @param encryptedData The data to validate
|
|
72
|
+
* @returns true if the data appears to be valid encrypted data
|
|
73
|
+
*/
|
|
74
|
+
static isValidEncryptedData(encryptedData: string): boolean;
|
|
43
75
|
/**
|
|
44
76
|
* Gets default error settings
|
|
45
77
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/crypto/_collections/crypto.util.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAEY;
|
|
1
|
+
{"version":3,"file":"crypto.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/crypto/_collections/crypto.util.ts"],"names":[],"mappings":"AAOA;;GAEG;AASH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAKpC;IACF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAEY;IAMvD;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAkB5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAKzB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAK3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAOxB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAY5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IA6B9B;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM;IAsCtE;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,CAAC;IAwD/E;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,GAAE,MAAW,GAAG,MAAM;IAI/C;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAO3D;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;CAQvC"}
|