@digitaldefiance/ecies-lib 1.0.22 → 1.0.23
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/README.md +5 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +26 -26
- package/dist/constants.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -244,6 +244,11 @@ MIT © Digital Defiance
|
|
|
244
244
|
|
|
245
245
|
## ChangeLog
|
|
246
246
|
|
|
247
|
+
### v1.0.23: Patch release to fix constant exports
|
|
248
|
+
|
|
249
|
+
- Sun Oct 12 2025 16:20:00 GMT-0700 (Pacific Daylight Time)
|
|
250
|
+
- Fix `Constants` export to be properly frozen and typed
|
|
251
|
+
|
|
247
252
|
### v1.0.22: Upgrade to i18n v1.1.2 with some new cleanup functionality
|
|
248
253
|
|
|
249
254
|
- Sat Oct 11 2025 19:39:00 GMT-0700 (Pacific Daylight Time)
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,eAAO,MAAM,UAAU,EAAE,MAAmB,CAAC;AAC7C,eAAO,MAAM,WAAW,EAAE,MAAmB,CAAC;AAC9C,eAAO,MAAM,UAAU,EAAE,MAAuB,CAAC;AACjD,eAAO,MAAM,WAAW,EAAE,MAAmB,CAAC;AAC9C,eAAO,MAAM,UAAU,EAAE,MAA4B,CAAC;AACtD,eAAO,MAAM,WAAW,EAAE,MAAmB,CAAC;AAC9C,eAAO,MAAM,UAAU,EAAE,MAAuC,CAAC;AACjE;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,MAAoB,CAAC;AAE7C;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,eAAO,MAAM,UAAU,EAAE,MAAmB,CAAC;AAC7C,eAAO,MAAM,WAAW,EAAE,MAAmB,CAAC;AAC9C,eAAO,MAAM,UAAU,EAAE,MAAuB,CAAC;AACjD,eAAO,MAAM,WAAW,EAAE,MAAmB,CAAC;AAC9C,eAAO,MAAM,UAAU,EAAE,MAA4B,CAAC;AACtD,eAAO,MAAM,WAAW,EAAE,MAAmB,CAAC;AAC9C,eAAO,MAAM,UAAU,EAAE,MAAuC,CAAC;AACjE;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,MAAoB,CAAC;AAE7C;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,eAYZ,CAAC;AAEZ,eAAO,MAAM,MAAM,EAAE,aAQV,CAAC;AAEZ,eAAO,MAAM,eAAe,EAAE,cAmBnB,CAAC;AAyBZ,eAAO,MAAM,KAAK,EAAE,eAoElB,CAAC;AAGH,eAAO,MAAM,SAAS,EAAE,UA8Cb,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -19,7 +19,7 @@ export const GUID_SIZE = 16;
|
|
|
19
19
|
* These values are critical for data integrity and MUST NOT be changed
|
|
20
20
|
* in an already established system as it will break all existing checksums.
|
|
21
21
|
*/
|
|
22
|
-
export const CHECKSUM = {
|
|
22
|
+
export const CHECKSUM = Object.freeze({
|
|
23
23
|
/** Default hash bits for SHA3 */
|
|
24
24
|
SHA3_DEFAULT_HASH_BITS: 512,
|
|
25
25
|
/** Length of a SHA3 checksum buffer in bytes */
|
|
@@ -28,8 +28,8 @@ export const CHECKSUM = {
|
|
|
28
28
|
ALGORITHM: 'sha3-512',
|
|
29
29
|
/** encoding to use for checksum */
|
|
30
30
|
ENCODING: 'hex',
|
|
31
|
-
};
|
|
32
|
-
export const PBKDF2 = {
|
|
31
|
+
});
|
|
32
|
+
export const PBKDF2 = Object.freeze({
|
|
33
33
|
ALGORITHM: 'SHA-256',
|
|
34
34
|
SALT_BYTES: 32,
|
|
35
35
|
/**
|
|
@@ -37,27 +37,27 @@ export const PBKDF2 = {
|
|
|
37
37
|
* This is the high-security default for user login operations.
|
|
38
38
|
*/
|
|
39
39
|
ITERATIONS_PER_SECOND: 1304000,
|
|
40
|
-
};
|
|
41
|
-
export const PBKDF2_PROFILES = {
|
|
42
|
-
[Pbkdf2ProfileEnum.BROWSER_PASSWORD]: {
|
|
40
|
+
});
|
|
41
|
+
export const PBKDF2_PROFILES = Object.freeze({
|
|
42
|
+
[Pbkdf2ProfileEnum.BROWSER_PASSWORD]: Object.freeze({
|
|
43
43
|
hashBytes: 32,
|
|
44
44
|
saltBytes: 64,
|
|
45
45
|
iterations: 2000000,
|
|
46
46
|
algorithm: 'SHA-512',
|
|
47
|
-
},
|
|
48
|
-
[Pbkdf2ProfileEnum.HIGH_SECURITY]: {
|
|
47
|
+
}),
|
|
48
|
+
[Pbkdf2ProfileEnum.HIGH_SECURITY]: Object.freeze({
|
|
49
49
|
hashBytes: 64,
|
|
50
50
|
saltBytes: 32,
|
|
51
51
|
iterations: 5000000,
|
|
52
52
|
algorithm: 'SHA-256',
|
|
53
|
-
},
|
|
54
|
-
[Pbkdf2ProfileEnum.TEST_FAST]: {
|
|
53
|
+
}),
|
|
54
|
+
[Pbkdf2ProfileEnum.TEST_FAST]: Object.freeze({
|
|
55
55
|
hashBytes: 32,
|
|
56
56
|
saltBytes: 64,
|
|
57
57
|
iterations: 1000,
|
|
58
58
|
algorithm: 'SHA-512',
|
|
59
|
-
},
|
|
60
|
-
};
|
|
59
|
+
}),
|
|
60
|
+
});
|
|
61
61
|
const ECIES_SYMMETRIC_KEY_SIZE = 32;
|
|
62
62
|
const ECIES_PUBLIC_KEY_LENGTH = 65;
|
|
63
63
|
const ECIES_RAW_PUBLIC_KEY_LENGTH = 64;
|
|
@@ -74,7 +74,7 @@ const expectedMultipleEncryptedKeySize = ECIES_PUBLIC_KEY_LENGTH +
|
|
|
74
74
|
ECIES_IV_SIZE +
|
|
75
75
|
ECIES_AUTH_TAG_SIZE +
|
|
76
76
|
ECIES_SYMMETRIC_KEY_SIZE;
|
|
77
|
-
export const ECIES = {
|
|
77
|
+
export const ECIES = Object.freeze({
|
|
78
78
|
/** The elliptic curve to use for all ECDSA operations */
|
|
79
79
|
CURVE_NAME: 'secp256k1',
|
|
80
80
|
/** The primary key derivation path for HD wallets */
|
|
@@ -90,48 +90,48 @@ export const ECIES = {
|
|
|
90
90
|
/** Mnemonic strength in bits. This will produce a 32-bit key for ECDSA */
|
|
91
91
|
MNEMONIC_STRENGTH: 256,
|
|
92
92
|
/** Symmetric encryption algorithm configuration */
|
|
93
|
-
SYMMETRIC: {
|
|
93
|
+
SYMMETRIC: Object.freeze({
|
|
94
94
|
ALGORITHM: 'aes',
|
|
95
95
|
MODE: 'gcm',
|
|
96
96
|
KEY_BITS: 256,
|
|
97
97
|
KEY_SIZE: ECIES_SYMMETRIC_KEY_SIZE, // KEY_BITS / 8
|
|
98
|
-
},
|
|
98
|
+
}),
|
|
99
99
|
IV_SIZE: ECIES_IV_SIZE,
|
|
100
100
|
AUTH_TAG_SIZE: ECIES_AUTH_TAG_SIZE,
|
|
101
101
|
MAX_RAW_DATA_SIZE: 9007199254740991, // 2^53 - 1 (max safe integer for JS)
|
|
102
102
|
/**
|
|
103
103
|
* Message encrypts without data length or crc
|
|
104
104
|
*/
|
|
105
|
-
SIMPLE: {
|
|
105
|
+
SIMPLE: Object.freeze({
|
|
106
106
|
FIXED_OVERHEAD_SIZE: expectedSimpleOverhead, // type (1) + public key (65) + IV (16) + auth tag (16)
|
|
107
107
|
DATA_LENGTH_SIZE: 0,
|
|
108
|
-
},
|
|
108
|
+
}),
|
|
109
109
|
/**
|
|
110
110
|
* Message encrypts with data length but no CRC (AES-GCM provides authentication)
|
|
111
111
|
*/
|
|
112
|
-
SINGLE: {
|
|
112
|
+
SINGLE: Object.freeze({
|
|
113
113
|
FIXED_OVERHEAD_SIZE: 106, // type (1) + public key (65) + IV (16) + auth tag (16) + data length (8)
|
|
114
114
|
DATA_LENGTH_SIZE: 8,
|
|
115
|
-
},
|
|
115
|
+
}),
|
|
116
116
|
/**
|
|
117
117
|
* Message encrypts for multiple recipients
|
|
118
118
|
*/
|
|
119
|
-
MULTIPLE: {
|
|
119
|
+
MULTIPLE: Object.freeze({
|
|
120
120
|
FIXED_OVERHEAD_SIZE: expectedMultipleOverhead, // type (1) + IV (16) + auth tag (16), no CRC
|
|
121
121
|
ENCRYPTED_KEY_SIZE: expectedMultipleEncryptedKeySize, // 129
|
|
122
122
|
MAX_RECIPIENTS: 65535,
|
|
123
123
|
RECIPIENT_ID_SIZE: ECIES_MULTIPLE_RECIPIENT_ID_SIZE,
|
|
124
124
|
RECIPIENT_COUNT_SIZE: 2,
|
|
125
125
|
DATA_LENGTH_SIZE: 8,
|
|
126
|
-
},
|
|
127
|
-
ENCRYPTION_TYPE: {
|
|
126
|
+
}),
|
|
127
|
+
ENCRYPTION_TYPE: Object.freeze({
|
|
128
128
|
SIMPLE: 33,
|
|
129
129
|
SINGLE: 66,
|
|
130
130
|
MULTIPLE: 99,
|
|
131
|
-
},
|
|
132
|
-
};
|
|
131
|
+
}),
|
|
132
|
+
});
|
|
133
133
|
const objectIdLength = new ObjectId().toHexString().length / 2;
|
|
134
|
-
export const Constants = {
|
|
134
|
+
export const Constants = Object.freeze({
|
|
135
135
|
/**
|
|
136
136
|
* The length of a raw object ID (not the hex string representation)
|
|
137
137
|
*/
|
|
@@ -170,7 +170,7 @@ export const Constants = {
|
|
|
170
170
|
* Matches a 64-character hexadecimal string (SHA-256).
|
|
171
171
|
*/
|
|
172
172
|
HmacRegex: /^[a-f0-9]{64}$/,
|
|
173
|
-
};
|
|
173
|
+
});
|
|
174
174
|
if (CHECKSUM.SHA3_BUFFER_LENGTH !== CHECKSUM.SHA3_DEFAULT_HASH_BITS / 8 ||
|
|
175
175
|
CHECKSUM.SHA3_BUFFER_LENGTH !== CHECKSUM.SHA3_DEFAULT_HASH_BITS / 8) {
|
|
176
176
|
throw new Error('Invalid checksum constants');
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAOxD,MAAM,CAAC,MAAM,UAAU,GAAW,CAAU,CAAC;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAW,CAAU,CAAC;AAC9C,MAAM,CAAC,MAAM,UAAU,GAAW,KAAc,CAAC;AACjD,MAAM,CAAC,MAAM,WAAW,GAAW,CAAU,CAAC;AAC9C,MAAM,CAAC,MAAM,UAAU,GAAW,UAAmB,CAAC;AACtD,MAAM,CAAC,MAAM,WAAW,GAAW,CAAU,CAAC;AAC9C,MAAM,CAAC,MAAM,UAAU,GAAW,qBAA8B,CAAC;AACjE;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAW,EAAW,CAAC;AAE7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAoB;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|