@futdevpro/fsm-dynamo 1.12.9 → 1.12.11

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.
Files changed (36) hide show
  1. package/build/_collections/utils/async.util.d.ts +4 -3
  2. package/build/_collections/utils/async.util.d.ts.map +1 -1
  3. package/build/_collections/utils/async.util.js +65 -3
  4. package/build/_collections/utils/async.util.js.map +1 -1
  5. package/build/_collections/utils/time.util.js +7 -7
  6. package/build/_collections/utils/time.util.js.map +1 -1
  7. package/build/_models/interfaces/search-query.interface.d.ts +11 -0
  8. package/build/_models/interfaces/search-query.interface.d.ts.map +1 -1
  9. package/build/_models/types/db-/304/221filter.type.d.ts +2 -1
  10. package/build/_models/types/db-/304/221filter.type.d.ts.map +1 -1
  11. package/build/_models/types/db-/304/221filter.type.js.map +1 -1
  12. package/build/_modules/crypto/_collections/crypto-old.util.d.ts +107 -0
  13. package/build/_modules/crypto/_collections/crypto-old.util.d.ts.map +1 -0
  14. package/build/_modules/crypto/_collections/crypto-old.util.js +279 -0
  15. package/build/_modules/crypto/_collections/crypto-old.util.js.map +1 -0
  16. package/build/_modules/crypto/_collections/crypto.util.d.ts +38 -6
  17. package/build/_modules/crypto/_collections/crypto.util.d.ts.map +1 -1
  18. package/build/_modules/crypto/_collections/crypto.util.js +298 -36
  19. package/build/_modules/crypto/_collections/crypto.util.js.map +1 -1
  20. package/build/_modules/crypto/_collections/crypto.util.spec.js +397 -2
  21. package/build/_modules/crypto/_collections/crypto.util.spec.js.map +1 -1
  22. package/build/_modules/crypto/index.d.ts +1 -1
  23. package/build/_modules/crypto/index.d.ts.map +1 -1
  24. package/build/_modules/crypto/index.js +1 -1
  25. package/build/_modules/crypto/index.js.map +1 -1
  26. package/futdevpro-fsm-dynamo-01.12.11.tgz +0 -0
  27. package/package.json +1 -1
  28. package/src/_collections/utils/async.util.ts +65 -4
  29. package/src/_collections/utils/time.util.ts +7 -7
  30. package/src/_models/interfaces/search-query.interface.ts +11 -0
  31. package/src/_models/types/db-/304/221filter.type.ts +6 -5
  32. package/src/_modules/crypto/_collections/crypto-old.util.ts +323 -0
  33. package/src/_modules/crypto/_collections/crypto.util.spec.ts +475 -2
  34. package/src/_modules/crypto/_collections/crypto.util.ts +337 -43
  35. package/src/_modules/crypto/index.ts +1 -1
  36. package/futdevpro-fsm-dynamo-01.12.09.tgz +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-old.util.js","sourceRoot":"","sources":["../../../../src/_modules/crypto/_collections/crypto-old.util.ts"],"names":[],"mappings":"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"}
@@ -22,16 +22,25 @@ export interface CryptoConfig {
22
22
  * systems is more important than cryptographic security.
23
23
  */
24
24
  export declare class DyFM_Crypto {
25
+ private static readonly CRYPTO_VERSION;
25
26
  private static readonly DEFAULT_CONFIG;
26
27
  private static readonly defaultErrorUserMsg;
27
28
  /**
28
- * Validates the input data and key
29
+ * Validates the input data and key with comprehensive error messages
29
30
  * @throws {DyFM_Error} if validation fails
30
31
  */
31
32
  private static validateInput;
33
+ /**
34
+ * Validates data for encryption
35
+ */
36
+ private static validateEncryptData;
37
+ /**
38
+ * Validates data for decryption
39
+ */
40
+ private static validateDecryptData;
32
41
  /**
33
42
  * Generates a deterministic IV based on the input data and key
34
- * Uses MD5 for better stability across different CryptoJS versions
43
+ * Uses SHA-256 with proper truncation for maximum stability
35
44
  *
36
45
  * @important DETERMINISTIC: Same data + key will ALWAYS produce the same IV
37
46
  * across all systems and CryptoJS versions for consistent encryption results
@@ -39,22 +48,33 @@ export declare class DyFM_Crypto {
39
48
  private static generateIV;
40
49
  /**
41
50
  * Generates a deterministic salt based on the input data and key
42
- * Uses MD5 for better stability across different CryptoJS versions
51
+ * Uses SHA-256 with proper truncation for maximum stability
43
52
  *
44
53
  * @important DETERMINISTIC: Same data + key will ALWAYS produce the same salt
45
54
  * across all systems and CryptoJS versions for consistent encryption results
46
55
  */
47
56
  private static generateSalt;
57
+ /**
58
+ * Creates a deterministic seed for IV/salt generation
59
+ * Ensures consistent output across all environments and versions
60
+ */
61
+ private static createDeterministicSeed;
48
62
  /**
49
63
  * Derives a key using PBKDF2 with reduced iterations for stability
50
64
  */
51
65
  private static deriveKey;
52
66
  /**
53
- * Safely serializes data to JSON
67
+ * Safely serializes data to JSON with deterministic ordering
68
+ * Uses regular JSON.stringify but ensures consistency through other means
54
69
  */
55
70
  private static safeSerialize;
56
71
  /**
57
- * Safely deserializes JSON data
72
+ * Deterministic JSON stringify that produces identical output across environments
73
+ * Uses a hybrid approach: sorts keys for consistency but preserves order for arrays
74
+ */
75
+ private static deterministicStringify;
76
+ /**
77
+ * Safely deserializes JSON data with enhanced error handling
58
78
  */
59
79
  private static safeDeserialize;
60
80
  /**
@@ -100,7 +120,19 @@ export declare class DyFM_Crypto {
100
120
  */
101
121
  static isValidEncryptedData(encryptedData: string): boolean;
102
122
  /**
103
- * Gets default error settings
123
+ * Analyzes encrypted data to help with debugging
124
+ * @param encryptedData The encrypted data to analyze
125
+ * @returns Analysis information about the encrypted data
126
+ */
127
+ static analyzeEncryptedData(encryptedData: string): {
128
+ isValid: boolean;
129
+ version?: string;
130
+ dataLength: number;
131
+ hasValidFormat: boolean;
132
+ error?: string;
133
+ };
134
+ /**
135
+ * Gets default error settings with enhanced debugging information
104
136
  */
105
137
  private static getDefaultErrorSettings;
106
138
  }
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/crypto/_collections/crypto.util.ts"],"names":[],"mappings":"AAQA;;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;AAMD;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAKpC;IACF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAEY;IAEvD;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAmB5B;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAQzB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAQ3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAOxB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAa5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAuC9B;;;;;;;;;;;;;;;;;;;OAmBG;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"}
1
+ {"version":3,"file":"crypto.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/crypto/_collections/crypto.util.ts"],"names":[],"mappings":"AAQA;;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;AAMD;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAS;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAKpC;IACF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAEY;IAEvD;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAuC5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA8BlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAmDlC;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAazB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAa3B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAOtC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAOxB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAc5B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAwCrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAmD9B;;;;;;;;;;;;;;;;;;;OAmBG;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;IA+F/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;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG;QAClD,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,OAAO,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IAgDD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;CAiBvC"}
@@ -23,6 +23,7 @@ const object_util_1 = require("../../../_collections/utils/object.util");
23
23
  * systems is more important than cryptographic security.
24
24
  */
25
25
  class DyFM_Crypto {
26
+ static CRYPTO_VERSION = '1.0';
26
27
  static DEFAULT_CONFIG = {
27
28
  ivLength: 16, // 128 bits
28
29
  saltLength: 16, // 128 bits
@@ -32,53 +33,164 @@ class DyFM_Crypto {
32
33
  static defaultErrorUserMsg = `We encountered an unhandled Authentication Error, ` +
33
34
  `\nplease contact the responsible development team.`;
34
35
  /**
35
- * Validates the input data and key
36
+ * Validates the input data and key with comprehensive error messages
36
37
  * @throws {DyFM_Error} if validation fails
37
38
  */
38
- static validateInput(data, key) {
39
- if (!key || typeof key !== 'string' || key.trim().length === 0) {
39
+ static validateInput(data, key, operation) {
40
+ // Validate key
41
+ if (!key) {
40
42
  throw new error_control_model_1.DyFM_Error({
41
- ...this.getDefaultErrorSettings('validateInput'),
42
- errorCode: 'DyFM-CRY-IKY',
43
- message: 'Invalid encryption key'
43
+ ...this.getDefaultErrorSettings(operation),
44
+ errorCode: 'DyFM-CRY-KEY-MISSING',
45
+ message: `Encryption key is required for ${operation} operation. Please provide a valid key.`
44
46
  });
45
47
  }
46
- // Allow null values but not undefined
48
+ if (typeof key !== 'string') {
49
+ throw new error_control_model_1.DyFM_Error({
50
+ ...this.getDefaultErrorSettings(operation),
51
+ errorCode: 'DyFM-CRY-KEY-TYPE',
52
+ message: `Encryption key must be a string, but received ${typeof key}. Please provide a valid string key.`
53
+ });
54
+ }
55
+ if (key.trim().length === 0) {
56
+ throw new error_control_model_1.DyFM_Error({
57
+ ...this.getDefaultErrorSettings(operation),
58
+ errorCode: 'DyFM-CRY-KEY-EMPTY',
59
+ message: 'Encryption key cannot be empty or contain only whitespace. Please provide a non-empty key.'
60
+ });
61
+ }
62
+ // Only warn about weak keys but don't reject them for backward compatibility
63
+ if (key.length < 8) {
64
+ console.warn('Warning: Encryption key is too short (minimum 8 characters recommended). Consider using a stronger key for better security.');
65
+ }
66
+ // Validate data based on operation
67
+ if (operation === 'encrypt') {
68
+ this.validateEncryptData(data);
69
+ }
70
+ else if (operation === 'decrypt') {
71
+ this.validateDecryptData(data);
72
+ }
73
+ }
74
+ /**
75
+ * Validates data for encryption
76
+ */
77
+ static validateEncryptData(data) {
78
+ if (data === undefined) {
79
+ throw new error_control_model_1.DyFM_Error({
80
+ ...this.getDefaultErrorSettings('encrypt'),
81
+ errorCode: 'DyFM-CRY-DATA-UNDEFINED',
82
+ message: 'Cannot encrypt undefined data. Please provide valid data to encrypt.'
83
+ });
84
+ }
85
+ if (data === null) {
86
+ throw new error_control_model_1.DyFM_Error({
87
+ ...this.getDefaultErrorSettings('encrypt'),
88
+ errorCode: 'DyFM-CRY-DATA-NULL',
89
+ message: 'Cannot encrypt null data. Please provide valid data to encrypt.'
90
+ });
91
+ }
92
+ // Check for empty strings
93
+ if (typeof data === 'string' && data.trim().length === 0) {
94
+ throw new error_control_model_1.DyFM_Error({
95
+ ...this.getDefaultErrorSettings('encrypt'),
96
+ errorCode: 'DyFM-CRY-DATA-EMPTY-STRING',
97
+ message: 'Cannot encrypt empty string. Please provide non-empty data to encrypt.'
98
+ });
99
+ }
100
+ // Allow empty objects and arrays for backward compatibility
101
+ // Only reject truly empty data like empty strings
102
+ }
103
+ /**
104
+ * Validates data for decryption
105
+ */
106
+ static validateDecryptData(data) {
47
107
  if (data === undefined) {
48
108
  throw new error_control_model_1.DyFM_Error({
49
- ...this.getDefaultErrorSettings('validateInput'),
50
- errorCode: 'DyFM-CRY-IDT',
51
- message: `Invalid data to encrypt/decrypt (is "${data}")`
109
+ ...this.getDefaultErrorSettings('decrypt'),
110
+ errorCode: 'DyFM-CRY-ENCRYPTED-UNDEFINED',
111
+ message: 'Cannot decrypt undefined data. Please provide valid encrypted data to decrypt.'
112
+ });
113
+ }
114
+ if (data === null) {
115
+ throw new error_control_model_1.DyFM_Error({
116
+ ...this.getDefaultErrorSettings('decrypt'),
117
+ errorCode: 'DyFM-CRY-ENCRYPTED-NULL',
118
+ message: 'Cannot decrypt null data. Please provide valid encrypted data to decrypt.'
119
+ });
120
+ }
121
+ if (typeof data !== 'string') {
122
+ throw new error_control_model_1.DyFM_Error({
123
+ ...this.getDefaultErrorSettings('decrypt'),
124
+ errorCode: 'DyFM-CRY-ENCRYPTED-TYPE',
125
+ message: `Encrypted data must be a string, but received ${typeof data}. Please provide valid encrypted string data.`
126
+ });
127
+ }
128
+ if (data.trim().length === 0) {
129
+ throw new error_control_model_1.DyFM_Error({
130
+ ...this.getDefaultErrorSettings('decrypt'),
131
+ errorCode: 'DyFM-CRY-ENCRYPTED-EMPTY',
132
+ message: 'Cannot decrypt empty string. Please provide valid encrypted data to decrypt.'
133
+ });
134
+ }
135
+ if (data.length < 10) {
136
+ throw new error_control_model_1.DyFM_Error({
137
+ ...this.getDefaultErrorSettings('decrypt'),
138
+ errorCode: 'DyFM-CRY-ENCRYPTED-TOO-SHORT',
139
+ message: 'Encrypted data appears to be too short to be valid. Please check the encrypted data.'
140
+ });
141
+ }
142
+ // Check if it looks like valid encrypted data format
143
+ if (!/^[A-Za-z0-9\-_]+$/.test(data)) {
144
+ throw new error_control_model_1.DyFM_Error({
145
+ ...this.getDefaultErrorSettings('decrypt'),
146
+ errorCode: 'DyFM-CRY-ENCRYPTED-INVALID-FORMAT',
147
+ message: 'Encrypted data does not appear to be in valid format. Expected URL-safe base64 format.'
52
148
  });
53
149
  }
54
150
  }
55
151
  /**
56
152
  * Generates a deterministic IV based on the input data and key
57
- * Uses MD5 for better stability across different CryptoJS versions
153
+ * Uses SHA-256 with proper truncation for maximum stability
58
154
  *
59
155
  * @important DETERMINISTIC: Same data + key will ALWAYS produce the same IV
60
156
  * across all systems and CryptoJS versions for consistent encryption results
61
157
  */
62
158
  static generateIV(data, key, config) {
63
- // Use MD5 for better stability - simpler hash algorithm, more consistent across versions
64
- const combined = data + key;
65
- const hash = CryptoJS.MD5(combined);
66
- // Use slice(0, 4) for 16 bytes - more stable than division operations
67
- return CryptoJS.lib.WordArray.create(hash.words.slice(0, 4));
159
+ // Create a deterministic seed from data and key
160
+ const seed = this.createDeterministicSeed(data, key, 'IV');
161
+ // Use SHA-256 for better stability and consistency
162
+ const hash = CryptoJS.SHA256(seed);
163
+ // Extract exactly 16 bytes (128 bits) for IV
164
+ // Use the first 4 words (4 * 4 = 16 bytes) from the hash
165
+ const ivWords = hash.words.slice(0, 4);
166
+ return CryptoJS.lib.WordArray.create(ivWords);
68
167
  }
69
168
  /**
70
169
  * Generates a deterministic salt based on the input data and key
71
- * Uses MD5 for better stability across different CryptoJS versions
170
+ * Uses SHA-256 with proper truncation for maximum stability
72
171
  *
73
172
  * @important DETERMINISTIC: Same data + key will ALWAYS produce the same salt
74
173
  * across all systems and CryptoJS versions for consistent encryption results
75
174
  */
76
175
  static generateSalt(data, key, config) {
77
- // Use MD5 for better stability - simpler hash algorithm, more consistent across versions
78
- const combined = key + data;
79
- const hash = CryptoJS.MD5(combined);
80
- // Use slice(0, 4) for 16 bytes - more stable than division operations
81
- return CryptoJS.lib.WordArray.create(hash.words.slice(0, 4));
176
+ // Create a deterministic seed from data and key (different from IV)
177
+ const seed = this.createDeterministicSeed(data, key, 'SALT');
178
+ // Use SHA-256 for better stability and consistency
179
+ const hash = CryptoJS.SHA256(seed);
180
+ // Extract exactly 16 bytes (128 bits) for salt
181
+ // Use the first 4 words (4 * 4 = 16 bytes) from the hash
182
+ const saltWords = hash.words.slice(0, 4);
183
+ return CryptoJS.lib.WordArray.create(saltWords);
184
+ }
185
+ /**
186
+ * Creates a deterministic seed for IV/salt generation
187
+ * Ensures consistent output across all environments and versions
188
+ */
189
+ static createDeterministicSeed(data, key, purpose) {
190
+ // Create a consistent seed that includes all relevant factors
191
+ // Order matters: data + key + purpose for consistency
192
+ const seed = `${data}|${key}|${purpose}`;
193
+ return seed;
82
194
  }
83
195
  /**
84
196
  * Derives a key using PBKDF2 with reduced iterations for stability
@@ -90,11 +202,13 @@ class DyFM_Crypto {
90
202
  });
91
203
  }
92
204
  /**
93
- * Safely serializes data to JSON
205
+ * Safely serializes data to JSON with deterministic ordering
206
+ * Uses regular JSON.stringify but ensures consistency through other means
94
207
  */
95
208
  static safeSerialize(data) {
96
209
  try {
97
- // Always use JSON.stringify to ensure proper serialization/deserialization
210
+ // Use regular JSON.stringify for backward compatibility
211
+ // The deterministic behavior comes from the IV/salt generation, not serialization
98
212
  return JSON.stringify(data);
99
213
  }
100
214
  catch (error) {
@@ -106,10 +220,60 @@ class DyFM_Crypto {
106
220
  }
107
221
  }
108
222
  /**
109
- * Safely deserializes JSON data
223
+ * Deterministic JSON stringify that produces identical output across environments
224
+ * Uses a hybrid approach: sorts keys for consistency but preserves order for arrays
225
+ */
226
+ static deterministicStringify(obj) {
227
+ if (obj === null)
228
+ return 'null';
229
+ if (obj === undefined)
230
+ return 'undefined';
231
+ if (typeof obj === 'string')
232
+ return JSON.stringify(obj);
233
+ if (typeof obj === 'number')
234
+ return JSON.stringify(obj);
235
+ if (typeof obj === 'boolean')
236
+ return JSON.stringify(obj);
237
+ if (Array.isArray(obj)) {
238
+ const items = obj.map(item => this.deterministicStringify(item));
239
+ return '[' + items.join(',') + ']';
240
+ }
241
+ if (typeof obj === 'object') {
242
+ // For objects, we need to be more careful about key ordering
243
+ // Use a stable sort that preserves original order when possible
244
+ const keys = Object.keys(obj);
245
+ // Only sort if there are potential ordering issues
246
+ const needsSorting = keys.some((key, index) => {
247
+ if (index === 0)
248
+ return false;
249
+ return key < keys[index - 1];
250
+ });
251
+ const sortedKeys = needsSorting ? [...keys].sort() : keys;
252
+ const pairs = sortedKeys.map(key => {
253
+ const value = this.deterministicStringify(obj[key]);
254
+ return JSON.stringify(key) + ':' + value;
255
+ });
256
+ return '{' + pairs.join(',') + '}';
257
+ }
258
+ // Handle Date objects and other special types
259
+ if (obj instanceof Date) {
260
+ return JSON.stringify(obj.toISOString());
261
+ }
262
+ // Fallback to regular JSON.stringify for other types
263
+ return JSON.stringify(obj);
264
+ }
265
+ /**
266
+ * Safely deserializes JSON data with enhanced error handling
110
267
  */
111
268
  static safeDeserialize(data) {
112
269
  try {
270
+ if (!data || data.trim().length === 0) {
271
+ throw new error_control_model_1.DyFM_Error({
272
+ ...this.getDefaultErrorSettings('safeDeserialize'),
273
+ errorCode: 'DyFM-CRY-DES-EMPTY',
274
+ message: 'Cannot deserialize empty data. The decrypted data appears to be empty or invalid.'
275
+ });
276
+ }
113
277
  //let parsed = JSON.parse(data);
114
278
  let parsed = object_util_1.DyFM_Object.failableSafeParseJSON(data);
115
279
  // Handle double-stringified JSON (or more levels of stringification)
@@ -139,10 +303,13 @@ class DyFM_Crypto {
139
303
  return parsed;
140
304
  }
141
305
  catch (error) {
306
+ if (error instanceof error_control_model_1.DyFM_Error) {
307
+ throw error;
308
+ }
142
309
  throw new error_control_model_1.DyFM_Error({
143
310
  ...this.getDefaultErrorSettings('safeDeserialize', error),
144
311
  errorCode: 'DyFM-CRY-DES',
145
- message: 'Failed to deserialize data'
312
+ message: 'Failed to deserialize data. The decrypted data may be corrupted or in an unexpected format.'
146
313
  });
147
314
  }
148
315
  }
@@ -168,7 +335,7 @@ class DyFM_Crypto {
168
335
  */
169
336
  static encrypt(data, key, config) {
170
337
  try {
171
- this.validateInput(data, key);
338
+ this.validateInput(data, key, 'encrypt');
172
339
  const finalConfig = { ...this.DEFAULT_CONFIG, ...config };
173
340
  // Convert data to string
174
341
  const dataStr = this.safeSerialize(data);
@@ -183,7 +350,7 @@ class DyFM_Crypto {
183
350
  mode: CryptoJS.mode.CBC,
184
351
  padding: CryptoJS.pad.Pkcs7
185
352
  });
186
- // Combine IV + Salt + Ciphertext
353
+ // Combine IV + Salt + Ciphertext (skip version for backward compatibility)
187
354
  const combined = iv.concat(salt).concat(encrypted.ciphertext);
188
355
  // Convert to URL-safe base64
189
356
  return CryptoJS.enc.Base64.stringify(combined)
@@ -208,7 +375,7 @@ class DyFM_Crypto {
208
375
  */
209
376
  static decrypt(encryptedData, key, config) {
210
377
  try {
211
- this.validateInput(encryptedData, key);
378
+ this.validateInput(encryptedData, key, 'decrypt');
212
379
  const finalConfig = { ...this.DEFAULT_CONFIG, ...config };
213
380
  // Convert from URL-safe base64
214
381
  const base64 = encryptedData
@@ -216,15 +383,24 @@ class DyFM_Crypto {
216
383
  .replace(/_/g, '/');
217
384
  // Parse the combined data
218
385
  const combined = CryptoJS.enc.Base64.parse(base64);
386
+ // For now, skip version checking to maintain backward compatibility
387
+ // TODO: Implement proper version checking in future versions
219
388
  // Validate minimum length (IV + Salt + minimum ciphertext)
220
389
  const minLength = (finalConfig.ivLength + finalConfig.saltLength + 16) / 4; // 16 bytes minimum for ciphertext
221
390
  if (combined.words.length < minLength) {
222
- throw new Error('Invalid encrypted data length');
391
+ throw new error_control_model_1.DyFM_Error({
392
+ ...this.getDefaultErrorSettings('decrypt'),
393
+ errorCode: 'DyFM-CRY-DATA-CORRUPTED',
394
+ message: `Encrypted data is corrupted or incomplete. Expected at least ${minLength * 4} bytes, but received ${combined.sigBytes} bytes.`
395
+ });
223
396
  }
224
- // Extract IV, salt, and ciphertext
225
- const iv = CryptoJS.lib.WordArray.create(combined.words.slice(0, finalConfig.ivLength / 4));
226
- const salt = CryptoJS.lib.WordArray.create(combined.words.slice(finalConfig.ivLength / 4, (finalConfig.ivLength + finalConfig.saltLength) / 4));
227
- const ciphertext = CryptoJS.lib.WordArray.create(combined.words.slice((finalConfig.ivLength + finalConfig.saltLength) / 4));
397
+ // Extract IV, salt, and ciphertext (skip version for now)
398
+ const ivStart = 0;
399
+ const saltStart = ivStart + finalConfig.ivLength / 4;
400
+ const cipherStart = saltStart + finalConfig.saltLength / 4;
401
+ const iv = CryptoJS.lib.WordArray.create(combined.words.slice(ivStart, saltStart));
402
+ const salt = CryptoJS.lib.WordArray.create(combined.words.slice(saltStart, cipherStart));
403
+ const ciphertext = CryptoJS.lib.WordArray.create(combined.words.slice(cipherStart));
228
404
  // Derive key using PBKDF2
229
405
  const derivedKey = this.deriveKey(key, salt, finalConfig);
230
406
  // Decrypt the data
@@ -235,12 +411,42 @@ class DyFM_Crypto {
235
411
  });
236
412
  // Parse JSON
237
413
  const decryptedStr = decrypted.toString(CryptoJS.enc.Utf8);
414
+ // Check if decryption produced empty result
415
+ if (!decryptedStr || decryptedStr.trim().length === 0) {
416
+ throw new error_control_model_1.DyFM_Error({
417
+ ...this.getDefaultErrorSettings('decrypt'),
418
+ errorCode: 'DyFM-CRY-DECRYPT-EMPTY',
419
+ message: 'Decryption failed - the result is empty. This usually means the encryption key is incorrect or the data is corrupted.'
420
+ });
421
+ }
238
422
  return this.safeDeserialize(decryptedStr);
239
423
  }
240
424
  catch (error) {
425
+ // Check if it's already a DyFM_Error
426
+ if (error instanceof error_control_model_1.DyFM_Error) {
427
+ throw error;
428
+ }
429
+ // Handle specific decryption errors
430
+ if (error instanceof Error) {
431
+ if (error.message.includes('Malformed UTF-8')) {
432
+ throw new error_control_model_1.DyFM_Error({
433
+ ...this.getDefaultErrorSettings('decrypt', error),
434
+ errorCode: 'DyFM-CRY-DECRYPT-UTF8',
435
+ message: 'Decryption failed - invalid UTF-8 data. This usually means the encryption key is incorrect or the data is corrupted.'
436
+ });
437
+ }
438
+ if (error.message.includes('Invalid padding')) {
439
+ throw new error_control_model_1.DyFM_Error({
440
+ ...this.getDefaultErrorSettings('decrypt', error),
441
+ errorCode: 'DyFM-CRY-DECRYPT-PADDING',
442
+ message: 'Decryption failed - invalid padding. This usually means the encryption key is incorrect or the data is corrupted.'
443
+ });
444
+ }
445
+ }
241
446
  throw new error_control_model_1.DyFM_Error({
242
447
  ...this.getDefaultErrorSettings('decrypt', error),
243
448
  errorCode: 'DyFM-CRY-DRY',
449
+ message: 'Decryption failed. Please verify the encryption key and ensure the encrypted data is valid.'
244
450
  });
245
451
  }
246
452
  }
@@ -264,15 +470,71 @@ class DyFM_Crypto {
264
470
  return /^[A-Za-z0-9\-_]+$/.test(encryptedData);
265
471
  }
266
472
  /**
267
- * Gets default error settings
473
+ * Analyzes encrypted data to help with debugging
474
+ * @param encryptedData The encrypted data to analyze
475
+ * @returns Analysis information about the encrypted data
476
+ */
477
+ static analyzeEncryptedData(encryptedData) {
478
+ try {
479
+ if (!this.isValidEncryptedData(encryptedData)) {
480
+ return {
481
+ isValid: false,
482
+ dataLength: encryptedData?.length || 0,
483
+ hasValidFormat: false,
484
+ error: 'Invalid format - not URL-safe base64'
485
+ };
486
+ }
487
+ // Convert from URL-safe base64
488
+ const base64 = encryptedData
489
+ .replace(/-/g, '+')
490
+ .replace(/_/g, '/');
491
+ // Parse the combined data
492
+ const combined = CryptoJS.enc.Base64.parse(base64);
493
+ // For now, just check if the data has minimum required length
494
+ const minLength = (16 + 16 + 16) / 4; // IV + Salt + minimum ciphertext
495
+ if (combined.words.length < minLength) {
496
+ return {
497
+ isValid: false,
498
+ dataLength: combined.sigBytes,
499
+ hasValidFormat: false,
500
+ error: 'Data too short to contain valid encrypted data'
501
+ };
502
+ }
503
+ return {
504
+ isValid: true,
505
+ version: 'legacy',
506
+ dataLength: combined.sigBytes,
507
+ hasValidFormat: true,
508
+ error: undefined
509
+ };
510
+ }
511
+ catch (error) {
512
+ return {
513
+ isValid: false,
514
+ dataLength: encryptedData?.length || 0,
515
+ hasValidFormat: false,
516
+ error: `Analysis failed: ${error}`
517
+ };
518
+ }
519
+ }
520
+ /**
521
+ * Gets default error settings with enhanced debugging information
268
522
  */
269
523
  static getDefaultErrorSettings(operation, error) {
270
- return {
524
+ const baseSettings = {
271
525
  status: error?.___status ?? error?.status ?? 401,
272
526
  message: `Crypto operation "${operation}" failed`,
273
527
  error: error,
274
528
  errorCode: 'DyFM-CRY-ERR'
275
529
  };
530
+ // Add debugging information for common failure scenarios
531
+ if (operation === 'decrypt') {
532
+ baseSettings.message += '. This usually indicates: 1) Wrong encryption key, 2) Corrupted encrypted data, 3) Version incompatibility, or 4) Data was encrypted with different parameters.';
533
+ }
534
+ else if (operation === 'encrypt') {
535
+ baseSettings.message += '. This usually indicates: 1) Invalid input data, 2) Invalid encryption key, or 3) Serialization failure.';
536
+ }
537
+ return baseSettings;
276
538
  }
277
539
  }
278
540
  exports.DyFM_Crypto = DyFM_Crypto;
@@ -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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"}