@digitaldefiance/ecies-lib 1.1.24 → 1.1.26
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 +8 -0
- package/package.json +5 -4
- package/src/constants.d.ts +46 -0
- package/src/constants.d.ts.map +1 -0
- package/src/constants.js +358 -0
- package/src/constants.js.map +1 -0
- package/src/email-string.d.ts +42 -0
- package/src/email-string.d.ts.map +1 -0
- package/src/email-string.js +73 -0
- package/src/email-string.js.map +1 -0
- package/src/enumerations/ecies-encryption-type.d.ts +15 -0
- package/src/enumerations/ecies-encryption-type.d.ts.map +1 -0
- package/src/enumerations/ecies-encryption-type.js +71 -0
- package/src/enumerations/ecies-encryption-type.js.map +1 -0
- package/src/enumerations/ecies-error-type.d.ts +32 -0
- package/src/enumerations/ecies-error-type.d.ts.map +1 -0
- package/src/enumerations/ecies-error-type.js +36 -0
- package/src/enumerations/ecies-error-type.js.map +1 -0
- package/src/enumerations/ecies-string-key.d.ts +96 -0
- package/src/enumerations/ecies-string-key.d.ts.map +1 -0
- package/src/enumerations/ecies-string-key.js +105 -0
- package/src/enumerations/ecies-string-key.js.map +1 -0
- package/src/enumerations/guid-brand-type.d.ts +27 -0
- package/src/enumerations/guid-brand-type.d.ts.map +1 -0
- package/src/enumerations/guid-brand-type.js +31 -0
- package/src/enumerations/guid-brand-type.js.map +1 -0
- package/src/enumerations/guid-error-type.d.ts +7 -0
- package/src/enumerations/guid-error-type.d.ts.map +1 -0
- package/src/enumerations/guid-error-type.js +11 -0
- package/src/enumerations/guid-error-type.js.map +1 -0
- package/src/enumerations/{index.ts → index.d.ts} +1 -0
- package/src/enumerations/index.d.ts.map +1 -0
- package/src/enumerations/index.js +18 -0
- package/src/enumerations/index.js.map +1 -0
- package/src/enumerations/invalid-email-type.d.ts +6 -0
- package/src/enumerations/invalid-email-type.d.ts.map +1 -0
- package/src/enumerations/invalid-email-type.js +10 -0
- package/src/enumerations/invalid-email-type.js.map +1 -0
- package/src/enumerations/length-encoding-type.d.ts +7 -0
- package/src/enumerations/length-encoding-type.d.ts.map +1 -0
- package/src/enumerations/length-encoding-type.js +11 -0
- package/src/enumerations/length-encoding-type.js.map +1 -0
- package/src/enumerations/length-error-type.d.ts +6 -0
- package/src/enumerations/length-error-type.d.ts.map +1 -0
- package/src/enumerations/length-error-type.js +10 -0
- package/src/enumerations/length-error-type.js.map +1 -0
- package/src/enumerations/member-error-type.d.ts +87 -0
- package/src/enumerations/member-error-type.d.ts.map +1 -0
- package/src/enumerations/member-error-type.js +91 -0
- package/src/enumerations/member-error-type.js.map +1 -0
- package/src/enumerations/{member-type.ts → member-type.d.ts} +6 -7
- package/src/enumerations/member-type.d.ts.map +1 -0
- package/src/enumerations/member-type.js +19 -0
- package/src/enumerations/member-type.js.map +1 -0
- package/src/enumerations/password-login-error-type.d.ts +5 -0
- package/src/enumerations/password-login-error-type.d.ts.map +1 -0
- package/src/enumerations/password-login-error-type.js +9 -0
- package/src/enumerations/password-login-error-type.js.map +1 -0
- package/src/enumerations/pbkdf2-error-type.d.ts +6 -0
- package/src/enumerations/pbkdf2-error-type.d.ts.map +1 -0
- package/src/enumerations/pbkdf2-error-type.js +10 -0
- package/src/enumerations/pbkdf2-error-type.js.map +1 -0
- package/src/enumerations/pbkdf2-profile.d.ts +6 -0
- package/src/enumerations/pbkdf2-profile.d.ts.map +1 -0
- package/src/enumerations/pbkdf2-profile.js +10 -0
- package/src/enumerations/pbkdf2-profile.js.map +1 -0
- package/src/enumerations/secure-storage-error-type.d.ts +6 -0
- package/src/enumerations/secure-storage-error-type.d.ts.map +1 -0
- package/src/enumerations/secure-storage-error-type.js +10 -0
- package/src/enumerations/secure-storage-error-type.js.map +1 -0
- package/src/errors/disposed.d.ts +4 -0
- package/src/errors/disposed.d.ts.map +1 -0
- package/src/errors/disposed.js +20 -0
- package/src/errors/disposed.js.map +1 -0
- package/src/errors/ecies.d.ts +7 -0
- package/src/errors/ecies.d.ts.map +1 -0
- package/src/errors/ecies.js +15 -0
- package/src/errors/ecies.js.map +1 -0
- package/src/errors/guid.d.ts +15 -0
- package/src/errors/guid.d.ts.map +1 -0
- package/src/errors/guid.js +26 -0
- package/src/errors/guid.js.map +1 -0
- package/src/errors/{index.ts → index.d.ts} +1 -0
- package/src/errors/index.d.ts.map +1 -0
- package/src/errors/index.js +12 -0
- package/src/errors/index.js.map +1 -0
- package/src/errors/invalid-email.d.ts +7 -0
- package/src/errors/invalid-email.d.ts.map +1 -0
- package/src/errors/invalid-email.js +14 -0
- package/src/errors/invalid-email.js.map +1 -0
- package/src/errors/length.d.ts +7 -0
- package/src/errors/length.d.ts.map +1 -0
- package/src/errors/length.js +14 -0
- package/src/errors/length.js.map +1 -0
- package/src/errors/member.d.ts +7 -0
- package/src/errors/member.d.ts.map +1 -0
- package/src/errors/member.js +14 -0
- package/src/errors/member.js.map +1 -0
- package/src/errors/pbkdf2.d.ts +7 -0
- package/src/errors/pbkdf2.d.ts.map +1 -0
- package/src/errors/pbkdf2.js +14 -0
- package/src/errors/pbkdf2.js.map +1 -0
- package/src/errors/secure-storage.d.ts +7 -0
- package/src/errors/secure-storage.d.ts.map +1 -0
- package/src/errors/secure-storage.js +15 -0
- package/src/errors/secure-storage.js.map +1 -0
- package/src/errors/simple-ecies.d.ts +6 -0
- package/src/errors/simple-ecies.d.ts.map +1 -0
- package/src/errors/simple-ecies.js +15 -0
- package/src/errors/simple-ecies.js.map +1 -0
- package/src/errors/simple-test-error.d.ts +4 -0
- package/src/errors/simple-test-error.d.ts.map +1 -0
- package/src/errors/simple-test-error.js +11 -0
- package/src/errors/simple-test-error.js.map +1 -0
- package/src/guid.d.ts +153 -0
- package/src/guid.d.ts.map +1 -0
- package/src/guid.js +615 -0
- package/src/guid.js.map +1 -0
- package/src/i18n-setup.d.ts +24 -0
- package/src/i18n-setup.d.ts.map +1 -0
- package/src/i18n-setup.js +837 -0
- package/src/i18n-setup.js.map +1 -0
- package/src/{index.ts → index.d.ts} +1 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +19 -0
- package/src/index.js.map +1 -0
- package/src/interfaces/checksum-config.d.ts +5 -0
- package/src/interfaces/checksum-config.d.ts.map +1 -0
- package/src/interfaces/checksum-config.js +3 -0
- package/src/interfaces/checksum-config.js.map +1 -0
- package/src/interfaces/checksum-consts.d.ts +11 -0
- package/src/interfaces/checksum-consts.d.ts.map +1 -0
- package/src/interfaces/checksum-consts.js +3 -0
- package/src/interfaces/checksum-consts.js.map +1 -0
- package/src/interfaces/constants.d.ts +45 -0
- package/src/interfaces/constants.d.ts.map +1 -0
- package/src/interfaces/constants.js +3 -0
- package/src/interfaces/constants.js.map +1 -0
- package/src/interfaces/ecies-config.d.ts +9 -0
- package/src/interfaces/ecies-config.d.ts.map +1 -0
- package/src/interfaces/ecies-config.js +3 -0
- package/src/interfaces/ecies-config.js.map +1 -0
- package/src/interfaces/ecies-consts.d.ts +58 -0
- package/src/interfaces/ecies-consts.d.ts.map +1 -0
- package/src/interfaces/ecies-consts.js +3 -0
- package/src/interfaces/ecies-consts.js.map +1 -0
- package/src/interfaces/ecies-file-service.d.ts +7 -0
- package/src/interfaces/ecies-file-service.d.ts.map +1 -0
- package/src/interfaces/ecies-file-service.js +3 -0
- package/src/interfaces/ecies-file-service.js.map +1 -0
- package/src/interfaces/guid.d.ts +45 -0
- package/src/interfaces/guid.d.ts.map +1 -0
- package/src/interfaces/guid.js +3 -0
- package/src/interfaces/guid.js.map +1 -0
- package/src/interfaces/{index.ts → index.d.ts} +1 -0
- package/src/interfaces/index.d.ts.map +1 -0
- package/src/interfaces/index.js +17 -0
- package/src/interfaces/index.js.map +1 -0
- package/src/interfaces/library-error.d.ts +23 -0
- package/src/interfaces/library-error.d.ts.map +1 -0
- package/src/interfaces/library-error.js +3 -0
- package/src/interfaces/library-error.js.map +1 -0
- package/src/interfaces/member-operational.d.ts +40 -0
- package/src/interfaces/member-operational.d.ts.map +1 -0
- package/src/interfaces/member-operational.js +3 -0
- package/src/interfaces/member-operational.js.map +1 -0
- package/src/interfaces/{member-storage.ts → member-storage.d.ts} +10 -11
- package/src/interfaces/member-storage.d.ts.map +1 -0
- package/src/interfaces/member-storage.js +3 -0
- package/src/interfaces/member-storage.js.map +1 -0
- package/src/interfaces/{member-with-mnemonic.ts → member-with-mnemonic.d.ts} +3 -3
- package/src/interfaces/member-with-mnemonic.d.ts.map +1 -0
- package/src/interfaces/member-with-mnemonic.js +3 -0
- package/src/interfaces/member-with-mnemonic.js.map +1 -0
- package/src/interfaces/pbkdf2-config.d.ts +7 -0
- package/src/interfaces/pbkdf2-config.d.ts.map +1 -0
- package/src/interfaces/pbkdf2-config.js +3 -0
- package/src/interfaces/pbkdf2-config.js.map +1 -0
- package/src/interfaces/pbkdf2-consts.d.ts +9 -0
- package/src/interfaces/pbkdf2-consts.d.ts.map +1 -0
- package/src/interfaces/pbkdf2-consts.js +3 -0
- package/src/interfaces/pbkdf2-consts.js.map +1 -0
- package/src/interfaces/pbkdf2-result.d.ts +6 -0
- package/src/interfaces/pbkdf2-result.d.ts.map +1 -0
- package/src/interfaces/pbkdf2-result.js +3 -0
- package/src/interfaces/pbkdf2-result.js.map +1 -0
- package/src/member.d.ts +66 -0
- package/src/member.d.ts.map +1 -0
- package/src/member.js +269 -0
- package/src/member.js.map +1 -0
- package/src/{pbkdf2-profiles.ts → pbkdf2-profiles.d.ts} +2 -2
- package/src/pbkdf2-profiles.d.ts.map +1 -0
- package/src/pbkdf2-profiles.js +3 -0
- package/src/pbkdf2-profiles.js.map +1 -0
- package/src/phone-number.d.ts +6 -0
- package/src/phone-number.d.ts.map +1 -0
- package/src/phone-number.js +22 -0
- package/src/phone-number.js.map +1 -0
- package/src/regexes.d.ts +7 -0
- package/src/regexes.d.ts.map +1 -0
- package/src/regexes.js +10 -0
- package/src/regexes.js.map +1 -0
- package/src/secure-buffer.d.ts +38 -0
- package/src/secure-buffer.d.ts.map +1 -0
- package/src/secure-buffer.js +168 -0
- package/src/secure-buffer.js.map +1 -0
- package/src/secure-string.d.ts +39 -0
- package/src/secure-string.d.ts.map +1 -0
- package/src/secure-string.js +195 -0
- package/src/secure-string.js.map +1 -0
- package/src/services/aes-gcm.d.ts +57 -0
- package/src/services/aes-gcm.d.ts.map +1 -0
- package/src/services/aes-gcm.js +111 -0
- package/src/services/aes-gcm.js.map +1 -0
- package/src/services/ecies/crypto-core.d.ts +51 -0
- package/src/services/ecies/crypto-core.d.ts.map +1 -0
- package/src/services/ecies/crypto-core.js +139 -0
- package/src/services/ecies/crypto-core.js.map +1 -0
- package/src/services/ecies/example.d.ts +25 -0
- package/src/services/ecies/example.d.ts.map +1 -0
- package/src/services/ecies/example.js +128 -0
- package/src/services/ecies/example.js.map +1 -0
- package/src/services/ecies/file.d.ts +18 -0
- package/src/services/ecies/file.d.ts.map +1 -0
- package/src/services/ecies/file.js +110 -0
- package/src/services/ecies/file.js.map +1 -0
- package/src/services/ecies/{index.ts → index.d.ts} +1 -3
- package/src/services/ecies/index.d.ts.map +1 -0
- package/src/services/ecies/index.js +44 -0
- package/src/services/ecies/index.js.map +1 -0
- package/src/services/ecies/integration.d.ts +59 -0
- package/src/services/ecies/integration.d.ts.map +1 -0
- package/src/services/ecies/integration.js +172 -0
- package/src/services/ecies/integration.js.map +1 -0
- package/src/services/ecies/interfaces.d.ts +51 -0
- package/src/services/ecies/interfaces.d.ts.map +1 -0
- package/src/services/ecies/interfaces.js +6 -0
- package/src/services/ecies/interfaces.js.map +1 -0
- package/src/services/ecies/manual-test.d.ts +29 -0
- package/src/services/ecies/manual-test.d.ts.map +1 -0
- package/src/services/ecies/manual-test.js +171 -0
- package/src/services/ecies/manual-test.js.map +1 -0
- package/src/services/ecies/multi-recipient.d.ts +52 -0
- package/src/services/ecies/multi-recipient.d.ts.map +1 -0
- package/src/services/ecies/multi-recipient.js +243 -0
- package/src/services/ecies/multi-recipient.js.map +1 -0
- package/src/services/ecies/service.d.ts +104 -0
- package/src/services/ecies/service.d.ts.map +1 -0
- package/src/services/ecies/service.js +192 -0
- package/src/services/ecies/service.js.map +1 -0
- package/src/services/ecies/signature.d.ts +27 -0
- package/src/services/ecies/signature.d.ts.map +1 -0
- package/src/services/ecies/signature.js +76 -0
- package/src/services/ecies/signature.js.map +1 -0
- package/src/services/ecies/single-recipient.d.ts +46 -0
- package/src/services/ecies/single-recipient.d.ts.map +1 -0
- package/src/services/ecies/single-recipient.js +212 -0
- package/src/services/ecies/single-recipient.js.map +1 -0
- package/src/services/{index.ts → index.d.ts} +1 -0
- package/src/services/index.d.ts.map +1 -0
- package/src/services/index.js +9 -0
- package/src/services/index.js.map +1 -0
- package/src/services/password-login.d.ts +49 -0
- package/src/services/password-login.d.ts.map +1 -0
- package/src/services/password-login.js +121 -0
- package/src/services/password-login.js.map +1 -0
- package/src/services/pbkdf2.d.ts +56 -0
- package/src/services/pbkdf2.d.ts.map +1 -0
- package/src/services/pbkdf2.js +114 -0
- package/src/services/pbkdf2.js.map +1 -0
- package/src/services/xor.d.ts +37 -0
- package/src/services/xor.d.ts.map +1 -0
- package/src/services/xor.js +67 -0
- package/src/services/xor.js.map +1 -0
- package/src/types/deep-partial.d.ts +4 -0
- package/src/types/deep-partial.d.ts.map +1 -0
- package/src/types/deep-partial.js +3 -0
- package/src/types/deep-partial.js.map +1 -0
- package/src/{types.ts → types.d.ts} +4 -10
- package/src/types.d.ts.map +1 -0
- package/src/types.js +3 -0
- package/src/types.js.map +1 -0
- package/src/utils.d.ts +68 -0
- package/src/utils.d.ts.map +1 -0
- package/src/utils.js +288 -0
- package/src/utils.js.map +1 -0
- package/LICENSE +0 -21
- package/src/constants.ts +0 -474
- package/src/email-string.ts +0 -83
- package/src/enumerations/ecies-encryption-type.ts +0 -102
- package/src/enumerations/ecies-error-type.ts +0 -31
- package/src/enumerations/ecies-string-key.ts +0 -108
- package/src/enumerations/guid-brand-type.ts +0 -26
- package/src/enumerations/guid-error-type.ts +0 -6
- package/src/enumerations/invalid-email-type.ts +0 -5
- package/src/enumerations/length-encoding-type.ts +0 -6
- package/src/enumerations/length-error-type.ts +0 -5
- package/src/enumerations/member-error-type.ts +0 -106
- package/src/enumerations/password-login-error-type.ts +0 -4
- package/src/enumerations/pbkdf2-error-type.ts +0 -5
- package/src/enumerations/pbkdf2-profile.ts +0 -5
- package/src/enumerations/secure-storage-error-type.ts +0 -5
- package/src/errors/disposed.ts +0 -15
- package/src/errors/ecies.ts +0 -34
- package/src/errors/guid.ts +0 -34
- package/src/errors/invalid-email.ts +0 -11
- package/src/errors/length.ts +0 -11
- package/src/errors/member.ts +0 -12
- package/src/errors/pbkdf2.ts +0 -12
- package/src/errors/secure-storage.ts +0 -13
- package/src/errors/simple-ecies.ts +0 -18
- package/src/errors/simple-test-error.ts +0 -6
- package/src/guid.ts +0 -800
- package/src/i18n-setup.ts +0 -1312
- package/src/interfaces/checksum-config.ts +0 -4
- package/src/interfaces/checksum-consts.ts +0 -13
- package/src/interfaces/constants.ts +0 -48
- package/src/interfaces/ecies-config.ts +0 -8
- package/src/interfaces/ecies-consts.ts +0 -70
- package/src/interfaces/ecies-file-service.ts +0 -6
- package/src/interfaces/guid.ts +0 -53
- package/src/interfaces/library-error.ts +0 -23
- package/src/interfaces/member-operational.ts +0 -54
- package/src/interfaces/pbkdf2-config.ts +0 -6
- package/src/interfaces/pbkdf2-consts.ts +0 -10
- package/src/interfaces/pbkdf2-result.ts +0 -5
- package/src/member.ts +0 -429
- package/src/phone-number.ts +0 -18
- package/src/regexes.ts +0 -10
- package/src/secure-buffer.ts +0 -183
- package/src/secure-string.ts +0 -229
- package/src/services/aes-gcm.ts +0 -177
- package/src/services/ecies/README.md +0 -147
- package/src/services/ecies/crypto-core.ts +0 -180
- package/src/services/ecies/example.ts +0 -185
- package/src/services/ecies/file.ts +0 -167
- package/src/services/ecies/integration.ts +0 -241
- package/src/services/ecies/interfaces.ts +0 -59
- package/src/services/ecies/manual-test.ts +0 -219
- package/src/services/ecies/multi-recipient.ts +0 -394
- package/src/services/ecies/service.ts +0 -317
- package/src/services/ecies/signature.ts +0 -93
- package/src/services/ecies/single-recipient.ts +0 -340
- package/src/services/password-login.ts +0 -228
- package/src/services/pbkdf2.ts +0 -172
- package/src/services/xor.ts +0 -65
- package/src/types/deep-partial.ts +0 -11
- package/src/utils.ts +0 -331
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SecureBuffer = void 0;
|
|
4
|
+
const secure_storage_error_type_1 = require("./enumerations/secure-storage-error-type");
|
|
5
|
+
const disposed_1 = require("./errors/disposed");
|
|
6
|
+
const secure_storage_1 = require("./errors/secure-storage");
|
|
7
|
+
const guid_1 = require("./guid");
|
|
8
|
+
const i18n_setup_1 = require("./i18n-setup");
|
|
9
|
+
const xor_1 = require("./services/xor");
|
|
10
|
+
const utils_1 = require("./utils");
|
|
11
|
+
/**
|
|
12
|
+
* A secure string buffer is a buffer whose intent is to prevent the raw password from being stored in memory.
|
|
13
|
+
* The buffer is encrypted with a key derived from a GUID.
|
|
14
|
+
* The GUID is stored in the clear, but the buffer is encrypted with a key derived from the GUID.
|
|
15
|
+
* This allows the buffer to be decrypted, but only if the GUID and salt are known.
|
|
16
|
+
*/
|
|
17
|
+
class SecureBuffer {
|
|
18
|
+
_disposed = false;
|
|
19
|
+
_id;
|
|
20
|
+
_length;
|
|
21
|
+
_obfuscatedValue;
|
|
22
|
+
_key;
|
|
23
|
+
_obfuscatedChecksum;
|
|
24
|
+
_disposedAt;
|
|
25
|
+
constructor(data) {
|
|
26
|
+
this._id = guid_1.GuidV4.new();
|
|
27
|
+
// don't bother encrypting an empty buffer
|
|
28
|
+
if (data === undefined || data.length === 0) {
|
|
29
|
+
this._length = 0;
|
|
30
|
+
this._obfuscatedValue = new Uint8Array(0);
|
|
31
|
+
this._key = new Uint8Array(0);
|
|
32
|
+
this._obfuscatedChecksum = new Uint8Array(0);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
this._length = data.length;
|
|
36
|
+
this._key = this.idUint8Array;
|
|
37
|
+
this._obfuscatedValue = this.obfuscateData(data);
|
|
38
|
+
// Create a simple checksum without crypto for synchronous operation
|
|
39
|
+
this._obfuscatedChecksum = this.createSimpleObfuscatedChecksum(data);
|
|
40
|
+
}
|
|
41
|
+
dispose() {
|
|
42
|
+
const err = new disposed_1.DisposedError();
|
|
43
|
+
if (typeof Error.captureStackTrace === 'function') {
|
|
44
|
+
Error.captureStackTrace(err, this.dispose);
|
|
45
|
+
}
|
|
46
|
+
this._disposedAt = err.stack ?? 'stack unavailable';
|
|
47
|
+
this._obfuscatedValue.fill(0);
|
|
48
|
+
this._key.fill(0);
|
|
49
|
+
this._obfuscatedChecksum.fill(0);
|
|
50
|
+
this._disposed = true;
|
|
51
|
+
}
|
|
52
|
+
assertNotDisposed() {
|
|
53
|
+
if (this._disposed) {
|
|
54
|
+
const e = new disposed_1.DisposedError();
|
|
55
|
+
try {
|
|
56
|
+
e.disposedAt = this._disposedAt;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// ignore if Error object is sealed/frozen
|
|
60
|
+
}
|
|
61
|
+
throw e;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
static fromString(data) {
|
|
65
|
+
return new SecureBuffer(new TextEncoder().encode(data));
|
|
66
|
+
}
|
|
67
|
+
get disposedAtStack() {
|
|
68
|
+
return this._disposedAt;
|
|
69
|
+
}
|
|
70
|
+
get id() {
|
|
71
|
+
this.assertNotDisposed();
|
|
72
|
+
return this._id.asFullHexGuid;
|
|
73
|
+
}
|
|
74
|
+
get idUint8Array() {
|
|
75
|
+
this.assertNotDisposed();
|
|
76
|
+
return this._id.asRawGuidUint8Array;
|
|
77
|
+
}
|
|
78
|
+
get originalLength() {
|
|
79
|
+
this.assertNotDisposed();
|
|
80
|
+
return this._length;
|
|
81
|
+
}
|
|
82
|
+
get value() {
|
|
83
|
+
this.assertNotDisposed();
|
|
84
|
+
if (this._length === 0) {
|
|
85
|
+
return new Uint8Array(0);
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
const deobfuscatedResult = this.deobfuscateData(this._obfuscatedValue);
|
|
89
|
+
if (deobfuscatedResult.length !== this._length) {
|
|
90
|
+
throw new secure_storage_1.SecureStorageError(secure_storage_error_type_1.SecureStorageErrorType.DecryptedValueLengthMismatch, (0, i18n_setup_1.getEciesI18nEngine)());
|
|
91
|
+
}
|
|
92
|
+
if (!this.validateObfuscatedChecksum(deobfuscatedResult)) {
|
|
93
|
+
throw new secure_storage_1.SecureStorageError(secure_storage_error_type_1.SecureStorageErrorType.DecryptedValueChecksumMismatch, (0, i18n_setup_1.getEciesI18nEngine)());
|
|
94
|
+
}
|
|
95
|
+
return deobfuscatedResult;
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
// If it's already a SecureStorageError, re-throw it
|
|
99
|
+
if (error instanceof secure_storage_1.SecureStorageError) {
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
// Convert any other error (including AES-GCM authentication errors) to SecureStorageError
|
|
103
|
+
throw new secure_storage_1.SecureStorageError(secure_storage_error_type_1.SecureStorageErrorType.DecryptedValueChecksumMismatch, (0, i18n_setup_1.getEciesI18nEngine)());
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
get valueAsString() {
|
|
107
|
+
this.assertNotDisposed();
|
|
108
|
+
return new TextDecoder().decode(this.value);
|
|
109
|
+
}
|
|
110
|
+
get valueAsHexString() {
|
|
111
|
+
this.assertNotDisposed();
|
|
112
|
+
return (0, utils_1.uint8ArrayToHex)(this.value);
|
|
113
|
+
}
|
|
114
|
+
get valueAsBase64String() {
|
|
115
|
+
this.assertNotDisposed();
|
|
116
|
+
return btoa(String.fromCharCode(...this.value));
|
|
117
|
+
}
|
|
118
|
+
get checksum() {
|
|
119
|
+
this.assertNotDisposed();
|
|
120
|
+
const deobfuscatedChecksum = new TextDecoder().decode(this.deobfuscateData(this._obfuscatedChecksum));
|
|
121
|
+
return deobfuscatedChecksum;
|
|
122
|
+
}
|
|
123
|
+
generateSimpleChecksum(data) {
|
|
124
|
+
const dataBytes = typeof data === 'string' ? new TextEncoder().encode(data) : data;
|
|
125
|
+
let hash = 0;
|
|
126
|
+
for (let i = 0; i < dataBytes.length; i++) {
|
|
127
|
+
hash = ((hash << 5) - hash + dataBytes[i]) & 0xffffffff;
|
|
128
|
+
}
|
|
129
|
+
return hash.toString(16);
|
|
130
|
+
}
|
|
131
|
+
createSimpleObfuscatedChecksum(data) {
|
|
132
|
+
const checksum = this.generateSimpleChecksum(data);
|
|
133
|
+
const result = this.obfuscateData(new TextEncoder().encode(checksum));
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
136
|
+
validateSimpleChecksum(data, checksum) {
|
|
137
|
+
const generatedChecksum = this.generateSimpleChecksum(data);
|
|
138
|
+
const a = new TextEncoder().encode(generatedChecksum);
|
|
139
|
+
const b = new TextEncoder().encode(checksum);
|
|
140
|
+
return this.timingSafeEqual(a, b);
|
|
141
|
+
}
|
|
142
|
+
timingSafeEqual(a, b) {
|
|
143
|
+
if (a.length !== b.length) {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
let result = 0;
|
|
147
|
+
for (let i = 0; i < a.length; i++) {
|
|
148
|
+
result |= a[i] ^ b[i];
|
|
149
|
+
}
|
|
150
|
+
return result === 0;
|
|
151
|
+
}
|
|
152
|
+
validateObfuscatedChecksum(data) {
|
|
153
|
+
const deobfuscatedChecksum = new TextDecoder().decode(this.deobfuscateData(this._obfuscatedChecksum));
|
|
154
|
+
return this.validateSimpleChecksum(data, deobfuscatedChecksum);
|
|
155
|
+
}
|
|
156
|
+
obfuscateData(data) {
|
|
157
|
+
return xor_1.XorService.xor(data, this._key);
|
|
158
|
+
}
|
|
159
|
+
deobfuscateData(data) {
|
|
160
|
+
return xor_1.XorService.xor(data, this._key);
|
|
161
|
+
}
|
|
162
|
+
get length() {
|
|
163
|
+
this.assertNotDisposed();
|
|
164
|
+
return this._length;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.SecureBuffer = SecureBuffer;
|
|
168
|
+
//# sourceMappingURL=secure-buffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secure-buffer.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/secure-buffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { FullHexGuid, RawGuidUint8Array } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* A secure string buffer is a buffer whose intent is to prevent the raw password from being stored in memory.
|
|
4
|
+
*/
|
|
5
|
+
export declare class SecureString {
|
|
6
|
+
private _disposed;
|
|
7
|
+
private readonly _isNull;
|
|
8
|
+
private readonly _id;
|
|
9
|
+
private readonly _length;
|
|
10
|
+
private readonly _obfuscatedValue;
|
|
11
|
+
private readonly _key;
|
|
12
|
+
private readonly _obfuscatedChecksum;
|
|
13
|
+
private _disposedAt?;
|
|
14
|
+
constructor(data?: string | Uint8Array | null);
|
|
15
|
+
private assertNotDisposed;
|
|
16
|
+
dispose(): void;
|
|
17
|
+
get disposedAtStack(): string | undefined;
|
|
18
|
+
get id(): FullHexGuid;
|
|
19
|
+
get idUint8Array(): RawGuidUint8Array;
|
|
20
|
+
get originalLength(): number;
|
|
21
|
+
get valueAsUint8Array(): Uint8Array;
|
|
22
|
+
get value(): string | null;
|
|
23
|
+
get notNullValue(): string;
|
|
24
|
+
get valueAsHexString(): string;
|
|
25
|
+
get valueAsBase64String(): string;
|
|
26
|
+
get hasValue(): boolean;
|
|
27
|
+
get checksum(): string;
|
|
28
|
+
get length(): number;
|
|
29
|
+
private generateChecksum;
|
|
30
|
+
private createSimpleChecksum;
|
|
31
|
+
private createSimpleObfuscatedChecksum;
|
|
32
|
+
private createObfuscatedChecksum;
|
|
33
|
+
private validateChecksum;
|
|
34
|
+
private timingSafeEqual;
|
|
35
|
+
private validateObfuscatedChecksum;
|
|
36
|
+
private obfuscateData;
|
|
37
|
+
private deobfuscateData;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=secure-string.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secure-string.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/secure-string.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGzD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAa;IAC9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAa;IACjD,OAAO,CAAC,WAAW,CAAC,CAAS;gBACjB,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAuB7C,OAAO,CAAC,iBAAiB;IAWlB,OAAO,IAAI,IAAI;IAWtB,IAAW,eAAe,IAAI,MAAM,GAAG,SAAS,CAE/C;IACD,IAAW,EAAE,IAAI,WAAW,CAG3B;IACD,IAAW,YAAY,IAAI,iBAAiB,CAG3C;IACD,IAAW,cAAc,IAAI,MAAM,CAGlC;IACD,IAAW,iBAAiB,IAAI,UAAU,CAyCzC;IACD,IAAW,KAAK,IAAI,MAAM,GAAG,IAAI,CAMhC;IACD,IAAW,YAAY,IAAI,MAAM,CAShC;IACD,IAAW,gBAAgB,IAAI,MAAM,CAGpC;IACD,IAAW,mBAAmB,IAAI,MAAM,CAGvC;IACD,IAAW,QAAQ,IAAI,OAAO,CAG7B;IACD,IAAW,QAAQ,IAAI,MAAM,CAM5B;IACD,IAAW,MAAM,IAAI,MAAM,CAG1B;YACa,gBAAgB;IAS9B,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,8BAA8B;YASxB,wBAAwB;YAOxB,gBAAgB;IAQ9B,OAAO,CAAC,eAAe;YAUT,0BAA0B;IAQxC,OAAO,CAAC,aAAa;IAGrB,OAAO,CAAC,eAAe;CAGxB"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SecureString = void 0;
|
|
4
|
+
const secure_storage_error_type_1 = require("./enumerations/secure-storage-error-type");
|
|
5
|
+
const disposed_1 = require("./errors/disposed");
|
|
6
|
+
const secure_storage_1 = require("./errors/secure-storage");
|
|
7
|
+
const guid_1 = require("./guid");
|
|
8
|
+
const i18n_setup_1 = require("./i18n-setup");
|
|
9
|
+
const xor_1 = require("./services/xor");
|
|
10
|
+
const utils_1 = require("./utils");
|
|
11
|
+
/**
|
|
12
|
+
* A secure string buffer is a buffer whose intent is to prevent the raw password from being stored in memory.
|
|
13
|
+
*/
|
|
14
|
+
class SecureString {
|
|
15
|
+
_disposed = false;
|
|
16
|
+
_isNull;
|
|
17
|
+
_id;
|
|
18
|
+
_length;
|
|
19
|
+
_obfuscatedValue;
|
|
20
|
+
_key;
|
|
21
|
+
_obfuscatedChecksum;
|
|
22
|
+
_disposedAt;
|
|
23
|
+
constructor(data) {
|
|
24
|
+
this._id = guid_1.GuidV4.new();
|
|
25
|
+
// only treat null/undefined as null, empty strings/arrays are valid empty data
|
|
26
|
+
if (data === null || data === undefined) {
|
|
27
|
+
this._isNull = true;
|
|
28
|
+
this._length = 0;
|
|
29
|
+
this._obfuscatedValue = new Uint8Array(0);
|
|
30
|
+
this._key = new Uint8Array(0);
|
|
31
|
+
this._obfuscatedChecksum = new Uint8Array(0);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
this._isNull = false;
|
|
35
|
+
this._key = this.idUint8Array;
|
|
36
|
+
const dataAsUint8Array = typeof data === 'string'
|
|
37
|
+
? new TextEncoder().encode(data)
|
|
38
|
+
: data;
|
|
39
|
+
// Store the byte length, not the character length
|
|
40
|
+
this._length = dataAsUint8Array.length;
|
|
41
|
+
this._obfuscatedValue = this.obfuscateData(dataAsUint8Array);
|
|
42
|
+
this._obfuscatedChecksum =
|
|
43
|
+
this.createSimpleObfuscatedChecksum(dataAsUint8Array);
|
|
44
|
+
}
|
|
45
|
+
assertNotDisposed() {
|
|
46
|
+
if (this._disposed) {
|
|
47
|
+
const e = new disposed_1.DisposedError();
|
|
48
|
+
try {
|
|
49
|
+
e.disposedAt = this._disposedAt;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// ignore if Error object is sealed/frozen
|
|
53
|
+
}
|
|
54
|
+
throw e;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
dispose() {
|
|
58
|
+
const err = new disposed_1.DisposedError();
|
|
59
|
+
if (typeof Error.captureStackTrace === 'function') {
|
|
60
|
+
Error.captureStackTrace(err, this.dispose);
|
|
61
|
+
}
|
|
62
|
+
this._disposedAt = err.stack ?? 'stack unavailable';
|
|
63
|
+
this._obfuscatedValue.fill(0);
|
|
64
|
+
this._key.fill(0);
|
|
65
|
+
this._obfuscatedChecksum.fill(0);
|
|
66
|
+
this._disposed = true;
|
|
67
|
+
}
|
|
68
|
+
get disposedAtStack() {
|
|
69
|
+
return this._disposedAt;
|
|
70
|
+
}
|
|
71
|
+
get id() {
|
|
72
|
+
this.assertNotDisposed();
|
|
73
|
+
return this._id.asFullHexGuid;
|
|
74
|
+
}
|
|
75
|
+
get idUint8Array() {
|
|
76
|
+
this.assertNotDisposed();
|
|
77
|
+
return this._id.asRawGuidUint8Array;
|
|
78
|
+
}
|
|
79
|
+
get originalLength() {
|
|
80
|
+
this.assertNotDisposed();
|
|
81
|
+
return this._length;
|
|
82
|
+
}
|
|
83
|
+
get valueAsUint8Array() {
|
|
84
|
+
this.assertNotDisposed();
|
|
85
|
+
if (this._isNull) {
|
|
86
|
+
return new Uint8Array(0);
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
const deobfuscatedResult = this.deobfuscateData(this._obfuscatedValue);
|
|
90
|
+
if (deobfuscatedResult.length !== this._length) {
|
|
91
|
+
throw new secure_storage_1.SecureStorageError(secure_storage_error_type_1.SecureStorageErrorType.DecryptedValueLengthMismatch, (0, i18n_setup_1.getEciesI18nEngine)());
|
|
92
|
+
}
|
|
93
|
+
// Validate checksum
|
|
94
|
+
const expectedChecksum = this.createSimpleChecksum(deobfuscatedResult);
|
|
95
|
+
const storedChecksum = new TextDecoder().decode(this.deobfuscateData(this._obfuscatedChecksum));
|
|
96
|
+
const expectedBytes = new TextEncoder().encode(expectedChecksum);
|
|
97
|
+
const storedBytes = new TextEncoder().encode(storedChecksum);
|
|
98
|
+
if (!this.timingSafeEqual(expectedBytes, storedBytes)) {
|
|
99
|
+
throw new secure_storage_1.SecureStorageError(secure_storage_error_type_1.SecureStorageErrorType.DecryptedValueChecksumMismatch, (0, i18n_setup_1.getEciesI18nEngine)());
|
|
100
|
+
}
|
|
101
|
+
return deobfuscatedResult;
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
// If it's already a SecureStorageError, re-throw it
|
|
105
|
+
if (error instanceof secure_storage_1.SecureStorageError) {
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
// Convert any other error to SecureStorageError
|
|
109
|
+
throw new secure_storage_1.SecureStorageError(secure_storage_error_type_1.SecureStorageErrorType.DecryptedValueChecksumMismatch, (0, i18n_setup_1.getEciesI18nEngine)());
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
get value() {
|
|
113
|
+
this.assertNotDisposed();
|
|
114
|
+
if (this._isNull) {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
return new TextDecoder().decode(this.valueAsUint8Array);
|
|
118
|
+
}
|
|
119
|
+
get notNullValue() {
|
|
120
|
+
this.assertNotDisposed();
|
|
121
|
+
if (this._isNull) {
|
|
122
|
+
throw new secure_storage_1.SecureStorageError(secure_storage_error_type_1.SecureStorageErrorType.ValueIsNull, (0, i18n_setup_1.getEciesI18nEngine)());
|
|
123
|
+
}
|
|
124
|
+
return new TextDecoder().decode(this.valueAsUint8Array);
|
|
125
|
+
}
|
|
126
|
+
get valueAsHexString() {
|
|
127
|
+
this.assertNotDisposed();
|
|
128
|
+
return (0, utils_1.uint8ArrayToHex)(this.valueAsUint8Array);
|
|
129
|
+
}
|
|
130
|
+
get valueAsBase64String() {
|
|
131
|
+
this.assertNotDisposed();
|
|
132
|
+
return btoa(String.fromCharCode(...this.valueAsUint8Array));
|
|
133
|
+
}
|
|
134
|
+
get hasValue() {
|
|
135
|
+
this.assertNotDisposed();
|
|
136
|
+
return !this._isNull && this._length > 0;
|
|
137
|
+
}
|
|
138
|
+
get checksum() {
|
|
139
|
+
this.assertNotDisposed();
|
|
140
|
+
const deobfuscatedChecksum = new TextDecoder().decode(this.deobfuscateData(this._obfuscatedChecksum));
|
|
141
|
+
return deobfuscatedChecksum;
|
|
142
|
+
}
|
|
143
|
+
get length() {
|
|
144
|
+
this.assertNotDisposed();
|
|
145
|
+
return this._length;
|
|
146
|
+
}
|
|
147
|
+
async generateChecksum(data) {
|
|
148
|
+
const dataBytes = typeof data === 'string' ? new TextEncoder().encode(data) : data;
|
|
149
|
+
const hashArray = await crypto.subtle.digest('SHA-256', new Uint8Array(dataBytes));
|
|
150
|
+
return (0, utils_1.uint8ArrayToHex)(new Uint8Array(hashArray));
|
|
151
|
+
}
|
|
152
|
+
createSimpleChecksum(data) {
|
|
153
|
+
let hash = 0;
|
|
154
|
+
for (let i = 0; i < data.length; i++) {
|
|
155
|
+
hash = ((hash << 5) - hash + data[i]) & 0xffffffff;
|
|
156
|
+
}
|
|
157
|
+
return hash.toString(16);
|
|
158
|
+
}
|
|
159
|
+
createSimpleObfuscatedChecksum(data) {
|
|
160
|
+
const dataBytes = typeof data === 'string' ? new TextEncoder().encode(data) : data;
|
|
161
|
+
const checksum = this.createSimpleChecksum(dataBytes);
|
|
162
|
+
return this.obfuscateData(new TextEncoder().encode(checksum));
|
|
163
|
+
}
|
|
164
|
+
async createObfuscatedChecksum(data) {
|
|
165
|
+
const checksum = await this.generateChecksum(data);
|
|
166
|
+
const result = this.obfuscateData(new TextEncoder().encode(checksum));
|
|
167
|
+
return result;
|
|
168
|
+
}
|
|
169
|
+
async validateChecksum(data, checksum) {
|
|
170
|
+
const generatedChecksum = await this.generateChecksum(data);
|
|
171
|
+
return generatedChecksum === checksum;
|
|
172
|
+
}
|
|
173
|
+
timingSafeEqual(a, b) {
|
|
174
|
+
if (a.length !== b.length) {
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
let result = 0;
|
|
178
|
+
for (let i = 0; i < a.length; i++) {
|
|
179
|
+
result |= a[i] ^ b[i];
|
|
180
|
+
}
|
|
181
|
+
return result === 0;
|
|
182
|
+
}
|
|
183
|
+
async validateObfuscatedChecksum(data) {
|
|
184
|
+
const deobfuscatedChecksum = new TextDecoder().decode(this.deobfuscateData(this._obfuscatedChecksum));
|
|
185
|
+
return this.validateChecksum(data, deobfuscatedChecksum);
|
|
186
|
+
}
|
|
187
|
+
obfuscateData(data) {
|
|
188
|
+
return xor_1.XorService.xor(data, this._key);
|
|
189
|
+
}
|
|
190
|
+
deobfuscateData(data) {
|
|
191
|
+
return xor_1.XorService.xor(data, this._key);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
exports.SecureString = SecureString;
|
|
195
|
+
//# sourceMappingURL=secure-string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secure-string.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/secure-string.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { IECIESConstants } from '../interfaces/ecies-consts';
|
|
2
|
+
export declare abstract class AESGCMService {
|
|
3
|
+
static readonly ALGORITHM_NAME = "AES-GCM";
|
|
4
|
+
/**
|
|
5
|
+
* Encrypt data using AES-GCM
|
|
6
|
+
* @param data Data to encrypt
|
|
7
|
+
* @param key Key to use for encryption (must be 16, 24 or 32 bytes for AES)
|
|
8
|
+
* @returns Encrypted data
|
|
9
|
+
*/
|
|
10
|
+
static encrypt(data: Uint8Array, key: Uint8Array, authTag?: boolean, eciesParams?: IECIESConstants): Promise<{
|
|
11
|
+
encrypted: Uint8Array;
|
|
12
|
+
iv: Uint8Array;
|
|
13
|
+
tag?: Uint8Array;
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* Combine encrypted data and auth tag into a single Uint8Array
|
|
17
|
+
* @param encryptedData The encrypted data
|
|
18
|
+
* @param authTag The authentication tag
|
|
19
|
+
* @returns The combined Uint8Array
|
|
20
|
+
*/
|
|
21
|
+
static combineEncryptedDataAndTag(encryptedData: Uint8Array, authTag: Uint8Array): Uint8Array;
|
|
22
|
+
/**
|
|
23
|
+
* Combine IV and encrypted data (with optional auth tag) into a single Uint8Array
|
|
24
|
+
* @param iv The initialization vector
|
|
25
|
+
* @param encryptedDataWithTag The encrypted data with auth tag already appended (if applicable)
|
|
26
|
+
* @returns The combined Uint8Array
|
|
27
|
+
*/
|
|
28
|
+
static combineIvAndEncryptedData(iv: Uint8Array, encryptedDataWithTag: Uint8Array): Uint8Array;
|
|
29
|
+
/**
|
|
30
|
+
* Combine IV, encrypted data and auth tag into a single Uint8Array
|
|
31
|
+
* @param iv The initialization vector
|
|
32
|
+
* @param encryptedData The encrypted data
|
|
33
|
+
* @param authTag The authentication tag
|
|
34
|
+
* @returns The combined Uint8Array
|
|
35
|
+
*/
|
|
36
|
+
static combineIvTagAndEncryptedData(iv: Uint8Array, encryptedData: Uint8Array, authTag: Uint8Array): Uint8Array;
|
|
37
|
+
/**
|
|
38
|
+
* Split combined encrypted data back into its components
|
|
39
|
+
* @param combinedData The combined data containing IV, encrypted data, and optionally auth tag
|
|
40
|
+
* @param hasAuthTag Whether the combined data includes an authentication tag
|
|
41
|
+
* @returns Object containing the split components
|
|
42
|
+
*/
|
|
43
|
+
static splitEncryptedData(combinedData: Uint8Array, hasAuthTag?: boolean, eciesParams?: IECIESConstants): {
|
|
44
|
+
iv: Uint8Array;
|
|
45
|
+
encryptedDataWithTag: Uint8Array;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Decrypt data using AES-GCM
|
|
49
|
+
* @param iv The initialization vector
|
|
50
|
+
* @param encryptedData Data to decrypt (with auth tag appended if authTag is true)
|
|
51
|
+
* @param key Key to use for decryption (must be 16, 24 or 32 bytes for AES)
|
|
52
|
+
* @param authTag Whether the encrypted data includes an authentication tag
|
|
53
|
+
* @returns Decrypted data
|
|
54
|
+
*/
|
|
55
|
+
static decrypt(iv: Uint8Array, encryptedData: Uint8Array, key: Uint8Array, authTag?: boolean, eciesParams?: IECIESConstants): Promise<Uint8Array>;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=aes-gcm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aes-gcm.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/aes-gcm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAK7D,8BAAsB,aAAa;IACjC,gBAAuB,cAAc,aAAa;IAClD;;;;;OAKG;WACiB,OAAO,CACzB,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,UAAU,EACf,OAAO,GAAE,OAAe,EACxB,WAAW,GAAE,eAAiC,GAC7C,OAAO,CAAC;QAAE,SAAS,EAAE,UAAU,CAAC;QAAC,EAAE,EAAE,UAAU,CAAC;QAAC,GAAG,CAAC,EAAE,UAAU,CAAA;KAAE,CAAC;IAgCvE;;;;;OAKG;WACW,0BAA0B,CACtC,aAAa,EAAE,UAAU,EACzB,OAAO,EAAE,UAAU,GAClB,UAAU;IAOb;;;;;OAKG;WACW,yBAAyB,CACrC,EAAE,EAAE,UAAU,EACd,oBAAoB,EAAE,UAAU,GAC/B,UAAU;IAOb;;;;;;OAMG;WACW,4BAA4B,CACxC,EAAE,EAAE,UAAU,EACd,aAAa,EAAE,UAAU,EACzB,OAAO,EAAE,UAAU,GAClB,UAAU;IAQb;;;;;OAKG;WACW,kBAAkB,CAC9B,YAAY,EAAE,UAAU,EACxB,UAAU,GAAE,OAAc,EAC1B,WAAW,GAAE,eAAiC,GAC7C;QAAE,EAAE,EAAE,UAAU,CAAC;QAAC,oBAAoB,EAAE,UAAU,CAAA;KAAE;IAkBvD;;;;;;;OAOG;WACiB,OAAO,CACzB,EAAE,EAAE,UAAU,EACd,aAAa,EAAE,UAAU,EACzB,GAAG,EAAE,UAAU,EACf,OAAO,GAAE,OAAe,EACxB,WAAW,GAAE,eAAiC,GAC7C,OAAO,CAAC,UAAU,CAAC;CAiCvB"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AESGCMService = void 0;
|
|
4
|
+
const constants_1 = require("../constants");
|
|
5
|
+
const i18n_setup_1 = require("../i18n-setup");
|
|
6
|
+
const enumerations_1 = require("../enumerations");
|
|
7
|
+
class AESGCMService {
|
|
8
|
+
static ALGORITHM_NAME = 'AES-GCM';
|
|
9
|
+
/**
|
|
10
|
+
* Encrypt data using AES-GCM
|
|
11
|
+
* @param data Data to encrypt
|
|
12
|
+
* @param key Key to use for encryption (must be 16, 24 or 32 bytes for AES)
|
|
13
|
+
* @returns Encrypted data
|
|
14
|
+
*/
|
|
15
|
+
static async encrypt(data, key, authTag = false, eciesParams = constants_1.Constants.ECIES) {
|
|
16
|
+
const cryptoKey = await crypto.subtle.importKey('raw', new Uint8Array(key), { name: AESGCMService.ALGORITHM_NAME }, false, ['encrypt']);
|
|
17
|
+
const eciesConsts = eciesParams;
|
|
18
|
+
const iv = crypto.getRandomValues(new Uint8Array(eciesConsts.IV_SIZE));
|
|
19
|
+
const encryptedResult = await crypto.subtle.encrypt({
|
|
20
|
+
name: AESGCMService.ALGORITHM_NAME,
|
|
21
|
+
iv,
|
|
22
|
+
...(authTag && { tagLength: eciesConsts.AUTH_TAG_SIZE * 8 }),
|
|
23
|
+
}, cryptoKey, new Uint8Array(data));
|
|
24
|
+
const encryptedArray = new Uint8Array(encryptedResult);
|
|
25
|
+
if (!authTag) {
|
|
26
|
+
return { encrypted: encryptedArray, iv };
|
|
27
|
+
}
|
|
28
|
+
const authTagLengthBytes = eciesConsts.AUTH_TAG_SIZE;
|
|
29
|
+
const encryptedBytes = encryptedArray.slice(0, -authTagLengthBytes); // Remove auth tag
|
|
30
|
+
const authTagBytes = encryptedArray.slice(-authTagLengthBytes); // Last 16 bytes are auth tag
|
|
31
|
+
return { encrypted: encryptedBytes, iv, tag: authTagBytes };
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Combine encrypted data and auth tag into a single Uint8Array
|
|
35
|
+
* @param encryptedData The encrypted data
|
|
36
|
+
* @param authTag The authentication tag
|
|
37
|
+
* @returns The combined Uint8Array
|
|
38
|
+
*/
|
|
39
|
+
static combineEncryptedDataAndTag(encryptedData, authTag) {
|
|
40
|
+
const combined = new Uint8Array(encryptedData.length + authTag.length);
|
|
41
|
+
combined.set(encryptedData);
|
|
42
|
+
combined.set(authTag, encryptedData.length);
|
|
43
|
+
return combined;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Combine IV and encrypted data (with optional auth tag) into a single Uint8Array
|
|
47
|
+
* @param iv The initialization vector
|
|
48
|
+
* @param encryptedDataWithTag The encrypted data with auth tag already appended (if applicable)
|
|
49
|
+
* @returns The combined Uint8Array
|
|
50
|
+
*/
|
|
51
|
+
static combineIvAndEncryptedData(iv, encryptedDataWithTag) {
|
|
52
|
+
const combined = new Uint8Array(iv.length + encryptedDataWithTag.length);
|
|
53
|
+
combined.set(iv);
|
|
54
|
+
combined.set(encryptedDataWithTag, iv.length);
|
|
55
|
+
return combined;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Combine IV, encrypted data and auth tag into a single Uint8Array
|
|
59
|
+
* @param iv The initialization vector
|
|
60
|
+
* @param encryptedData The encrypted data
|
|
61
|
+
* @param authTag The authentication tag
|
|
62
|
+
* @returns The combined Uint8Array
|
|
63
|
+
*/
|
|
64
|
+
static combineIvTagAndEncryptedData(iv, encryptedData, authTag) {
|
|
65
|
+
const encryptedWithTag = AESGCMService.combineEncryptedDataAndTag(encryptedData, authTag);
|
|
66
|
+
return AESGCMService.combineIvAndEncryptedData(iv, encryptedWithTag);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Split combined encrypted data back into its components
|
|
70
|
+
* @param combinedData The combined data containing IV, encrypted data, and optionally auth tag
|
|
71
|
+
* @param hasAuthTag Whether the combined data includes an authentication tag
|
|
72
|
+
* @returns Object containing the split components
|
|
73
|
+
*/
|
|
74
|
+
static splitEncryptedData(combinedData, hasAuthTag = true, eciesParams = constants_1.Constants.ECIES) {
|
|
75
|
+
const eciesConsts = eciesParams;
|
|
76
|
+
const ivLength = eciesConsts.IV_SIZE;
|
|
77
|
+
const tagLength = hasAuthTag ? eciesConsts.AUTH_TAG_SIZE : 0;
|
|
78
|
+
if (combinedData.length < ivLength + tagLength) {
|
|
79
|
+
const engine = (0, i18n_setup_1.getEciesI18nEngine)();
|
|
80
|
+
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_CombinedDataTooShortForComponents));
|
|
81
|
+
}
|
|
82
|
+
const iv = combinedData.slice(0, ivLength);
|
|
83
|
+
const encryptedDataWithTag = combinedData.slice(ivLength);
|
|
84
|
+
return { iv, encryptedDataWithTag };
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Decrypt data using AES-GCM
|
|
88
|
+
* @param iv The initialization vector
|
|
89
|
+
* @param encryptedData Data to decrypt (with auth tag appended if authTag is true)
|
|
90
|
+
* @param key Key to use for decryption (must be 16, 24 or 32 bytes for AES)
|
|
91
|
+
* @param authTag Whether the encrypted data includes an authentication tag
|
|
92
|
+
* @returns Decrypted data
|
|
93
|
+
*/
|
|
94
|
+
static async decrypt(iv, encryptedData, key, authTag = false, eciesParams = constants_1.Constants.ECIES) {
|
|
95
|
+
const eciesConsts = eciesParams;
|
|
96
|
+
const cryptoKey = await crypto.subtle.importKey('raw', new Uint8Array(key), { name: AESGCMService.ALGORITHM_NAME }, false, ['decrypt']);
|
|
97
|
+
if (!authTag) {
|
|
98
|
+
const decrypted = await crypto.subtle.decrypt({ name: AESGCMService.ALGORITHM_NAME, iv: new Uint8Array(iv) }, cryptoKey, new Uint8Array(encryptedData));
|
|
99
|
+
return new Uint8Array(decrypted);
|
|
100
|
+
}
|
|
101
|
+
// Decrypt with auth tag (already appended to encryptedData)
|
|
102
|
+
const decryptedResult = await crypto.subtle.decrypt({
|
|
103
|
+
name: AESGCMService.ALGORITHM_NAME,
|
|
104
|
+
iv: new Uint8Array(iv),
|
|
105
|
+
tagLength: eciesConsts.AUTH_TAG_SIZE * 8,
|
|
106
|
+
}, cryptoKey, new Uint8Array(encryptedData));
|
|
107
|
+
return new Uint8Array(decryptedResult);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.AESGCMService = AESGCMService;
|
|
111
|
+
//# sourceMappingURL=aes-gcm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aes-gcm.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/services/aes-gcm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { IECIESConfig } from '../../interfaces/ecies-config';
|
|
2
|
+
import { SecureString } from '../../secure-string';
|
|
3
|
+
import { ISimpleKeyPair, IWalletSeed } from './interfaces';
|
|
4
|
+
import { IECIESConstants } from '../../interfaces/ecies-consts';
|
|
5
|
+
/**
|
|
6
|
+
* Browser-compatible crypto core for ECIES operations
|
|
7
|
+
* Uses @scure libraries for browser compatibility
|
|
8
|
+
*/
|
|
9
|
+
export declare class EciesCryptoCore {
|
|
10
|
+
protected readonly _config: IECIESConfig;
|
|
11
|
+
protected readonly _eciesConsts: IECIESConstants;
|
|
12
|
+
constructor(config: IECIESConfig, eciesParams?: IECIESConstants);
|
|
13
|
+
get config(): IECIESConfig;
|
|
14
|
+
/**
|
|
15
|
+
* Validates and normalizes a public key for ECIES operations
|
|
16
|
+
*/
|
|
17
|
+
normalizePublicKey(publicKey: Uint8Array): Uint8Array;
|
|
18
|
+
/**
|
|
19
|
+
* Generate a new mnemonic
|
|
20
|
+
*/
|
|
21
|
+
generateNewMnemonic(): SecureString;
|
|
22
|
+
/**
|
|
23
|
+
* Generate wallet and seed from mnemonic
|
|
24
|
+
*/
|
|
25
|
+
walletAndSeedFromMnemonic(mnemonic: SecureString): IWalletSeed;
|
|
26
|
+
/**
|
|
27
|
+
* Create a simple key pair from a seed
|
|
28
|
+
*/
|
|
29
|
+
seedToSimpleKeyPair(seed: Uint8Array): ISimpleKeyPair;
|
|
30
|
+
/**
|
|
31
|
+
* Create a simple key pair from a mnemonic
|
|
32
|
+
*/
|
|
33
|
+
mnemonicToSimpleKeyPair(mnemonic: SecureString): ISimpleKeyPair;
|
|
34
|
+
/**
|
|
35
|
+
* Generate a random private key
|
|
36
|
+
*/
|
|
37
|
+
generatePrivateKey(): Uint8Array;
|
|
38
|
+
/**
|
|
39
|
+
* Get public key from private key
|
|
40
|
+
*/
|
|
41
|
+
getPublicKey(privateKey: Uint8Array): Uint8Array;
|
|
42
|
+
/**
|
|
43
|
+
* Generate ephemeral key pair for ECIES
|
|
44
|
+
*/
|
|
45
|
+
generateEphemeralKeyPair(): Promise<ISimpleKeyPair>;
|
|
46
|
+
/**
|
|
47
|
+
* Compute ECDH shared secret
|
|
48
|
+
*/
|
|
49
|
+
computeSharedSecret(privateKey: Uint8Array, publicKey: Uint8Array): Uint8Array;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=crypto-core.d.ts.map
|