@bitgo-beta/sdk-lib-mpc 8.2.0-beta.2045 → 8.2.0-beta.2047
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/dist/src/tss/dkls-vrf/util.d.ts +20 -0
- package/dist/src/tss/dkls-vrf/util.d.ts.map +1 -1
- package/dist/src/tss/dkls-vrf/util.js +62 -1
- package/dist/src/tss/ecdsa-dkls/derive.d.ts +111 -0
- package/dist/src/tss/ecdsa-dkls/derive.d.ts.map +1 -0
- package/dist/src/tss/ecdsa-dkls/derive.js +329 -0
- package/dist/src/tss/ecdsa-dkls/index.d.ts +1 -0
- package/dist/src/tss/ecdsa-dkls/index.d.ts.map +1 -1
- package/dist/src/tss/ecdsa-dkls/index.js +3 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Buffer } from 'buffer';
|
|
2
|
+
import { Derive } from '../ecdsa-dkls/derive';
|
|
2
3
|
import { VrfDkg } from './dkg';
|
|
3
4
|
/**
|
|
4
5
|
* Runs a local 2-of-3 VRF DKG across user (0), backup (1) and bitgo (2) parties and
|
|
@@ -6,4 +7,23 @@ import { VrfDkg } from './dkg';
|
|
|
6
7
|
* `ecdsa-dkls/util.ts` so VRF tests read like the existing DKLS ones.
|
|
7
8
|
*/
|
|
8
9
|
export declare function generateVrfDKGKeyShares(seedUser?: Buffer, seedBackup?: Buffer, seedBitgo?: Buffer): Promise<[VrfDkg, VrfDkg, VrfDkg]>;
|
|
10
|
+
/**
|
|
11
|
+
* Runs the hard-derivation ceremony on top of completed root sessions: the user (0)
|
|
12
|
+
* hard-derive session pairs with a fresh BitGo (2) session, and the backup (1)
|
|
13
|
+
* session with a second fresh BitGo session. The hard-derive wasm session is a
|
|
14
|
+
* 2-party threshold protocol per instance, so the BitGo server side runs two
|
|
15
|
+
* sessions — one per SDK party. All four derived keyshares agree on the child
|
|
16
|
+
* public key; the two BitGo shares are distinct private shares of that same key.
|
|
17
|
+
*
|
|
18
|
+
* @param path hardened derivation path bytes (e.g. `m/0'` as a 4-byte big-endian
|
|
19
|
+
* index with the hardened bit set)
|
|
20
|
+
* @returns [user, backup, bitgoUserPair, bitgoBackupPair] completed Derive sessions
|
|
21
|
+
*/
|
|
22
|
+
export declare function generateHardDerivedKeyShares(userRoot: {
|
|
23
|
+
getKeyShare(): Buffer;
|
|
24
|
+
}, backupRoot: {
|
|
25
|
+
getKeyShare(): Buffer;
|
|
26
|
+
}, bitgoRoot: {
|
|
27
|
+
getKeyShare(): Buffer;
|
|
28
|
+
}, userVrf: VrfDkg, backupVrf: VrfDkg, bitgoVrf: VrfDkg, path: Uint8Array, seedUser?: Buffer, seedBackup?: Buffer): Promise<[Derive, Derive, Derive, Derive]>;
|
|
9
29
|
//# sourceMappingURL=util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/tss/dkls-vrf/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CA0CnC"}
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/tss/dkls-vrf/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CA0CnC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE;IAAE,WAAW,IAAI,MAAM,CAAA;CAAE,EACnC,UAAU,EAAE;IAAE,WAAW,IAAI,MAAM,CAAA;CAAE,EACrC,SAAS,EAAE;IAAE,WAAW,IAAI,MAAM,CAAA;CAAE,EACpC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAkD3C"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateVrfDKGKeyShares = generateVrfDKGKeyShares;
|
|
4
|
+
exports.generateHardDerivedKeyShares = generateHardDerivedKeyShares;
|
|
5
|
+
const derive_1 = require("../ecdsa-dkls/derive");
|
|
4
6
|
const dkg_1 = require("./dkg");
|
|
5
7
|
/**
|
|
6
8
|
* Runs a local 2-of-3 VRF DKG across user (0), backup (1) and bitgo (2) parties and
|
|
@@ -49,4 +51,63 @@ async function generateVrfDKGKeyShares(seedUser, seedBackup, seedBitgo) {
|
|
|
49
51
|
});
|
|
50
52
|
return [user, backup, bitgo];
|
|
51
53
|
}
|
|
52
|
-
|
|
54
|
+
/**
|
|
55
|
+
* Runs the hard-derivation ceremony on top of completed root sessions: the user (0)
|
|
56
|
+
* hard-derive session pairs with a fresh BitGo (2) session, and the backup (1)
|
|
57
|
+
* session with a second fresh BitGo session. The hard-derive wasm session is a
|
|
58
|
+
* 2-party threshold protocol per instance, so the BitGo server side runs two
|
|
59
|
+
* sessions — one per SDK party. All four derived keyshares agree on the child
|
|
60
|
+
* public key; the two BitGo shares are distinct private shares of that same key.
|
|
61
|
+
*
|
|
62
|
+
* @param path hardened derivation path bytes (e.g. `m/0'` as a 4-byte big-endian
|
|
63
|
+
* index with the hardened bit set)
|
|
64
|
+
* @returns [user, backup, bitgoUserPair, bitgoBackupPair] completed Derive sessions
|
|
65
|
+
*/
|
|
66
|
+
async function generateHardDerivedKeyShares(userRoot, backupRoot, bitgoRoot, userVrf, backupVrf, bitgoVrf, path, seedUser, seedBackup) {
|
|
67
|
+
const user = new derive_1.Derive(3, 2, 0, userRoot.getKeyShare(), userVrf.getKeyShare(), path, seedUser);
|
|
68
|
+
const backup = new derive_1.Derive(3, 2, 1, backupRoot.getKeyShare(), backupVrf.getKeyShare(), path, seedBackup);
|
|
69
|
+
const bitgoUserPair = new derive_1.Derive(3, 2, 2, bitgoRoot.getKeyShare(), bitgoVrf.getKeyShare(), path);
|
|
70
|
+
const bitgoBackupPair = new derive_1.Derive(3, 2, 2, bitgoRoot.getKeyShare(), bitgoVrf.getKeyShare(), path);
|
|
71
|
+
// #region round 1
|
|
72
|
+
const userMsg1 = await user.initDerive();
|
|
73
|
+
const backupMsg1 = await backup.initDerive();
|
|
74
|
+
const bitgoUserPairMsg1 = await bitgoUserPair.initDerive();
|
|
75
|
+
const bitgoBackupPairMsg1 = await bitgoBackupPair.initDerive();
|
|
76
|
+
const userMsg2 = user.handleIncomingMessages({
|
|
77
|
+
p2pMessages: [],
|
|
78
|
+
broadcastMessages: [{ payload: bitgoUserPairMsg1.payload, from: bitgoUserPairMsg1.from }],
|
|
79
|
+
});
|
|
80
|
+
const bitgoUserPairMsg2 = bitgoUserPair.handleIncomingMessages({
|
|
81
|
+
p2pMessages: [],
|
|
82
|
+
broadcastMessages: [{ payload: userMsg1.payload, from: userMsg1.from }],
|
|
83
|
+
});
|
|
84
|
+
const backupMsg2 = backup.handleIncomingMessages({
|
|
85
|
+
p2pMessages: [],
|
|
86
|
+
broadcastMessages: [{ payload: bitgoBackupPairMsg1.payload, from: bitgoBackupPairMsg1.from }],
|
|
87
|
+
});
|
|
88
|
+
const bitgoBackupPairMsg2 = bitgoBackupPair.handleIncomingMessages({
|
|
89
|
+
p2pMessages: [],
|
|
90
|
+
broadcastMessages: [{ payload: backupMsg1.payload, from: backupMsg1.from }],
|
|
91
|
+
});
|
|
92
|
+
// #endregion
|
|
93
|
+
// #region round 2
|
|
94
|
+
user.handleIncomingMessages({
|
|
95
|
+
p2pMessages: [],
|
|
96
|
+
broadcastMessages: [{ payload: bitgoUserPairMsg2.broadcastMessages[0].payload, from: 2 }],
|
|
97
|
+
});
|
|
98
|
+
bitgoUserPair.handleIncomingMessages({
|
|
99
|
+
p2pMessages: [],
|
|
100
|
+
broadcastMessages: [{ payload: userMsg2.broadcastMessages[0].payload, from: 0 }],
|
|
101
|
+
});
|
|
102
|
+
backup.handleIncomingMessages({
|
|
103
|
+
p2pMessages: [],
|
|
104
|
+
broadcastMessages: [{ payload: bitgoBackupPairMsg2.broadcastMessages[0].payload, from: 2 }],
|
|
105
|
+
});
|
|
106
|
+
bitgoBackupPair.handleIncomingMessages({
|
|
107
|
+
p2pMessages: [],
|
|
108
|
+
broadcastMessages: [{ payload: backupMsg2.broadcastMessages[0].payload, from: 1 }],
|
|
109
|
+
});
|
|
110
|
+
// #endregion
|
|
111
|
+
return [user, backup, bitgoUserPair, bitgoBackupPair];
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90c3MvZGtscy12cmYvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVNBLDBEQThDQztBQWNELG9FQTREQztBQWhJRCxpREFBOEM7QUFDOUMsK0JBQStCO0FBRS9COzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsdUJBQXVCLENBQzNDLFFBQWlCLEVBQ2pCLFVBQW1CLEVBQ25CLFNBQWtCO0lBRWxCLE1BQU0sSUFBSSxHQUFHLElBQUksWUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksWUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sS0FBSyxHQUFHLElBQUksWUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzdDLGtCQUFrQjtJQUNsQixNQUFNLGtCQUFrQixHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hELE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEQsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsRCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sS0FBSyxDQUFDLHNCQUFzQixDQUFDO1FBQzdELFdBQVcsRUFBRSxFQUFFO1FBQ2YsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLGlCQUFpQixFQUFFLEdBQUcsb0JBQW9CLENBQUMsaUJBQWlCLENBQUM7S0FDeEcsQ0FBQyxDQUFDO0lBQ0gsYUFBYTtJQUViLGtCQUFrQjtJQUNsQixNQUFNLGtCQUFrQixHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDO1FB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ZSB9IGZyb20gJy4uL2VjZHNhLWRrbHMvZGVyaXZlJztcbmltcG9ydCB7IFZyZkRrZyB9IGZyb20gJy4vZGtnJztcblxuLyoqXG4gKiBSdW5zIGEgbG9jYWwgMi1vZi0zIFZSRiBES0cgYWNyb3NzIHVzZXIgKDApLCBiYWNrdXAgKDEpIGFuZCBiaXRnbyAoMikgcGFydGllcyBhbmRcbiAqIHJldHVybnMgdGhlIHRocmVlIGNvbXBsZXRlZCBWcmZEa2cgc2Vzc2lvbnMsIG1pcnJvcmluZyBgZ2VuZXJhdGVES0dLZXlTaGFyZXNgIGZyb21cbiAqIGBlY2RzYS1ka2xzL3V0aWwudHNgIHNvIFZSRiB0ZXN0cyByZWFkIGxpa2UgdGhlIGV4aXN0aW5nIERLTFMgb25lcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlVnJmREtHS2V5U2hhcmVzKFxuICBzZWVkVXNlcj86IEJ1ZmZlcixcbiAgc2VlZEJhY2t1cD86IEJ1ZmZlcixcbiAgc2VlZEJpdGdvPzogQnVmZmVyXG4pOiBQcm9taXNlPFtWcmZEa2csIFZyZkRrZywgVnJmRGtnXT4ge1xuICBjb25zdCB1c2VyID0gbmV3IFZyZkRrZygzLCAyLCAwLCBzZWVkVXNlcik7XG4gIGNvbnN0IGJhY2t1cCA9IG5ldyBWcmZEa2coMywgMiwgMSwgc2VlZEJhY2t1cCk7XG4gIGNvbnN0IGJpdGdvID0gbmV3IFZyZkRrZygzLCAyLCAyLCBzZWVkQml0Z28pO1xuICAvLyAjcmVnaW9uIHJvdW5kIDFcbiAgY29uc3QgdXNlclJvdW5kMU1lc3NhZ2VzID0gYXdhaXQgdXNlci5pbml0RGtnKCk7XG4gIGNvbnN0IGJhY2t1cFJvdW5kMU1lc3NhZ2VzID0gYXdhaXQgYmFja3VwLmluaXREa2coKTtcbiAgY29uc3QgYml0Z29Sb3VuZDFNZXNzYWdlcyA9IGF3YWl0IGJpdGdvLmluaXREa2coKTtcbiAgY29uc3QgYml0Z29Sb3VuZDJNZXNzYWdlcyA9IGF3YWl0IGJpdGdvLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogWy4uLnVzZXJSb3VuZDFNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcywgLi4uYmFja3VwUm91bmQxTWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXNdLFxuICB9KTtcbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gcm91bmQgMlxuICBjb25zdCB1c2VyUm91bmQyTWVzc2FnZXMgPSBhd2FpdCB1c2VyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogWy4uLmJpdGdvUm91bmQxTWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXMsIC4uLmJhY2t1cFJvdW5kMU1lc3NhZ2VzLmJyb2FkY2FzdE1lc3NhZ2VzXSxcbiAgfSk7XG4gIGNvbnN0IGJhY2t1cFJvdW5kMk1lc3NhZ2VzID0gYXdhaXQgYmFja3VwLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogWy4uLnVzZXJSb3VuZDFNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcywgLi4uYml0Z29Sb3VuZDFNZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlc10sXG4gIH0pO1xuICBhd2FpdCBiaXRnby5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW2JpdGdvUm91bmQyTWVzc2FnZXMsIHVzZXJSb3VuZDJNZXNzYWdlcywgYmFja3VwUm91bmQyTWVzc2FnZXNdXG4gICAgICAuZmxhdE1hcCgobSkgPT4gbS5wMnBNZXNzYWdlcylcbiAgICAgIC5maWx0ZXIoKG0pID0+IG0udG8gPT09IDIpLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbXSxcbiAgfSk7XG4gIGF3YWl0IHVzZXIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtiaXRnb1JvdW5kMk1lc3NhZ2VzLCB1c2VyUm91bmQyTWVzc2FnZXMsIGJhY2t1cFJvdW5kMk1lc3NhZ2VzXVxuICAgICAgLmZsYXRNYXAoKG0pID0+IG0ucDJwTWVzc2FnZXMpXG4gICAgICAuZmlsdGVyKChtKSA9PiBtLnRvID09PSAwKSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW10sXG4gIH0pO1xuICBhd2FpdCBiYWNrdXAuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtiaXRnb1JvdW5kMk1lc3NhZ2VzLCB1c2VyUm91bmQyTWVzc2FnZXMsIGJhY2t1cFJvdW5kMk1lc3NhZ2VzXVxuICAgICAgLmZsYXRNYXAoKG0pID0+IG0ucDJwTWVzc2FnZXMpXG4gICAgICAuZmlsdGVyKChtKSA9PiBtLnRvID09PSAxKSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW10sXG4gIH0pO1xuICByZXR1cm4gW3VzZXIsIGJhY2t1cCwgYml0Z29dO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIGhhcmQtZGVyaXZhdGlvbiBjZXJlbW9ueSBvbiB0b3Agb2YgY29tcGxldGVkIHJvb3Qgc2Vzc2lvbnM6IHRoZSB1c2VyICgwKVxuICogaGFyZC1kZXJpdmUgc2Vzc2lvbiBwYWlycyB3aXRoIGEgZnJlc2ggQml0R28gKDIpIHNlc3Npb24sIGFuZCB0aGUgYmFja3VwICgxKVxuICogc2Vzc2lvbiB3aXRoIGEgc2Vjb25kIGZyZXNoIEJpdEdvIHNlc3Npb24uIFRoZSBoYXJkLWRlcml2ZSB3YXNtIHNlc3Npb24gaXMgYVxuICogMi1wYXJ0eSB0aHJlc2hvbGQgcHJvdG9jb2wgcGVyIGluc3RhbmNlLCBzbyB0aGUgQml0R28gc2VydmVyIHNpZGUgcnVucyB0d29cbiAqIHNlc3Npb25zIOKAlCBvbmUgcGVyIFNESyBwYXJ0eS4gQWxsIGZvdXIgZGVyaXZlZCBrZXlzaGFyZXMgYWdyZWUgb24gdGhlIGNoaWxkXG4gKiBwdWJsaWMga2V5OyB0aGUgdHdvIEJpdEdvIHNoYXJlcyBhcmUgZGlzdGluY3QgcHJpdmF0ZSBzaGFyZXMgb2YgdGhhdCBzYW1lIGtleS5cbiAqXG4gKiBAcGFyYW0gcGF0aCBoYXJkZW5lZCBkZXJpdmF0aW9uIHBhdGggYnl0ZXMgKGUuZy4gYG0vMCdgIGFzIGEgNC1ieXRlIGJpZy1lbmRpYW5cbiAqICAgaW5kZXggd2l0aCB0aGUgaGFyZGVuZWQgYml0IHNldClcbiAqIEByZXR1cm5zIFt1c2VyLCBiYWNrdXAsIGJpdGdvVXNlclBhaXIsIGJpdGdvQmFja3VwUGFpcl0gY29tcGxldGVkIERlcml2ZSBzZXNzaW9uc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVIYXJkRGVyaXZlZEtleVNoYXJlcyhcbiAgdXNlclJvb3Q6IHsgZ2V0S2V5U2hhcmUoKTogQnVmZmVyIH0sXG4gIGJhY2t1cFJvb3Q6IHsgZ2V0S2V5U2hhcmUoKTogQnVmZmVyIH0sXG4gIGJpdGdvUm9vdDogeyBnZXRLZXlTaGFyZSgpOiBCdWZmZXIgfSxcbiAgdXNlclZyZjogVnJmRGtnLFxuICBiYWNrdXBWcmY6IFZyZkRrZyxcbiAgYml0Z29WcmY6IFZyZkRrZyxcbiAgcGF0aDogVWludDhBcnJheSxcbiAgc2VlZFVzZXI/OiBCdWZmZXIsXG4gIHNlZWRCYWNrdXA/OiBCdWZmZXJcbik6IFByb21pc2U8W0Rlcml2ZSwgRGVyaXZlLCBEZXJpdmUsIERlcml2ZV0+IHtcbiAgY29uc3QgdXNlciA9IG5ldyBEZXJpdmUoMywgMiwgMCwgdXNlclJvb3QuZ2V0S2V5U2hhcmUoKSwgdXNlclZyZi5nZXRLZXlTaGFyZSgpLCBwYXRoLCBzZWVkVXNlcik7XG4gIGNvbnN0IGJhY2t1cCA9IG5ldyBEZXJpdmUoMywgMiwgMSwgYmFja3VwUm9vdC5nZXRLZXlTaGFyZSgpLCBiYWNrdXBWcmYuZ2V0S2V5U2hhcmUoKSwgcGF0aCwgc2VlZEJhY2t1cCk7XG4gIGNvbnN0IGJpdGdvVXNlclBhaXIgPSBuZXcgRGVyaXZlKDMsIDIsIDIsIGJpdGdvUm9vdC5nZXRLZXlTaGFyZSgpLCBiaXRnb1ZyZi5nZXRLZXlTaGFyZSgpLCBwYXRoKTtcbiAgY29uc3QgYml0Z29CYWNrdXBQYWlyID0gbmV3IERlcml2ZSgzLCAyLCAyLCBiaXRnb1Jvb3QuZ2V0S2V5U2hhcmUoKSwgYml0Z29WcmYuZ2V0S2V5U2hhcmUoKSwgcGF0aCk7XG5cbiAgLy8gI3JlZ2lvbiByb3VuZCAxXG4gIGNvbnN0IHVzZXJNc2cxID0gYXdhaXQgdXNlci5pbml0RGVyaXZlKCk7XG4gIGNvbnN0IGJhY2t1cE1zZzEgPSBhd2FpdCBiYWNrdXAuaW5pdERlcml2ZSgpO1xuICBjb25zdCBiaXRnb1VzZXJQYWlyTXNnMSA9IGF3YWl0IGJpdGdvVXNlclBhaXIuaW5pdERlcml2ZSgpO1xuICBjb25zdCBiaXRnb0JhY2t1cFBhaXJNc2cxID0gYXdhaXQgYml0Z29CYWNrdXBQYWlyLmluaXREZXJpdmUoKTtcblxuICBjb25zdCB1c2VyTXNnMiA9IHVzZXIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbeyBwYXlsb2FkOiBiaXRnb1VzZXJQYWlyTXNnMS5wYXlsb2FkLCBmcm9tOiBiaXRnb1VzZXJQYWlyTXNnMS5mcm9tIH1dLFxuICB9KTtcbiAgY29uc3QgYml0Z29Vc2VyUGFpck1zZzIgPSBiaXRnb1VzZXJQYWlyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3sgcGF5bG9hZDogdXNlck1zZzEucGF5bG9hZCwgZnJvbTogdXNlck1zZzEuZnJvbSB9XSxcbiAgfSk7XG4gIGNvbnN0IGJhY2t1cE1zZzIgPSBiYWNrdXAuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbeyBwYXlsb2FkOiBiaXRnb0JhY2t1cFBhaXJNc2cxLnBheWxvYWQsIGZyb206IGJpdGdvQmFja3VwUGFpck1zZzEuZnJvbSB9XSxcbiAgfSk7XG4gIGNvbnN0IGJpdGdvQmFja3VwUGFpck1zZzIgPSBiaXRnb0JhY2t1cFBhaXIuaGFuZGxlSW5jb21pbmdNZXNzYWdlcyh7XG4gICAgcDJwTWVzc2FnZXM6IFtdLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBbeyBwYXlsb2FkOiBiYWNrdXBNc2cxLnBheWxvYWQsIGZyb206IGJhY2t1cE1zZzEuZnJvbSB9XSxcbiAgfSk7XG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIHJvdW5kIDJcbiAgdXNlci5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFt7IHBheWxvYWQ6IGJpdGdvVXNlclBhaXJNc2cyLmJyb2FkY2FzdE1lc3NhZ2VzWzBdLnBheWxvYWQsIGZyb206IDIgfV0sXG4gIH0pO1xuICBiaXRnb1VzZXJQYWlyLmhhbmRsZUluY29taW5nTWVzc2FnZXMoe1xuICAgIHAycE1lc3NhZ2VzOiBbXSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogW3sgcGF5bG9hZDogdXNlck1zZzIuYnJvYWRjYXN0TWVzc2FnZXNbMF0ucGF5bG9hZCwgZnJvbTogMCB9XSxcbiAgfSk7XG4gIGJhY2t1cC5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFt7IHBheWxvYWQ6IGJpdGdvQmFja3VwUGFpck1zZzIuYnJvYWRjYXN0TWVzc2FnZXNbMF0ucGF5bG9hZCwgZnJvbTogMiB9XSxcbiAgfSk7XG4gIGJpdGdvQmFja3VwUGFpci5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKHtcbiAgICBwMnBNZXNzYWdlczogW10sXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IFt7IHBheWxvYWQ6IGJhY2t1cE1zZzIuYnJvYWRjYXN0TWVzc2FnZXNbMF0ucGF5bG9hZCwgZnJvbTogMSB9XSxcbiAgfSk7XG4gIC8vICNlbmRyZWdpb25cblxuICByZXR1cm4gW3VzZXIsIGJhY2t1cCwgYml0Z29Vc2VyUGFpciwgYml0Z29CYWNrdXBQYWlyXTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import type { HardDeriveSession as DklsHardDeriveSession, VrfKeygenSession as DklsVrfKeygenSession } from '@silencelaboratories/dkls-wasm-ll-vrf-node';
|
|
2
|
+
import type { HardDeriveSession as DklsVrfWebHardDeriveSession, VrfKeygenSession as DklsVrfWebKeygenSession } from '@silencelaboratories/dkls-wasm-ll-vrf-web';
|
|
3
|
+
import { Buffer } from 'buffer';
|
|
4
|
+
import { DeserializedBroadcastMessage, DeserializedMessages } from './types';
|
|
5
|
+
type NodeVrfWasmer = typeof import('@silencelaboratories/dkls-wasm-ll-vrf-node');
|
|
6
|
+
type WebVrfWasmer = typeof import('@silencelaboratories/dkls-wasm-ll-vrf-web');
|
|
7
|
+
type BundlerVrfWasmer = typeof import('@silencelaboratories/dkls-wasm-ll-vrf-bundler');
|
|
8
|
+
type VrfWasm = NodeVrfWasmer | WebVrfWasmer | BundlerVrfWasmer;
|
|
9
|
+
export type { DklsHardDeriveSession, DklsVrfWebHardDeriveSession, DklsVrfKeygenSession, DklsVrfWebKeygenSession };
|
|
10
|
+
export declare enum DeriveState {
|
|
11
|
+
Uninitialized = 0,
|
|
12
|
+
Round1 = 1,
|
|
13
|
+
Round2 = 2,
|
|
14
|
+
Complete = 3,
|
|
15
|
+
InvalidState = 4
|
|
16
|
+
}
|
|
17
|
+
export interface DeriveSessionData {
|
|
18
|
+
deriveSessionBytes: Uint8Array;
|
|
19
|
+
deriveState: DeriveState;
|
|
20
|
+
keyShareBuff?: Buffer;
|
|
21
|
+
ownMsg1?: Uint8Array;
|
|
22
|
+
ownMsg2?: Uint8Array;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Round driver for the DKLS23 hard-derivation protocol (Ristretto VRF backed),
|
|
26
|
+
* which derives a child signing keyshare from a root keyshare and its VRF keyshare.
|
|
27
|
+
*
|
|
28
|
+
* Each session is a 2-party threshold protocol between this party and one partner:
|
|
29
|
+
* every round accepts exactly two broadcast messages — this party's own (created by
|
|
30
|
+
* `initDerive()` and re-fed automatically) and the partner's. A ceremony runs one
|
|
31
|
+
* `Derive` per SDK party, each paired with the BitGo party:
|
|
32
|
+
*
|
|
33
|
+
* - Round 1 (`WaitMsg1`): consume `{own msg1, partner msg1}`, emit own broadcast msg2.
|
|
34
|
+
* - Round 2 (`WaitMsg2`): consume `{own msg2, partner msg2}`, finalize the session
|
|
35
|
+
* and extract the derived DKLS `Keyshare`.
|
|
36
|
+
*
|
|
37
|
+
* The session is seeded from the decrypted root blob: the DKLS signing keyshare and
|
|
38
|
+
* the Ristretto VRF keyshare produced by root keygen, plus the child's hardened
|
|
39
|
+
* derivation path.
|
|
40
|
+
*
|
|
41
|
+
* Party indices follow the MPCv2 convention: 0 = user, 1 = backup, 2 = bitgo.
|
|
42
|
+
*/
|
|
43
|
+
export declare class Derive {
|
|
44
|
+
protected deriveSession: DklsHardDeriveSession | DklsVrfWebHardDeriveSession | undefined;
|
|
45
|
+
protected deriveSessionBytes: Uint8Array;
|
|
46
|
+
protected keyShareBuff: Buffer | undefined;
|
|
47
|
+
protected n: number;
|
|
48
|
+
protected t: number;
|
|
49
|
+
protected partyIdx: number;
|
|
50
|
+
protected rootKeyShare: Buffer;
|
|
51
|
+
protected vrfKeyShare: Buffer;
|
|
52
|
+
protected path: Uint8Array;
|
|
53
|
+
protected seed: Buffer | undefined;
|
|
54
|
+
protected deriveState: DeriveState;
|
|
55
|
+
protected vrfWasm: VrfWasm | null;
|
|
56
|
+
protected ownMsg1: Uint8Array | undefined;
|
|
57
|
+
protected ownMsg2: Uint8Array | undefined;
|
|
58
|
+
constructor(n: number, t: number, partyIdx: number, rootKeyShare: Buffer, vrfKeyShare: Buffer, path: Uint8Array, seed?: Buffer, vrfWasm?: BundlerVrfWasmer);
|
|
59
|
+
private loadVrfWasm;
|
|
60
|
+
private getVrfWasm;
|
|
61
|
+
private _restoreSession;
|
|
62
|
+
/**
|
|
63
|
+
* Re-derive the round state from the wasm session bytes instead of trusting a
|
|
64
|
+
* caller-supplied enum. The wasm embeds the round tag (`WaitMsg1`/`WaitMsg2`,
|
|
65
|
+
* then a `Share` payload once finalized) for exactly this reason.
|
|
66
|
+
*/
|
|
67
|
+
private _deserializeState;
|
|
68
|
+
/**
|
|
69
|
+
* Create this party's first hard-derive message (broadcast). Seeds the wasm
|
|
70
|
+
* session from the root keyshare, VRF keyshare and derivation path.
|
|
71
|
+
*/
|
|
72
|
+
initDerive(): Promise<DeserializedBroadcastMessage>;
|
|
73
|
+
/**
|
|
74
|
+
* Process the messages this party holds for the current round and return this
|
|
75
|
+
* party's messages for the next round. Callers pass the partner's broadcast
|
|
76
|
+
* message only; this party's own message is re-fed automatically because the
|
|
77
|
+
* wasm session validates the sender set as `{self, partner}`.
|
|
78
|
+
*
|
|
79
|
+
* - Round 1 (WaitMsg1): consumes `{own msg1, partner msg1}` and emits this
|
|
80
|
+
* party's broadcast msg2.
|
|
81
|
+
* - Round 2 (WaitMsg2): consumes `{own msg2, partner msg2}` and finalizes the
|
|
82
|
+
* session, returning no messages.
|
|
83
|
+
*/
|
|
84
|
+
handleIncomingMessages(messagesForIthRound: DeserializedMessages): DeserializedMessages;
|
|
85
|
+
/**
|
|
86
|
+
* Get the derived DKLS keyshare bytes (CBOR `Keyshare`) once the derive is
|
|
87
|
+
* complete. This buffer is private key material.
|
|
88
|
+
*/
|
|
89
|
+
getKeyShare(): Buffer;
|
|
90
|
+
/**
|
|
91
|
+
* Returns a CBOR-encoded ReducedKeyShare buffer containing the derived party's
|
|
92
|
+
* private scalar (s_i) in the `prv` field. This buffer is private key material;
|
|
93
|
+
* the caller encrypts it as `reducedEncryptedPrv`, matching `Dkg.getReducedKeyShare`.
|
|
94
|
+
*/
|
|
95
|
+
getReducedKeyShare(): Buffer;
|
|
96
|
+
/**
|
|
97
|
+
* Get the current session data that can be used to restore the session later.
|
|
98
|
+
*
|
|
99
|
+
* The returned session bytes are secret key material — they carry this party's
|
|
100
|
+
* root keyshares. They must never be logged or persisted in the clear; the
|
|
101
|
+
* caller encrypts them exactly like the key share itself.
|
|
102
|
+
*/
|
|
103
|
+
getSessionData(): DeriveSessionData;
|
|
104
|
+
/**
|
|
105
|
+
* Restore a session snapshot captured after initDerive() or round 1 processing.
|
|
106
|
+
* Do not call this before initDerive() has created session bytes.
|
|
107
|
+
* The round state is re-derived from the wasm session bytes, not the caller enum.
|
|
108
|
+
*/
|
|
109
|
+
static restoreSession(n: number, t: number, partyIdx: number, rootKeyShare: Buffer, vrfKeyShare: Buffer, path: Uint8Array, sessionData: DeriveSessionData, seed?: Buffer, vrfWasm?: BundlerVrfWasmer): Promise<Derive>;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=derive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../../../src/tss/ecdsa-dkls/derive.ts"],"names":[],"mappings":"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"}
|