@activeledger/sdk-node 2.2.0 → 2.4.0
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/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +14 -1
- package/lib/index.js.map +1 -1
- package/lib/interfaces.d.ts +1 -0
- package/lib/interfaces.d.ts.map +1 -1
- package/lib/key.d.ts +0 -2
- package/lib/key.d.ts.map +1 -1
- package/lib/key.js +5 -11
- package/lib/key.js.map +1 -1
- package/lib/recovery.d.ts +13 -0
- package/lib/recovery.d.ts.map +1 -0
- package/lib/recovery.js +89 -0
- package/lib/recovery.js.map +1 -0
- package/package.json +2 -2
package/lib/index.d.ts
CHANGED
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAuBA,cAAc,wBAAwB,CAAC;AAKvC,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAuBA,cAAc,wBAAwB,CAAC;AAKvC,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -10,11 +10,23 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
10
10
|
if (k2 === undefined) k2 = k;
|
|
11
11
|
o[k2] = m[k];
|
|
12
12
|
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
13
18
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
19
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
20
|
};
|
|
21
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
22
|
+
if (mod && mod.__esModule) return mod;
|
|
23
|
+
var result = {};
|
|
24
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
25
|
+
__setModuleDefault(result, mod);
|
|
26
|
+
return result;
|
|
27
|
+
};
|
|
16
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.LedgerEvents = exports.PayloadHandler = exports.TransactionHandler = exports.KeyHandler = void 0;
|
|
29
|
+
exports.recovery = exports.LedgerEvents = exports.PayloadHandler = exports.TransactionHandler = exports.KeyHandler = void 0;
|
|
18
30
|
__exportStar(require("@activeledger/sdk-core"), exports);
|
|
19
31
|
__exportStar(require("./crypto"), exports);
|
|
20
32
|
__exportStar(require("./interfaces"), exports);
|
|
@@ -26,4 +38,5 @@ var payload_1 = require("./payload");
|
|
|
26
38
|
Object.defineProperty(exports, "PayloadHandler", { enumerable: true, get: function () { return payload_1.PayloadHandler; } });
|
|
27
39
|
var events_1 = require("./events");
|
|
28
40
|
Object.defineProperty(exports, "LedgerEvents", { enumerable: true, get: function () { return events_1.LedgerEvents; } });
|
|
41
|
+
exports.recovery = __importStar(require("./recovery"));
|
|
29
42
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,yDAAuC;AAKvC,2CAAyB;AACzB,+CAA6B;AAC7B,6BAAmC;AAA1B,iGAAA,UAAU,OAAA;AACnB,6CAAmD;AAA1C,iHAAA,kBAAkB,OAAA;AAC3B,qCAA2C;AAAlC,yGAAA,cAAc,OAAA;AACvB,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;AAGrB,uDAAuC"}
|
package/lib/interfaces.d.ts
CHANGED
package/lib/interfaces.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAIvD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAKD,MAAM,WAAW,YAAa,SAAQ,IAAI;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IAQpB,MAAM,CAAC,EAAE,OAAO,CAAC;IAUjB,IAAI,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAIvD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAKD,MAAM,WAAW,YAAa,SAAQ,IAAI;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IAQpB,MAAM,CAAC,EAAE,OAAO,CAAC;IAUjB,IAAI,CAAC,EAAE,OAAO,CAAC;IAYf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
|
package/lib/key.d.ts
CHANGED
|
@@ -5,8 +5,6 @@ export declare class KeyHandler extends CoreKeyHandler {
|
|
|
5
5
|
constructor();
|
|
6
6
|
generateBIP39Key(keyName: string, options?: IBIP39Options): Promise<IKeyExtended>;
|
|
7
7
|
restoreBIP39Key(keyName: string, phrase: string, options?: IBIP39Options): Promise<IKeyExtended>;
|
|
8
|
-
private deriveSeed;
|
|
9
|
-
private deriveBIP32MasterKey;
|
|
10
8
|
exportKey(key: IKey, options: IKeyExportOptions): Promise<void>;
|
|
11
9
|
exportKey(key: IKey, location: string, createDir?: boolean, overwrite?: boolean, name?: string): Promise<void>;
|
|
12
10
|
importKey(path: string): Promise<IKey>;
|
package/lib/key.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key.d.ts","sourceRoot":"","sources":["../src/key.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,IAAI,EAAE,UAAU,IAAI,cAAc,EAAW,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"key.d.ts","sourceRoot":"","sources":["../src/key.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,IAAI,EAAE,UAAU,IAAI,cAAc,EAAW,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAW9E,qBAAa,UAAW,SAAQ,cAAc;IAE5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;;IAgBvC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA0BjF,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAkEpG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAY/D,SAAS,CACd,GAAG,EAAE,IAAI,EACT,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,OAAO,EACnB,SAAS,CAAC,EAAE,OAAO,EACnB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAmET,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B7C,OAAO,CAAC,aAAa;CAOtB"}
|
package/lib/key.js
CHANGED
|
@@ -29,6 +29,7 @@ const fs = __importStar(require("fs"));
|
|
|
29
29
|
const bip39_1 = require("bip39");
|
|
30
30
|
const sdk_core_1 = require("@activeledger/sdk-core");
|
|
31
31
|
const crypto_1 = require("./crypto");
|
|
32
|
+
const recovery_1 = require("./recovery");
|
|
32
33
|
class KeyHandler extends sdk_core_1.KeyHandler {
|
|
33
34
|
constructor() {
|
|
34
35
|
const provider = new crypto_1.NodeCryptoProvider();
|
|
@@ -45,9 +46,12 @@ class KeyHandler extends sdk_core_1.KeyHandler {
|
|
|
45
46
|
if (options.legacy && type !== sdk_core_1.KeyType.EllipticCurve) {
|
|
46
47
|
return reject(new Error(`The legacy BIP-39 scheme is secp256k1 only - it cannot derive ${type}`));
|
|
47
48
|
}
|
|
49
|
+
if (!options.legacy && options.validate !== false) {
|
|
50
|
+
(0, recovery_1.validate)(phrase);
|
|
51
|
+
}
|
|
48
52
|
const seed = options.legacy
|
|
49
53
|
? crypto.createHash("sha256").update(phrase, "utf8").digest()
|
|
50
|
-
:
|
|
54
|
+
: (0, recovery_1.deriveSeed)(type, (0, bip39_1.mnemonicToSeedSync)(phrase, options.passphrase || ""));
|
|
51
55
|
const keyHolder = {
|
|
52
56
|
key: this.provider.generateFromSeed(seed, options.compressed, type),
|
|
53
57
|
name: keyName,
|
|
@@ -61,16 +65,6 @@ class KeyHandler extends sdk_core_1.KeyHandler {
|
|
|
61
65
|
}
|
|
62
66
|
});
|
|
63
67
|
}
|
|
64
|
-
deriveSeed(type, bip39Seed) {
|
|
65
|
-
if (type === sdk_core_1.KeyType.EllipticCurve) {
|
|
66
|
-
return this.deriveBIP32MasterKey(bip39Seed);
|
|
67
|
-
}
|
|
68
|
-
const length = type === sdk_core_1.KeyType.Falcon512 ? 48 : 32;
|
|
69
|
-
return Buffer.from(crypto.hkdfSync("sha512", bip39Seed, Buffer.alloc(0), Buffer.from(`activeledger-seed-v1:${type}`, "utf8"), length));
|
|
70
|
-
}
|
|
71
|
-
deriveBIP32MasterKey(seed) {
|
|
72
|
-
return crypto.createHmac("sha512", "Bitcoin seed").update(seed).digest().subarray(0, 32);
|
|
73
|
-
}
|
|
74
68
|
exportKey(key, locationOrOptions, createDir, overwrite, name) {
|
|
75
69
|
return new Promise((resolve, reject) => {
|
|
76
70
|
const setOptions = () => {
|
package/lib/key.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key.js","sourceRoot":"","sources":["../src/key.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,+CAAiC;AACjC,uCAAyB;AACzB,iCAA6D;AAC7D,qDAAqF;AAErF,qCAA8C;
|
|
1
|
+
{"version":3,"file":"key.js","sourceRoot":"","sources":["../src/key.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { KeyType } from "@activeledger/sdk-core";
|
|
4
|
+
export declare const BIP39_SEED_BYTES = 64;
|
|
5
|
+
export declare const SEED_SIZES: Readonly<Record<string, number>>;
|
|
6
|
+
export declare function seedSize(type: KeyType): number;
|
|
7
|
+
export declare function validate(phrase: string): string;
|
|
8
|
+
export declare function toSeed(phrase: string, passphrase?: string, options?: {
|
|
9
|
+
validate?: boolean;
|
|
10
|
+
}): Buffer;
|
|
11
|
+
export declare function deriveSeed(type: KeyType, bip39Seed: Uint8Array): Buffer;
|
|
12
|
+
export declare function deriveBIP32MasterKey(bip39Seed: Uint8Array): Buffer;
|
|
13
|
+
//# sourceMappingURL=recovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":";;AAyBA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AA8BjD,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAQnC,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAItD,CAAC;AAGH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAM9C;AAkBD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA4B/C;AASD,wBAAgB,MAAM,CACpB,MAAM,EAAE,MAAM,EACd,UAAU,SAAK,EACf,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,MAAM,CAGR;AAQD,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,GAAG,MAAM,CAwBvE;AAYD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,CAMlE"}
|
package/lib/recovery.js
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.deriveBIP32MasterKey = exports.deriveSeed = exports.toSeed = exports.validate = exports.seedSize = exports.SEED_SIZES = exports.BIP39_SEED_BYTES = void 0;
|
|
27
|
+
const crypto = __importStar(require("crypto"));
|
|
28
|
+
const bip39_1 = require("bip39");
|
|
29
|
+
const sdk_core_1 = require("@activeledger/sdk-core");
|
|
30
|
+
exports.BIP39_SEED_BYTES = 64;
|
|
31
|
+
exports.SEED_SIZES = Object.freeze({
|
|
32
|
+
[sdk_core_1.KeyType.EllipticCurve]: 32,
|
|
33
|
+
[sdk_core_1.KeyType.MLDSA65]: 32,
|
|
34
|
+
[sdk_core_1.KeyType.Falcon512]: 48,
|
|
35
|
+
});
|
|
36
|
+
function seedSize(type) {
|
|
37
|
+
const size = exports.SEED_SIZES[type];
|
|
38
|
+
if (!size) {
|
|
39
|
+
throw new Error(`${type} keys cannot be derived from a seed`);
|
|
40
|
+
}
|
|
41
|
+
return size;
|
|
42
|
+
}
|
|
43
|
+
exports.seedSize = seedSize;
|
|
44
|
+
function validate(phrase) {
|
|
45
|
+
const words = phrase.normalize("NFKD").split(/\s+/).filter(Boolean);
|
|
46
|
+
if (words.length < 12 || words.length > 24 || words.length % 3 !== 0) {
|
|
47
|
+
throw new Error(`a BIP-39 phrase is 12, 15, 18, 21 or 24 words, got ${words.length}`);
|
|
48
|
+
}
|
|
49
|
+
const english = bip39_1.wordlists.english;
|
|
50
|
+
words.forEach((word, index) => {
|
|
51
|
+
if (!english.includes(word)) {
|
|
52
|
+
throw new Error(`word ${index + 1} ("${word}") is not in the BIP-39 English wordlist`);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
const normalised = words.join(" ");
|
|
56
|
+
if (!(0, bip39_1.validateMnemonic)(normalised)) {
|
|
57
|
+
throw new Error("the BIP-39 checksum does not match - the phrase has a typo or the words are in the " +
|
|
58
|
+
"wrong order. Deriving from it anyway would produce a valid key for an identity " +
|
|
59
|
+
"nobody owns. If you meant to derive from a non-mnemonic string, pass " +
|
|
60
|
+
"{ validate: false }.");
|
|
61
|
+
}
|
|
62
|
+
return normalised;
|
|
63
|
+
}
|
|
64
|
+
exports.validate = validate;
|
|
65
|
+
function toSeed(phrase, passphrase = "", options = {}) {
|
|
66
|
+
const checked = options.validate === false ? phrase : validate(phrase);
|
|
67
|
+
return (0, bip39_1.mnemonicToSeedSync)(checked, passphrase);
|
|
68
|
+
}
|
|
69
|
+
exports.toSeed = toSeed;
|
|
70
|
+
function deriveSeed(type, bip39Seed) {
|
|
71
|
+
if (bip39Seed.length !== exports.BIP39_SEED_BYTES) {
|
|
72
|
+
throw new Error(`a BIP-39 seed is ${exports.BIP39_SEED_BYTES} bytes, got ${bip39Seed.length}`);
|
|
73
|
+
}
|
|
74
|
+
const seed = Buffer.from(bip39Seed);
|
|
75
|
+
if (type === sdk_core_1.KeyType.EllipticCurve) {
|
|
76
|
+
return deriveBIP32MasterKey(seed);
|
|
77
|
+
}
|
|
78
|
+
return Buffer.from(crypto.hkdfSync("sha512", seed, Buffer.alloc(0), Buffer.from(`activeledger-seed-v1:${type}`, "utf8"), seedSize(type)));
|
|
79
|
+
}
|
|
80
|
+
exports.deriveSeed = deriveSeed;
|
|
81
|
+
function deriveBIP32MasterKey(bip39Seed) {
|
|
82
|
+
return crypto
|
|
83
|
+
.createHmac("sha512", "Bitcoin seed")
|
|
84
|
+
.update(Buffer.from(bip39Seed))
|
|
85
|
+
.digest()
|
|
86
|
+
.subarray(0, 32);
|
|
87
|
+
}
|
|
88
|
+
exports.deriveBIP32MasterKey = deriveBIP32MasterKey;
|
|
89
|
+
//# sourceMappingURL=recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recovery.js","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@activeledger/sdk-node",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "Activeledger SDK for Node.js - secp256k1 signing via node:crypto (no external crypto dependency)",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"lib"
|
|
34
34
|
],
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@activeledger/sdk-core": "2.
|
|
36
|
+
"@activeledger/sdk-core": "2.4.0",
|
|
37
37
|
"@noble/post-quantum": "^0.7.1",
|
|
38
38
|
"asn1.js": "^5.4.1",
|
|
39
39
|
"bip39": "3.1.0",
|