@activeledger/sdk-node 2.1.1 → 2.3.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/crypto.d.ts +6 -0
- package/lib/crypto.d.ts.map +1 -1
- package/lib/crypto.js +71 -1
- package/lib/crypto.js.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +16 -1
- package/lib/index.js.map +1 -1
- package/lib/interfaces.d.ts +2 -1
- package/lib/interfaces.d.ts.map +1 -1
- package/lib/key.d.ts +1 -1
- package/lib/key.d.ts.map +1 -1
- package/lib/key.js +12 -16
- package/lib/key.js.map +1 -1
- package/lib/payload.d.ts +5 -0
- package/lib/payload.d.ts.map +1 -0
- package/lib/payload.js +12 -0
- package/lib/payload.js.map +1 -0
- package/lib/recovery.d.ts +13 -0
- package/lib/recovery.d.ts.map +1 -0
- package/lib/recovery.js +88 -0
- package/lib/recovery.js.map +1 -0
- package/package.json +2 -2
package/lib/crypto.d.ts
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import { ICryptoProvider, IKeyHandleDetails, IKeyHandler } from "@activeledger/sdk-core";
|
|
2
2
|
export declare class NodeCryptoProvider implements ICryptoProvider {
|
|
3
3
|
generate(compressed?: boolean, type?: string): IKeyHandler;
|
|
4
|
+
generateFromSeed(seed: Uint8Array, compressed?: boolean, type?: string): IKeyHandler;
|
|
4
5
|
private toFixedLength;
|
|
5
6
|
sign(data: string, prv: IKeyHandleDetails, type?: string): string;
|
|
7
|
+
private static readonly SECP256K1_N;
|
|
8
|
+
private static toLowS;
|
|
9
|
+
private static decodeDer;
|
|
10
|
+
private static derInteger;
|
|
11
|
+
private static encodeDer;
|
|
6
12
|
verify(data: string, signature: string, pub: IKeyHandleDetails, type?: string): boolean;
|
|
7
13
|
private toPrivatePem;
|
|
8
14
|
private toPublicPem;
|
package/lib/crypto.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AA4CzF,qBAAa,kBAAmB,YAAW,eAAe;IACjD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW;
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AA4CzF,qBAAa,kBAAmB,YAAW,eAAe;IACjD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW;IA2C1D,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW;IAoD3F,OAAO,CAAC,aAAa;IASd,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IA2BxE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAEjC;IA+BF,OAAO,CAAC,MAAM,CAAC,MAAM;IAerB,OAAO,CAAC,MAAM,CAAC,SAAS;IAuBxB,OAAO,CAAC,MAAM,CAAC,UAAU;IAiBzB,OAAO,CAAC,MAAM,CAAC,SAAS;IASjB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IA8B9F,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,WAAW;CAMpB"}
|
package/lib/crypto.js
CHANGED
|
@@ -53,6 +53,34 @@ class NodeCryptoProvider {
|
|
|
53
53
|
},
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
|
+
generateFromSeed(seed, compressed, type) {
|
|
57
|
+
const pq = type ? POST_QUANTUM[type] : undefined;
|
|
58
|
+
if (pq) {
|
|
59
|
+
if (seed.length !== pq.lengths.seed) {
|
|
60
|
+
throw new Error(`${type} needs a ${pq.lengths.seed}-byte seed, got ${seed.length}`);
|
|
61
|
+
}
|
|
62
|
+
const keys = pq.keygen(seed);
|
|
63
|
+
return {
|
|
64
|
+
prv: { pkcs8pem: Buffer.from(keys.secretKey).toString("base64") },
|
|
65
|
+
pub: { pkcs8pem: Buffer.from(keys.publicKey).toString("base64") },
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
if (seed.length !== 32) {
|
|
69
|
+
throw new Error(`secp256k1 needs a 32-byte seed, got ${seed.length}`);
|
|
70
|
+
}
|
|
71
|
+
const scalar = BigInt("0x" + Buffer.from(seed).toString("hex"));
|
|
72
|
+
if (scalar === BigInt(0) || scalar >= NodeCryptoProvider.SECP256K1_N) {
|
|
73
|
+
throw new Error("seed is not a valid secp256k1 private key - the scalar must be in [1, n-1]");
|
|
74
|
+
}
|
|
75
|
+
const curve = crypto.createECDH("secp256k1");
|
|
76
|
+
curve.setPrivateKey(Buffer.from(seed));
|
|
77
|
+
return {
|
|
78
|
+
prv: { pkcs8pem: "0x" + Buffer.from(seed).toString("hex") },
|
|
79
|
+
pub: {
|
|
80
|
+
pkcs8pem: "0x" + curve.getPublicKey("hex", compressed ? "compressed" : "uncompressed"),
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
56
84
|
toFixedLength(buf, length) {
|
|
57
85
|
if (buf.length === length) {
|
|
58
86
|
return buf;
|
|
@@ -68,7 +96,48 @@ class NodeCryptoProvider {
|
|
|
68
96
|
}
|
|
69
97
|
const sign = crypto.createSign("sha256");
|
|
70
98
|
sign.update(data);
|
|
71
|
-
|
|
99
|
+
const der = sign.sign(this.toPrivatePem(prv.pkcs8pem));
|
|
100
|
+
return Buffer.from(NodeCryptoProvider.toLowS(der)).toString("base64");
|
|
101
|
+
}
|
|
102
|
+
static toLowS(der) {
|
|
103
|
+
const { r, s } = NodeCryptoProvider.decodeDer(der);
|
|
104
|
+
if (s <= NodeCryptoProvider.SECP256K1_N / BigInt(2)) {
|
|
105
|
+
return der;
|
|
106
|
+
}
|
|
107
|
+
return NodeCryptoProvider.encodeDer(r, NodeCryptoProvider.SECP256K1_N - s);
|
|
108
|
+
}
|
|
109
|
+
static decodeDer(der) {
|
|
110
|
+
let offset = 2;
|
|
111
|
+
if (der[offset] !== 0x02) {
|
|
112
|
+
throw new Error("Malformed ECDSA signature: expected R");
|
|
113
|
+
}
|
|
114
|
+
const rLength = der[offset + 1];
|
|
115
|
+
const r = der.subarray(offset + 2, offset + 2 + rLength);
|
|
116
|
+
offset += 2 + rLength;
|
|
117
|
+
if (der[offset] !== 0x02) {
|
|
118
|
+
throw new Error("Malformed ECDSA signature: expected S");
|
|
119
|
+
}
|
|
120
|
+
const sBytes = der.subarray(offset + 2, offset + 2 + der[offset + 1]);
|
|
121
|
+
return { r, s: BigInt("0x" + sBytes.toString("hex")) };
|
|
122
|
+
}
|
|
123
|
+
static derInteger(value) {
|
|
124
|
+
let trimmed = value;
|
|
125
|
+
let start = 0;
|
|
126
|
+
while (start < trimmed.length - 1 && trimmed[start] === 0) {
|
|
127
|
+
start++;
|
|
128
|
+
}
|
|
129
|
+
trimmed = trimmed.subarray(start);
|
|
130
|
+
if (trimmed[0] & 0x80) {
|
|
131
|
+
trimmed = Buffer.concat([Buffer.from([0]), trimmed]);
|
|
132
|
+
}
|
|
133
|
+
return Buffer.concat([Buffer.from([0x02, trimmed.length]), trimmed]);
|
|
134
|
+
}
|
|
135
|
+
static encodeDer(r, s) {
|
|
136
|
+
const body = Buffer.concat([
|
|
137
|
+
NodeCryptoProvider.derInteger(r),
|
|
138
|
+
NodeCryptoProvider.derInteger(Buffer.from(s.toString(16).padStart(64, "0"), "hex")),
|
|
139
|
+
]);
|
|
140
|
+
return Buffer.concat([Buffer.from([0x30, body.length]), body]);
|
|
72
141
|
}
|
|
73
142
|
verify(data, signature, pub, type) {
|
|
74
143
|
const pq = type ? POST_QUANTUM[type] : undefined;
|
|
@@ -98,4 +167,5 @@ class NodeCryptoProvider {
|
|
|
98
167
|
}
|
|
99
168
|
}
|
|
100
169
|
exports.NodeCryptoProvider = NodeCryptoProvider;
|
|
170
|
+
NodeCryptoProvider.SECP256K1_N = BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141");
|
|
101
171
|
//# sourceMappingURL=crypto.js.map
|
package/lib/crypto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,+CAAiC;AAEjC,+BAAkC;AAClC,6DAAyD;AACzD,6DAA0D;AAuB1D,MAAM,YAAY,GAad;IACF,WAAW,EAAE,oBAAiB;IAC9B,YAAY,EAAE,qBAAkB;CACjC,CAAC;AAEF,MAAa,kBAAkB;IACtB,QAAQ,CAAC,UAAoB,EAAE,IAAa;QACjD,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,IAAI,EAAE,EAAE;YACN,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5E,OAAO;gBACL,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBACjE,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;aAClE,CAAC;SACH;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,KAAK,CAAC,YAAY,EAAE,CAAC;QAErB,OAAO;YAOL,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACvF,GAAG,EAAE;gBACH,QAAQ,EAAE,UAAU;oBAClB,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC;oBAChD,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC;aACrD;SACF,CAAC;IACJ,CAAC;IAOO,aAAa,CAAC,GAAW,EAAE,MAAc;QAC/C,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE;YACzB,OAAO,GAAG,CAAC;SACZ;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,IAAI,CAAC,IAAY,EAAE,GAAsB,EAAE,IAAa;QAC7D,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,IAAI,EAAE,EAAE;YAIN,OAAO,MAAM,CAAC,IAAI,CAChB,EAAE,CAAC,IAAI,CACL,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EACzC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EACnD,EAAE,YAAY,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CACtE,CACF,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SACtB;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -3,5 +3,7 @@ export * from "./crypto";
|
|
|
3
3
|
export * from "./interfaces";
|
|
4
4
|
export { KeyHandler } from "./key";
|
|
5
5
|
export { TransactionHandler } from "./transaction";
|
|
6
|
+
export { PayloadHandler } from "./payload";
|
|
6
7
|
export { LedgerEvents } from "./events";
|
|
8
|
+
export * as recovery from "./recovery";
|
|
7
9
|
//# sourceMappingURL=index.d.ts.map
|
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,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.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);
|
|
@@ -22,6 +34,9 @@ var key_1 = require("./key");
|
|
|
22
34
|
Object.defineProperty(exports, "KeyHandler", { enumerable: true, get: function () { return key_1.KeyHandler; } });
|
|
23
35
|
var transaction_1 = require("./transaction");
|
|
24
36
|
Object.defineProperty(exports, "TransactionHandler", { enumerable: true, get: function () { return transaction_1.TransactionHandler; } });
|
|
37
|
+
var payload_1 = require("./payload");
|
|
38
|
+
Object.defineProperty(exports, "PayloadHandler", { enumerable: true, get: function () { return payload_1.PayloadHandler; } });
|
|
25
39
|
var events_1 = require("./events");
|
|
26
40
|
Object.defineProperty(exports, "LedgerEvents", { enumerable: true, get: function () { return events_1.LedgerEvents; } });
|
|
41
|
+
exports.recovery = __importStar(require("./recovery"));
|
|
27
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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IKey } from "@activeledger/sdk-core";
|
|
1
|
+
import { IKey, KeyType } from "@activeledger/sdk-core";
|
|
2
2
|
export interface IKeyExportOptions {
|
|
3
3
|
location: string;
|
|
4
4
|
createDir?: boolean;
|
|
@@ -12,5 +12,6 @@ export interface IBIP39Options {
|
|
|
12
12
|
compressed?: boolean;
|
|
13
13
|
passphrase?: string;
|
|
14
14
|
legacy?: boolean;
|
|
15
|
+
type?: KeyType;
|
|
15
16
|
}
|
|
16
17
|
//# sourceMappingURL=interfaces.d.ts.map
|
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,MAAM,wBAAwB,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;CAChB"}
|
package/lib/key.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { IKey, KeyHandler as CoreKeyHandler } from "@activeledger/sdk-core";
|
|
2
2
|
import { IBIP39Options, IKeyExportOptions, IKeyExtended } from "./interfaces";
|
|
3
3
|
export declare class KeyHandler extends CoreKeyHandler {
|
|
4
|
+
private readonly provider;
|
|
4
5
|
constructor();
|
|
5
6
|
generateBIP39Key(keyName: string, options?: IBIP39Options): Promise<IKeyExtended>;
|
|
6
7
|
restoreBIP39Key(keyName: string, phrase: string, options?: IBIP39Options): Promise<IKeyExtended>;
|
|
7
|
-
private deriveBIP32MasterKey;
|
|
8
8
|
exportKey(key: IKey, options: IKeyExportOptions): Promise<void>;
|
|
9
9
|
exportKey(key: IKey, location: string, createDir?: boolean, overwrite?: boolean, name?: string): Promise<void>;
|
|
10
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;IAmDpG,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,9 +29,12 @@ 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();
|
|
36
|
+
super(provider);
|
|
37
|
+
this.provider = provider;
|
|
35
38
|
}
|
|
36
39
|
generateBIP39Key(keyName, options) {
|
|
37
40
|
return this.restoreBIP39Key(keyName, (0, bip39_1.generateMnemonic)(), options);
|
|
@@ -39,21 +42,17 @@ class KeyHandler extends sdk_core_1.KeyHandler {
|
|
|
39
42
|
restoreBIP39Key(keyName, phrase, options = {}) {
|
|
40
43
|
return new Promise((resolve, reject) => {
|
|
41
44
|
try {
|
|
42
|
-
const
|
|
45
|
+
const type = options.type || sdk_core_1.KeyType.EllipticCurve;
|
|
46
|
+
if (options.legacy && type !== sdk_core_1.KeyType.EllipticCurve) {
|
|
47
|
+
return reject(new Error(`The legacy BIP-39 scheme is secp256k1 only - it cannot derive ${type}`));
|
|
48
|
+
}
|
|
49
|
+
const seed = options.legacy
|
|
43
50
|
? crypto.createHash("sha256").update(phrase, "utf8").digest()
|
|
44
|
-
:
|
|
45
|
-
const curve = crypto.createECDH("secp256k1");
|
|
46
|
-
curve.setPrivateKey(privateKey);
|
|
51
|
+
: (0, recovery_1.deriveSeed)(type, (0, bip39_1.mnemonicToSeedSync)(phrase, options.passphrase || ""));
|
|
47
52
|
const keyHolder = {
|
|
48
|
-
key:
|
|
49
|
-
pub: {
|
|
50
|
-
pkcs8pem: "0x" +
|
|
51
|
-
(options.compressed ? curve.getPublicKey("hex", "compressed") : curve.getPublicKey("hex", "uncompressed")),
|
|
52
|
-
},
|
|
53
|
-
prv: { pkcs8pem: "0x" + privateKey.toString("hex") },
|
|
54
|
-
},
|
|
53
|
+
key: this.provider.generateFromSeed(seed, options.compressed, type),
|
|
55
54
|
name: keyName,
|
|
56
|
-
type
|
|
55
|
+
type,
|
|
57
56
|
phrase,
|
|
58
57
|
};
|
|
59
58
|
resolve(keyHolder);
|
|
@@ -63,9 +62,6 @@ class KeyHandler extends sdk_core_1.KeyHandler {
|
|
|
63
62
|
}
|
|
64
63
|
});
|
|
65
64
|
}
|
|
66
|
-
deriveBIP32MasterKey(seed) {
|
|
67
|
-
return crypto.createHmac("sha512", "Bitcoin seed").update(seed).digest().subarray(0, 32);
|
|
68
|
-
}
|
|
69
65
|
exportKey(key, locationOrOptions, createDir, overwrite, name) {
|
|
70
66
|
return new Promise((resolve, reject) => {
|
|
71
67
|
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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"}
|
package/lib/payload.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../src/payload.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAa9E,qBAAa,cAAe,SAAQ,kBAAkB;;CAIrD"}
|
package/lib/payload.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PayloadHandler = void 0;
|
|
4
|
+
const sdk_core_1 = require("@activeledger/sdk-core");
|
|
5
|
+
const crypto_1 = require("./crypto");
|
|
6
|
+
class PayloadHandler extends sdk_core_1.PayloadHandler {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(new crypto_1.NodeCryptoProvider());
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.PayloadHandler = PayloadHandler;
|
|
12
|
+
//# sourceMappingURL=payload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload.js","sourceRoot":"","sources":["../src/payload.ts"],"names":[],"mappings":";;;AAuBA,qDAA8E;AAC9E,qCAA8C;AAY9C,MAAa,cAAe,SAAQ,yBAAkB;IACpD;QACE,KAAK,CAAC,IAAI,2BAAkB,EAAE,CAAC,CAAC;IAClC,CAAC;CACF;AAJD,wCAIC"}
|
|
@@ -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,CA2B/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,88 @@
|
|
|
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.");
|
|
60
|
+
}
|
|
61
|
+
return normalised;
|
|
62
|
+
}
|
|
63
|
+
exports.validate = validate;
|
|
64
|
+
function toSeed(phrase, passphrase = "", options = {}) {
|
|
65
|
+
const checked = options.validate === false ? phrase : validate(phrase);
|
|
66
|
+
return (0, bip39_1.mnemonicToSeedSync)(checked, passphrase);
|
|
67
|
+
}
|
|
68
|
+
exports.toSeed = toSeed;
|
|
69
|
+
function deriveSeed(type, bip39Seed) {
|
|
70
|
+
if (bip39Seed.length !== exports.BIP39_SEED_BYTES) {
|
|
71
|
+
throw new Error(`a BIP-39 seed is ${exports.BIP39_SEED_BYTES} bytes, got ${bip39Seed.length}`);
|
|
72
|
+
}
|
|
73
|
+
const seed = Buffer.from(bip39Seed);
|
|
74
|
+
if (type === sdk_core_1.KeyType.EllipticCurve) {
|
|
75
|
+
return deriveBIP32MasterKey(seed);
|
|
76
|
+
}
|
|
77
|
+
return Buffer.from(crypto.hkdfSync("sha512", seed, Buffer.alloc(0), Buffer.from(`activeledger-seed-v1:${type}`, "utf8"), seedSize(type)));
|
|
78
|
+
}
|
|
79
|
+
exports.deriveSeed = deriveSeed;
|
|
80
|
+
function deriveBIP32MasterKey(bip39Seed) {
|
|
81
|
+
return crypto
|
|
82
|
+
.createHmac("sha512", "Bitcoin seed")
|
|
83
|
+
.update(Buffer.from(bip39Seed))
|
|
84
|
+
.digest()
|
|
85
|
+
.subarray(0, 32);
|
|
86
|
+
}
|
|
87
|
+
exports.deriveBIP32MasterKey = deriveBIP32MasterKey;
|
|
88
|
+
//# 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.3.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.3.0",
|
|
37
37
|
"@noble/post-quantum": "^0.7.1",
|
|
38
38
|
"asn1.js": "^5.4.1",
|
|
39
39
|
"bip39": "3.1.0",
|