@digitaldefiance/node-ecies-lib 1.0.7 → 1.0.8

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 (33) hide show
  1. package/README.md +11 -0
  2. package/dist/constants.d.ts +8 -5
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +43 -46
  5. package/dist/constants.js.map +1 -1
  6. package/dist/services/aes-gcm.d.ts +17 -10
  7. package/dist/services/aes-gcm.d.ts.map +1 -1
  8. package/dist/services/aes-gcm.js +33 -16
  9. package/dist/services/aes-gcm.js.map +1 -1
  10. package/dist/services/ecies/crypto-core.d.ts +5 -3
  11. package/dist/services/ecies/crypto-core.d.ts.map +1 -1
  12. package/dist/services/ecies/crypto-core.js +14 -9
  13. package/dist/services/ecies/crypto-core.js.map +1 -1
  14. package/dist/services/ecies/file.d.ts +23 -8
  15. package/dist/services/ecies/file.d.ts.map +1 -1
  16. package/dist/services/ecies/file.js +12 -9
  17. package/dist/services/ecies/file.js.map +1 -1
  18. package/dist/services/ecies/multi-recipient.js +46 -46
  19. package/dist/services/ecies/multi-recipient.js.map +1 -1
  20. package/dist/services/ecies/service.d.ts +2 -2
  21. package/dist/services/ecies/service.d.ts.map +1 -1
  22. package/dist/services/ecies/service.js +10 -8
  23. package/dist/services/ecies/service.js.map +1 -1
  24. package/dist/services/ecies/single-recipient.js +34 -34
  25. package/dist/services/ecies/single-recipient.js.map +1 -1
  26. package/dist/services/ecies/utilities.d.ts.map +1 -1
  27. package/dist/services/ecies/utilities.js +16 -11
  28. package/dist/services/ecies/utilities.js.map +1 -1
  29. package/dist/services/pbkdf2.d.ts +40 -8
  30. package/dist/services/pbkdf2.d.ts.map +1 -1
  31. package/dist/services/pbkdf2.js +68 -20
  32. package/dist/services/pbkdf2.js.map +1 -1
  33. package/package.json +2 -2
package/README.md CHANGED
@@ -330,6 +330,17 @@ Please read the contributing guidelines in the main repository.
330
330
 
331
331
  ## ChangeLog
332
332
 
333
+ ### Version 1.0.8
334
+
335
+ - Sun Oct 12 2025 22:30:00 GMT-0700 (Pacific Daylight Time)
336
+ - feat: upgrade to ecies-lib 1.0.26 with runtime configuration system
337
+ - Bump version to 1.0.8
338
+ - Update @digitaldefiance/ecies-lib dependency to 1.0.26
339
+ - Implement runtime configuration system with node-specific defaults
340
+ - Add PBKDF2 profile enum alignment and configuration overrides
341
+ - Remove obsolete AES-GCM E2E test file
342
+ - Update changelog for version 1.0.8
343
+
333
344
  ### Version 1.0.6
334
345
 
335
346
  - Sun Oct 12 2025 16:47:00 GMT-0700 (Pacific Daylight Time)
@@ -1,4 +1,4 @@
1
- import { IPBkdf2Consts } from '@digitaldefiance/ecies-lib';
1
+ import { IPBkdf2Consts, getRuntimeConfiguration, registerRuntimeConfiguration } from '@digitaldefiance/ecies-lib';
2
2
  import { CipherGCMTypes } from 'crypto';
3
3
  import { IChecksumConsts } from './interfaces/checksum-consts';
4
4
  import { IConstants } from './interfaces/constants';
@@ -11,13 +11,15 @@ import { IWrappedKeyConsts } from './interfaces/wrapped-key-consts';
11
11
  * These values are critical for data integrity and MUST NOT be changed
12
12
  * in an already established system as it will break all existing checksums.
13
13
  */
14
+ export declare const NODE_RUNTIME_CONFIGURATION_KEY: unique symbol;
15
+ type NodeRuntimeConfiguration = ReturnType<typeof getRuntimeConfiguration>;
16
+ type NodeRuntimeOverrides = Parameters<typeof registerRuntimeConfiguration>[1];
17
+ export declare const NODE_DEFAULTS_OVERRIDES: NodeRuntimeOverrides;
18
+ export declare function getNodeRuntimeConfiguration(): NodeRuntimeConfiguration;
19
+ export declare function registerNodeRuntimeConfiguration(configOrOverrides?: NodeRuntimeOverrides | NodeRuntimeConfiguration, options?: Parameters<typeof registerRuntimeConfiguration>[2]): NodeRuntimeConfiguration;
14
20
  export declare const CHECKSUM: IChecksumConsts;
15
21
  export declare const KEYRING: IKeyringConsts;
16
22
  export declare const PBKDF2: IPBkdf2Consts;
17
- /**
18
- * Predefined PBKDF2 configuration profiles for different use cases
19
- * These profiles provide standardized, well-tested parameter combinations
20
- */
21
23
  export declare const PBKDF2_PROFILES: PbkdfProfiles;
22
24
  export declare const WRAPPED_KEY: IWrappedKeyConsts;
23
25
  export declare const KEYRING_ALGORITHM_CONFIGURATION: CipherGCMTypes;
@@ -26,4 +28,5 @@ export declare const KEYRING_ALGORITHM_CONFIGURATION: CipherGCMTypes;
26
28
  */
27
29
  export declare const ENCRYPTION: IEncryptionConsts;
28
30
  export declare const Constants: IConstants;
31
+ export {};
29
32
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,eAYZ,CAAC;AAEZ,eAAO,MAAM,OAAO,EAAE,cAIX,CAAC;AAEZ,eAAO,MAAM,MAAM,EAAE,aAQV,CAAC;AAEZ;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,aA2CnB,CAAC;AAEZ,eAAO,MAAM,WAAW,EAAE,iBAKf,CAAC;AAEZ,eAAO,MAAM,+BAA+B,EACoB,cAAc,CAAC;AAE/E;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,iBAGd,CAAC;AAGZ,eAAO,MAAM,SAAS,EAAE,UAkCd,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,EACb,uBAAuB,EACvB,4BAA4B,EAC7B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,eAE1C,CAAC;AAEF,KAAK,wBAAwB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC3E,KAAK,oBAAoB,GAAG,UAAU,CACpC,OAAO,4BAA4B,CACpC,CAAC,CAAC,CAAC,CAAC;AAEL,eAAO,MAAM,uBAAuB,EAAE,oBAIpC,CAAC;AAOH,wBAAgB,2BAA2B,IAAI,wBAAwB,CAEtE;AAED,wBAAgB,gCAAgC,CAC9C,iBAAiB,CAAC,EAAE,oBAAoB,GAAG,wBAAwB,EACnE,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC,CAAC,GAC3D,wBAAwB,CAO1B;AAED,eAAO,MAAM,QAAQ,EAAE,eAA0C,CAAC;AAElE,eAAO,MAAM,OAAO,EAAE,cAIX,CAAC;AAEZ,eAAO,MAAM,MAAM,EAAE,aAAsC,CAAC;AAQ5D,eAAO,MAAM,eAAe,EAAE,aAwCnB,CAAC;AAEZ,eAAO,MAAM,WAAW,EAAE,iBAKf,CAAC;AAEZ,eAAO,MAAM,+BAA+B,EACoB,cAAc,CAAC;AAE/E;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,iBAGd,CAAC;AAGZ,eAAO,MAAM,SAAS,EAAE,UAoCb,CAAC"}
package/dist/constants.js CHANGED
@@ -1,82 +1,77 @@
1
- import { GUID_SIZE } from '@digitaldefiance/ecies-lib';
1
+ import { Constants as BaseConstants, GUID_SIZE, registerRuntimeConfiguration, } from '@digitaldefiance/ecies-lib';
2
2
  import { ObjectId } from 'mongodb';
3
- import { Constants as BaseConstants } from '@digitaldefiance/ecies-lib';
3
+ import { Pbkdf2ProfileEnum as NodePbkdf2ProfileEnum } from './enumerations/pbkdf2-profile';
4
4
  /**
5
5
  * Constants for checksum operations
6
6
  * These values are critical for data integrity and MUST NOT be changed
7
7
  * in an already established system as it will break all existing checksums.
8
8
  */
9
- export const CHECKSUM = Object.freeze({
10
- /** Default hash bits for SHA3 */
11
- SHA3_DEFAULT_HASH_BITS: 512,
12
- /** Length of a SHA3 checksum buffer in bytes */
13
- SHA3_BUFFER_LENGTH: 64,
14
- /** algorithm to use for checksum */
15
- ALGORITHM: 'sha3-512',
16
- /** encoding to use for checksum */
17
- ENCODING: 'hex',
9
+ export const NODE_RUNTIME_CONFIGURATION_KEY = Symbol.for('digitaldefiance.node.ecies.defaults');
10
+ export const NODE_DEFAULTS_OVERRIDES = Object.freeze({
11
+ PBKDF2: {
12
+ ALGORITHM: 'sha256',
13
+ },
18
14
  });
15
+ let runtimeDefaults = registerRuntimeConfiguration(NODE_RUNTIME_CONFIGURATION_KEY, NODE_DEFAULTS_OVERRIDES);
16
+ export function getNodeRuntimeConfiguration() {
17
+ return runtimeDefaults;
18
+ }
19
+ export function registerNodeRuntimeConfiguration(configOrOverrides, options) {
20
+ runtimeDefaults = registerRuntimeConfiguration(NODE_RUNTIME_CONFIGURATION_KEY, configOrOverrides, options);
21
+ return runtimeDefaults;
22
+ }
23
+ export const CHECKSUM = runtimeDefaults.CHECKSUM;
19
24
  export const KEYRING = Object.freeze({
20
25
  ALGORITHM: 'aes',
21
26
  KEY_BITS: 256,
22
27
  MODE: 'gcm',
23
28
  });
24
- export const PBKDF2 = Object.freeze({
25
- ALGORITHM: 'sha256', // Changed from sha512 to match key-wrapping
26
- SALT_BYTES: 32, // Changed from 16 to match key-wrapping and improve security
27
- /**
28
- * Number of pbkdf2 iterations per second when hashing a password.
29
- * This is the high-security default for user login operations.
30
- */
31
- ITERATIONS_PER_SECOND: 1304000,
32
- });
29
+ export const PBKDF2 = runtimeDefaults.PBKDF2;
33
30
  /**
34
31
  * Predefined PBKDF2 configuration profiles for different use cases
35
32
  * These profiles provide standardized, well-tested parameter combinations
36
33
  */
34
+ const baseProfiles = runtimeDefaults.PBKDF2_PROFILES;
37
35
  export const PBKDF2_PROFILES = Object.freeze({
38
- /** Balanced profile for browser-based password hashing */
39
- BROWSER_PASSWORD: Object.freeze({
40
- hashBytes: 32,
36
+ // Align browser password profile with high security expectations (sha512, 64-byte salt/hash, 2M iterations)
37
+ [NodePbkdf2ProfileEnum.BROWSER_PASSWORD]: Object.freeze({
38
+ saltBytes: 64,
39
+ iterations: 2000000,
40
+ algorithm: 'sha512',
41
+ hashBytes: 64,
42
+ }),
43
+ // High security profile (sha512, 64-byte salt/hash, 2M iterations)
44
+ [NodePbkdf2ProfileEnum.HIGH_SECURITY]: Object.freeze({
41
45
  saltBytes: 64,
42
46
  iterations: 2000000,
43
- algorithm: 'SHA-512',
47
+ algorithm: 'sha512',
48
+ hashBytes: 64,
44
49
  }),
45
- /** High-security profile for user login operations */
46
- USER_LOGIN: Object.freeze({
50
+ // Fast test profile (small salt and iterations for speed)
51
+ [NodePbkdf2ProfileEnum.TEST_FAST]: Object.freeze({
52
+ saltBytes: 16,
53
+ iterations: 500,
54
+ algorithm: 'sha256',
55
+ hashBytes: 32,
56
+ }),
57
+ [NodePbkdf2ProfileEnum.USER_LOGIN]: Object.freeze({
47
58
  saltBytes: 32,
48
59
  iterations: 1304000,
49
60
  algorithm: 'sha256',
50
61
  hashBytes: 32,
51
62
  }),
52
- /** Optimized profile for key-wrapping operations */
53
- KEY_WRAPPING: Object.freeze({
63
+ [NodePbkdf2ProfileEnum.KEY_WRAPPING]: Object.freeze({
54
64
  saltBytes: 32,
55
65
  iterations: 100000,
56
66
  algorithm: 'sha256',
57
67
  hashBytes: 32,
58
68
  }),
59
- /** Standard profile for backup codes and general use */
60
- BACKUP_CODES: Object.freeze({
69
+ [NodePbkdf2ProfileEnum.BACKUP_CODES]: Object.freeze({
61
70
  saltBytes: 32,
62
71
  iterations: 1304000,
63
72
  algorithm: 'sha256',
64
73
  hashBytes: 32,
65
74
  }),
66
- /** Ultra-high security profile for sensitive operations */
67
- HIGH_SECURITY: Object.freeze({
68
- saltBytes: 64,
69
- iterations: 2000000,
70
- algorithm: 'sha512',
71
- hashBytes: 64,
72
- }),
73
- /** Fast profile for testing and development */
74
- TEST_FAST: Object.freeze({
75
- saltBytes: 16,
76
- iterations: 1000,
77
- algorithm: 'sha256',
78
- hashBytes: 32,
79
- }),
80
75
  });
81
76
  export const WRAPPED_KEY = Object.freeze({
82
77
  SALT_SIZE: PBKDF2.SALT_BYTES, // Use PBKDF2 standard salt size
@@ -93,7 +88,7 @@ export const ENCRYPTION = Object.freeze({
93
88
  RECIPIENT_ID_SIZE: GUID_SIZE,
94
89
  });
95
90
  const objectIdLength = Buffer.from(new ObjectId().toHexString(), 'hex').length;
96
- export const Constants = {
91
+ export const Constants = Object.freeze({
97
92
  ...BaseConstants,
98
93
  /**
99
94
  * The length of a raw object ID (not the hex string representation)
@@ -127,7 +122,9 @@ export const Constants = {
127
122
  * Algorithm configuration string for keyring operations
128
123
  */
129
124
  KEYRING_ALGORITHM_CONFIGURATION: KEYRING_ALGORITHM_CONFIGURATION,
130
- };
125
+ PasswordRegex: runtimeDefaults.PasswordRegex,
126
+ MnemonicRegex: runtimeDefaults.MnemonicRegex,
127
+ });
131
128
  if (CHECKSUM.SHA3_BUFFER_LENGTH !== CHECKSUM.SHA3_DEFAULT_HASH_BITS / 8 ||
132
129
  CHECKSUM.SHA3_BUFFER_LENGTH !== CHECKSUM.SHA3_DEFAULT_HASH_BITS / 8) {
133
130
  throw new Error('Invalid checksum constants');
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,IAAI,aAAa,EAC1B,SAAS,EAGT,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAOnC,OAAO,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3F;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC,GAAG,CACtD,qCAAqC,CACtC,CAAC;AAOF,MAAM,CAAC,MAAM,uBAAuB,GAAyB,MAAM,CAAC,MAAM,CAAC;IACzE,MAAM,EAAE;QACN,SAAS,EAAE,QAAQ;KACpB;CACF,CAAC,CAAC;AAEH,IAAI,eAAe,GAA6B,4BAA4B,CAC1E,8BAA8B,EAC9B,uBAAuB,CACxB,CAAC;AAEF,MAAM,UAAU,2BAA2B;IACzC,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,iBAAmE,EACnE,OAA4D;IAE5D,eAAe,GAAG,4BAA4B,CAC5C,8BAA8B,EAC9B,iBAAiB,EACjB,OAAO,CACR,CAAC;IACF,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAoB,eAAe,CAAC,QAAQ,CAAC;AAElE,MAAM,CAAC,MAAM,OAAO,GAAmB,MAAM,CAAC,MAAM,CAAC;IACnD,SAAS,EAAE,KAAc;IACzB,QAAQ,EAAE,GAAY;IACtB,IAAI,EAAE,KAAc;CACZ,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,MAAM,GAAkB,eAAe,CAAC,MAAM,CAAC;AAE5D;;;GAGG;AACH,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,CAAC;AAErD,MAAM,CAAC,MAAM,eAAe,GAAkB,MAAM,CAAC,MAAM,CAAC;IAC1D,4GAA4G;IAC5G,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;QACtD,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,OAAO;QACnB,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,EAAE;KACd,CAAC;IACF,mEAAmE;IACnE,CAAC,qBAAqB,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;QACnD,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,OAAO;QACnB,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,EAAE;KACd,CAAC;IACF,0DAA0D;IAC1D,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;QAC/C,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,EAAE;KACd,CAAC;IACF,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;QAChD,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,OAAO;QACnB,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,EAAE;KACd,CAAC;IACF,CAAC,qBAAqB,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;QAClD,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,EAAE;KACd,CAAC;IACF,CAAC,qBAAqB,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;QAClD,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,OAAO;QACnB,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,EAAE;KACd,CAAC;CACM,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,WAAW,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC1D,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,gCAAgC;IAC9D,OAAO,EAAE,EAAW;IACpB,eAAe,EAAE,EAAW;IAC5B,cAAc,EAAE,MAAe,EAAE,yCAAyC;CAClE,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,+BAA+B,GAC1C,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAoB,CAAC;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAsB,MAAM,CAAC,MAAM,CAAC;IACzD,oBAAoB,EAAE,CAAU;IAChC,iBAAiB,EAAE,SAAS;CACpB,CAAC,CAAC;AAEZ,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC;AAC/E,MAAM,CAAC,MAAM,SAAS,GAAe,MAAM,CAAC,MAAM,CAAC;IACjD,GAAG,aAAa;IAChB;;OAEG;IACH,gBAAgB,EAAE,cAAc;IAChC;;OAEG;IACH,MAAM,EAAE,MAAM;IACd;;OAEG;IACH,eAAe,EAAE,eAAe;IAChC;;OAEG;IACH,WAAW,EAAE,WAAW;IACxB;;OAEG;IACH,QAAQ,EAAE,QAAQ;IAClB;;OAEG;IACH,OAAO,EAAE,OAAO;IAChB;;OAEG;IACH,UAAU,EAAE,UAAU;IACtB;;OAEG;IACH,+BAA+B,EAAE,+BAA+B;IAChE,aAAa,EAAE,eAAe,CAAC,aAAa;IAC5C,aAAa,EAAE,eAAe,CAAC,aAAa;CACpC,CAAC,CAAC;AAEZ,IACE,QAAQ,CAAC,kBAAkB,KAAK,QAAQ,CAAC,sBAAsB,GAAG,CAAC;IACnE,QAAQ,CAAC,kBAAkB,KAAK,QAAQ,CAAC,sBAAsB,GAAG,CAAC,EACnE,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAChD,CAAC;AAED,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;IAC1B,OAAO,CAAC,IAAI,CACV,uDAAuD,EACvD,cAAc,CACf,CAAC;AACJ,CAAC"}
@@ -1,7 +1,14 @@
1
- export declare abstract class AESGCMService {
2
- static readonly ALGORITHM_NAME: string;
3
- static readonly MODE: string;
4
- static readonly KEY_BITS: number;
1
+ import { IConstants } from '../interfaces/constants';
2
+ export declare class AESGCMService {
3
+ private readonly algorithmName;
4
+ private readonly mode;
5
+ private readonly keyBits;
6
+ private readonly ivSize;
7
+ private readonly keyringAlgorithmConfiguration;
8
+ constructor(constants: IConstants);
9
+ get ALGORITHM_NAME(): string;
10
+ get MODE(): string;
11
+ get KEY_BITS(): number;
5
12
  /**
6
13
  * Encrypt data using AES-GCM
7
14
  * @param data Data to encrypt
@@ -9,7 +16,7 @@ export declare abstract class AESGCMService {
9
16
  * @param authTag Whether to return separate auth tag
10
17
  * @returns Encrypted data with IV and optional separate auth tag
11
18
  */
12
- static encrypt(data: Buffer, key: Buffer, authTag?: boolean): {
19
+ encrypt(data: Buffer, key: Buffer, authTag?: boolean): {
13
20
  encrypted: Buffer;
14
21
  iv: Buffer;
15
22
  tag?: Buffer;
@@ -20,14 +27,14 @@ export declare abstract class AESGCMService {
20
27
  * @param authTag The authentication tag
21
28
  * @returns The combined Buffer
22
29
  */
23
- static combineEncryptedDataAndTag(encryptedData: Buffer, authTag: Buffer): Buffer;
30
+ combineEncryptedDataAndTag(encryptedData: Buffer, authTag: Buffer): Buffer;
24
31
  /**
25
32
  * Combine IV and encrypted data (with optional auth tag) into a single Buffer
26
33
  * @param iv The initialization vector
27
34
  * @param encryptedDataWithTag The encrypted data with auth tag already appended (if applicable)
28
35
  * @returns The combined Buffer
29
36
  */
30
- static combineIvAndEncryptedData(iv: Buffer, encryptedDataWithTag: Buffer): Buffer;
37
+ combineIvAndEncryptedData(iv: Buffer, encryptedDataWithTag: Buffer): Buffer;
31
38
  /**
32
39
  * Combine IV, encrypted data and auth tag into a single Buffer
33
40
  * @param iv The initialization vector
@@ -35,14 +42,14 @@ export declare abstract class AESGCMService {
35
42
  * @param authTag The authentication tag
36
43
  * @returns The combined Buffer
37
44
  */
38
- static combineIvTagAndEncryptedData(iv: Buffer, encryptedData: Buffer, authTag: Buffer): Buffer;
45
+ combineIvTagAndEncryptedData(iv: Buffer, encryptedData: Buffer, authTag: Buffer): Buffer;
39
46
  /**
40
47
  * Split combined encrypted data back into its components
41
48
  * @param combinedData The combined data containing IV, encrypted data, and optionally auth tag
42
49
  * @param hasAuthTag Whether the combined data includes an authentication tag
43
50
  * @returns Object containing the split components
44
51
  */
45
- static splitEncryptedData(combinedData: Buffer, hasAuthTag?: boolean): {
52
+ splitEncryptedData(combinedData: Buffer, hasAuthTag?: boolean): {
46
53
  iv: Buffer;
47
54
  encryptedDataWithTag: Buffer;
48
55
  };
@@ -54,6 +61,6 @@ export declare abstract class AESGCMService {
54
61
  * @param authTag Whether the encrypted data includes an authentication tag
55
62
  * @returns Decrypted data
56
63
  */
57
- static decrypt(iv: Buffer, encryptedData: Buffer, key: Buffer, authTag?: boolean): Buffer;
64
+ decrypt(iv: Buffer, encryptedData: Buffer, key: Buffer, authTag?: boolean): Buffer;
58
65
  }
59
66
  //# sourceMappingURL=aes-gcm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"aes-gcm.d.ts","sourceRoot":"","sources":["../../src/services/aes-gcm.ts"],"names":[],"mappings":"AAGA,8BAAsB,aAAa;IACjC,gBAAuB,cAAc,SAA+B;IACpE,gBAAuB,IAAI,SAA0B;IACrD,gBAAuB,QAAQ,SAA8B;IAE7D;;;;;;OAMG;WACW,OAAO,CACnB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,OAAe,GACvB;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE;IAmBlD;;;;;OAKG;WACW,0BAA0B,CACtC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,MAAM;IAIT;;;;;OAKG;WACW,yBAAyB,CACrC,EAAE,EAAE,MAAM,EACV,oBAAoB,EAAE,MAAM,GAC3B,MAAM;IAIT;;;;;;OAMG;WACW,4BAA4B,CACxC,EAAE,EAAE,MAAM,EACV,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,MAAM;IAQT;;;;;OAKG;WACW,kBAAkB,CAC9B,YAAY,EAAE,MAAM,EACpB,UAAU,GAAE,OAAc,GACzB;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAA;KAAE;IAgB/C;;;;;;;OAOG;WACW,OAAO,CACnB,EAAE,EAAE,MAAM,EACV,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,OAAe,GACvB,MAAM;CAWV"}
1
+ {"version":3,"file":"aes-gcm.d.ts","sourceRoot":"","sources":["../../src/services/aes-gcm.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAiB;gBAEnD,SAAS,EAAE,UAAU;IAQjC,IAAW,cAAc,IAAI,MAAM,CAElC;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED;;;;;;OAMG;IACI,OAAO,CACZ,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,OAAe,GACvB;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE;IAmBlD;;;;;OAKG;IACI,0BAA0B,CAC/B,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,MAAM;IAIT;;;;;OAKG;IACI,yBAAyB,CAC9B,EAAE,EAAE,MAAM,EACV,oBAAoB,EAAE,MAAM,GAC3B,MAAM;IAIT;;;;;;OAMG;IACI,4BAA4B,CACjC,EAAE,EAAE,MAAM,EACV,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,MAAM;IAQT;;;;;OAKG;IACI,kBAAkB,CACvB,YAAY,EAAE,MAAM,EACpB,UAAU,GAAE,OAAc,GACzB;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAA;KAAE;IAgB/C;;;;;;;OAOG;IACI,OAAO,CACZ,EAAE,EAAE,MAAM,EACV,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,OAAe,GACvB,MAAM;CAWV"}
@@ -1,9 +1,26 @@
1
1
  import { createCipheriv, createDecipheriv, randomBytes } from 'crypto';
2
- import { Constants } from '../constants';
3
2
  export class AESGCMService {
4
- static ALGORITHM_NAME = Constants.KEYRING.ALGORITHM;
5
- static MODE = Constants.KEYRING.MODE;
6
- static KEY_BITS = Constants.KEYRING.KEY_BITS;
3
+ algorithmName;
4
+ mode;
5
+ keyBits;
6
+ ivSize;
7
+ keyringAlgorithmConfiguration;
8
+ constructor(constants) {
9
+ this.algorithmName = constants.KEYRING.ALGORITHM;
10
+ this.mode = constants.KEYRING.MODE;
11
+ this.keyBits = constants.KEYRING.KEY_BITS;
12
+ this.ivSize = constants.WRAPPED_KEY.IV_SIZE;
13
+ this.keyringAlgorithmConfiguration = constants.KEYRING_ALGORITHM_CONFIGURATION;
14
+ }
15
+ get ALGORITHM_NAME() {
16
+ return this.algorithmName;
17
+ }
18
+ get MODE() {
19
+ return this.mode;
20
+ }
21
+ get KEY_BITS() {
22
+ return this.keyBits;
23
+ }
7
24
  /**
8
25
  * Encrypt data using AES-GCM
9
26
  * @param data Data to encrypt
@@ -11,9 +28,9 @@ export class AESGCMService {
11
28
  * @param authTag Whether to return separate auth tag
12
29
  * @returns Encrypted data with IV and optional separate auth tag
13
30
  */
14
- static encrypt(data, key, authTag = false) {
15
- const iv = randomBytes(Constants.WRAPPED_KEY.IV_SIZE);
16
- const cipher = createCipheriv(Constants.KEYRING_ALGORITHM_CONFIGURATION, key, iv);
31
+ encrypt(data, key, authTag = false) {
32
+ const iv = randomBytes(this.ivSize);
33
+ const cipher = createCipheriv(this.keyringAlgorithmConfiguration, key, iv);
17
34
  const encrypted = Buffer.concat([cipher.update(data), cipher.final()]);
18
35
  const tag = cipher.getAuthTag();
19
36
  if (!authTag) {
@@ -32,7 +49,7 @@ export class AESGCMService {
32
49
  * @param authTag The authentication tag
33
50
  * @returns The combined Buffer
34
51
  */
35
- static combineEncryptedDataAndTag(encryptedData, authTag) {
52
+ combineEncryptedDataAndTag(encryptedData, authTag) {
36
53
  return Buffer.concat([encryptedData, authTag]);
37
54
  }
38
55
  /**
@@ -41,7 +58,7 @@ export class AESGCMService {
41
58
  * @param encryptedDataWithTag The encrypted data with auth tag already appended (if applicable)
42
59
  * @returns The combined Buffer
43
60
  */
44
- static combineIvAndEncryptedData(iv, encryptedDataWithTag) {
61
+ combineIvAndEncryptedData(iv, encryptedDataWithTag) {
45
62
  return Buffer.concat([iv, encryptedDataWithTag]);
46
63
  }
47
64
  /**
@@ -51,9 +68,9 @@ export class AESGCMService {
51
68
  * @param authTag The authentication tag
52
69
  * @returns The combined Buffer
53
70
  */
54
- static combineIvTagAndEncryptedData(iv, encryptedData, authTag) {
55
- const encryptedWithTag = AESGCMService.combineEncryptedDataAndTag(encryptedData, authTag);
56
- return AESGCMService.combineIvAndEncryptedData(iv, encryptedWithTag);
71
+ combineIvTagAndEncryptedData(iv, encryptedData, authTag) {
72
+ const encryptedWithTag = this.combineEncryptedDataAndTag(encryptedData, authTag);
73
+ return this.combineIvAndEncryptedData(iv, encryptedWithTag);
57
74
  }
58
75
  /**
59
76
  * Split combined encrypted data back into its components
@@ -61,8 +78,8 @@ export class AESGCMService {
61
78
  * @param hasAuthTag Whether the combined data includes an authentication tag
62
79
  * @returns Object containing the split components
63
80
  */
64
- static splitEncryptedData(combinedData, hasAuthTag = true) {
65
- const ivLength = Constants.WRAPPED_KEY.IV_SIZE;
81
+ splitEncryptedData(combinedData, hasAuthTag = true) {
82
+ const ivLength = this.ivSize;
66
83
  const minLength = ivLength + (hasAuthTag ? 16 : 0);
67
84
  if (combinedData.length < minLength) {
68
85
  throw new Error('Combined data is too short to contain required components');
@@ -79,8 +96,8 @@ export class AESGCMService {
79
96
  * @param authTag Whether the encrypted data includes an authentication tag
80
97
  * @returns Decrypted data
81
98
  */
82
- static decrypt(iv, encryptedData, key, authTag = false) {
83
- const decipher = createDecipheriv(Constants.KEYRING_ALGORITHM_CONFIGURATION, key, iv);
99
+ decrypt(iv, encryptedData, key, authTag = false) {
100
+ const decipher = createDecipheriv(this.keyringAlgorithmConfiguration, key, iv);
84
101
  const tagLength = 16;
85
102
  const tag = encryptedData.subarray(-tagLength);
86
103
  const ciphertext = encryptedData.subarray(0, -tagLength);
@@ -1 +1 @@
1
- {"version":3,"file":"aes-gcm.js","sourceRoot":"","sources":["../../src/services/aes-gcm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aes-gcm.js","sourceRoot":"","sources":["../../src/services/aes-gcm.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { IECIESConfig, SecureString } from '@digitaldefiance/ecies-lib';
1
+ import { IECIESConfig, IECIESConstants, SecureString } from '@digitaldefiance/ecies-lib';
2
2
  import { Wallet } from '@ethereumjs/wallet';
3
3
  import { ISimpleKeyPairBuffer } from '../../interfaces/simple-keypair-buffer';
4
4
  import { IWalletSeed } from '../../interfaces/wallet-seed';
@@ -7,9 +7,11 @@ import { IWalletSeed } from '../../interfaces/wallet-seed';
7
7
  * Includes coverage for simple and single modes, does not cover multiple mode which is in a separate module
8
8
  */
9
9
  export declare class EciesCryptoCore {
10
- private readonly _config;
10
+ protected readonly _config: IECIESConfig;
11
+ protected readonly _consts: IECIESConstants;
11
12
  get config(): IECIESConfig;
12
- constructor(config: IECIESConfig);
13
+ get consts(): IECIESConstants;
14
+ constructor(config: IECIESConfig, eciesParams?: IECIESConstants);
13
15
  /**
14
16
  * Validates and normalizes a public key for ECIES operations
15
17
  * @param publicKey The public key to normalize
@@ -1 +1 @@
1
- {"version":3,"file":"crypto-core.d.ts","sourceRoot":"","sources":["../../../src/services/ecies/crypto-core.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EAEZ,YAAY,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAS,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAInD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,IAAW,MAAM,IAAI,YAAY,CAEhC;gBAEW,MAAM,EAAE,YAAY;IAIhC;;;;OAIG;IACI,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IA6CpD;;;OAGG;IACI,mBAAmB,IAAI,YAAY;IAI1C;;;;OAIG;IACI,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAO3C;;;;OAIG;IACI,yBAAyB,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW;IAiBrE;;;;OAIG;IACI,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB;IAYxE;;;;OAIG;IACI,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB;IAKpE;;;;OAIG;IACI,6BAA6B,CAClC,QAAQ,EAAE,YAAY,GACrB,oBAAoB;IAKvB;;;OAGG;IACI,kBAAkB,IAAI,MAAM;IAInC;;;;OAIG;IACI,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAK/C;;;OAGG;IACU,wBAAwB,IAAI,OAAO,CAAC;QAC/C,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAMF;;;;;OAKG;IACI,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAI1E"}
1
+ {"version":3,"file":"crypto-core.d.ts","sourceRoot":"","sources":["../../../src/services/ecies/crypto-core.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EACZ,eAAe,EAEf,YAAY,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAS,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAInD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D;;;GAGG;AACH,qBAAa,eAAe;IAC1B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAC5C,IAAW,MAAM,IAAI,YAAY,CAEhC;IAED,IAAW,MAAM,IAAI,eAAe,CAEnC;gBAEW,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,eAAe;IAK/D;;;;OAIG;IACI,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IA6CpD;;;OAGG;IACI,mBAAmB,IAAI,YAAY;IAI1C;;;;OAIG;IACI,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAO3C;;;;OAIG;IACI,yBAAyB,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW;IAiBrE;;;;OAIG;IACI,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB;IAYxE;;;;OAIG;IACI,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB;IAKpE;;;;OAIG;IACI,6BAA6B,CAClC,QAAQ,EAAE,YAAY,GACrB,oBAAoB;IAKvB;;;OAGG;IACI,kBAAkB,IAAI,MAAM;IAInC;;;;OAIG;IACI,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAK/C;;;OAGG;IACU,wBAAwB,IAAI,OAAO,CAAC;QAC/C,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAMF;;;;;OAKG;IACI,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAI1E"}
@@ -9,11 +9,16 @@ import { getEciesPluginI18nEngine } from '../../i18n/ecies-i18n-factory';
9
9
  */
10
10
  export class EciesCryptoCore {
11
11
  _config;
12
+ _consts;
12
13
  get config() {
13
14
  return this._config;
14
15
  }
15
- constructor(config) {
16
+ get consts() {
17
+ return this._consts;
18
+ }
19
+ constructor(config, eciesParams) {
16
20
  this._config = config;
21
+ this._consts = eciesParams ?? ECIES;
17
22
  }
18
23
  /**
19
24
  * Validates and normalizes a public key for ECIES operations
@@ -28,22 +33,22 @@ export class EciesCryptoCore {
28
33
  }
29
34
  const keyLength = publicKey.length;
30
35
  // Already in correct format (65 bytes with 0x04 prefix)
31
- if (keyLength === ECIES.PUBLIC_KEY_LENGTH &&
32
- publicKey[0] === ECIES.PUBLIC_KEY_MAGIC) {
36
+ if (keyLength === this._consts.PUBLIC_KEY_LENGTH &&
37
+ publicKey[0] === this._consts.PUBLIC_KEY_MAGIC) {
33
38
  return publicKey;
34
39
  }
35
40
  // Raw key without prefix (64 bytes) - add the 0x04 prefix
36
- if (keyLength === ECIES.RAW_PUBLIC_KEY_LENGTH) {
37
- return Buffer.concat([Buffer.from([ECIES.PUBLIC_KEY_MAGIC]), publicKey]);
41
+ if (keyLength === this._consts.RAW_PUBLIC_KEY_LENGTH) {
42
+ return Buffer.concat([Buffer.from([this._consts.PUBLIC_KEY_MAGIC]), publicKey]);
38
43
  }
39
44
  // Invalid format
40
45
  throw new ECIESError(ECIESErrorTypeEnum.InvalidEphemeralPublicKey, getEciesPluginI18nEngine(), undefined, undefined, {
41
46
  error: 'Invalid public key format or length',
42
47
  keyLength: String(keyLength),
43
- expectedLength64: String(ECIES.RAW_PUBLIC_KEY_LENGTH),
44
- expectedLength65: String(ECIES.PUBLIC_KEY_LENGTH),
48
+ expectedLength64: String(this._consts.RAW_PUBLIC_KEY_LENGTH),
49
+ expectedLength65: String(this._consts.PUBLIC_KEY_LENGTH),
45
50
  keyPrefix: keyLength > 0 ? String(publicKey[0]) : 'N/A',
46
- expectedPrefix: String(ECIES.PUBLIC_KEY_MAGIC),
51
+ expectedPrefix: String(this._consts.PUBLIC_KEY_MAGIC),
47
52
  });
48
53
  }
49
54
  /**
@@ -88,7 +93,7 @@ export class EciesCryptoCore {
88
93
  walletToSimpleKeyPairBuffer(wallet) {
89
94
  const privateKey = Buffer.from(wallet.getPrivateKey());
90
95
  const buf04 = new Uint8Array(1);
91
- buf04[0] = ECIES.PUBLIC_KEY_MAGIC;
96
+ buf04[0] = this._consts.PUBLIC_KEY_MAGIC;
92
97
  const publicKey = Buffer.concat([buf04, wallet.getPublicKey()]);
93
98
  return {
94
99
  privateKey,
@@ -1 +1 @@
1
- {"version":3,"file":"crypto-core.js","sourceRoot":"","sources":["../../../src/services/ecies/crypto-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crypto-core.js","sourceRoot":"","sources":["../../../src/services/ecies/crypto-core.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,30 @@
1
1
  import { ECIESService } from './service';
2
+ interface ChunkedFileHeader {
3
+ version: number;
4
+ chunkSize: number;
5
+ totalChunks: number;
6
+ originalSize: number;
7
+ }
2
8
  export declare class EciesFileService {
3
- private eciesService;
4
- private userPrivateKey;
5
- private static readonly CHUNK_SIZE;
6
- private static readonly HEADER_SIZE;
7
- constructor(eciesService: ECIESService, userPrivateKey: Buffer);
9
+ protected readonly eciesService: ECIESService;
10
+ protected readonly userPrivateKey: Buffer;
11
+ protected readonly config: {
12
+ chunkSize: number;
13
+ headerSize: number;
14
+ };
15
+ constructor(eciesService: ECIESService, userPrivateKey: Buffer, config?: {
16
+ chunkSize: number;
17
+ headerSize: number;
18
+ });
8
19
  decryptFile(encryptedData: Buffer): Buffer;
9
20
  encryptFileFromPath(filePath: string, recipientPublicKey: Buffer): Buffer;
10
21
  decryptFileToPath(encryptedData: Buffer, outputPath: string): void;
11
- private serializeHeader;
12
- private deserializeHeader;
13
- private parseEncryptedFile;
22
+ protected serializeHeader(header: ChunkedFileHeader): Buffer;
23
+ protected deserializeHeader(data: Buffer): ChunkedFileHeader;
24
+ protected parseEncryptedFile(encryptedData: Buffer): {
25
+ header: ChunkedFileHeader;
26
+ chunks: Buffer[];
27
+ };
14
28
  }
29
+ export {};
15
30
  //# sourceMappingURL=file.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/services/ecies/file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AASzC,qBAAa,gBAAgB;IAKzB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,cAAc;IALxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAe;IACjD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAM;gBAG/B,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,MAAM;IAGhC,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAuB1C,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM;IA4CzE,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAwBlE,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;CAoC3B"}
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/services/ecies/file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,gBAAgB;IAC3B,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;gBAGnE,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,MAAM,EACtB,MAAM,GAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAG9C;IAOH,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAuB1C,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM;IA4CzE,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAwBlE,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM;IAS5D,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;IAS5D,SAAS,CAAC,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG;QACnD,MAAM,EAAE,iBAAiB,CAAC;QAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB;CAiCF"}
@@ -2,11 +2,14 @@ import * as fs from 'fs';
2
2
  export class EciesFileService {
3
3
  eciesService;
4
4
  userPrivateKey;
5
- static CHUNK_SIZE = 1024 * 1024; // 1MB chunks
6
- static HEADER_SIZE = 20;
7
- constructor(eciesService, userPrivateKey) {
5
+ config;
6
+ constructor(eciesService, userPrivateKey, config = {
7
+ chunkSize: 1024 * 1024, // 1MB chunks
8
+ headerSize: 20,
9
+ }) {
8
10
  this.eciesService = eciesService;
9
11
  this.userPrivateKey = userPrivateKey;
12
+ this.config = Object.freeze(config);
10
13
  }
11
14
  decryptFile(encryptedData) {
12
15
  const { header, chunks } = this.parseEncryptedFile(encryptedData);
@@ -26,10 +29,10 @@ export class EciesFileService {
26
29
  }
27
30
  encryptFileFromPath(filePath, recipientPublicKey) {
28
31
  const stats = fs.statSync(filePath);
29
- const totalChunks = Math.ceil(stats.size / EciesFileService.CHUNK_SIZE);
32
+ const totalChunks = Math.ceil(stats.size / this.config.chunkSize);
30
33
  const header = {
31
34
  version: 1,
32
- chunkSize: EciesFileService.CHUNK_SIZE,
35
+ chunkSize: this.config.chunkSize,
33
36
  totalChunks,
34
37
  originalSize: stats.size,
35
38
  };
@@ -39,8 +42,8 @@ export class EciesFileService {
39
42
  const fd = fs.openSync(filePath, 'r');
40
43
  try {
41
44
  for (let i = 0; i < totalChunks; i++) {
42
- const offset = i * EciesFileService.CHUNK_SIZE;
43
- const chunkSize = Math.min(EciesFileService.CHUNK_SIZE, stats.size - offset);
45
+ const offset = i * this.config.chunkSize;
46
+ const chunkSize = Math.min(this.config.chunkSize, stats.size - offset);
44
47
  const chunkData = Buffer.alloc(chunkSize);
45
48
  fs.readSync(fd, chunkData, 0, chunkSize, offset);
46
49
  const encryptedChunk = this.eciesService.encryptSimpleOrSingle(false, recipientPublicKey, chunkData);
@@ -69,7 +72,7 @@ export class EciesFileService {
69
72
  }
70
73
  }
71
74
  serializeHeader(header) {
72
- const buffer = Buffer.alloc(EciesFileService.HEADER_SIZE);
75
+ const buffer = Buffer.alloc(this.config.headerSize);
73
76
  buffer.writeUInt32BE(header.version, 0);
74
77
  buffer.writeUInt32BE(header.chunkSize, 4);
75
78
  buffer.writeUInt32BE(header.totalChunks, 8);
@@ -85,7 +88,7 @@ export class EciesFileService {
85
88
  };
86
89
  }
87
90
  parseEncryptedFile(encryptedData) {
88
- const headerLength = this.eciesService.computeEncryptedLengthFromDataLength(EciesFileService.HEADER_SIZE, 'single');
91
+ const headerLength = this.eciesService.computeEncryptedLengthFromDataLength(this.config.headerSize, 'single');
89
92
  const encryptedHeader = encryptedData.subarray(0, headerLength);
90
93
  const decryptedHeaderBytes = this.eciesService.decryptSimpleOrSingleWithHeader(false, this.userPrivateKey, encryptedHeader);
91
94
  const header = this.deserializeHeader(decryptedHeaderBytes);