@digitaldefiance/ecies-lib 1.1.23 → 1.1.24
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 +4 -0
- package/package.json +13 -33
- package/src/constants.ts +474 -0
- package/src/email-string.ts +83 -0
- package/src/enumerations/ecies-encryption-type.ts +102 -0
- package/src/enumerations/ecies-error-type.ts +31 -0
- package/src/enumerations/ecies-string-key.ts +108 -0
- package/src/enumerations/guid-brand-type.ts +26 -0
- package/src/enumerations/guid-error-type.ts +6 -0
- package/{dist/enumerations/index.d.ts → src/enumerations/index.ts} +0 -1
- package/src/enumerations/invalid-email-type.ts +5 -0
- package/src/enumerations/length-encoding-type.ts +6 -0
- package/src/enumerations/length-error-type.ts +5 -0
- package/src/enumerations/member-error-type.ts +106 -0
- package/{dist/enumerations/member-type.d.ts → src/enumerations/member-type.ts} +7 -6
- package/src/enumerations/password-login-error-type.ts +4 -0
- package/src/enumerations/pbkdf2-error-type.ts +5 -0
- package/src/enumerations/pbkdf2-profile.ts +5 -0
- package/src/enumerations/secure-storage-error-type.ts +5 -0
- package/src/errors/disposed.ts +15 -0
- package/src/errors/ecies.ts +34 -0
- package/src/errors/guid.ts +34 -0
- package/{dist/errors/index.d.ts → src/errors/index.ts} +0 -1
- package/src/errors/invalid-email.ts +11 -0
- package/src/errors/length.ts +11 -0
- package/src/errors/member.ts +12 -0
- package/src/errors/pbkdf2.ts +12 -0
- package/src/errors/secure-storage.ts +13 -0
- package/src/errors/simple-ecies.ts +18 -0
- package/src/errors/simple-test-error.ts +6 -0
- package/src/guid.ts +800 -0
- package/src/i18n-setup.ts +1312 -0
- package/{dist/index.d.ts → src/index.ts} +0 -1
- package/src/interfaces/checksum-config.ts +4 -0
- package/src/interfaces/checksum-consts.ts +13 -0
- package/src/interfaces/constants.ts +48 -0
- package/src/interfaces/ecies-config.ts +8 -0
- package/src/interfaces/ecies-consts.ts +70 -0
- package/src/interfaces/ecies-file-service.ts +6 -0
- package/src/interfaces/guid.ts +53 -0
- package/{dist/interfaces/index.d.ts → src/interfaces/index.ts} +0 -1
- package/src/interfaces/library-error.ts +23 -0
- package/src/interfaces/member-operational.ts +54 -0
- package/{dist/interfaces/member-storage.d.ts → src/interfaces/member-storage.ts} +11 -10
- package/{dist/interfaces/member-with-mnemonic.d.ts → src/interfaces/member-with-mnemonic.ts} +3 -3
- package/src/interfaces/pbkdf2-config.ts +6 -0
- package/src/interfaces/pbkdf2-consts.ts +10 -0
- package/src/interfaces/pbkdf2-result.ts +5 -0
- package/src/member.ts +429 -0
- package/{dist/pbkdf2-profiles.d.ts → src/pbkdf2-profiles.ts} +2 -2
- package/src/phone-number.ts +18 -0
- package/src/regexes.ts +10 -0
- package/src/secure-buffer.ts +183 -0
- package/src/secure-string.ts +229 -0
- package/src/services/aes-gcm.ts +177 -0
- package/src/services/ecies/README.md +147 -0
- package/src/services/ecies/crypto-core.ts +180 -0
- package/src/services/ecies/example.ts +185 -0
- package/src/services/ecies/file.ts +167 -0
- package/{dist/services/ecies/index.d.ts → src/services/ecies/index.ts} +3 -1
- package/src/services/ecies/integration.ts +241 -0
- package/src/services/ecies/interfaces.ts +59 -0
- package/src/services/ecies/manual-test.ts +219 -0
- package/src/services/ecies/multi-recipient.ts +394 -0
- package/src/services/ecies/service.ts +317 -0
- package/src/services/ecies/signature.ts +93 -0
- package/src/services/ecies/single-recipient.ts +340 -0
- package/{dist/services/index.d.ts → src/services/index.ts} +0 -1
- package/src/services/password-login.ts +228 -0
- package/src/services/pbkdf2.ts +172 -0
- package/src/services/xor.ts +65 -0
- package/src/types/deep-partial.ts +11 -0
- package/{dist/types.d.ts → src/types.ts} +10 -4
- package/src/utils.ts +331 -0
- package/dist/constants.d.ts +0 -46
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -358
- package/dist/constants.js.map +0 -1
- package/dist/email-string.d.ts +0 -42
- package/dist/email-string.d.ts.map +0 -1
- package/dist/email-string.js +0 -75
- package/dist/email-string.js.map +0 -1
- package/dist/enumerations/ecies-encryption-type.d.ts +0 -15
- package/dist/enumerations/ecies-encryption-type.d.ts.map +0 -1
- package/dist/enumerations/ecies-encryption-type.js +0 -71
- package/dist/enumerations/ecies-encryption-type.js.map +0 -1
- package/dist/enumerations/ecies-error-type.d.ts +0 -32
- package/dist/enumerations/ecies-error-type.d.ts.map +0 -1
- package/dist/enumerations/ecies-error-type.js +0 -36
- package/dist/enumerations/ecies-error-type.js.map +0 -1
- package/dist/enumerations/ecies-string-key.d.ts +0 -96
- package/dist/enumerations/ecies-string-key.d.ts.map +0 -1
- package/dist/enumerations/ecies-string-key.js +0 -105
- package/dist/enumerations/ecies-string-key.js.map +0 -1
- package/dist/enumerations/guid-brand-type.d.ts +0 -27
- package/dist/enumerations/guid-brand-type.d.ts.map +0 -1
- package/dist/enumerations/guid-brand-type.js +0 -31
- package/dist/enumerations/guid-brand-type.js.map +0 -1
- package/dist/enumerations/guid-error-type.d.ts +0 -7
- package/dist/enumerations/guid-error-type.d.ts.map +0 -1
- package/dist/enumerations/guid-error-type.js +0 -11
- package/dist/enumerations/guid-error-type.js.map +0 -1
- package/dist/enumerations/index.d.ts.map +0 -1
- package/dist/enumerations/index.js +0 -31
- package/dist/enumerations/index.js.map +0 -1
- package/dist/enumerations/invalid-email-type.d.ts +0 -6
- package/dist/enumerations/invalid-email-type.d.ts.map +0 -1
- package/dist/enumerations/invalid-email-type.js +0 -10
- package/dist/enumerations/invalid-email-type.js.map +0 -1
- package/dist/enumerations/length-encoding-type.d.ts +0 -7
- package/dist/enumerations/length-encoding-type.d.ts.map +0 -1
- package/dist/enumerations/length-encoding-type.js +0 -11
- package/dist/enumerations/length-encoding-type.js.map +0 -1
- package/dist/enumerations/length-error-type.d.ts +0 -6
- package/dist/enumerations/length-error-type.d.ts.map +0 -1
- package/dist/enumerations/length-error-type.js +0 -10
- package/dist/enumerations/length-error-type.js.map +0 -1
- package/dist/enumerations/member-error-type.d.ts +0 -87
- package/dist/enumerations/member-error-type.d.ts.map +0 -1
- package/dist/enumerations/member-error-type.js +0 -91
- package/dist/enumerations/member-error-type.js.map +0 -1
- package/dist/enumerations/member-type.d.ts.map +0 -1
- package/dist/enumerations/member-type.js +0 -19
- package/dist/enumerations/member-type.js.map +0 -1
- package/dist/enumerations/password-login-error-type.d.ts +0 -5
- package/dist/enumerations/password-login-error-type.d.ts.map +0 -1
- package/dist/enumerations/password-login-error-type.js +0 -9
- package/dist/enumerations/password-login-error-type.js.map +0 -1
- package/dist/enumerations/pbkdf2-error-type.d.ts +0 -6
- package/dist/enumerations/pbkdf2-error-type.d.ts.map +0 -1
- package/dist/enumerations/pbkdf2-error-type.js +0 -10
- package/dist/enumerations/pbkdf2-error-type.js.map +0 -1
- package/dist/enumerations/pbkdf2-profile.d.ts +0 -6
- package/dist/enumerations/pbkdf2-profile.d.ts.map +0 -1
- package/dist/enumerations/pbkdf2-profile.js +0 -10
- package/dist/enumerations/pbkdf2-profile.js.map +0 -1
- package/dist/enumerations/secure-storage-error-type.d.ts +0 -6
- package/dist/enumerations/secure-storage-error-type.d.ts.map +0 -1
- package/dist/enumerations/secure-storage-error-type.js +0 -10
- package/dist/enumerations/secure-storage-error-type.js.map +0 -1
- package/dist/errors/disposed.d.ts +0 -4
- package/dist/errors/disposed.d.ts.map +0 -1
- package/dist/errors/disposed.js +0 -20
- package/dist/errors/disposed.js.map +0 -1
- package/dist/errors/ecies.d.ts +0 -7
- package/dist/errors/ecies.d.ts.map +0 -1
- package/dist/errors/ecies.js +0 -15
- package/dist/errors/ecies.js.map +0 -1
- package/dist/errors/guid.d.ts +0 -15
- package/dist/errors/guid.d.ts.map +0 -1
- package/dist/errors/guid.js +0 -26
- package/dist/errors/guid.js.map +0 -1
- package/dist/errors/index.d.ts.map +0 -1
- package/dist/errors/index.js +0 -25
- package/dist/errors/index.js.map +0 -1
- package/dist/errors/invalid-email.d.ts +0 -7
- package/dist/errors/invalid-email.d.ts.map +0 -1
- package/dist/errors/invalid-email.js +0 -14
- package/dist/errors/invalid-email.js.map +0 -1
- package/dist/errors/length.d.ts +0 -7
- package/dist/errors/length.d.ts.map +0 -1
- package/dist/errors/length.js +0 -14
- package/dist/errors/length.js.map +0 -1
- package/dist/errors/member.d.ts +0 -7
- package/dist/errors/member.d.ts.map +0 -1
- package/dist/errors/member.js +0 -14
- package/dist/errors/member.js.map +0 -1
- package/dist/errors/pbkdf2.d.ts +0 -7
- package/dist/errors/pbkdf2.d.ts.map +0 -1
- package/dist/errors/pbkdf2.js +0 -14
- package/dist/errors/pbkdf2.js.map +0 -1
- package/dist/errors/secure-storage.d.ts +0 -7
- package/dist/errors/secure-storage.d.ts.map +0 -1
- package/dist/errors/secure-storage.js +0 -15
- package/dist/errors/secure-storage.js.map +0 -1
- package/dist/errors/simple-ecies.d.ts +0 -6
- package/dist/errors/simple-ecies.d.ts.map +0 -1
- package/dist/errors/simple-ecies.js +0 -15
- package/dist/errors/simple-ecies.js.map +0 -1
- package/dist/errors/simple-test-error.d.ts +0 -4
- package/dist/errors/simple-test-error.d.ts.map +0 -1
- package/dist/errors/simple-test-error.js +0 -11
- package/dist/errors/simple-test-error.js.map +0 -1
- package/dist/guid.d.ts +0 -153
- package/dist/guid.d.ts.map +0 -1
- package/dist/guid.js +0 -647
- package/dist/guid.js.map +0 -1
- package/dist/i18n-setup.d.ts +0 -24
- package/dist/i18n-setup.d.ts.map +0 -1
- package/dist/i18n-setup.js +0 -837
- package/dist/i18n-setup.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -32
- package/dist/index.js.map +0 -1
- package/dist/interfaces/checksum-config.d.ts +0 -5
- package/dist/interfaces/checksum-config.d.ts.map +0 -1
- package/dist/interfaces/checksum-config.js +0 -3
- package/dist/interfaces/checksum-config.js.map +0 -1
- package/dist/interfaces/checksum-consts.d.ts +0 -11
- package/dist/interfaces/checksum-consts.d.ts.map +0 -1
- package/dist/interfaces/checksum-consts.js +0 -3
- package/dist/interfaces/checksum-consts.js.map +0 -1
- package/dist/interfaces/constants.d.ts +0 -45
- package/dist/interfaces/constants.d.ts.map +0 -1
- package/dist/interfaces/constants.js +0 -3
- package/dist/interfaces/constants.js.map +0 -1
- package/dist/interfaces/ecies-config.d.ts +0 -9
- package/dist/interfaces/ecies-config.d.ts.map +0 -1
- package/dist/interfaces/ecies-config.js +0 -3
- package/dist/interfaces/ecies-config.js.map +0 -1
- package/dist/interfaces/ecies-consts.d.ts +0 -58
- package/dist/interfaces/ecies-consts.d.ts.map +0 -1
- package/dist/interfaces/ecies-consts.js +0 -3
- package/dist/interfaces/ecies-consts.js.map +0 -1
- package/dist/interfaces/ecies-file-service.d.ts +0 -7
- package/dist/interfaces/ecies-file-service.d.ts.map +0 -1
- package/dist/interfaces/ecies-file-service.js +0 -3
- package/dist/interfaces/ecies-file-service.js.map +0 -1
- package/dist/interfaces/guid.d.ts +0 -45
- package/dist/interfaces/guid.d.ts.map +0 -1
- package/dist/interfaces/guid.js +0 -3
- package/dist/interfaces/guid.js.map +0 -1
- package/dist/interfaces/index.d.ts.map +0 -1
- package/dist/interfaces/index.js +0 -30
- package/dist/interfaces/index.js.map +0 -1
- package/dist/interfaces/library-error.d.ts +0 -23
- package/dist/interfaces/library-error.d.ts.map +0 -1
- package/dist/interfaces/library-error.js +0 -3
- package/dist/interfaces/library-error.js.map +0 -1
- package/dist/interfaces/member-operational.d.ts +0 -40
- package/dist/interfaces/member-operational.d.ts.map +0 -1
- package/dist/interfaces/member-operational.js +0 -3
- package/dist/interfaces/member-operational.js.map +0 -1
- package/dist/interfaces/member-storage.d.ts.map +0 -1
- package/dist/interfaces/member-storage.js +0 -3
- package/dist/interfaces/member-storage.js.map +0 -1
- package/dist/interfaces/member-with-mnemonic.d.ts.map +0 -1
- package/dist/interfaces/member-with-mnemonic.js +0 -3
- package/dist/interfaces/member-with-mnemonic.js.map +0 -1
- package/dist/interfaces/pbkdf2-config.d.ts +0 -7
- package/dist/interfaces/pbkdf2-config.d.ts.map +0 -1
- package/dist/interfaces/pbkdf2-config.js +0 -3
- package/dist/interfaces/pbkdf2-config.js.map +0 -1
- package/dist/interfaces/pbkdf2-consts.d.ts +0 -9
- package/dist/interfaces/pbkdf2-consts.d.ts.map +0 -1
- package/dist/interfaces/pbkdf2-consts.js +0 -3
- package/dist/interfaces/pbkdf2-consts.js.map +0 -1
- package/dist/interfaces/pbkdf2-result.d.ts +0 -6
- package/dist/interfaces/pbkdf2-result.d.ts.map +0 -1
- package/dist/interfaces/pbkdf2-result.js +0 -3
- package/dist/interfaces/pbkdf2-result.js.map +0 -1
- package/dist/member.d.ts +0 -66
- package/dist/member.d.ts.map +0 -1
- package/dist/member.js +0 -271
- package/dist/member.js.map +0 -1
- package/dist/pbkdf2-profiles.d.ts.map +0 -1
- package/dist/pbkdf2-profiles.js +0 -3
- package/dist/pbkdf2-profiles.js.map +0 -1
- package/dist/phone-number.d.ts +0 -6
- package/dist/phone-number.d.ts.map +0 -1
- package/dist/phone-number.js +0 -22
- package/dist/phone-number.js.map +0 -1
- package/dist/regexes.d.ts +0 -7
- package/dist/regexes.d.ts.map +0 -1
- package/dist/regexes.js +0 -10
- package/dist/regexes.js.map +0 -1
- package/dist/secure-buffer.d.ts +0 -38
- package/dist/secure-buffer.d.ts.map +0 -1
- package/dist/secure-buffer.js +0 -168
- package/dist/secure-buffer.js.map +0 -1
- package/dist/secure-string.d.ts +0 -39
- package/dist/secure-string.d.ts.map +0 -1
- package/dist/secure-string.js +0 -195
- package/dist/secure-string.js.map +0 -1
- package/dist/services/aes-gcm.d.ts +0 -57
- package/dist/services/aes-gcm.d.ts.map +0 -1
- package/dist/services/aes-gcm.js +0 -111
- package/dist/services/aes-gcm.js.map +0 -1
- package/dist/services/ecies/crypto-core.d.ts +0 -51
- package/dist/services/ecies/crypto-core.d.ts.map +0 -1
- package/dist/services/ecies/crypto-core.js +0 -139
- package/dist/services/ecies/crypto-core.js.map +0 -1
- package/dist/services/ecies/example.d.ts +0 -25
- package/dist/services/ecies/example.d.ts.map +0 -1
- package/dist/services/ecies/example.js +0 -128
- package/dist/services/ecies/example.js.map +0 -1
- package/dist/services/ecies/file.d.ts +0 -18
- package/dist/services/ecies/file.d.ts.map +0 -1
- package/dist/services/ecies/file.js +0 -110
- package/dist/services/ecies/file.js.map +0 -1
- package/dist/services/ecies/index.d.ts.map +0 -1
- package/dist/services/ecies/index.js +0 -57
- package/dist/services/ecies/index.js.map +0 -1
- package/dist/services/ecies/integration.d.ts +0 -59
- package/dist/services/ecies/integration.d.ts.map +0 -1
- package/dist/services/ecies/integration.js +0 -172
- package/dist/services/ecies/integration.js.map +0 -1
- package/dist/services/ecies/interfaces.d.ts +0 -51
- package/dist/services/ecies/interfaces.d.ts.map +0 -1
- package/dist/services/ecies/interfaces.js +0 -6
- package/dist/services/ecies/interfaces.js.map +0 -1
- package/dist/services/ecies/manual-test.d.ts +0 -29
- package/dist/services/ecies/manual-test.d.ts.map +0 -1
- package/dist/services/ecies/manual-test.js +0 -171
- package/dist/services/ecies/manual-test.js.map +0 -1
- package/dist/services/ecies/multi-recipient.d.ts +0 -52
- package/dist/services/ecies/multi-recipient.d.ts.map +0 -1
- package/dist/services/ecies/multi-recipient.js +0 -243
- package/dist/services/ecies/multi-recipient.js.map +0 -1
- package/dist/services/ecies/service.d.ts +0 -104
- package/dist/services/ecies/service.d.ts.map +0 -1
- package/dist/services/ecies/service.js +0 -192
- package/dist/services/ecies/service.js.map +0 -1
- package/dist/services/ecies/signature.d.ts +0 -27
- package/dist/services/ecies/signature.d.ts.map +0 -1
- package/dist/services/ecies/signature.js +0 -76
- package/dist/services/ecies/signature.js.map +0 -1
- package/dist/services/ecies/single-recipient.d.ts +0 -46
- package/dist/services/ecies/single-recipient.d.ts.map +0 -1
- package/dist/services/ecies/single-recipient.js +0 -212
- package/dist/services/ecies/single-recipient.js.map +0 -1
- package/dist/services/index.d.ts.map +0 -1
- package/dist/services/index.js +0 -22
- package/dist/services/index.js.map +0 -1
- package/dist/services/password-login.d.ts +0 -49
- package/dist/services/password-login.d.ts.map +0 -1
- package/dist/services/password-login.js +0 -121
- package/dist/services/password-login.js.map +0 -1
- package/dist/services/pbkdf2.d.ts +0 -56
- package/dist/services/pbkdf2.d.ts.map +0 -1
- package/dist/services/pbkdf2.js +0 -114
- package/dist/services/pbkdf2.js.map +0 -1
- package/dist/services/xor.d.ts +0 -37
- package/dist/services/xor.d.ts.map +0 -1
- package/dist/services/xor.js +0 -67
- package/dist/services/xor.js.map +0 -1
- package/dist/types/deep-partial.d.ts +0 -4
- package/dist/types/deep-partial.d.ts.map +0 -1
- package/dist/types/deep-partial.js +0 -3
- package/dist/types/deep-partial.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
- package/dist/utils.d.ts +0 -68
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -288
- package/dist/utils.js.map +0 -1
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EciesSignature = void 0;
|
|
4
|
-
const secp256k1_js_1 = require("@noble/curves/secp256k1.js");
|
|
5
|
-
const sha2_js_1 = require("@noble/hashes/sha2.js");
|
|
6
|
-
const utils_1 = require("../../utils");
|
|
7
|
-
/**
|
|
8
|
-
* Browser-compatible ECDSA signature operations
|
|
9
|
-
*/
|
|
10
|
-
class EciesSignature {
|
|
11
|
-
cryptoCore;
|
|
12
|
-
constructor(cryptoCore) {
|
|
13
|
-
this.cryptoCore = cryptoCore;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Sign arbitrary binary data with a secp256k1 private key.
|
|
17
|
-
* Returns 64 bytes: [r(32) | s(32)]
|
|
18
|
-
*/
|
|
19
|
-
signMessage(privateKey, data) {
|
|
20
|
-
const hash = (0, sha2_js_1.sha256)(data);
|
|
21
|
-
// Use deterministic signatures (RFC 6979) for consistency
|
|
22
|
-
const signature = secp256k1_js_1.secp256k1.sign(hash, privateKey, {
|
|
23
|
-
format: 'compact',
|
|
24
|
-
extraEntropy: false,
|
|
25
|
-
});
|
|
26
|
-
return signature;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Verify signature (64 bytes: [r|s]) over arbitrary binary data against a public key.
|
|
30
|
-
*/
|
|
31
|
-
verifyMessage(publicKey, data, signature) {
|
|
32
|
-
try {
|
|
33
|
-
if (!signature || signature.length !== 64)
|
|
34
|
-
return false;
|
|
35
|
-
const hash = (0, sha2_js_1.sha256)(data);
|
|
36
|
-
const normalizedPublicKey = this.cryptoCore.normalizePublicKey(publicKey);
|
|
37
|
-
// Try direct verification first
|
|
38
|
-
try {
|
|
39
|
-
const directResult = secp256k1_js_1.secp256k1.verify(signature, hash, normalizedPublicKey);
|
|
40
|
-
if (directResult)
|
|
41
|
-
return true;
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
// Continue to alternative verification methods
|
|
45
|
-
}
|
|
46
|
-
// If direct verification fails, the signature might be from a different library
|
|
47
|
-
// that uses different nonce generation. Since we can't make @noble/curves
|
|
48
|
-
// verify signatures from ethereumjs-util directly, we'll return false here.
|
|
49
|
-
// The calling code should handle cross-platform verification at a higher level.
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
catch (err) {
|
|
53
|
-
console.error('Signature verification failed:', err);
|
|
54
|
-
return false;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Convert signature string to signature Uint8Array
|
|
59
|
-
*/
|
|
60
|
-
signatureStringToSignatureUint8Array(signatureString) {
|
|
61
|
-
const cleanHex = signatureString.replace(/^0x/, '');
|
|
62
|
-
const result = new Uint8Array(cleanHex.length / 2);
|
|
63
|
-
for (let i = 0; i < cleanHex.length; i += 2) {
|
|
64
|
-
result[i / 2] = parseInt(cleanHex.substring(i, i + 2), 16);
|
|
65
|
-
}
|
|
66
|
-
return result;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Convert signature buffer to signature string
|
|
70
|
-
*/
|
|
71
|
-
signatureUint8ArrayToSignatureString(signatureArray) {
|
|
72
|
-
return (0, utils_1.uint8ArrayToHex)(signatureArray);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
exports.EciesSignature = EciesSignature;
|
|
76
|
-
//# sourceMappingURL=signature.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../../../src/services/ecies/signature.ts"],"names":[],"mappings":";;;AAAA,6DAAuD;AACvD,mDAA+C;AAE/C,uCAA8C;AAG9C;;GAEG;AACH,MAAa,cAAc;IACR,UAAU,CAAkB;IAE7C,YAAY,UAA2B;QACrC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACI,WAAW,CAChB,UAAsB,EACtB,IAAgB;QAEhB,MAAM,IAAI,GAAG,IAAA,gBAAM,EAAC,IAAI,CAAC,CAAC;QAC1B,0DAA0D;QAC1D,MAAM,SAAS,GAAG,wBAAS,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE;YACjD,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QACH,OAAO,SAAgC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACI,aAAa,CAClB,SAAqB,EACrB,IAAgB,EAChB,SAA8B;QAE9B,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,EAAE;gBAAE,OAAO,KAAK,CAAC;YACxD,MAAM,IAAI,GAAG,IAAA,gBAAM,EAAC,IAAI,CAAC,CAAC;YAC1B,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAE1E,gCAAgC;YAChC,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,wBAAS,CAAC,MAAM,CACnC,SAAS,EACT,IAAI,EACJ,mBAAmB,CACpB,CAAC;gBACF,IAAI,YAAY;oBAAE,OAAO,IAAI,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACP,+CAA+C;YACjD,CAAC;YAED,gFAAgF;YAChF,0EAA0E;YAC1E,4EAA4E;YAC5E,gFAAgF;YAEhF,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACI,oCAAoC,CACzC,eAAgC;QAEhC,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,MAA6B,CAAC;IACvC,CAAC;IAED;;OAEG;IACI,oCAAoC,CACzC,cAAmC;QAEnC,OAAO,IAAA,uBAAe,EAAC,cAAc,CAAoB,CAAC;IAC5D,CAAC;CACF;AAnFD,wCAmFC"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { IECIESConstants } from '../../interfaces/ecies-consts';
|
|
2
|
-
import { EciesEncryptionTypeEnum } from '../../enumerations/ecies-encryption-type';
|
|
3
|
-
import { IECIESConfig } from '../../interfaces/ecies-config';
|
|
4
|
-
import { EciesCryptoCore } from './crypto-core';
|
|
5
|
-
import { IDecryptionResult, ISingleEncryptedParsedHeader } from './interfaces';
|
|
6
|
-
/**
|
|
7
|
-
* Browser-compatible single recipient ECIES encryption/decryption
|
|
8
|
-
*/
|
|
9
|
-
export declare class EciesSingleRecipient {
|
|
10
|
-
protected readonly cryptoCore: EciesCryptoCore;
|
|
11
|
-
protected readonly config: IECIESConfig;
|
|
12
|
-
protected readonly eciesConsts: IECIESConstants;
|
|
13
|
-
constructor(config: IECIESConfig, eciesParams?: IECIESConstants);
|
|
14
|
-
/**
|
|
15
|
-
* Encrypt a message for a single recipient
|
|
16
|
-
*/
|
|
17
|
-
encrypt(encryptSimple: boolean, receiverPublicKey: Uint8Array, message: Uint8Array, preamble?: Uint8Array): Promise<Uint8Array>;
|
|
18
|
-
/**
|
|
19
|
-
* Parse encrypted message header
|
|
20
|
-
*/
|
|
21
|
-
parseEncryptedMessage(encryptionType: EciesEncryptionTypeEnum | undefined, data: Uint8Array, preambleSize?: number, options?: {
|
|
22
|
-
dataLength?: number;
|
|
23
|
-
}): {
|
|
24
|
-
header: ISingleEncryptedParsedHeader;
|
|
25
|
-
data: Uint8Array;
|
|
26
|
-
remainder: Uint8Array;
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* Decrypt with header
|
|
30
|
-
*/
|
|
31
|
-
decryptWithHeader(encryptionType: EciesEncryptionTypeEnum | undefined, privateKey: Uint8Array, encryptedData: Uint8Array, preambleSize?: number, options?: {
|
|
32
|
-
dataLength?: number;
|
|
33
|
-
}): Promise<Uint8Array>;
|
|
34
|
-
/**
|
|
35
|
-
* Extended decrypt with header that returns additional info
|
|
36
|
-
*/
|
|
37
|
-
decryptWithHeaderEx(encryptionType: EciesEncryptionTypeEnum | undefined, privateKey: Uint8Array, encryptedData: Uint8Array, preambleSize?: number, options?: {
|
|
38
|
-
dataLength?: number;
|
|
39
|
-
}): Promise<IDecryptionResult>;
|
|
40
|
-
/**
|
|
41
|
-
* Decrypt with individual components
|
|
42
|
-
*/
|
|
43
|
-
decryptWithComponents(privateKey: Uint8Array, ephemeralPublicKey: Uint8Array, iv: Uint8Array, authTag: Uint8Array, encrypted: Uint8Array): Promise<Uint8Array>;
|
|
44
|
-
private arraysEqual;
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=single-recipient.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"single-recipient.d.ts","sourceRoot":"","sources":["../../../src/services/ecies/single-recipient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAEL,uBAAuB,EACxB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAI/E;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;gBAEpC,MAAM,EAAE,YAAY,EAAE,WAAW,GAAE,eAAiC;IAMhF;;OAEG;IACU,OAAO,CAClB,aAAa,EAAE,OAAO,EACtB,iBAAiB,EAAE,UAAU,EAC7B,OAAO,EAAE,UAAU,EACnB,QAAQ,GAAE,UAA8B,GACvC,OAAO,CAAC,UAAU,CAAC;IA+EtB;;OAEG;IACI,qBAAqB,CAC1B,cAAc,EAAE,uBAAuB,GAAG,SAAS,EACnD,IAAI,EAAE,UAAU,EAChB,YAAY,GAAE,MAAU,EACxB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAChC;QACD,MAAM,EAAE,4BAA4B,CAAC;QACrC,IAAI,EAAE,UAAU,CAAC;QACjB,SAAS,EAAE,UAAU,CAAC;KACvB;IAyHD;;OAEG;IACU,iBAAiB,CAC5B,cAAc,EAAE,uBAAuB,GAAG,SAAS,EACnD,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,UAAU,EACzB,YAAY,GAAE,MAAU,EACxB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAChC,OAAO,CAAC,UAAU,CAAC;IAWtB;;OAEG;IACU,mBAAmB,CAC9B,cAAc,EAAE,uBAAuB,GAAG,SAAS,EACnD,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,UAAU,EACzB,YAAY,GAAE,MAAU,EACxB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAChC,OAAO,CAAC,iBAAiB,CAAC;IAsB7B;;OAEG;IACU,qBAAqB,CAChC,UAAU,EAAE,UAAU,EACtB,kBAAkB,EAAE,UAAU,EAC9B,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,UAAU,CAAC;IAwBtB,OAAO,CAAC,WAAW;CAOpB"}
|
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EciesSingleRecipient = void 0;
|
|
4
|
-
const constants_1 = require("../../constants");
|
|
5
|
-
const ecies_encryption_type_1 = require("../../enumerations/ecies-encryption-type");
|
|
6
|
-
const aes_gcm_1 = require("../aes-gcm");
|
|
7
|
-
const crypto_core_1 = require("./crypto-core");
|
|
8
|
-
const i18n_setup_1 = require("../../i18n-setup");
|
|
9
|
-
const enumerations_1 = require("../../enumerations");
|
|
10
|
-
/**
|
|
11
|
-
* Browser-compatible single recipient ECIES encryption/decryption
|
|
12
|
-
*/
|
|
13
|
-
class EciesSingleRecipient {
|
|
14
|
-
cryptoCore;
|
|
15
|
-
config;
|
|
16
|
-
eciesConsts;
|
|
17
|
-
constructor(config, eciesParams = constants_1.Constants.ECIES) {
|
|
18
|
-
this.config = config;
|
|
19
|
-
this.eciesConsts = eciesParams;
|
|
20
|
-
this.cryptoCore = new crypto_core_1.EciesCryptoCore(config, this.eciesConsts);
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Encrypt a message for a single recipient
|
|
24
|
-
*/
|
|
25
|
-
async encrypt(encryptSimple, receiverPublicKey, message, preamble = new Uint8Array(0)) {
|
|
26
|
-
const encryptionType = encryptSimple
|
|
27
|
-
? 'simple'
|
|
28
|
-
: 'single';
|
|
29
|
-
const encryptionTypeArray = new Uint8Array([
|
|
30
|
-
encryptionType === 'simple'
|
|
31
|
-
? this.eciesConsts.ENCRYPTION_TYPE.SIMPLE
|
|
32
|
-
: this.eciesConsts.ENCRYPTION_TYPE.SINGLE,
|
|
33
|
-
]);
|
|
34
|
-
if (message.length > this.eciesConsts.MAX_RAW_DATA_SIZE) {
|
|
35
|
-
const engine = (0, i18n_setup_1.getEciesI18nEngine)();
|
|
36
|
-
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_MessageLengthExceedsMaximumAllowedSizeTemplate, { messageLength: message.length }));
|
|
37
|
-
}
|
|
38
|
-
// Generate ephemeral key pair
|
|
39
|
-
const ephemeralPrivateKey = this.cryptoCore.generatePrivateKey();
|
|
40
|
-
const ephemeralPublicKey = this.cryptoCore.getPublicKey(ephemeralPrivateKey);
|
|
41
|
-
// Compute shared secret
|
|
42
|
-
const normalizedReceiverPublicKey = this.cryptoCore.normalizePublicKey(receiverPublicKey);
|
|
43
|
-
const sharedSecret = this.cryptoCore.computeSharedSecret(ephemeralPrivateKey, normalizedReceiverPublicKey);
|
|
44
|
-
// Use first 32 bytes as symmetric key
|
|
45
|
-
const symKey = sharedSecret.slice(0, this.eciesConsts.SYMMETRIC.KEY_SIZE);
|
|
46
|
-
// Encrypt using AES-GCM
|
|
47
|
-
const encryptResult = await aes_gcm_1.AESGCMService.encrypt(message, symKey, true, this.eciesConsts);
|
|
48
|
-
const { encrypted, iv } = encryptResult;
|
|
49
|
-
const authTag = encryptResult.tag;
|
|
50
|
-
if (!authTag) {
|
|
51
|
-
const engine = (0, i18n_setup_1.getEciesI18nEngine)();
|
|
52
|
-
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_AuthenticationTagIsRequiredForECIESEncryption));
|
|
53
|
-
}
|
|
54
|
-
// Add length prefix for single mode
|
|
55
|
-
const lengthArray = encryptionType === 'simple' ? new Uint8Array(0) : new Uint8Array(8);
|
|
56
|
-
if (encryptionType === 'single') {
|
|
57
|
-
const view = new DataView(lengthArray.buffer);
|
|
58
|
-
view.setBigUint64(0, BigInt(message.length), false); // big-endian
|
|
59
|
-
}
|
|
60
|
-
// Format: [preamble] | type (1) | ephemeralPublicKey (65) | iv (16) | authTag (16) | length (8) | encryptedData
|
|
61
|
-
const result = new Uint8Array(preamble.length +
|
|
62
|
-
encryptionTypeArray.length +
|
|
63
|
-
ephemeralPublicKey.length +
|
|
64
|
-
iv.length +
|
|
65
|
-
authTag.length +
|
|
66
|
-
lengthArray.length +
|
|
67
|
-
encrypted.length);
|
|
68
|
-
let offset = 0;
|
|
69
|
-
result.set(preamble, offset);
|
|
70
|
-
offset += preamble.length;
|
|
71
|
-
result.set(encryptionTypeArray, offset);
|
|
72
|
-
offset += encryptionTypeArray.length;
|
|
73
|
-
result.set(ephemeralPublicKey, offset);
|
|
74
|
-
offset += ephemeralPublicKey.length;
|
|
75
|
-
result.set(iv, offset);
|
|
76
|
-
offset += iv.length;
|
|
77
|
-
result.set(authTag, offset);
|
|
78
|
-
offset += authTag.length;
|
|
79
|
-
result.set(lengthArray, offset);
|
|
80
|
-
offset += lengthArray.length;
|
|
81
|
-
result.set(encrypted, offset);
|
|
82
|
-
return result;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Parse encrypted message header
|
|
86
|
-
*/
|
|
87
|
-
parseEncryptedMessage(encryptionType, data, preambleSize = 0, options) {
|
|
88
|
-
// Read encryption type from first byte after preamble
|
|
89
|
-
const actualEncryptionTypeByte = data[preambleSize];
|
|
90
|
-
let actualEncryptionType;
|
|
91
|
-
const engine = (0, i18n_setup_1.getEciesI18nEngine)();
|
|
92
|
-
switch (actualEncryptionTypeByte) {
|
|
93
|
-
case this.eciesConsts.ENCRYPTION_TYPE.SIMPLE:
|
|
94
|
-
actualEncryptionType = ecies_encryption_type_1.EciesEncryptionTypeEnum.Simple;
|
|
95
|
-
break;
|
|
96
|
-
case this.eciesConsts.ENCRYPTION_TYPE.SINGLE:
|
|
97
|
-
actualEncryptionType = ecies_encryption_type_1.EciesEncryptionTypeEnum.Single;
|
|
98
|
-
break;
|
|
99
|
-
case this.eciesConsts.ENCRYPTION_TYPE.MULTIPLE:
|
|
100
|
-
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_MultipleEncryptionTypeNotSupportedInSingleRecipientMode));
|
|
101
|
-
default:
|
|
102
|
-
// convert the encryption type byte to hex
|
|
103
|
-
const encryptionTypeHex = actualEncryptionTypeByte.toString(16).padStart(2, '0');
|
|
104
|
-
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_InvalidEncryptionTypeTemplate, { encryptionType: encryptionTypeHex }));
|
|
105
|
-
}
|
|
106
|
-
if (encryptionType !== undefined &&
|
|
107
|
-
actualEncryptionType !== encryptionType) {
|
|
108
|
-
const engine = (0, i18n_setup_1.getEciesI18nEngine)();
|
|
109
|
-
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_EncryptionTypeMismatchTemplate, { encryptionType, actualEncryptionType }));
|
|
110
|
-
}
|
|
111
|
-
const includeLengthAndCrc = actualEncryptionType === ecies_encryption_type_1.EciesEncryptionTypeEnum.Single;
|
|
112
|
-
const requiredSize = includeLengthAndCrc
|
|
113
|
-
? this.eciesConsts.SINGLE.FIXED_OVERHEAD_SIZE
|
|
114
|
-
: this.eciesConsts.SIMPLE.FIXED_OVERHEAD_SIZE;
|
|
115
|
-
if (data.length < requiredSize) {
|
|
116
|
-
const engine = (0, i18n_setup_1.getEciesI18nEngine)();
|
|
117
|
-
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_DataTooShortTemplate, { requiredSize, dataLength: data.length }));
|
|
118
|
-
}
|
|
119
|
-
let offset = preambleSize;
|
|
120
|
-
const preamble = data.slice(0, preambleSize);
|
|
121
|
-
// Skip encryption type byte
|
|
122
|
-
offset += 1;
|
|
123
|
-
// Extract header components
|
|
124
|
-
const ephemeralPublicKey = data.slice(offset, offset + this.eciesConsts.PUBLIC_KEY_LENGTH);
|
|
125
|
-
offset += this.eciesConsts.PUBLIC_KEY_LENGTH;
|
|
126
|
-
const normalizedKey = this.cryptoCore.normalizePublicKey(ephemeralPublicKey);
|
|
127
|
-
const iv = data.slice(offset, offset + this.eciesConsts.IV_SIZE);
|
|
128
|
-
offset += this.eciesConsts.IV_SIZE;
|
|
129
|
-
const authTag = data.slice(offset, offset + this.eciesConsts.AUTH_TAG_SIZE);
|
|
130
|
-
offset += this.eciesConsts.AUTH_TAG_SIZE;
|
|
131
|
-
// Extract length for single mode
|
|
132
|
-
const dataLengthArray = includeLengthAndCrc
|
|
133
|
-
? data.slice(offset, offset + this.eciesConsts.SINGLE.DATA_LENGTH_SIZE)
|
|
134
|
-
: new Uint8Array(0);
|
|
135
|
-
if (includeLengthAndCrc) {
|
|
136
|
-
offset += this.eciesConsts.SINGLE.DATA_LENGTH_SIZE;
|
|
137
|
-
}
|
|
138
|
-
const dataLength = includeLengthAndCrc
|
|
139
|
-
? Number(new DataView(dataLengthArray.buffer, dataLengthArray.byteOffset, dataLengthArray.byteLength).getBigUint64(0, false))
|
|
140
|
-
: options?.dataLength ?? -1;
|
|
141
|
-
if (includeLengthAndCrc &&
|
|
142
|
-
options?.dataLength !== undefined &&
|
|
143
|
-
dataLength !== options.dataLength) {
|
|
144
|
-
const engine = (0, i18n_setup_1.getEciesI18nEngine)();
|
|
145
|
-
throw new Error(engine.translate(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_ECIESError_DataLengthMismatchTemplate, { expectedDataLength: dataLength, receivedDataLength: options.dataLength }));
|
|
146
|
-
}
|
|
147
|
-
// No CRC in Single encryption (AES-GCM provides authentication)
|
|
148
|
-
// For single mode, read all remaining data as encrypted data
|
|
149
|
-
// The dataLength represents the original message length, not encrypted length
|
|
150
|
-
const encryptedData = data.slice(offset);
|
|
151
|
-
const remainder = new Uint8Array(0);
|
|
152
|
-
// No CRC validation needed (AES-GCM provides authentication)
|
|
153
|
-
return {
|
|
154
|
-
header: {
|
|
155
|
-
encryptionType: actualEncryptionType,
|
|
156
|
-
ephemeralPublicKey: normalizedKey,
|
|
157
|
-
iv,
|
|
158
|
-
authTag,
|
|
159
|
-
dataLength,
|
|
160
|
-
headerSize: includeLengthAndCrc
|
|
161
|
-
? this.eciesConsts.SINGLE.FIXED_OVERHEAD_SIZE
|
|
162
|
-
: this.eciesConsts.SIMPLE.FIXED_OVERHEAD_SIZE,
|
|
163
|
-
},
|
|
164
|
-
data: encryptedData,
|
|
165
|
-
remainder,
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Decrypt with header
|
|
170
|
-
*/
|
|
171
|
-
async decryptWithHeader(encryptionType, privateKey, encryptedData, preambleSize = 0, options) {
|
|
172
|
-
const result = await this.decryptWithHeaderEx(encryptionType, privateKey, encryptedData, preambleSize, options);
|
|
173
|
-
return result.decrypted;
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Extended decrypt with header that returns additional info
|
|
177
|
-
*/
|
|
178
|
-
async decryptWithHeaderEx(encryptionType, privateKey, encryptedData, preambleSize = 0, options) {
|
|
179
|
-
const { data, header } = this.parseEncryptedMessage(encryptionType, encryptedData, preambleSize, options);
|
|
180
|
-
const decrypted = await this.decryptWithComponents(privateKey, header.ephemeralPublicKey, header.iv, header.authTag, data);
|
|
181
|
-
return {
|
|
182
|
-
decrypted,
|
|
183
|
-
consumedBytes: preambleSize + header.headerSize + data.length,
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Decrypt with individual components
|
|
188
|
-
*/
|
|
189
|
-
async decryptWithComponents(privateKey, ephemeralPublicKey, iv, authTag, encrypted) {
|
|
190
|
-
// Normalize ephemeral public key
|
|
191
|
-
const normalizedEphemeralKey = this.cryptoCore.normalizePublicKey(ephemeralPublicKey);
|
|
192
|
-
// Compute shared secret
|
|
193
|
-
const sharedSecret = this.cryptoCore.computeSharedSecret(privateKey, normalizedEphemeralKey);
|
|
194
|
-
// Use first 32 bytes as symmetric key
|
|
195
|
-
const symKey = sharedSecret.slice(0, this.eciesConsts.SYMMETRIC.KEY_SIZE);
|
|
196
|
-
// Combine encrypted data with auth tag for AES-GCM
|
|
197
|
-
const encryptedWithTag = aes_gcm_1.AESGCMService.combineEncryptedDataAndTag(encrypted, authTag);
|
|
198
|
-
// Decrypt
|
|
199
|
-
return await aes_gcm_1.AESGCMService.decrypt(iv, encryptedWithTag, symKey, true, this.eciesConsts);
|
|
200
|
-
}
|
|
201
|
-
arraysEqual(a, b) {
|
|
202
|
-
if (a.length !== b.length)
|
|
203
|
-
return false;
|
|
204
|
-
for (let i = 0; i < a.length; i++) {
|
|
205
|
-
if (a[i] !== b[i])
|
|
206
|
-
return false;
|
|
207
|
-
}
|
|
208
|
-
return true;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
exports.EciesSingleRecipient = EciesSingleRecipient;
|
|
212
|
-
//# sourceMappingURL=single-recipient.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"single-recipient.js","sourceRoot":"","sources":["../../../src/services/ecies/single-recipient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC"}
|
package/dist/services/index.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./aes-gcm"), exports);
|
|
18
|
-
__exportStar(require("./ecies"), exports);
|
|
19
|
-
__exportStar(require("./password-login"), exports);
|
|
20
|
-
__exportStar(require("./pbkdf2"), exports);
|
|
21
|
-
__exportStar(require("./xor"), exports);
|
|
22
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,0CAAwB;AACxB,mDAAiC;AACjC,2CAAyB;AACzB,wCAAsB"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { Wallet } from '@ethereumjs/wallet';
|
|
2
|
-
import { Pbkdf2ProfileEnum } from '../enumerations/pbkdf2-profile';
|
|
3
|
-
import { SecureString } from '../secure-string';
|
|
4
|
-
import { ECIESService } from './ecies/service';
|
|
5
|
-
import { Pbkdf2Service } from './pbkdf2';
|
|
6
|
-
import { CoreLanguageCode, PluginI18nEngine } from '@digitaldefiance/i18n-lib';
|
|
7
|
-
import { IECIESConstants } from '../interfaces/ecies-consts';
|
|
8
|
-
export declare class PasswordLoginService<TLanguage extends CoreLanguageCode = CoreLanguageCode> {
|
|
9
|
-
protected readonly eciesService: ECIESService;
|
|
10
|
-
protected readonly pbkdf2Service: Pbkdf2Service<TLanguage>;
|
|
11
|
-
protected readonly engine: PluginI18nEngine<TLanguage>;
|
|
12
|
-
protected readonly eciesConsts: IECIESConstants;
|
|
13
|
-
static readonly privateKeyStorageKey = "encryptedPrivateKey";
|
|
14
|
-
static readonly saltStorageKey = "passwordLoginSalt";
|
|
15
|
-
static readonly encryptedMnemonicStorageKey = "encryptedMnemonic";
|
|
16
|
-
static readonly profileStorageKey = "pbkdf2Profile";
|
|
17
|
-
constructor(eciesService: ECIESService, pbkdf2Service: Pbkdf2Service<TLanguage>, engine: PluginI18nEngine<TLanguage>, eciesParams?: IECIESConstants);
|
|
18
|
-
createPasswordLoginBundle(mnemonic: SecureString, password: SecureString, profile?: Pbkdf2ProfileEnum): Promise<{
|
|
19
|
-
salt: Uint8Array;
|
|
20
|
-
encryptedPrivateKey: Uint8Array;
|
|
21
|
-
encryptedMnemonic: Uint8Array;
|
|
22
|
-
wallet: Wallet;
|
|
23
|
-
}>;
|
|
24
|
-
/**
|
|
25
|
-
* Set up password login by deriving a key from the password and using it to encrypt
|
|
26
|
-
* @param mnemonic The user's mnemonic
|
|
27
|
-
* @param password The user's password
|
|
28
|
-
*/
|
|
29
|
-
setupPasswordLoginLocalStorageBundle(mnemonic: SecureString, password: SecureString, profile?: Pbkdf2ProfileEnum): Promise<Wallet>;
|
|
30
|
-
getWalletAndMnemonicFromEncryptedPasswordBundle(salt: Uint8Array, encryptedPrivateKey: Uint8Array, encryptedMnemonic: Uint8Array, password: SecureString, profile?: Pbkdf2ProfileEnum): Promise<{
|
|
31
|
-
wallet: Wallet;
|
|
32
|
-
mnemonic: SecureString;
|
|
33
|
-
}>;
|
|
34
|
-
/**
|
|
35
|
-
* Recover wallet and mnemonic from password
|
|
36
|
-
* @param password The user's password
|
|
37
|
-
* @returns The user's wallet and mnemonic
|
|
38
|
-
*/
|
|
39
|
-
getWalletAndMnemonicFromLocalStorageBundle(password: SecureString): Promise<{
|
|
40
|
-
wallet: Wallet;
|
|
41
|
-
mnemonic: SecureString;
|
|
42
|
-
}>;
|
|
43
|
-
/**
|
|
44
|
-
*
|
|
45
|
-
* @returns True if password login is set up (i.e. salt and encrypted private key are in local storage)
|
|
46
|
-
*/
|
|
47
|
-
static isPasswordLoginSetup(): boolean;
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=password-login.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"password-login.d.ts","sourceRoot":"","sources":["../../src/services/password-login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAkB,gBAAgB,EAAE,gBAAgB,EAA8D,MAAM,2BAA2B,CAAC;AAC3J,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAK7D,qBAAa,oBAAoB,CAAC,SAAS,SAAS,gBAAgB,GAAG,gBAAgB;IACrF,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAC3D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACvD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IAChD,gBAAuB,oBAAoB,yBAAyB;IACpE,gBAAuB,cAAc,uBAAuB;IAC5D,gBAAuB,2BAA2B,uBAAuB;IACzE,gBAAuB,iBAAiB,mBAAmB;gBAE/C,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE,WAAW,GAAE,eAAiC;IAOvJ,yBAAyB,CACpC,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,iBAAsD,GAC9D,OAAO,CAAC;QACT,IAAI,EAAE,UAAU,CAAC;QACjB,mBAAmB,EAAE,UAAU,CAAC;QAChC,iBAAiB,EAAE,UAAU,CAAC;QAC9B,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAwCF;;;;OAIG;IACU,oCAAoC,CAC/C,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,iBAAsD,GAC9D,OAAO,CAAC,MAAM,CAAC;IA4BL,+CAA+C,CAC1D,IAAI,EAAE,UAAU,EAChB,mBAAmB,EAAE,UAAU,EAC/B,iBAAiB,EAAE,UAAU,EAC7B,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,iBAAsD,GAC9D,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;IAuCtD;;;;OAIG;IACU,0CAA0C,CACrD,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;IAmCtD;;;OAGG;WACW,oBAAoB,IAAI,OAAO;CAkB9C"}
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PasswordLoginService = void 0;
|
|
4
|
-
const wallet_1 = require("@ethereumjs/wallet");
|
|
5
|
-
const ecies_encryption_type_1 = require("../enumerations/ecies-encryption-type");
|
|
6
|
-
const pbkdf2_profile_1 = require("../enumerations/pbkdf2-profile");
|
|
7
|
-
const secure_string_1 = require("../secure-string");
|
|
8
|
-
const utils_1 = require("../utils");
|
|
9
|
-
const aes_gcm_1 = require("./aes-gcm");
|
|
10
|
-
const enumerations_1 = require("../enumerations");
|
|
11
|
-
const i18n_lib_1 = require("@digitaldefiance/i18n-lib");
|
|
12
|
-
const constants_1 = require("../constants");
|
|
13
|
-
const i18n_setup_1 = require("../i18n-setup");
|
|
14
|
-
class PasswordLoginService {
|
|
15
|
-
eciesService;
|
|
16
|
-
pbkdf2Service;
|
|
17
|
-
engine;
|
|
18
|
-
eciesConsts;
|
|
19
|
-
static privateKeyStorageKey = 'encryptedPrivateKey';
|
|
20
|
-
static saltStorageKey = 'passwordLoginSalt';
|
|
21
|
-
static encryptedMnemonicStorageKey = 'encryptedMnemonic';
|
|
22
|
-
static profileStorageKey = 'pbkdf2Profile';
|
|
23
|
-
constructor(eciesService, pbkdf2Service, engine, eciesParams = constants_1.Constants.ECIES) {
|
|
24
|
-
this.eciesService = eciesService;
|
|
25
|
-
this.pbkdf2Service = pbkdf2Service;
|
|
26
|
-
this.engine = engine;
|
|
27
|
-
this.eciesConsts = eciesParams;
|
|
28
|
-
}
|
|
29
|
-
async createPasswordLoginBundle(mnemonic, password, profile = pbkdf2_profile_1.Pbkdf2ProfileEnum.BROWSER_PASSWORD) {
|
|
30
|
-
const { wallet } = this.eciesService.walletAndSeedFromMnemonic(mnemonic);
|
|
31
|
-
const derivedKey = await this.pbkdf2Service.deriveKeyFromPasswordWithProfileAsync(password.valueAsUint8Array, profile);
|
|
32
|
-
// Encrypt private key with derived key
|
|
33
|
-
const privateKeyBytes = wallet.getPrivateKey();
|
|
34
|
-
const { encrypted, iv, tag } = await aes_gcm_1.AESGCMService.encrypt(privateKeyBytes, derivedKey.hash, true);
|
|
35
|
-
if (!tag) {
|
|
36
|
-
throw new i18n_lib_1.PluginTranslatableGenericError(i18n_setup_1.EciesComponentId, enumerations_1.EciesStringKey.Error_Utils_EncryptionFailedNoAuthTag);
|
|
37
|
-
}
|
|
38
|
-
const encryptedPrivateKey = aes_gcm_1.AESGCMService.combineIvTagAndEncryptedData(iv, encrypted, tag);
|
|
39
|
-
// now use the public key to encrypt the mnemonic and store it
|
|
40
|
-
const encryptedMnemonic = await this.eciesService.encrypt(ecies_encryption_type_1.EciesEncryptionTypeEnum.Simple, [{ publicKey: wallet.getPublicKey() }], mnemonic.valueAsUint8Array);
|
|
41
|
-
return {
|
|
42
|
-
salt: derivedKey.salt,
|
|
43
|
-
encryptedPrivateKey: encryptedPrivateKey,
|
|
44
|
-
encryptedMnemonic: encryptedMnemonic,
|
|
45
|
-
wallet,
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Set up password login by deriving a key from the password and using it to encrypt
|
|
50
|
-
* @param mnemonic The user's mnemonic
|
|
51
|
-
* @param password The user's password
|
|
52
|
-
*/
|
|
53
|
-
async setupPasswordLoginLocalStorageBundle(mnemonic, password, profile = pbkdf2_profile_1.Pbkdf2ProfileEnum.BROWSER_PASSWORD) {
|
|
54
|
-
const { salt, encryptedPrivateKey, encryptedMnemonic, wallet } = await this.createPasswordLoginBundle(mnemonic, password, profile);
|
|
55
|
-
// store the salt and encrypted private key in local storage
|
|
56
|
-
try {
|
|
57
|
-
localStorage.setItem(PasswordLoginService.saltStorageKey, (0, utils_1.uint8ArrayToHex)(salt));
|
|
58
|
-
localStorage.setItem(PasswordLoginService.privateKeyStorageKey, (0, utils_1.uint8ArrayToHex)(encryptedPrivateKey));
|
|
59
|
-
localStorage.setItem(PasswordLoginService.encryptedMnemonicStorageKey, (0, utils_1.uint8ArrayToHex)(encryptedMnemonic));
|
|
60
|
-
localStorage.setItem(PasswordLoginService.profileStorageKey, profile);
|
|
61
|
-
}
|
|
62
|
-
catch (error) {
|
|
63
|
-
throw new i18n_lib_1.PluginTypedHandleableError(this.engine, i18n_setup_1.EciesComponentId, enumerations_1.PasswordLoginErrorTypeEnum.FailedToStoreLoginData, (0, i18n_lib_1.buildReasonMap)(enumerations_1.PasswordLoginErrorTypeEnum, ['Error', 'PasswordLoginError']), new Error(), { cause: error instanceof Error ? error : undefined });
|
|
64
|
-
}
|
|
65
|
-
return wallet;
|
|
66
|
-
}
|
|
67
|
-
async getWalletAndMnemonicFromEncryptedPasswordBundle(salt, encryptedPrivateKey, encryptedMnemonic, password, profile = pbkdf2_profile_1.Pbkdf2ProfileEnum.BROWSER_PASSWORD) {
|
|
68
|
-
if (!salt || !encryptedPrivateKey || !encryptedMnemonic) {
|
|
69
|
-
throw new i18n_lib_1.PluginTypedHandleableError(this.engine, i18n_setup_1.EciesComponentId, enumerations_1.PasswordLoginErrorTypeEnum.PasswordLoginNotSetUp, (0, i18n_lib_1.buildReasonMap)(enumerations_1.PasswordLoginErrorTypeEnum, ['Error', 'PasswordLoginError']), new Error());
|
|
70
|
-
}
|
|
71
|
-
const derivedKey = await this.pbkdf2Service.deriveKeyFromPasswordWithProfileAsync(password.valueAsUint8Array, profile, salt);
|
|
72
|
-
// Decrypt private key with derived key
|
|
73
|
-
const { iv, encryptedDataWithTag } = aes_gcm_1.AESGCMService.splitEncryptedData(encryptedPrivateKey, true, this.eciesConsts);
|
|
74
|
-
const privateKeyBytes = await aes_gcm_1.AESGCMService.decrypt(iv, encryptedDataWithTag, derivedKey.hash, true, this.eciesConsts);
|
|
75
|
-
const wallet = wallet_1.Wallet.fromPrivateKey(privateKeyBytes);
|
|
76
|
-
// now decrypt the mnemonic
|
|
77
|
-
const decryptedMnemonic = await this.eciesService.decryptSimpleOrSingleWithHeader(true, wallet.getPrivateKey(), encryptedMnemonic);
|
|
78
|
-
return { wallet, mnemonic: new secure_string_1.SecureString(decryptedMnemonic) };
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Recover wallet and mnemonic from password
|
|
82
|
-
* @param password The user's password
|
|
83
|
-
* @returns The user's wallet and mnemonic
|
|
84
|
-
*/
|
|
85
|
-
async getWalletAndMnemonicFromLocalStorageBundle(password) {
|
|
86
|
-
const saltHex = localStorage.getItem(PasswordLoginService.saltStorageKey);
|
|
87
|
-
const encryptedPrivateKeyHex = localStorage.getItem(PasswordLoginService.privateKeyStorageKey);
|
|
88
|
-
const encryptedMnemonicHex = localStorage.getItem(PasswordLoginService.encryptedMnemonicStorageKey);
|
|
89
|
-
const profileStr = localStorage.getItem(PasswordLoginService.profileStorageKey);
|
|
90
|
-
if (!saltHex ||
|
|
91
|
-
!encryptedPrivateKeyHex ||
|
|
92
|
-
!encryptedMnemonicHex ||
|
|
93
|
-
saltHex === '' ||
|
|
94
|
-
encryptedPrivateKeyHex === '' ||
|
|
95
|
-
encryptedMnemonicHex === '') {
|
|
96
|
-
throw new i18n_lib_1.PluginTypedHandleableError(this.engine, i18n_setup_1.EciesComponentId, enumerations_1.PasswordLoginErrorTypeEnum.PasswordLoginNotSetUp, (0, i18n_lib_1.buildReasonMap)(enumerations_1.PasswordLoginErrorTypeEnum, ['Error', 'PasswordLoginError']), new Error());
|
|
97
|
-
}
|
|
98
|
-
const salt = (0, utils_1.hexToUint8Array)(saltHex);
|
|
99
|
-
const encryptedPrivateKey = (0, utils_1.hexToUint8Array)(encryptedPrivateKeyHex);
|
|
100
|
-
const encryptedMnemonic = (0, utils_1.hexToUint8Array)(encryptedMnemonicHex);
|
|
101
|
-
const profile = profileStr || pbkdf2_profile_1.Pbkdf2ProfileEnum.BROWSER_PASSWORD;
|
|
102
|
-
return await this.getWalletAndMnemonicFromEncryptedPasswordBundle(salt, encryptedPrivateKey, encryptedMnemonic, password, profile);
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
*
|
|
106
|
-
* @returns True if password login is set up (i.e. salt and encrypted private key are in local storage)
|
|
107
|
-
*/
|
|
108
|
-
static isPasswordLoginSetup() {
|
|
109
|
-
const saltHex = localStorage.getItem(PasswordLoginService.saltStorageKey);
|
|
110
|
-
const encryptedPrivateKeyHex = localStorage.getItem(PasswordLoginService.privateKeyStorageKey);
|
|
111
|
-
const encryptedMnemonicHex = localStorage.getItem(PasswordLoginService.encryptedMnemonicStorageKey);
|
|
112
|
-
return !!(saltHex &&
|
|
113
|
-
encryptedPrivateKeyHex &&
|
|
114
|
-
encryptedMnemonicHex &&
|
|
115
|
-
saltHex !== '' &&
|
|
116
|
-
encryptedPrivateKeyHex !== '' &&
|
|
117
|
-
encryptedMnemonicHex !== '');
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
exports.PasswordLoginService = PasswordLoginService;
|
|
121
|
-
//# sourceMappingURL=password-login.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"password-login.js","sourceRoot":"","sources":["../../src/services/password-login.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { CoreLanguageCode, PluginI18nEngine } from '@digitaldefiance/i18n-lib';
|
|
2
|
-
import { Pbkdf2ProfileEnum } from '../enumerations/pbkdf2-profile';
|
|
3
|
-
import { IPbkdf2Config } from '../interfaces/pbkdf2-config';
|
|
4
|
-
import { IPbkdf2Result } from '../interfaces/pbkdf2-result';
|
|
5
|
-
import { IECIESConstants } from '../interfaces/ecies-consts';
|
|
6
|
-
import { IPBkdf2Consts } from '../interfaces/pbkdf2-consts';
|
|
7
|
-
/**
|
|
8
|
-
* Service for handling PBKDF2 (Password-Based Key Derivation Function 2) operations.
|
|
9
|
-
* This service provides functionality for:
|
|
10
|
-
* - Generating secure key derivation configurations
|
|
11
|
-
* - Deriving cryptographic keys from passwords
|
|
12
|
-
* - Managing salt and iteration parameters
|
|
13
|
-
* - Both synchronous and asynchronous key derivation
|
|
14
|
-
*/
|
|
15
|
-
export declare class Pbkdf2Service<TLanguage extends CoreLanguageCode> {
|
|
16
|
-
protected readonly engine: PluginI18nEngine<TLanguage>;
|
|
17
|
-
protected readonly profiles: Record<string, IPbkdf2Config>;
|
|
18
|
-
protected readonly eciesConsts: IECIESConstants;
|
|
19
|
-
protected readonly pbkdf2Consts: IPBkdf2Consts;
|
|
20
|
-
constructor(engine: PluginI18nEngine<TLanguage>, profiles?: Record<string, IPbkdf2Config>, eciesParams?: IECIESConstants, pbkdf2Params?: IPBkdf2Consts);
|
|
21
|
-
/**
|
|
22
|
-
* Get a predefined configuration profile for common use cases
|
|
23
|
-
* @param profile The name of the profile to use
|
|
24
|
-
* @returns Configuration object for the specified profile
|
|
25
|
-
*/
|
|
26
|
-
getProfileConfig(profile: string): IPbkdf2Config;
|
|
27
|
-
/**
|
|
28
|
-
* Generate an options object for pbkdf2
|
|
29
|
-
* @param iterations Optional number of iterations (defaults to Pbkdf2IterationsPerSecond)
|
|
30
|
-
* @param saltBytes Optional salt size in bytes (defaults to PBKDF2.SALT_BYTES)
|
|
31
|
-
* @param hashBytes Optional hash size in bytes (defaults to ECIES.SYMMETRIC.KEY_SIZE)
|
|
32
|
-
* @param algorithm Optional hash algorithm (defaults to PBKDF2.ALGORITHM)
|
|
33
|
-
* @returns Configuration object for PBKDF2
|
|
34
|
-
*/
|
|
35
|
-
getConfig(iterations?: number, saltBytes?: number, hashBytes?: number, algorithm?: string): IPbkdf2Config;
|
|
36
|
-
/**
|
|
37
|
-
* Given a password, use pbkdf2 to generate an appropriately sized key for AES encryption
|
|
38
|
-
* @param password The password to derive a key from
|
|
39
|
-
* @param salt Optional salt (will be randomly generated if not provided)
|
|
40
|
-
* @param iterations Optional number of iterations
|
|
41
|
-
* @param saltBytes Optional salt size in bytes
|
|
42
|
-
* @param keySize Optional key size in bytes
|
|
43
|
-
* @param algorithm Optional hash algorithm
|
|
44
|
-
* @returns Object containing the derived key, salt, and iteration count
|
|
45
|
-
*/
|
|
46
|
-
deriveKeyFromPasswordAsync(password: Uint8Array, salt?: Uint8Array, iterations?: number, saltBytes?: number, keySize?: number, algorithm?: string): Promise<IPbkdf2Result>;
|
|
47
|
-
/**
|
|
48
|
-
* Derive a key using a predefined configuration profile
|
|
49
|
-
* @param password The password to derive a key from
|
|
50
|
-
* @param profile The configuration profile to use
|
|
51
|
-
* @param salt Optional salt (will be randomly generated if not provided)
|
|
52
|
-
* @returns Object containing the derived key, salt, and iteration count
|
|
53
|
-
*/
|
|
54
|
-
deriveKeyFromPasswordWithProfileAsync(password: Uint8Array, profile: Pbkdf2ProfileEnum, salt?: Uint8Array): Promise<IPbkdf2Result>;
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=pbkdf2.d.ts.map
|