@futdevpro/fsm-dynamo 1.10.37 → 1.10.38

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.
@@ -1 +1 @@
1
- {"version":3,"file":"global-settings.const.d.ts","sourceRoot":"","sources":["../../../src/_collections/constants/global-settings.const.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EACrB,MAAM,gEAAgE,CAAC;AAIxE,eAAO,MAAM,oBAAoB,EAAE,oBAIlC,CAAC"}
1
+ {"version":3,"file":"global-settings.const.d.ts","sourceRoot":"","sources":["../../../src/_collections/constants/global-settings.const.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EACrB,MAAM,gEAAgE,CAAC;AAIxE,eAAO,MAAM,oBAAoB,EAAE,oBAMlC,CAAC"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DyFM_global_settings = void 0;
4
4
  exports.DyFM_global_settings = {
5
+ systemShortCodeName: 'DyFM_UNKNOWN_SYSTEM',
5
6
  baseUrl: '/api',
6
7
  log_settings: {},
7
8
  };
@@ -1 +1 @@
1
- {"version":3,"file":"global-settings.const.js","sourceRoot":"","sources":["../../../src/_collections/constants/global-settings.const.ts"],"names":[],"mappings":";;;AAQa,QAAA,oBAAoB,GAAyB;IACxD,OAAO,EAAE,MAAM;IAEf,YAAY,EAAE,EAAE;CACjB,CAAC"}
1
+ {"version":3,"file":"global-settings.const.js","sourceRoot":"","sources":["../../../src/_collections/constants/global-settings.const.ts"],"names":[],"mappings":";;;AAQa,QAAA,oBAAoB,GAAyB;IACxD,mBAAmB,EAAE,qBAAqB;IAE1C,OAAO,EAAE,MAAM;IAEf,YAAY,EAAE,EAAE;CACjB,CAAC"}
@@ -7,6 +7,7 @@ import { DyFM_GlobalLog_Settings } from './global-log-settings.interface';
7
7
  *
8
8
  */
9
9
  export interface DyFM_Global_Settings {
10
+ systemShortCodeName: string;
10
11
  /**
11
12
  * this will be used as the main baseUrl for the application,
12
13
  * this is not required, but we suggest to use at least a '/api' as base route
@@ -1 +1 @@
1
- {"version":3,"file":"global-settings.interface.d.ts","sourceRoot":"","sources":["../../../../src/_models/interfaces/environment/global-settings.interface.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,YAAY,EAAE,uBAAuB,CAAC;CACvC"}
1
+ {"version":3,"file":"global-settings.interface.d.ts","sourceRoot":"","sources":["../../../../src/_models/interfaces/environment/global-settings.interface.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,YAAY,EAAE,uBAAuB,CAAC;CACvC"}
@@ -1,13 +1,6 @@
1
1
  /**
2
2
  * Error codes for crypto operations
3
3
  */
4
- export declare enum CryptoErrorCode {
5
- INVALID_INPUT = "DyFM-CRY-EA0",
6
- DECRYPTION_FAILED = "DyFM-CRY-DRY",
7
- ENCRYPTION_FAILED = "DyFM-CRY-ENF",
8
- INVALID_KEY = "DyFM-CRY-IKY",
9
- INVALID_DATA = "DyFM-CRY-IDT"
10
- }
11
4
  /**
12
5
  * Configuration options for encryption/decryption
13
6
  */
@@ -23,35 +16,36 @@ export interface CryptoConfig {
23
16
  */
24
17
  export declare class DyFM_Crypto {
25
18
  private static readonly DEFAULT_CONFIG;
19
+ private static readonly defaultErrorUserMsg;
26
20
  /**
27
21
  * Validates the input data and key
28
22
  * @throws {DyFM_Error} if validation fails
29
23
  */
30
24
  private static validateInput;
31
25
  /**
32
- * Generates a secure random padding
33
- * @param length Length of the padding in bytes
26
+ * Generates a deterministic IV based on the input data and key
27
+ */
28
+ private static generateIV;
29
+ /**
30
+ * Generates a deterministic salt based on the input data and key
34
31
  */
35
- private static generatePadding;
32
+ private static generateSalt;
36
33
  /**
37
34
  * Derives a key using PBKDF2
38
- * @param key The input key
39
- * @param salt The salt to use
40
- * @param config Configuration options
41
35
  */
42
36
  private static deriveKey;
43
37
  /**
44
38
  * Safely serializes data to JSON
45
- * @param data The data to serialize
46
- * @returns Serialized data as string
47
39
  */
48
40
  private static safeSerialize;
49
41
  /**
50
42
  * Safely deserializes JSON data
51
- * @param data The JSON string to deserialize
52
- * @returns Deserialized data
53
43
  */
54
44
  private static safeDeserialize;
45
+ /**
46
+ * Gets default error settings
47
+ */
48
+ private static getDefaultErrorSettings;
55
49
  /**
56
50
  * Encrypts data using AES-256-CBC
57
51
  * @param data The data to encrypt
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/crypto/_collections/crypto.util.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,oBAAY,eAAe;IACzB,aAAa,iBAAiB;IAC9B,iBAAiB,iBAAiB;IAClC,iBAAiB,iBAAiB;IAClC,WAAW,iBAAiB;IAC5B,YAAY,iBAAiB;CAC9B;AAED;;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;IAMF;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAkB5B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAI9B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAOxB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAY5B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAY9B;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM;IAyCtE;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,CAAC;IAoD/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;CAM5D"}
1
+ {"version":3,"file":"crypto.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/crypto/_collections/crypto.util.ts"],"names":[],"mappings":"AAKA;;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;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAQtC;;;;;;;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;CAM5D"}
@@ -1,31 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DyFM_Crypto = exports.CryptoErrorCode = void 0;
3
+ exports.DyFM_Crypto = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const CryptoJS = tslib_1.__importStar(require("crypto-js"));
6
6
  const error_control_model_1 = require("../../../_models/control-models/error.control-model");
7
- /**
8
- * Error codes for crypto operations
9
- */
10
- var CryptoErrorCode;
11
- (function (CryptoErrorCode) {
12
- CryptoErrorCode["INVALID_INPUT"] = "DyFM-CRY-EA0";
13
- CryptoErrorCode["DECRYPTION_FAILED"] = "DyFM-CRY-DRY";
14
- CryptoErrorCode["ENCRYPTION_FAILED"] = "DyFM-CRY-ENF";
15
- CryptoErrorCode["INVALID_KEY"] = "DyFM-CRY-IKY";
16
- CryptoErrorCode["INVALID_DATA"] = "DyFM-CRY-IDT";
17
- })(CryptoErrorCode || (exports.CryptoErrorCode = CryptoErrorCode = {}));
18
7
  /**
19
8
  * A utility class for secure encryption and decryption of data
20
9
  * Uses AES-256-CBC with PBKDF2 key derivation
21
10
  */
22
11
  class DyFM_Crypto {
23
12
  static DEFAULT_CONFIG = {
24
- ivLength: 16,
25
- saltLength: 16,
13
+ ivLength: 16, // 128 bits
14
+ saltLength: 16, // 128 bits
26
15
  keyIterations: 10000,
27
- keySize: 256 / 32
16
+ keySize: 8 // 256 bits (8 * 32)
28
17
  };
18
+ static defaultErrorUserMsg = `We encountered an unhandled Authentication Error, ` +
19
+ `\nplease contact the responsible development team.`;
29
20
  // Tömör: kb. 60–80 karakteres token, nem 200+
30
21
  // Nem szabványos: nehéz visszafejteni
31
22
  // Használható cookie, header, URL-ben
@@ -34,33 +25,37 @@ class DyFM_Crypto {
34
25
  * @throws {DyFM_Error} if validation fails
35
26
  */
36
27
  static validateInput(data, key) {
37
- if (data === undefined || data === null) {
28
+ if (!key || typeof key !== 'string' || key.trim().length === 0) {
38
29
  throw new error_control_model_1.DyFM_Error({
39
- message: 'Data is required',
40
- error: new Error('Data is required'),
41
- errorCode: CryptoErrorCode.INVALID_DATA
30
+ ...this.getDefaultErrorSettings('validateInput'),
31
+ errorCode: 'DyFM-CRY-IKY',
32
+ message: 'Invalid encryption key'
42
33
  });
43
34
  }
44
- if (!key || typeof key !== 'string' || key.trim().length === 0) {
35
+ if (data === undefined || data === null) {
45
36
  throw new error_control_model_1.DyFM_Error({
46
- message: 'Valid key is required',
47
- error: new Error('Key must be a non-empty string'),
48
- errorCode: CryptoErrorCode.INVALID_KEY
37
+ ...this.getDefaultErrorSettings('validateInput'),
38
+ errorCode: 'DyFM-CRY-IDT',
39
+ message: 'Invalid data to encrypt/decrypt'
49
40
  });
50
41
  }
51
42
  }
52
43
  /**
53
- * Generates a secure random padding
54
- * @param length Length of the padding in bytes
44
+ * Generates a deterministic IV based on the input data and key
55
45
  */
56
- static generatePadding(length) {
57
- return CryptoJS.lib.WordArray.random(length).toString();
46
+ static generateIV(data, key, config) {
47
+ const hash = CryptoJS.SHA256(data + key);
48
+ return CryptoJS.lib.WordArray.create(hash.words.slice(0, config.ivLength / 4));
49
+ }
50
+ /**
51
+ * Generates a deterministic salt based on the input data and key
52
+ */
53
+ static generateSalt(data, key, config) {
54
+ const hash = CryptoJS.SHA256(key + data);
55
+ return CryptoJS.lib.WordArray.create(hash.words.slice(0, config.saltLength / 4));
58
56
  }
59
57
  /**
60
58
  * Derives a key using PBKDF2
61
- * @param key The input key
62
- * @param salt The salt to use
63
- * @param config Configuration options
64
59
  */
65
60
  static deriveKey(key, salt, config) {
66
61
  return CryptoJS.PBKDF2(key, salt, {
@@ -70,8 +65,6 @@ class DyFM_Crypto {
70
65
  }
71
66
  /**
72
67
  * Safely serializes data to JSON
73
- * @param data The data to serialize
74
- * @returns Serialized data as string
75
68
  */
76
69
  static safeSerialize(data) {
77
70
  try {
@@ -79,29 +72,52 @@ class DyFM_Crypto {
79
72
  }
80
73
  catch (error) {
81
74
  throw new error_control_model_1.DyFM_Error({
82
- message: 'Failed to serialize data',
83
- error: error instanceof Error ? error : new Error(String(error)),
84
- errorCode: CryptoErrorCode.INVALID_DATA
75
+ ...this.getDefaultErrorSettings('safeSerialize', error),
76
+ errorCode: 'DyFM-CRY-SER',
77
+ message: 'Failed to serialize data'
85
78
  });
86
79
  }
87
80
  }
88
81
  /**
89
82
  * Safely deserializes JSON data
90
- * @param data The JSON string to deserialize
91
- * @returns Deserialized data
92
83
  */
93
84
  static safeDeserialize(data) {
94
85
  try {
95
- return JSON.parse(data);
86
+ let parsed = JSON.parse(data);
87
+ // Handle double-stringified JSON
88
+ if (typeof parsed === 'string') {
89
+ try {
90
+ parsed = JSON.parse(parsed);
91
+ }
92
+ catch {
93
+ // If second parse fails, return the string as is
94
+ return parsed;
95
+ }
96
+ }
97
+ // Handle primitive values
98
+ if (typeof parsed === 'string' || typeof parsed === 'number' || typeof parsed === 'boolean') {
99
+ return parsed;
100
+ }
101
+ return parsed;
96
102
  }
97
103
  catch (error) {
98
104
  throw new error_control_model_1.DyFM_Error({
99
- message: 'Failed to deserialize data',
100
- error: error instanceof Error ? error : new Error(String(error)),
101
- errorCode: CryptoErrorCode.DECRYPTION_FAILED
105
+ ...this.getDefaultErrorSettings('safeDeserialize', error),
106
+ errorCode: 'DyFM-CRY-DES',
107
+ message: 'Failed to deserialize data'
102
108
  });
103
109
  }
104
110
  }
111
+ /**
112
+ * Gets default error settings
113
+ */
114
+ static getDefaultErrorSettings(operation, error) {
115
+ return {
116
+ message: `Crypto operation '${operation}' failed`,
117
+ error: error instanceof Error ? error : new Error(String(error)),
118
+ errorCode: 'DyFM-CRY-ERR'
119
+ };
120
+ }
105
121
  /**
106
122
  * Encrypts data using AES-256-CBC
107
123
  * @param data The data to encrypt
@@ -114,17 +130,15 @@ class DyFM_Crypto {
114
130
  try {
115
131
  this.validateInput(data, key);
116
132
  const finalConfig = { ...this.DEFAULT_CONFIG, ...config };
117
- // Generate random IV and salt
118
- const iv = CryptoJS.lib.WordArray.random(finalConfig.ivLength);
119
- const salt = CryptoJS.lib.WordArray.random(finalConfig.saltLength);
133
+ // Convert data to string
134
+ const dataStr = this.safeSerialize(data);
135
+ // Generate deterministic IV and salt based on data and key
136
+ const iv = this.generateIV(dataStr, key, finalConfig);
137
+ const salt = this.generateSalt(dataStr, key, finalConfig);
120
138
  // Derive key using PBKDF2
121
139
  const derivedKey = this.deriveKey(key, salt, finalConfig);
122
- // Convert data to string and add random padding
123
- const dataStr = this.safeSerialize(data);
124
- const padding = this.generatePadding(16);
125
- const paddedData = padding + dataStr;
126
140
  // Encrypt the data
127
- const encrypted = CryptoJS.AES.encrypt(paddedData, derivedKey, {
141
+ const encrypted = CryptoJS.AES.encrypt(dataStr, derivedKey, {
128
142
  iv: iv,
129
143
  mode: CryptoJS.mode.CBC,
130
144
  padding: CryptoJS.pad.Pkcs7
@@ -139,9 +153,8 @@ class DyFM_Crypto {
139
153
  }
140
154
  catch (error) {
141
155
  throw new error_control_model_1.DyFM_Error({
142
- message: 'Error encrypting data',
143
- error: error instanceof Error ? error : new Error(String(error)),
144
- errorCode: CryptoErrorCode.ENCRYPTION_FAILED
156
+ ...this.getDefaultErrorSettings('encrypt', error),
157
+ errorCode: 'DyFM-CRY-ENC',
145
158
  });
146
159
  }
147
160
  }
@@ -163,6 +176,11 @@ class DyFM_Crypto {
163
176
  .replace(/_/g, '/');
164
177
  // Parse the combined data
165
178
  const combined = CryptoJS.enc.Base64.parse(base64);
179
+ // Validate minimum length (IV + Salt + minimum ciphertext)
180
+ const minLength = (finalConfig.ivLength + finalConfig.saltLength + 16) / 4; // 16 bytes minimum for ciphertext
181
+ if (combined.words.length < minLength) {
182
+ throw new Error('Invalid encrypted data length');
183
+ }
166
184
  // Extract IV, salt, and ciphertext
167
185
  const iv = CryptoJS.lib.WordArray.create(combined.words.slice(0, finalConfig.ivLength / 4));
168
186
  const salt = CryptoJS.lib.WordArray.create(combined.words.slice(finalConfig.ivLength / 4, (finalConfig.ivLength + finalConfig.saltLength) / 4));
@@ -175,16 +193,14 @@ class DyFM_Crypto {
175
193
  mode: CryptoJS.mode.CBC,
176
194
  padding: CryptoJS.pad.Pkcs7
177
195
  });
178
- // Remove padding and parse JSON
196
+ // Parse JSON
179
197
  const decryptedStr = decrypted.toString(CryptoJS.enc.Utf8);
180
- const jsonStr = decryptedStr.slice(32); // Remove 16-byte padding
181
- return this.safeDeserialize(jsonStr);
198
+ return this.safeDeserialize(decryptedStr);
182
199
  }
183
200
  catch (error) {
184
201
  throw new error_control_model_1.DyFM_Error({
185
- message: 'Error decrypting data',
186
- error: error instanceof Error ? error : new Error(String(error)),
187
- errorCode: CryptoErrorCode.DECRYPTION_FAILED
202
+ ...this.getDefaultErrorSettings('decrypt', error),
203
+ errorCode: 'DyFM-CRY-DRY',
188
204
  });
189
205
  }
190
206
  }
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.util.js","sourceRoot":"","sources":["../../../../src/_modules/crypto/_collections/crypto.util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crypto.util.js","sourceRoot":"","sources":["../../../../src/_modules/crypto/_collections/crypto.util.ts"],"names":[],"mappings":"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"}