@bitshard.io/bitshard-sdk 0.0.1
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/BitShardSDK.d.ts +156 -0
- package/dist/BitShardSDK.d.ts.map +1 -0
- package/dist/BitShardSDK.js +350 -0
- package/dist/BitShardSDK.js.map +1 -0
- package/dist/chains/bitcoin/BitcoinChain.d.ts +6 -0
- package/dist/chains/bitcoin/BitcoinChain.d.ts.map +1 -0
- package/dist/chains/bitcoin/BitcoinChain.js +10 -0
- package/dist/chains/bitcoin/BitcoinChain.js.map +1 -0
- package/dist/chains/config.d.ts +5 -0
- package/dist/chains/config.d.ts.map +1 -0
- package/dist/chains/config.js +7 -0
- package/dist/chains/config.js.map +1 -0
- package/dist/chains/evm/EVMChain.d.ts +6 -0
- package/dist/chains/evm/EVMChain.d.ts.map +1 -0
- package/dist/chains/evm/EVMChain.js +10 -0
- package/dist/chains/evm/EVMChain.js.map +1 -0
- package/dist/core/DKLSParty.d.ts +132 -0
- package/dist/core/DKLSParty.d.ts.map +1 -0
- package/dist/core/DKLSParty.js +267 -0
- package/dist/core/DKLSParty.js.map +1 -0
- package/dist/core/DKLSService.d.ts +83 -0
- package/dist/core/DKLSService.d.ts.map +1 -0
- package/dist/core/DKLSService.js +325 -0
- package/dist/core/DKLSService.js.map +1 -0
- package/dist/core/ThresholdConfig.d.ts +76 -0
- package/dist/core/ThresholdConfig.d.ts.map +1 -0
- package/dist/core/ThresholdConfig.js +127 -0
- package/dist/core/ThresholdConfig.js.map +1 -0
- package/dist/core/types.d.ts +238 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +3 -0
- package/dist/core/types.js.map +1 -0
- package/dist/crypto/addresses.d.ts +82 -0
- package/dist/crypto/addresses.d.ts.map +1 -0
- package/dist/crypto/addresses.js +242 -0
- package/dist/crypto/addresses.js.map +1 -0
- package/dist/crypto/elliptic.d.ts +19 -0
- package/dist/crypto/elliptic.d.ts.map +1 -0
- package/dist/crypto/elliptic.js +114 -0
- package/dist/crypto/elliptic.js.map +1 -0
- package/dist/crypto/encoding.d.ts +111 -0
- package/dist/crypto/encoding.d.ts.map +1 -0
- package/dist/crypto/encoding.js +224 -0
- package/dist/crypto/encoding.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/dist/protocols/keygen.d.ts +6 -0
- package/dist/protocols/keygen.d.ts.map +1 -0
- package/dist/protocols/keygen.js +12 -0
- package/dist/protocols/keygen.js.map +1 -0
- package/dist/protocols/presignature.d.ts +68 -0
- package/dist/protocols/presignature.d.ts.map +1 -0
- package/dist/protocols/presignature.js +147 -0
- package/dist/protocols/presignature.js.map +1 -0
- package/dist/protocols/refresh.d.ts +5 -0
- package/dist/protocols/refresh.d.ts.map +1 -0
- package/dist/protocols/refresh.js +10 -0
- package/dist/protocols/refresh.js.map +1 -0
- package/dist/protocols/signing.d.ts +7 -0
- package/dist/protocols/signing.d.ts.map +1 -0
- package/dist/protocols/signing.js +12 -0
- package/dist/protocols/signing.js.map +1 -0
- package/dist/rpc/RPCProvider.d.ts +6 -0
- package/dist/rpc/RPCProvider.d.ts.map +1 -0
- package/dist/rpc/RPCProvider.js +6 -0
- package/dist/rpc/RPCProvider.js.map +1 -0
- package/dist/rpc/methods.d.ts +5 -0
- package/dist/rpc/methods.d.ts.map +1 -0
- package/dist/rpc/methods.js +10 -0
- package/dist/rpc/methods.js.map +1 -0
- package/dist/websocket/coordinator.d.ts +6 -0
- package/dist/websocket/coordinator.d.ts.map +1 -0
- package/dist/websocket/coordinator.js +10 -0
- package/dist/websocket/coordinator.js.map +1 -0
- package/dist/websocket/messages.d.ts +9 -0
- package/dist/websocket/messages.d.ts.map +1 -0
- package/dist/websocket/messages.js +7 -0
- package/dist/websocket/messages.js.map +1 -0
- package/dist/websocket/session.d.ts +5 -0
- package/dist/websocket/session.d.ts.map +1 -0
- package/dist/websocket/session.js +7 -0
- package/dist/websocket/session.js.map +1 -0
- package/dist/wire/format.d.ts +8 -0
- package/dist/wire/format.d.ts.map +1 -0
- package/dist/wire/format.js +11 -0
- package/dist/wire/format.js.map +1 -0
- package/dist/wire/validation.d.ts +6 -0
- package/dist/wire/validation.d.ts.map +1 -0
- package/dist/wire/validation.js +13 -0
- package/dist/wire/validation.js.map +1 -0
- package/package.json +67 -0
- package/src/BitShardSDK.ts +428 -0
- package/src/chains/bitcoin/BitcoinChain.ts +7 -0
- package/src/chains/config.ts +7 -0
- package/src/chains/evm/EVMChain.ts +7 -0
- package/src/core/DKLSParty.ts +317 -0
- package/src/core/DKLSService.ts +426 -0
- package/src/core/ThresholdConfig.ts +159 -0
- package/src/core/types.ts +253 -0
- package/src/crypto/addresses.ts +282 -0
- package/src/crypto/elliptic.ts +133 -0
- package/src/crypto/encoding.ts +227 -0
- package/src/index.ts +40 -0
- package/src/protocols/keygen.ts +8 -0
- package/src/protocols/presignature.ts +196 -0
- package/src/protocols/refresh.ts +7 -0
- package/src/protocols/signing.ts +9 -0
- package/src/rpc/RPCProvider.ts +7 -0
- package/src/rpc/methods.ts +7 -0
- package/src/websocket/coordinator.ts +7 -0
- package/src/websocket/messages.ts +11 -0
- package/src/websocket/session.ts +7 -0
- package/src/wire/format.ts +10 -0
- package/src/wire/validation.ts +14 -0
- package/test-sdk.js +234 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { Keyshare } from '@silencelaboratories/dkls-wasm-ll-node';
|
|
2
|
+
import type { PartyConfig, WireMessage } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Represents a single party in the MPC protocol
|
|
5
|
+
*/
|
|
6
|
+
export declare class DKLSParty {
|
|
7
|
+
private readonly config;
|
|
8
|
+
private readonly thresholdConfig;
|
|
9
|
+
private keygenSession?;
|
|
10
|
+
private signSession?;
|
|
11
|
+
private keyshare?;
|
|
12
|
+
private messageQueue;
|
|
13
|
+
/**
|
|
14
|
+
* Create a new DKLS party
|
|
15
|
+
* @param config Party configuration
|
|
16
|
+
*/
|
|
17
|
+
constructor(config: PartyConfig);
|
|
18
|
+
/**
|
|
19
|
+
* Get party ID
|
|
20
|
+
*/
|
|
21
|
+
get partyId(): number;
|
|
22
|
+
/**
|
|
23
|
+
* Get party role
|
|
24
|
+
*/
|
|
25
|
+
get role(): string;
|
|
26
|
+
/**
|
|
27
|
+
* Check if this party is the coordinator
|
|
28
|
+
*/
|
|
29
|
+
isCoordinator(): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Initialize key generation session
|
|
32
|
+
*/
|
|
33
|
+
initializeKeygen(): void;
|
|
34
|
+
/**
|
|
35
|
+
* Initialize key rotation session
|
|
36
|
+
* @param existingKeyshare Existing keyshare to rotate
|
|
37
|
+
*/
|
|
38
|
+
initializeKeyRotation(existingKeyshare: Keyshare): void;
|
|
39
|
+
/**
|
|
40
|
+
* Create first message for current protocol
|
|
41
|
+
* @returns Wire format message
|
|
42
|
+
*/
|
|
43
|
+
createFirstMessage(): WireMessage;
|
|
44
|
+
/**
|
|
45
|
+
* Handle incoming messages
|
|
46
|
+
* @param messages Array of wire format messages
|
|
47
|
+
* @param commitments Optional commitments for keygen round 3
|
|
48
|
+
* @returns Array of response messages
|
|
49
|
+
*/
|
|
50
|
+
handleMessages(messages: WireMessage[], commitments?: any[]): WireMessage[];
|
|
51
|
+
/**
|
|
52
|
+
* Calculate chain code commitment (for keygen)
|
|
53
|
+
* @returns Commitment data
|
|
54
|
+
*/
|
|
55
|
+
calculateChainCodeCommitment(): any;
|
|
56
|
+
/**
|
|
57
|
+
* Finalize key generation and extract keyshare
|
|
58
|
+
* @returns The generated keyshare
|
|
59
|
+
*/
|
|
60
|
+
finalizeKeygen(): Keyshare;
|
|
61
|
+
/**
|
|
62
|
+
* Finalize key rotation
|
|
63
|
+
* @param oldKeyshare The old keyshare being rotated
|
|
64
|
+
*/
|
|
65
|
+
finalizeKeyRotation(oldKeyshare: Keyshare): void;
|
|
66
|
+
/**
|
|
67
|
+
* Initialize signing session
|
|
68
|
+
* @param keyshare Keyshare to use for signing
|
|
69
|
+
* @param derivationPath Derivation path (currently only "m" supported)
|
|
70
|
+
*/
|
|
71
|
+
initializeSigning(keyshare?: Keyshare, derivationPath?: string): void;
|
|
72
|
+
/**
|
|
73
|
+
* Generate last message with actual message hash
|
|
74
|
+
* @param messageHash The message hash to sign
|
|
75
|
+
* @returns Wire format message
|
|
76
|
+
*/
|
|
77
|
+
lastMessage(messageHash: Uint8Array): WireMessage;
|
|
78
|
+
/**
|
|
79
|
+
* Combine messages to produce final signature
|
|
80
|
+
* @param messages Final round messages
|
|
81
|
+
* @returns Signature components [r, s]
|
|
82
|
+
*/
|
|
83
|
+
combine(messages: WireMessage[]): [Uint8Array, Uint8Array];
|
|
84
|
+
/**
|
|
85
|
+
* Get stored keyshare
|
|
86
|
+
*/
|
|
87
|
+
getKeyshare(): Keyshare | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* Set keyshare (for restoring from storage)
|
|
90
|
+
* @param keyshare Keyshare to set
|
|
91
|
+
*/
|
|
92
|
+
setKeyshare(keyshare: Keyshare): void;
|
|
93
|
+
/**
|
|
94
|
+
* Serialize keyshare to base64
|
|
95
|
+
* @returns Base64 encoded keyshare or undefined
|
|
96
|
+
*/
|
|
97
|
+
serializeKeyshare(): string | undefined;
|
|
98
|
+
/**
|
|
99
|
+
* Restore keyshare from base64
|
|
100
|
+
* @param data Base64 encoded keyshare
|
|
101
|
+
*/
|
|
102
|
+
deserializeKeyshare(data: string): void;
|
|
103
|
+
/**
|
|
104
|
+
* Add message to queue
|
|
105
|
+
* @param message Wire format message
|
|
106
|
+
*/
|
|
107
|
+
queueMessage(message: WireMessage): void;
|
|
108
|
+
/**
|
|
109
|
+
* Get and clear message queue
|
|
110
|
+
* @returns Queued messages
|
|
111
|
+
*/
|
|
112
|
+
getQueuedMessages(): WireMessage[];
|
|
113
|
+
/**
|
|
114
|
+
* Get messages for this party from a list
|
|
115
|
+
* @param messages Array of messages
|
|
116
|
+
* @returns Messages intended for this party
|
|
117
|
+
*/
|
|
118
|
+
filterIncomingMessages(messages: WireMessage[]): WireMessage[];
|
|
119
|
+
/**
|
|
120
|
+
* Check if party has an active session
|
|
121
|
+
*/
|
|
122
|
+
hasActiveSession(): boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Get current session type
|
|
125
|
+
*/
|
|
126
|
+
getSessionType(): 'keygen' | 'signing' | 'none';
|
|
127
|
+
/**
|
|
128
|
+
* Clear all sessions and state
|
|
129
|
+
*/
|
|
130
|
+
reset(): void;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=DKLSParty.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DKLSParty.d.ts","sourceRoot":"","sources":["../../src/core/DKLSParty.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,QAAQ,EACX,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAIxD;;GAEG;AACH,qBAAa,SAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,QAAQ,CAAC,CAAW;IAC5B,OAAO,CAAC,YAAY,CAAqB;IAEzC;;;OAGG;gBACS,MAAM,EAAE,WAAW;IAc/B;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAYxB;;;OAGG;IACH,qBAAqB,CAAC,gBAAgB,EAAE,QAAQ,GAAG,IAAI;IAQvD;;;OAGG;IACH,kBAAkB,IAAI,WAAW;IAYjC;;;;;OAKG;IACH,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,WAAW,EAAE;IAc3E;;;OAGG;IACH,4BAA4B,IAAI,GAAG;IAOnC;;;OAGG;IACH,cAAc,IAAI,QAAQ;IAW1B;;;OAGG;IACH,mBAAmB,CAAC,WAAW,EAAE,QAAQ,GAAG,IAAI;IAQhD;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,cAAc,GAAE,MAAY,GAAG,IAAI;IAmB1E;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,UAAU,GAAG,WAAW;IASjD;;;;OAIG;IACH,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC;IAmB1D;;OAEG;IACH,WAAW,IAAI,QAAQ,GAAG,SAAS;IAInC;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIrC;;;OAGG;IACH,iBAAiB,IAAI,MAAM,GAAG,SAAS;IASvC;;;OAGG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKvC;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAIxC;;;OAGG;IACH,iBAAiB,IAAI,WAAW,EAAE;IAMlC;;;;OAIG;IACH,sBAAsB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE;IAS9D;;OAEG;IACH,gBAAgB,IAAI,OAAO;IAI3B;;OAEG;IACH,cAAc,IAAI,QAAQ,GAAG,SAAS,GAAG,MAAM;IAM/C;;OAEG;IACH,KAAK,IAAI,IAAI;CAMhB"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DKLSParty = void 0;
|
|
4
|
+
const dkls_wasm_ll_node_1 = require("@silencelaboratories/dkls-wasm-ll-node");
|
|
5
|
+
const ThresholdConfig_1 = require("./ThresholdConfig");
|
|
6
|
+
const DKLSService_1 = require("./DKLSService");
|
|
7
|
+
/**
|
|
8
|
+
* Represents a single party in the MPC protocol
|
|
9
|
+
*/
|
|
10
|
+
class DKLSParty {
|
|
11
|
+
/**
|
|
12
|
+
* Create a new DKLS party
|
|
13
|
+
* @param config Party configuration
|
|
14
|
+
*/
|
|
15
|
+
constructor(config) {
|
|
16
|
+
this.messageQueue = [];
|
|
17
|
+
this.config = config;
|
|
18
|
+
this.thresholdConfig = new ThresholdConfig_1.ThresholdConfig(config.totalParties, config.threshold, Array.from({ length: config.totalParties }, (_, i) => i));
|
|
19
|
+
// Validate party ID
|
|
20
|
+
if (!this.thresholdConfig.isValidParty(config.partyId)) {
|
|
21
|
+
throw new Error(`Invalid party ID: ${config.partyId}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get party ID
|
|
26
|
+
*/
|
|
27
|
+
get partyId() {
|
|
28
|
+
return this.config.partyId;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get party role
|
|
32
|
+
*/
|
|
33
|
+
get role() {
|
|
34
|
+
return this.config.role ?? 'signer';
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Check if this party is the coordinator
|
|
38
|
+
*/
|
|
39
|
+
isCoordinator() {
|
|
40
|
+
return this.config.role === 'coordinator';
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Initialize key generation session
|
|
44
|
+
*/
|
|
45
|
+
initializeKeygen() {
|
|
46
|
+
if (this.keygenSession) {
|
|
47
|
+
throw new Error('Keygen session already initialized');
|
|
48
|
+
}
|
|
49
|
+
this.keygenSession = new dkls_wasm_ll_node_1.KeygenSession(this.config.totalParties, this.config.threshold, this.config.partyId);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Initialize key rotation session
|
|
53
|
+
* @param existingKeyshare Existing keyshare to rotate
|
|
54
|
+
*/
|
|
55
|
+
initializeKeyRotation(existingKeyshare) {
|
|
56
|
+
if (this.keygenSession) {
|
|
57
|
+
throw new Error('Keygen session already initialized');
|
|
58
|
+
}
|
|
59
|
+
this.keygenSession = dkls_wasm_ll_node_1.KeygenSession.initKeyRotation(existingKeyshare);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Create first message for current protocol
|
|
63
|
+
* @returns Wire format message
|
|
64
|
+
*/
|
|
65
|
+
createFirstMessage() {
|
|
66
|
+
if (this.keygenSession) {
|
|
67
|
+
const msg = this.keygenSession.createFirstMessage();
|
|
68
|
+
return DKLSService_1.DKLSService.toWireMessage(msg);
|
|
69
|
+
}
|
|
70
|
+
else if (this.signSession) {
|
|
71
|
+
const msg = this.signSession.createFirstMessage();
|
|
72
|
+
return DKLSService_1.DKLSService.toWireMessage(msg);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
throw new Error('No active session');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Handle incoming messages
|
|
80
|
+
* @param messages Array of wire format messages
|
|
81
|
+
* @param commitments Optional commitments for keygen round 3
|
|
82
|
+
* @returns Array of response messages
|
|
83
|
+
*/
|
|
84
|
+
handleMessages(messages, commitments) {
|
|
85
|
+
const dklsMessages = messages.map(m => DKLSService_1.DKLSService.fromWireMessage(m));
|
|
86
|
+
if (this.keygenSession) {
|
|
87
|
+
const responses = this.keygenSession.handleMessages(dklsMessages, commitments);
|
|
88
|
+
return responses.map(m => DKLSService_1.DKLSService.toWireMessage(m));
|
|
89
|
+
}
|
|
90
|
+
else if (this.signSession) {
|
|
91
|
+
const responses = this.signSession.handleMessages(dklsMessages);
|
|
92
|
+
return responses.map(m => DKLSService_1.DKLSService.toWireMessage(m));
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
throw new Error('No active session');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Calculate chain code commitment (for keygen)
|
|
100
|
+
* @returns Commitment data
|
|
101
|
+
*/
|
|
102
|
+
calculateChainCodeCommitment() {
|
|
103
|
+
if (!this.keygenSession) {
|
|
104
|
+
throw new Error('No active keygen session');
|
|
105
|
+
}
|
|
106
|
+
return this.keygenSession.calculateChainCodeCommitment();
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Finalize key generation and extract keyshare
|
|
110
|
+
* @returns The generated keyshare
|
|
111
|
+
*/
|
|
112
|
+
finalizeKeygen() {
|
|
113
|
+
if (!this.keygenSession) {
|
|
114
|
+
throw new Error('No active keygen session');
|
|
115
|
+
}
|
|
116
|
+
this.keyshare = this.keygenSession.keyshare();
|
|
117
|
+
this.keygenSession = undefined; // Session is consumed
|
|
118
|
+
return this.keyshare;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Finalize key rotation
|
|
122
|
+
* @param oldKeyshare The old keyshare being rotated
|
|
123
|
+
*/
|
|
124
|
+
finalizeKeyRotation(oldKeyshare) {
|
|
125
|
+
if (!this.keyshare) {
|
|
126
|
+
throw new Error('No new keyshare generated');
|
|
127
|
+
}
|
|
128
|
+
this.keyshare.finishKeyRotation(oldKeyshare);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Initialize signing session
|
|
132
|
+
* @param keyshare Keyshare to use for signing
|
|
133
|
+
* @param derivationPath Derivation path (currently only "m" supported)
|
|
134
|
+
*/
|
|
135
|
+
initializeSigning(keyshare, derivationPath = "m") {
|
|
136
|
+
if (this.signSession) {
|
|
137
|
+
throw new Error('Sign session already initialized');
|
|
138
|
+
}
|
|
139
|
+
const shareToUse = keyshare ?? this.keyshare;
|
|
140
|
+
if (!shareToUse) {
|
|
141
|
+
throw new Error('No keyshare available for signing');
|
|
142
|
+
}
|
|
143
|
+
// SignSession consumes the keyshare
|
|
144
|
+
this.signSession = new dkls_wasm_ll_node_1.SignSession(shareToUse, derivationPath);
|
|
145
|
+
// Clear stored keyshare if it was consumed
|
|
146
|
+
if (!keyshare && this.keyshare) {
|
|
147
|
+
this.keyshare = undefined;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Generate last message with actual message hash
|
|
152
|
+
* @param messageHash The message hash to sign
|
|
153
|
+
* @returns Wire format message
|
|
154
|
+
*/
|
|
155
|
+
lastMessage(messageHash) {
|
|
156
|
+
if (!this.signSession) {
|
|
157
|
+
throw new Error('No active sign session');
|
|
158
|
+
}
|
|
159
|
+
const msg = this.signSession.lastMessage(messageHash);
|
|
160
|
+
return DKLSService_1.DKLSService.toWireMessage(msg);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Combine messages to produce final signature
|
|
164
|
+
* @param messages Final round messages
|
|
165
|
+
* @returns Signature components [r, s]
|
|
166
|
+
*/
|
|
167
|
+
combine(messages) {
|
|
168
|
+
if (!this.signSession) {
|
|
169
|
+
throw new Error('No active sign session');
|
|
170
|
+
}
|
|
171
|
+
const dklsMessages = messages.map(m => DKLSService_1.DKLSService.fromWireMessage(m));
|
|
172
|
+
const signature = this.signSession.combine(dklsMessages);
|
|
173
|
+
// Session is consumed after combine
|
|
174
|
+
this.signSession = undefined;
|
|
175
|
+
// Ensure we have exactly 2 components
|
|
176
|
+
if (!Array.isArray(signature) || signature.length !== 2) {
|
|
177
|
+
throw new Error('Invalid signature format');
|
|
178
|
+
}
|
|
179
|
+
return [signature[0], signature[1]];
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Get stored keyshare
|
|
183
|
+
*/
|
|
184
|
+
getKeyshare() {
|
|
185
|
+
return this.keyshare;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Set keyshare (for restoring from storage)
|
|
189
|
+
* @param keyshare Keyshare to set
|
|
190
|
+
*/
|
|
191
|
+
setKeyshare(keyshare) {
|
|
192
|
+
this.keyshare = keyshare;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Serialize keyshare to base64
|
|
196
|
+
* @returns Base64 encoded keyshare or undefined
|
|
197
|
+
*/
|
|
198
|
+
serializeKeyshare() {
|
|
199
|
+
if (!this.keyshare) {
|
|
200
|
+
return undefined;
|
|
201
|
+
}
|
|
202
|
+
const bytes = this.keyshare.toBytes();
|
|
203
|
+
return Buffer.from(bytes).toString('base64');
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Restore keyshare from base64
|
|
207
|
+
* @param data Base64 encoded keyshare
|
|
208
|
+
*/
|
|
209
|
+
deserializeKeyshare(data) {
|
|
210
|
+
const bytes = new Uint8Array(Buffer.from(data, 'base64'));
|
|
211
|
+
this.keyshare = dkls_wasm_ll_node_1.Keyshare.fromBytes(bytes);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Add message to queue
|
|
215
|
+
* @param message Wire format message
|
|
216
|
+
*/
|
|
217
|
+
queueMessage(message) {
|
|
218
|
+
this.messageQueue.push(message);
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Get and clear message queue
|
|
222
|
+
* @returns Queued messages
|
|
223
|
+
*/
|
|
224
|
+
getQueuedMessages() {
|
|
225
|
+
const messages = [...this.messageQueue];
|
|
226
|
+
this.messageQueue = [];
|
|
227
|
+
return messages;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Get messages for this party from a list
|
|
231
|
+
* @param messages Array of messages
|
|
232
|
+
* @returns Messages intended for this party
|
|
233
|
+
*/
|
|
234
|
+
filterIncomingMessages(messages) {
|
|
235
|
+
return messages.filter(m => m.to_id === undefined || // Broadcast message
|
|
236
|
+
m.to_id === this.partyId // P2P message for this party
|
|
237
|
+
).filter(m => m.from_id !== this.partyId // Exclude own messages
|
|
238
|
+
);
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Check if party has an active session
|
|
242
|
+
*/
|
|
243
|
+
hasActiveSession() {
|
|
244
|
+
return !!(this.keygenSession || this.signSession);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Get current session type
|
|
248
|
+
*/
|
|
249
|
+
getSessionType() {
|
|
250
|
+
if (this.keygenSession)
|
|
251
|
+
return 'keygen';
|
|
252
|
+
if (this.signSession)
|
|
253
|
+
return 'signing';
|
|
254
|
+
return 'none';
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Clear all sessions and state
|
|
258
|
+
*/
|
|
259
|
+
reset() {
|
|
260
|
+
this.keygenSession = undefined;
|
|
261
|
+
this.signSession = undefined;
|
|
262
|
+
this.messageQueue = [];
|
|
263
|
+
// Note: We don't clear keyshare as it might be needed later
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
exports.DKLSParty = DKLSParty;
|
|
267
|
+
//# sourceMappingURL=DKLSParty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DKLSParty.js","sourceRoot":"","sources":["../../src/core/DKLSParty.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { KeygenSession, Keyshare, Message } from '@silencelaboratories/dkls-wasm-ll-node';
|
|
2
|
+
import type { DKGResult, FlexibleDKGResult, SignatureResult, MPCSession, BlockchainAddresses } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Core DKLS protocol service for distributed key generation and threshold signatures
|
|
5
|
+
*/
|
|
6
|
+
export declare class DKLSService {
|
|
7
|
+
private sessions;
|
|
8
|
+
/**
|
|
9
|
+
* Wire format for DKLS Message over WS
|
|
10
|
+
*/
|
|
11
|
+
static toWireMessage(msg: Message): {
|
|
12
|
+
from_id: number;
|
|
13
|
+
to_id?: number;
|
|
14
|
+
payload: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Reconstruct DKLS Message from wire payload
|
|
18
|
+
*/
|
|
19
|
+
static fromWireMessage(w: {
|
|
20
|
+
from_id: number;
|
|
21
|
+
to_id?: number;
|
|
22
|
+
payload: string;
|
|
23
|
+
}): Message;
|
|
24
|
+
/**
|
|
25
|
+
* Generate DKG using DKLS protocol with flexible threshold
|
|
26
|
+
* @param totalParties Total number of parties (n)
|
|
27
|
+
* @param threshold Threshold required for signing (t)
|
|
28
|
+
* @param partyIds Optional array of party IDs (defaults to 0..n-1)
|
|
29
|
+
*/
|
|
30
|
+
generateDKG(totalParties?: number, threshold?: number, partyIds?: number[]): Promise<FlexibleDKGResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Legacy method for backward compatibility - generates standard 2-of-3 setup
|
|
33
|
+
*/
|
|
34
|
+
generateDKGCommitments(): Promise<DKGResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Execute the DKG protocol rounds
|
|
37
|
+
*/
|
|
38
|
+
protected executeDKG(parties: KeygenSession[]): Keyshare[];
|
|
39
|
+
/**
|
|
40
|
+
* Sign a message using threshold signatures
|
|
41
|
+
* @param messageHash The message hash to sign
|
|
42
|
+
* @param keyshares Array of keyshares (at least threshold number required)
|
|
43
|
+
* @param threshold Threshold value (must match keyshare generation)
|
|
44
|
+
* @param publicKey Optional public key for v calculation
|
|
45
|
+
*/
|
|
46
|
+
signMessage(messageHash: Uint8Array, keyshares: Keyshare[], threshold: number, publicKey?: string): Promise<SignatureResult>;
|
|
47
|
+
/**
|
|
48
|
+
* Legacy signing method for backward compatibility
|
|
49
|
+
*/
|
|
50
|
+
signMessageLegacy(messageHash: Uint8Array, serverShareData: string, backupShareData: string, _chain?: 'ethereum' | 'bitcoin' | 'solana'): Promise<SignatureResult>;
|
|
51
|
+
/**
|
|
52
|
+
* Refresh shares (key rotation) while preserving the public key
|
|
53
|
+
*/
|
|
54
|
+
refreshShares(existingShares: Keyshare[]): Promise<{
|
|
55
|
+
newShares: Keyshare[];
|
|
56
|
+
publicKey: string;
|
|
57
|
+
}>;
|
|
58
|
+
/**
|
|
59
|
+
* Filter messages for broadcast (exclude own messages)
|
|
60
|
+
*/
|
|
61
|
+
protected filterMessages(msgs: Message[], party: number): Message[];
|
|
62
|
+
/**
|
|
63
|
+
* Select P2P messages for a specific party
|
|
64
|
+
*/
|
|
65
|
+
protected selectMessages(msgs: Message[], party: number): Message[];
|
|
66
|
+
/**
|
|
67
|
+
* Derive all blockchain addresses from public key
|
|
68
|
+
*/
|
|
69
|
+
protected deriveAllAddresses(publicKey: Uint8Array): BlockchainAddresses;
|
|
70
|
+
/**
|
|
71
|
+
* Get active session by ID
|
|
72
|
+
*/
|
|
73
|
+
getSession(sessionId: string): MPCSession | undefined;
|
|
74
|
+
/**
|
|
75
|
+
* Create a new MPC session
|
|
76
|
+
*/
|
|
77
|
+
createSession(session: Omit<MPCSession, 'createdAt' | 'updatedAt'>): MPCSession;
|
|
78
|
+
/**
|
|
79
|
+
* Update session status
|
|
80
|
+
*/
|
|
81
|
+
updateSession(sessionId: string, updates: Partial<MPCSession>): void;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=DKLSService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DKLSService.d.ts","sourceRoot":"","sources":["../../src/core/DKLSService.ts"],"names":[],"mappings":"AACA,OAAO,EACH,aAAa,EAEb,QAAQ,EACR,OAAO,EACV,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EACR,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,UAAU,EAEV,mBAAmB,EACtB,MAAM,SAAS,CAAC;AAGjB;;GAEG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,QAAQ,CAAsC;IAEtD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAQxF;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAMxF;;;;;OAKG;IACG,WAAW,CACb,YAAY,GAAE,MAAU,EACxB,SAAS,GAAE,MAAU,EACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,iBAAiB,CAAC;IAwE7B;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC,SAAS,CAAC;IAsBlD;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,QAAQ,EAAE;IAoC1D;;;;;;OAMG;IACG,WAAW,CACb,WAAW,EAAE,UAAU,EACvB,SAAS,EAAE,QAAQ,EAAE,EACrB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,eAAe,CAAC;IAgG3B;;OAEG;IACG,iBAAiB,CACnB,WAAW,EAAE,UAAU,EACvB,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,EACvB,MAAM,GAAE,UAAU,GAAG,SAAS,GAAG,QAAqB,GACvD,OAAO,CAAC,eAAe,CAAC;IAY3B;;OAEG;IACG,aAAa,CAAC,cAAc,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QACrD,SAAS,EAAE,QAAQ,EAAE,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;KACrB,CAAC;IAoDF;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE;IAInE;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE;IAInE;;OAEG;IACH,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,UAAU,GAAG,mBAAmB;IAIxE;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIrD;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,WAAW,CAAC,GAAG,UAAU;IAU/E;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI;CAMvE"}
|