@cello-protocol/crypto 0.0.11 → 0.0.13
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/frost/frost-resharing.d.ts +52 -0
- package/dist/frost/frost-resharing.d.ts.map +1 -0
- package/dist/frost/frost-resharing.js +230 -0
- package/dist/frost/frost-resharing.js.map +1 -0
- package/dist/frost/frost-threshold-signer.d.ts +18 -1
- package/dist/frost/frost-threshold-signer.d.ts.map +1 -1
- package/dist/frost/frost-threshold-signer.js +79 -64
- package/dist/frost/frost-threshold-signer.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Key, Signers } from "@noble/curves/abstract/frost.js";
|
|
2
|
+
/** A party's zero-constant refresh contribution: Feldman commitments + the sub-share for each participant. */
|
|
3
|
+
export interface RefreshContribution {
|
|
4
|
+
/** The contributing party's FROST identifier (32-byte LE scalar hex). Binds the contribution to a sender
|
|
5
|
+
* so the applying party can verify the set is complete (one per participant), deduplicated, and matches
|
|
6
|
+
* the agreed epoch roster — a partial/empty/divergent set must NOT silently produce a share. */
|
|
7
|
+
readonly fromId: string;
|
|
8
|
+
/** Feldman VSS commitments C[k] = a_k·G, length T. C[0] is the curve identity (zero constant term). */
|
|
9
|
+
readonly commitment: Uint8Array[];
|
|
10
|
+
/** δ(j) for every participant identifier j, as a 32-byte LE scalar. */
|
|
11
|
+
readonly subShares: Record<string, Uint8Array>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Generate one party's refresh contribution: a degree-(T-1) polynomial δ with constant term 0, evaluated
|
|
15
|
+
* at every participant identifier in `allIds`, plus the Feldman commitments to its coefficients.
|
|
16
|
+
*
|
|
17
|
+
* T = signers.min (the reconstruction threshold). δ keeps degree T-1 so the refreshed sharing preserves
|
|
18
|
+
* the same threshold. The non-constant coefficients are uniformly random scalars; the contribution leaks
|
|
19
|
+
* nothing about the holder's existing share.
|
|
20
|
+
*/
|
|
21
|
+
export declare function generateRefreshContribution(signers: Signers, myId: string, allIds: string[]): RefreshContribution;
|
|
22
|
+
/**
|
|
23
|
+
* Verify a contribution's commitment vector is well-formed: exactly T commitments, each a valid curve
|
|
24
|
+
* point, and — the load-bearing check — commitment[0] is the curve IDENTITY, proving the polynomial's
|
|
25
|
+
* constant term is zero (the refresh cannot shift the joint secret). Throws on any violation.
|
|
26
|
+
*/
|
|
27
|
+
export declare function verifyRefreshContribution(commitment: Uint8Array[], signers: Signers): void;
|
|
28
|
+
/**
|
|
29
|
+
* Apply the refresh to one party's Key (secret share + shared public). For this party's identifier j:
|
|
30
|
+
* enforce the full-roster completeness gate, verify every contribution (zero constant term + non-trivial +
|
|
31
|
+
* well-formed) and Feldman-check each sub-share δ_i(j)·G == Σ_k j^k·C_i[k] before trusting it, then return
|
|
32
|
+
* the rotated Key — secret s'_j = s_j + Σ_i δ_i(j) (mod L) AND the homomorphically-updated FrostPublic (see
|
|
33
|
+
* refreshPublic; commitments[1..] and verifyingShares move, commitments[0]=group key is invariant). The
|
|
34
|
+
* returned (secret, public) pair is signing-ready: a post-refresh FROST ceremony verifies against the same
|
|
35
|
+
* group key. Old-epoch shares no longer combine with the result.
|
|
36
|
+
*
|
|
37
|
+
* PRECONDITION — broadcast agreement (NOT enforceable by this local primitive): every honest party MUST
|
|
38
|
+
* receive the IDENTICAL `commitment` (and the matching sub-share) from each contributor i. This primitive
|
|
39
|
+
* verifies each sub-share only against the commitment in ITS OWN list, so a malicious contributor that
|
|
40
|
+
* EQUIVOCATES — handing party A `(C, δ_A)` and party B a different but internally-consistent `(C', δ_B)`,
|
|
41
|
+
* both with commitment[0]=identity — passes every local check, yet A and B then land on DIFFERENT
|
|
42
|
+
* polynomials (Δ_A ≠ Δ_B): no secret shift, but the quorum can no longer reconstruct/sign. Detecting
|
|
43
|
+
* equivocation requires an echo/agreement round (every party broadcasts H(commitment_i) it received and
|
|
44
|
+
* aborts on any mismatch). The daemon orchestration layer (runNetworkRefresh) owns that echo round; this
|
|
45
|
+
* function assumes the contribution set it is handed is already agreement-checked. A corrupt party cannot
|
|
46
|
+
* silently SHIFT THE SECRET here, but the unusable-share (equivocation) attack is out of local scope.
|
|
47
|
+
*
|
|
48
|
+
* Throws if any contribution is malformed or any sub-share is inconsistent with its commitment — a
|
|
49
|
+
* corrupt party cannot silently shift the secret or hand a victim an unusable share.
|
|
50
|
+
*/
|
|
51
|
+
export declare function applyRefresh(oldKey: Key, contributions: RefreshContribution[], signers: Signers, expectedParticipantIds: string[]): Key;
|
|
52
|
+
//# sourceMappingURL=frost-resharing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frost-resharing.d.ts","sourceRoot":"","sources":["../../src/frost/frost-resharing.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAA4B,GAAG,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAK9F,8GAA8G;AAC9G,MAAM,WAAW,mBAAmB;IAClC;;qGAEiG;IACjG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,uGAAuG;IACvG,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;IAClC,uEAAuE;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CAChD;AAsCD;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAgBjH;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAuB1F;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,GAAG,EACX,aAAa,EAAE,mBAAmB,EAAE,EACpC,OAAO,EAAE,OAAO,EAChB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,GAAG,CA0DL"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FROST proactive share resharing (PSS) — M8B DOD-REFRESH-1.
|
|
3
|
+
*
|
|
4
|
+
* Zero-constant-term proactive secret sharing (Herzberg, Jarecki, Krawczyk, Yung — "Proactive Secret
|
|
5
|
+
* Sharing", CRYPTO 1995), applied to the joint FROST/Ed25519 group key (RFC 9591 §C VSS commitments).
|
|
6
|
+
*
|
|
7
|
+
* Each party i adds a degree-(T-1) polynomial δ_i with constant term ZERO to its share. Because every
|
|
8
|
+
* δ_i(0) = 0, the sum Δ = Σ_i δ_i has Δ(0) = 0, so the joint secret f(0) — and therefore the group public
|
|
9
|
+
* key (commitments[0]) — is UNCHANGED, while every individual share s_j = f(j) becomes s'_j = f(j) + Δ(j),
|
|
10
|
+
* a fresh value. A share captured in epoch e is on the OLD polynomial f; it cannot be combined with
|
|
11
|
+
* epoch-(e+1) shares (which lie on f' = f + Δ) to reconstruct or sign for the joint secret.
|
|
12
|
+
*
|
|
13
|
+
* @noble/curves@2.2.0 rejects `utils.generateSecretPolynomial(secret=0)` ("invalid scalar: 1 <= sc < n"),
|
|
14
|
+
* so the zero-constant polynomial is built manually from `utils.Fn` + `utils.randomScalar`. Each
|
|
15
|
+
* contribution publishes Feldman VSS commitments `C_i[k] = a_{i,k}·G`; `C_i[0]` is the curve identity —
|
|
16
|
+
* the public proof that δ_i has a zero constant term (the refresh cannot shift the secret). Recipients
|
|
17
|
+
* verify every sub-share δ_i(j) against the commitments before adding it.
|
|
18
|
+
*
|
|
19
|
+
* Scalars and identifiers use @noble's little-endian encoding: a FROST `identifier` is the 32-byte LE
|
|
20
|
+
* scalar (e.g. "0100…00" === 1). All field arithmetic is mod L via `ed25519_FROST.utils.Fn`.
|
|
21
|
+
*/
|
|
22
|
+
import { ed25519_FROST, ed25519 } from "@noble/curves/ed25519.js";
|
|
23
|
+
const Fn = ed25519_FROST.utils.Fn;
|
|
24
|
+
const Point = ed25519.Point;
|
|
25
|
+
function hexToBytes(hex) {
|
|
26
|
+
return Uint8Array.from(Buffer.from(hex, "hex"));
|
|
27
|
+
}
|
|
28
|
+
/** Identifier (32-byte LE scalar hex) → field scalar bigint. `Fn.fromBytes` already rejects a non-canonical
|
|
29
|
+
* (≥ L) or non-32-byte identifier; FROST identifiers must additionally be non-zero (0 is not a valid
|
|
30
|
+
* evaluation point), so reject it explicitly — mirrors noble's `validateIdentifier`. */
|
|
31
|
+
function identifierScalar(identifier) {
|
|
32
|
+
const x = Fn.fromBytes(hexToBytes(identifier));
|
|
33
|
+
if (x === 0n) {
|
|
34
|
+
throw new Error("frost-resharing: identifier 0 is not a valid FROST evaluation point");
|
|
35
|
+
}
|
|
36
|
+
return x;
|
|
37
|
+
}
|
|
38
|
+
/** Evaluate Σ_k coeffs[k]·x^k (mod L) via Horner, in the scalar field. */
|
|
39
|
+
function evalPolynomial(coeffs, x) {
|
|
40
|
+
let acc = Fn.create(0n);
|
|
41
|
+
for (let k = coeffs.length - 1; k >= 0; k--) {
|
|
42
|
+
acc = Fn.add(Fn.mul(acc, x), coeffs[k]);
|
|
43
|
+
}
|
|
44
|
+
return acc;
|
|
45
|
+
}
|
|
46
|
+
/** scalar·G, identity-safe (Point.BASE.multiply rejects a zero scalar). */
|
|
47
|
+
function scalarBaseMul(s) {
|
|
48
|
+
return s === 0n ? Point.ZERO : Point.BASE.multiply(s);
|
|
49
|
+
}
|
|
50
|
+
/** point·scalar, identity-safe. */
|
|
51
|
+
function pointMul(p, s) {
|
|
52
|
+
if (s === 0n)
|
|
53
|
+
return Point.ZERO;
|
|
54
|
+
if (p.is0())
|
|
55
|
+
return Point.ZERO;
|
|
56
|
+
return p.multiply(s);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Generate one party's refresh contribution: a degree-(T-1) polynomial δ with constant term 0, evaluated
|
|
60
|
+
* at every participant identifier in `allIds`, plus the Feldman commitments to its coefficients.
|
|
61
|
+
*
|
|
62
|
+
* T = signers.min (the reconstruction threshold). δ keeps degree T-1 so the refreshed sharing preserves
|
|
63
|
+
* the same threshold. The non-constant coefficients are uniformly random scalars; the contribution leaks
|
|
64
|
+
* nothing about the holder's existing share.
|
|
65
|
+
*/
|
|
66
|
+
export function generateRefreshContribution(signers, myId, allIds) {
|
|
67
|
+
const threshold = signers.min;
|
|
68
|
+
// coefficients[0] === 0 (zero constant term); coefficients[1..T-1] uniformly random.
|
|
69
|
+
const coefficients = [0n];
|
|
70
|
+
for (let k = 1; k < threshold; k++) {
|
|
71
|
+
coefficients.push(Fn.fromBytes(ed25519_FROST.utils.randomScalar()));
|
|
72
|
+
}
|
|
73
|
+
// Feldman commitments C[k] = coefficients[k]·G; C[0] = 0·G = identity.
|
|
74
|
+
const commitment = coefficients.map((c) => scalarBaseMul(c).toBytes());
|
|
75
|
+
const subShares = {};
|
|
76
|
+
for (const id of allIds) {
|
|
77
|
+
const share = evalPolynomial(coefficients, identifierScalar(id));
|
|
78
|
+
subShares[id] = Fn.toBytes(share);
|
|
79
|
+
}
|
|
80
|
+
return { fromId: myId, commitment, subShares };
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Verify a contribution's commitment vector is well-formed: exactly T commitments, each a valid curve
|
|
84
|
+
* point, and — the load-bearing check — commitment[0] is the curve IDENTITY, proving the polynomial's
|
|
85
|
+
* constant term is zero (the refresh cannot shift the joint secret). Throws on any violation.
|
|
86
|
+
*/
|
|
87
|
+
export function verifyRefreshContribution(commitment, signers) {
|
|
88
|
+
const threshold = signers.min;
|
|
89
|
+
if (commitment.length !== threshold) {
|
|
90
|
+
throw new Error(`frost-resharing: commitment length ${commitment.length} !== threshold ${threshold}`);
|
|
91
|
+
}
|
|
92
|
+
const identityHex = Buffer.from(Point.ZERO.toBytes()).toString("hex");
|
|
93
|
+
if (Buffer.from(commitment[0]).toString("hex") !== identityHex) {
|
|
94
|
+
throw new Error("frost-resharing: commitment[0] is not the identity — refresh would shift the secret");
|
|
95
|
+
}
|
|
96
|
+
// Each commitment must decode to a valid curve point (rejects garbage / off-curve points).
|
|
97
|
+
for (const c of commitment) {
|
|
98
|
+
Point.fromBytes(c);
|
|
99
|
+
}
|
|
100
|
+
// Non-triviality: the polynomial must NOT be identically zero (all coefficients 0 → every commitment is
|
|
101
|
+
// the identity). A zero-polynomial contribution passes the zero-constant check yet adds NO fresh
|
|
102
|
+
// randomness — a free-rider that contributes nothing to Δ. Require at least one non-constant commitment
|
|
103
|
+
// (commitment[1..T-1]) to be non-identity so every contributor actually masks the shares.
|
|
104
|
+
const nonConstantNonIdentity = commitment
|
|
105
|
+
.slice(1)
|
|
106
|
+
.some((c) => Buffer.from(c).toString("hex") !== identityHex);
|
|
107
|
+
if (!nonConstantNonIdentity) {
|
|
108
|
+
throw new Error("frost-resharing: contribution is the zero polynomial (no fresh randomness) — rejected");
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Apply the refresh to one party's Key (secret share + shared public). For this party's identifier j:
|
|
113
|
+
* enforce the full-roster completeness gate, verify every contribution (zero constant term + non-trivial +
|
|
114
|
+
* well-formed) and Feldman-check each sub-share δ_i(j)·G == Σ_k j^k·C_i[k] before trusting it, then return
|
|
115
|
+
* the rotated Key — secret s'_j = s_j + Σ_i δ_i(j) (mod L) AND the homomorphically-updated FrostPublic (see
|
|
116
|
+
* refreshPublic; commitments[1..] and verifyingShares move, commitments[0]=group key is invariant). The
|
|
117
|
+
* returned (secret, public) pair is signing-ready: a post-refresh FROST ceremony verifies against the same
|
|
118
|
+
* group key. Old-epoch shares no longer combine with the result.
|
|
119
|
+
*
|
|
120
|
+
* PRECONDITION — broadcast agreement (NOT enforceable by this local primitive): every honest party MUST
|
|
121
|
+
* receive the IDENTICAL `commitment` (and the matching sub-share) from each contributor i. This primitive
|
|
122
|
+
* verifies each sub-share only against the commitment in ITS OWN list, so a malicious contributor that
|
|
123
|
+
* EQUIVOCATES — handing party A `(C, δ_A)` and party B a different but internally-consistent `(C', δ_B)`,
|
|
124
|
+
* both with commitment[0]=identity — passes every local check, yet A and B then land on DIFFERENT
|
|
125
|
+
* polynomials (Δ_A ≠ Δ_B): no secret shift, but the quorum can no longer reconstruct/sign. Detecting
|
|
126
|
+
* equivocation requires an echo/agreement round (every party broadcasts H(commitment_i) it received and
|
|
127
|
+
* aborts on any mismatch). The daemon orchestration layer (runNetworkRefresh) owns that echo round; this
|
|
128
|
+
* function assumes the contribution set it is handed is already agreement-checked. A corrupt party cannot
|
|
129
|
+
* silently SHIFT THE SECRET here, but the unusable-share (equivocation) attack is out of local scope.
|
|
130
|
+
*
|
|
131
|
+
* Throws if any contribution is malformed or any sub-share is inconsistent with its commitment — a
|
|
132
|
+
* corrupt party cannot silently shift the secret or hand a victim an unusable share.
|
|
133
|
+
*/
|
|
134
|
+
export function applyRefresh(oldKey, contributions, signers, expectedParticipantIds) {
|
|
135
|
+
const j = oldKey.secret.identifier;
|
|
136
|
+
const xj = identifierScalar(j);
|
|
137
|
+
// COMPLETENESS GATE (fallback HIGH): a proactive refresh — like DKG — requires EVERY current shareholder
|
|
138
|
+
// to contribute exactly one δ. The applying party MUST verify the contribution set is the full agreed
|
|
139
|
+
// roster: no missing party (a partial set lands every party on a DIFFERENT polynomial Δ and silently
|
|
140
|
+
// destroys the joint key), no extra/duplicate sender (double-counts a δ), and not empty (a no-op refresh
|
|
141
|
+
// that returns the OLD share while reporting success — leaving a captured epoch-e share alive). This also
|
|
142
|
+
// enforces the joint-randomness requirement: Δ = Σ δ_i is only safe when summed across all independent
|
|
143
|
+
// parties, never a single contributor. Fail LOUD here rather than return a share that looks rotated.
|
|
144
|
+
const expected = new Set(expectedParticipantIds);
|
|
145
|
+
if (expected.size !== expectedParticipantIds.length) {
|
|
146
|
+
throw new Error("frost-resharing: expectedParticipantIds contains duplicates");
|
|
147
|
+
}
|
|
148
|
+
const seen = new Set();
|
|
149
|
+
for (const c of contributions) {
|
|
150
|
+
if (!expected.has(c.fromId)) {
|
|
151
|
+
throw new Error(`frost-resharing: contribution from unexpected party ${c.fromId} (not in the agreed roster)`);
|
|
152
|
+
}
|
|
153
|
+
if (seen.has(c.fromId)) {
|
|
154
|
+
throw new Error(`frost-resharing: duplicate contribution from party ${c.fromId}`);
|
|
155
|
+
}
|
|
156
|
+
seen.add(c.fromId);
|
|
157
|
+
}
|
|
158
|
+
if (seen.size !== expected.size) {
|
|
159
|
+
const missing = expectedParticipantIds.filter((id) => !seen.has(id));
|
|
160
|
+
throw new Error(`frost-resharing: incomplete refresh — missing contributions from ${missing.length} party/parties (a partial refresh would diverge the joint key)`);
|
|
161
|
+
}
|
|
162
|
+
let acc = Fn.fromBytes(oldKey.secret.signingShare);
|
|
163
|
+
for (const contribution of contributions) {
|
|
164
|
+
verifyRefreshContribution(contribution.commitment, signers);
|
|
165
|
+
const subShareBytes = contribution.subShares[j];
|
|
166
|
+
if (!subShareBytes) {
|
|
167
|
+
throw new Error(`frost-resharing: contribution missing sub-share for identifier ${j}`);
|
|
168
|
+
}
|
|
169
|
+
const delta = Fn.fromBytes(subShareBytes);
|
|
170
|
+
// Feldman VSS check: δ_i(j)·G must equal Σ_k j^k · C_i[k] (Horner over the commitment points).
|
|
171
|
+
const lhs = scalarBaseMul(delta);
|
|
172
|
+
let rhs = Point.ZERO;
|
|
173
|
+
for (let k = contribution.commitment.length - 1; k >= 0; k--) {
|
|
174
|
+
rhs = pointMul(rhs, xj).add(Point.fromBytes(contribution.commitment[k]));
|
|
175
|
+
}
|
|
176
|
+
if (!lhs.equals(rhs)) {
|
|
177
|
+
throw new Error(`frost-resharing: sub-share for ${j} fails the VSS check against its commitment`);
|
|
178
|
+
}
|
|
179
|
+
acc = Fn.add(acc, delta);
|
|
180
|
+
}
|
|
181
|
+
// new Uint8Array(...) gives an ArrayBuffer-backed copy (FrostSecret.signingShare is the stricter
|
|
182
|
+
// Uint8Array<ArrayBuffer>, not Fn.toBytes's Uint8Array<ArrayBufferLike>).
|
|
183
|
+
const newSecret = { identifier: j, signingShare: new Uint8Array(Fn.toBytes(acc)) };
|
|
184
|
+
return { secret: newSecret, public: refreshPublic(oldKey.public, contributions) };
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Homomorphically update the shared FrostPublic for the refreshed sharing. PSS rotates the shares, so the
|
|
188
|
+
* group VSS commitments and every verifying share change — only commitments[0] (the group public key) is
|
|
189
|
+
* invariant. Without this, post-refresh signing fails: `verifyShare` checks a partial signature against the
|
|
190
|
+
* participant's verifyingShare, which moved when the share rotated.
|
|
191
|
+
*
|
|
192
|
+
* newCommitments[k] = oldCommitments[k] + Σ_i C_i[k] (the joint polynomial f' = f + Σ δ_i)
|
|
193
|
+
* newVerifyingShares[id] = Σ_m newCommitments[m]·id^m (VSS evaluation of f' at each participant)
|
|
194
|
+
*
|
|
195
|
+
* Every honest party computes the IDENTICAL new public from the same agreed contribution set, so the
|
|
196
|
+
* resulting (secret, public) pairs are mutually consistent. commitments[0] is asserted unchanged: Σ_i C_i[0]
|
|
197
|
+
* is the identity (every contribution's zero-constant proof, already checked), so the group key is preserved
|
|
198
|
+
* by construction — the assertion is a belt-and-suspenders guard against a bug upstream.
|
|
199
|
+
*/
|
|
200
|
+
function refreshPublic(oldPublic, contributions) {
|
|
201
|
+
const oldCommitments = oldPublic.commitments;
|
|
202
|
+
const degree = oldCommitments.length;
|
|
203
|
+
const newCommitments = [];
|
|
204
|
+
for (let k = 0; k < degree; k++) {
|
|
205
|
+
let acc = Point.fromBytes(oldCommitments[k]);
|
|
206
|
+
for (const c of contributions) {
|
|
207
|
+
acc = acc.add(Point.fromBytes(c.commitment[k]));
|
|
208
|
+
}
|
|
209
|
+
newCommitments.push(new Uint8Array(acc.toBytes()));
|
|
210
|
+
}
|
|
211
|
+
if (Buffer.from(newCommitments[0]).toString("hex") !== Buffer.from(oldCommitments[0]).toString("hex")) {
|
|
212
|
+
throw new Error("frost-resharing: group public key changed — refresh is not secret-preserving");
|
|
213
|
+
}
|
|
214
|
+
const oldVerifying = oldPublic.verifyingShares;
|
|
215
|
+
const newVerifyingShares = {};
|
|
216
|
+
for (const id of Object.keys(oldVerifying)) {
|
|
217
|
+
const x = identifierScalar(id);
|
|
218
|
+
let acc = Point.ZERO;
|
|
219
|
+
for (let m = newCommitments.length - 1; m >= 0; m--) {
|
|
220
|
+
acc = pointMul(acc, x).add(Point.fromBytes(newCommitments[m]));
|
|
221
|
+
}
|
|
222
|
+
newVerifyingShares[id] = new Uint8Array(acc.toBytes());
|
|
223
|
+
}
|
|
224
|
+
return {
|
|
225
|
+
signers: oldPublic.signers,
|
|
226
|
+
commitments: newCommitments,
|
|
227
|
+
verifyingShares: newVerifyingShares,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=frost-resharing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frost-resharing.js","sourceRoot":"","sources":["../../src/frost/frost-resharing.ts"],"names":[],"mappings":"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"}
|
|
@@ -83,7 +83,8 @@
|
|
|
83
83
|
*
|
|
84
84
|
* ─── End Pseudocode ──────────────────────────────────────────────────────────
|
|
85
85
|
*/
|
|
86
|
-
import type { FrostPublic, FrostSecret } from "@noble/curves/abstract/frost.js";
|
|
86
|
+
import type { FrostPublic, FrostSecret, Signers } from "@noble/curves/abstract/frost.js";
|
|
87
|
+
import { type RefreshContribution } from "./frost-resharing.js";
|
|
87
88
|
import type { IThresholdSigner, ThresholdSignature, FrostThresholdSignerConfig, BootstrapResult, FrostContext } from "./types.js";
|
|
88
89
|
import { CONTEXT_SESSION_ESTABLISHMENT, CONTEXT_SEAL } from "./types.js";
|
|
89
90
|
/**
|
|
@@ -106,6 +107,22 @@ export declare function clearTestShares(): void;
|
|
|
106
107
|
* The FrostSecret is stored in the module-level map keyed by agentPubkeyHex.
|
|
107
108
|
*/
|
|
108
109
|
export declare function storeDkgResult(agentPubkeyHex: string, secret: FrostSecret, pub: FrostPublic): void;
|
|
110
|
+
/** The client's FROST identifier for the agent (the evaluation point its share lives at). */
|
|
111
|
+
export declare function getClientFrostIdentifier(agentPubkeyHex: string): string;
|
|
112
|
+
/** Generate the client's own zero-constant refresh contribution for the agreed participant roster. */
|
|
113
|
+
export declare function generateClientRefreshContribution(agentPubkeyHex: string, signers: Signers, participantIds: string[]): RefreshContribution;
|
|
114
|
+
/**
|
|
115
|
+
* Apply the agreed contribution set to the client's local share, rotating it (secret + public) in place,
|
|
116
|
+
* and return the serializable new share data for DB persistence (PERSIST-024 shape; SI-001: never log the
|
|
117
|
+
* signingShare). The group public key (primaryPubkey) is unchanged.
|
|
118
|
+
*/
|
|
119
|
+
export declare function applyRefreshToLocalShare(agentPubkeyHex: string, contributions: RefreshContribution[], signers: Signers, participantIds: string[]): {
|
|
120
|
+
primaryPubkey: Uint8Array;
|
|
121
|
+
signingShare: Uint8Array;
|
|
122
|
+
identifier: string;
|
|
123
|
+
commitments: Uint8Array[];
|
|
124
|
+
verifyingShares: Record<string, Uint8Array>;
|
|
125
|
+
};
|
|
109
126
|
/**
|
|
110
127
|
* Test-harness shortcut for key share bootstrap.
|
|
111
128
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frost-threshold-signer.d.ts","sourceRoot":"","sources":["../../src/frost/frost-threshold-signer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoFG;AAGH,OAAO,KAAK,EACV,WAAW,EACX,WAAW,
|
|
1
|
+
{"version":3,"file":"frost-threshold-signer.d.ts","sourceRoot":"","sources":["../../src/frost/frost-threshold-signer.ts"],"names":[],"mappings":"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"}
|
|
@@ -84,6 +84,7 @@
|
|
|
84
84
|
* ─── End Pseudocode ──────────────────────────────────────────────────────────
|
|
85
85
|
*/
|
|
86
86
|
import { ed25519_FROST } from "@noble/curves/ed25519.js";
|
|
87
|
+
import { generateRefreshContribution, applyRefresh, } from "./frost-resharing.js";
|
|
87
88
|
import { CONTEXT_SESSION_ESTABLISHMENT, CONTEXT_SEAL } from "./types.js";
|
|
88
89
|
// Module-level store for local key shares, keyed by agent pubkey hex.
|
|
89
90
|
// This keeps the signing share within the package boundary.
|
|
@@ -117,6 +118,42 @@ export function storeDkgResult(agentPubkeyHex, secret, pub) {
|
|
|
117
118
|
ed25519_FROST.validateSecret(secret, pub);
|
|
118
119
|
_localShares.set(agentPubkeyHex, { secret, pub });
|
|
119
120
|
}
|
|
121
|
+
// ─── M8B DOD-REFRESH-1: client-side proactive share refresh ───────────────────
|
|
122
|
+
// The client is a FROST shareholder; a proactive refresh rotates its share too. These helpers keep the
|
|
123
|
+
// client's signing share inside the crypto package boundary (the daemon never handles raw share bytes).
|
|
124
|
+
/** The client's FROST identifier for the agent (the evaluation point its share lives at). */
|
|
125
|
+
export function getClientFrostIdentifier(agentPubkeyHex) {
|
|
126
|
+
const ls = _localShares.get(agentPubkeyHex);
|
|
127
|
+
if (!ls)
|
|
128
|
+
throw new Error("FrostThresholdSigner: no local share to refresh");
|
|
129
|
+
return ls.secret.identifier;
|
|
130
|
+
}
|
|
131
|
+
/** Generate the client's own zero-constant refresh contribution for the agreed participant roster. */
|
|
132
|
+
export function generateClientRefreshContribution(agentPubkeyHex, signers, participantIds) {
|
|
133
|
+
return generateRefreshContribution(signers, getClientFrostIdentifier(agentPubkeyHex), participantIds);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Apply the agreed contribution set to the client's local share, rotating it (secret + public) in place,
|
|
137
|
+
* and return the serializable new share data for DB persistence (PERSIST-024 shape; SI-001: never log the
|
|
138
|
+
* signingShare). The group public key (primaryPubkey) is unchanged.
|
|
139
|
+
*/
|
|
140
|
+
export function applyRefreshToLocalShare(agentPubkeyHex, contributions, signers, participantIds) {
|
|
141
|
+
const ls = _localShares.get(agentPubkeyHex);
|
|
142
|
+
if (!ls)
|
|
143
|
+
throw new Error("FrostThresholdSigner: no local share to refresh");
|
|
144
|
+
const newKey = applyRefresh({ secret: ls.secret, public: ls.pub }, contributions, signers, participantIds);
|
|
145
|
+
ed25519_FROST.validateSecret(newKey.secret, newKey.public);
|
|
146
|
+
_localShares.set(agentPubkeyHex, { secret: newKey.secret, pub: newKey.public });
|
|
147
|
+
const pub = newKey.public;
|
|
148
|
+
const sec = newKey.secret;
|
|
149
|
+
return {
|
|
150
|
+
primaryPubkey: new Uint8Array(pub.commitments[0]),
|
|
151
|
+
signingShare: new Uint8Array(sec.signingShare),
|
|
152
|
+
identifier: sec.identifier,
|
|
153
|
+
commitments: pub.commitments.map((c) => new Uint8Array(c)),
|
|
154
|
+
verifyingShares: Object.fromEntries(Object.entries(pub.verifyingShares).map(([k, v]) => [k, new Uint8Array(v)])),
|
|
155
|
+
};
|
|
156
|
+
}
|
|
120
157
|
// ─── Message framing for domain separation ────────────────────────────────────
|
|
121
158
|
/**
|
|
122
159
|
* Frame a TBS with a context string for domain separation.
|
|
@@ -249,21 +286,15 @@ export class FrostThresholdSigner {
|
|
|
249
286
|
*/
|
|
250
287
|
async participateInCeremony(ceremonyId, tbs, context, onProgress) {
|
|
251
288
|
const agentHex = toHex(this.#agentPubkey);
|
|
252
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner.participateInCeremony: enter agent=${agentHex.slice(0, 16)} ceremony=${ceremonyId.slice(0, 16)}\n`);
|
|
253
289
|
const localShare = _localShares.get(agentHex);
|
|
254
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: localShare=${localShare ? "FOUND" : "NOT FOUND"} agentHex=${agentHex.slice(0, 16)}\n`);
|
|
255
290
|
if (!localShare) {
|
|
256
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: all keys in _localShares: (cannot iterate module-private map)\n`);
|
|
257
291
|
throw new Error("Not bootstrapped: call bootstrapKeyShares before using FrostThresholdSigner");
|
|
258
292
|
}
|
|
259
293
|
const stubs = this.#config.directoryNodeStubs ?? [];
|
|
260
294
|
const { threshold, roundTimeoutMs, ceremonyTimeoutMs, maxRetries } = this.#config;
|
|
261
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: stubs=${stubs.length} threshold=${threshold} maxRetries=${maxRetries} roundTimeoutMs=${roundTimeoutMs}\n`);
|
|
262
|
-
stubs.forEach((s, i) => process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: stub[${i}] id=${s.id?.slice(0, 16)} isReachable=${s.isReachable()}\n`));
|
|
263
295
|
// Frame message for domain separation: context\0tbs
|
|
264
296
|
const msg = frameMessage(context, tbs);
|
|
265
297
|
const { pub } = localShare;
|
|
266
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: pub.signers=${JSON.stringify(pub.signers)} pub.commitments.length=${pub.commitments?.length}\n`);
|
|
267
298
|
const clientId = ed25519_FROST.Identifier.derive(`client:${toHex(this.#agentPubkey)}`);
|
|
268
299
|
// Ceremony-level timeout: a deadline across all retry attempts
|
|
269
300
|
const ceremonyDeadline = Date.now() + ceremonyTimeoutMs;
|
|
@@ -272,9 +303,7 @@ export class FrostThresholdSigner {
|
|
|
272
303
|
// reachable, fail immediately — the ceremony cannot possibly succeed.
|
|
273
304
|
// (threshold - 1 because the client itself is one of the threshold signers)
|
|
274
305
|
const reachableAtInitiation = stubs.filter((s) => s.isReachable());
|
|
275
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: reachableAtInitiation=${reachableAtInitiation.length} need=${threshold - 1}\n`);
|
|
276
306
|
if (reachableAtInitiation.length < threshold - 1) {
|
|
277
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: FAIL pre-check DIRECTORY_BELOW_THRESHOLD\n`);
|
|
278
307
|
return {
|
|
279
308
|
ok: false,
|
|
280
309
|
error: { reason: "DIRECTORY_BELOW_THRESHOLD" },
|
|
@@ -286,16 +315,13 @@ export class FrostThresholdSigner {
|
|
|
286
315
|
// On each new participateInCeremony call, the exclusion set resets.
|
|
287
316
|
const ceremonyExcluded = new Set();
|
|
288
317
|
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
289
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: attempt ${attempt + 1}/${maxRetries} excluded=${[...ceremonyExcluded].length}\n`);
|
|
290
318
|
if (Date.now() >= ceremonyDeadline) {
|
|
291
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: FAIL CEREMONY_TIMEOUT at attempt ${attempt + 1}\n`);
|
|
292
319
|
return {
|
|
293
320
|
ok: false,
|
|
294
321
|
error: { reason: "CEREMONY_TIMEOUT" },
|
|
295
322
|
};
|
|
296
323
|
}
|
|
297
324
|
const available = reachableAtInitiation.filter((s) => !ceremonyExcluded.has(s.id));
|
|
298
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: available stubs=${available.length} need=${threshold - 1}\n`);
|
|
299
325
|
// Select (threshold - 1) stubs for this round (client counts as one signer)
|
|
300
326
|
const selected = available.slice(0, threshold - 1);
|
|
301
327
|
if (selected.length < threshold - 1) {
|
|
@@ -311,22 +337,46 @@ export class FrostThresholdSigner {
|
|
|
311
337
|
error: { reason: "DIRECTORY_BELOW_THRESHOLD" },
|
|
312
338
|
};
|
|
313
339
|
}
|
|
314
|
-
// Round 1: generate fresh nonces + commitment list
|
|
315
|
-
|
|
340
|
+
// Round 1: generate fresh nonces + commitment list. Gather per-stub (NOT Promise.all) so a stub
|
|
341
|
+
// that FAILS or REFUSES its commitment — e.g. a SUSPENDED directory sending {ok:false} — is added
|
|
342
|
+
// to ceremonyExcluded and the attempt retried with the survivors, mirroring the sign round's
|
|
343
|
+
// exclusion (Round 2 below). Without this, a refusing stub stays in `selected` every attempt
|
|
344
|
+
// (selection is the first threshold-1 of `available`), so a SUB-threshold suspension exhausts
|
|
345
|
+
// maxRetries instead of routing to the healthy directories — violating DOD-SUSPEND-1
|
|
346
|
+
// (threshold-refusal ≠ single-node-refusal: < N−T+1 suspensions must still sign).
|
|
316
347
|
const localNonce = ed25519_FROST.commit(localShare.secret);
|
|
317
|
-
|
|
318
|
-
let
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
348
|
+
const stubCommits = [];
|
|
349
|
+
let commitFailedThisRound = false;
|
|
350
|
+
for (const s of selected) {
|
|
351
|
+
// Mirror the sign round (below): check the ceremony deadline before each node and RACE the
|
|
352
|
+
// network-blocking generateCommitment against a per-node timeout. A directory that accepts the
|
|
353
|
+
// stream but never responds (silent drop / hung TCP) must be routed around (excluded), not
|
|
354
|
+
// allowed to stall participateInCeremony indefinitely — CELLO's availability invariant. Without
|
|
355
|
+
// this the commit round — now the load-bearing route-around path for a sub-threshold suspension
|
|
356
|
+
// — could hang forever, the exact failure mode the sovereign-node redundancy rule forbids.
|
|
357
|
+
if (Date.now() >= ceremonyDeadline) {
|
|
358
|
+
return { ok: false, error: { reason: "CEREMONY_TIMEOUT" } };
|
|
359
|
+
}
|
|
360
|
+
const commitTimeout = new Promise((resolve) => setTimeout(() => resolve(null), roundTimeoutMs));
|
|
361
|
+
let r;
|
|
362
|
+
try {
|
|
363
|
+
r = await Promise.race([s.generateCommitment(), commitTimeout]);
|
|
364
|
+
}
|
|
365
|
+
catch {
|
|
366
|
+
r = null;
|
|
367
|
+
}
|
|
368
|
+
if (!r || !r.nonceCommitment) {
|
|
369
|
+
// Refused (suspended), failed, or timed out → EXCLUDE and retry with survivors (same as Round 2).
|
|
370
|
+
// The refusing node's distinct reason (AGENT_SUSPENDED vs AGENT_NOT_BOOTSTRAPPED vs EPOCH_EXPIRED)
|
|
371
|
+
// is surfaced structurally by the directory ITSELF (frost.debug.frost_stream.commit_response /
|
|
372
|
+
// frost.share.refused.suspended) — the coordinator only needs the route-around decision here.
|
|
373
|
+
ceremonyExcluded.add(s.id);
|
|
374
|
+
commitFailedThisRound = true;
|
|
375
|
+
continue;
|
|
376
|
+
}
|
|
377
|
+
stubCommits.push(r);
|
|
326
378
|
}
|
|
327
|
-
|
|
328
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
329
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: generateCommitment THREW: ${msg}\n`);
|
|
379
|
+
if (commitFailedThisRound) {
|
|
330
380
|
continue;
|
|
331
381
|
}
|
|
332
382
|
const commitmentList = [
|
|
@@ -355,20 +405,15 @@ export class FrostThresholdSigner {
|
|
|
355
405
|
const timeoutPromise = new Promise((resolve) => setTimeout(() => resolve(null), roundTimeoutMs));
|
|
356
406
|
let partialSig;
|
|
357
407
|
try {
|
|
358
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: calling signRound stub=${stub.id?.slice(0, 16)}\n`);
|
|
359
408
|
partialSig = await Promise.race([
|
|
360
409
|
stub.signRound({ pub, commitmentList, msg, ceremonyId }),
|
|
361
410
|
timeoutPromise,
|
|
362
411
|
]);
|
|
363
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: signRound stub=${stub.id?.slice(0, 16)} result=${partialSig === null ? "TIMEOUT" : `Uint8Array(${partialSig.length})`}\n`);
|
|
364
412
|
}
|
|
365
|
-
catch
|
|
366
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
367
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: signRound THREW stub=${stub.id?.slice(0, 16)}: ${msg}\n`);
|
|
413
|
+
catch {
|
|
368
414
|
partialSig = null;
|
|
369
415
|
}
|
|
370
416
|
if (partialSig === null) {
|
|
371
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: excluding stub=${stub.id?.slice(0, 16)} (null/timeout)\n`);
|
|
372
417
|
ceremonyExcluded.add(stub.id);
|
|
373
418
|
anyFailedThisRound = true;
|
|
374
419
|
continue;
|
|
@@ -377,15 +422,11 @@ export class FrostThresholdSigner {
|
|
|
377
422
|
try {
|
|
378
423
|
const stubId = ed25519_FROST.Identifier.derive(stub.id);
|
|
379
424
|
isValid = ed25519_FROST.verifyShare(pub, commitmentList, msg, stubId, partialSig);
|
|
380
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: verifyShare stub=${stub.id?.slice(0, 16)} isValid=${isValid}\n`);
|
|
381
425
|
}
|
|
382
|
-
catch
|
|
383
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
384
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: verifyShare THREW stub=${stub.id?.slice(0, 16)}: ${msg}\n`);
|
|
426
|
+
catch {
|
|
385
427
|
isValid = false;
|
|
386
428
|
}
|
|
387
429
|
if (!isValid) {
|
|
388
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: excluding stub=${stub.id?.slice(0, 16)} (invalid sig)\n`);
|
|
389
430
|
ceremonyExcluded.add(stub.id);
|
|
390
431
|
anyFailedThisRound = true;
|
|
391
432
|
continue;
|
|
@@ -408,49 +449,23 @@ export class FrostThresholdSigner {
|
|
|
408
449
|
// All selected stubs provided valid partial sigs. Compute client's partial sig.
|
|
409
450
|
let clientSig;
|
|
410
451
|
try {
|
|
411
|
-
// Log everything before signShare so a throw gives full context
|
|
412
|
-
const pubRec = pub;
|
|
413
|
-
const secretRec = localShare.secret;
|
|
414
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: PRE-signShare attempt=${attempt + 1}\n`);
|
|
415
|
-
process.stderr.write(`[CLIENT-DEBUG] pub.signers=${JSON.stringify(pubRec.signers)}\n`);
|
|
416
|
-
process.stderr.write(`[CLIENT-DEBUG] pub.commitments.length=${Array.isArray(pubRec.commitments) ? pubRec.commitments.length : "NOT_ARRAY"}\n`);
|
|
417
|
-
process.stderr.write(`[CLIENT-DEBUG] pub.commitments[0] type=${Array.isArray(pubRec.commitments) ? typeof pubRec.commitments[0] : "N/A"} isUint8Array=${Array.isArray(pubRec.commitments) ? pubRec.commitments[0] instanceof Uint8Array : "N/A"}\n`);
|
|
418
|
-
process.stderr.write(`[CLIENT-DEBUG] secret.identifier=${String(secretRec.identifier)} type=${typeof secretRec.identifier}\n`);
|
|
419
|
-
process.stderr.write(`[CLIENT-DEBUG] secret.signingShare type=${typeof secretRec.signingShare} isUint8Array=${secretRec.signingShare instanceof Uint8Array}\n`);
|
|
420
|
-
process.stderr.write(`[CLIENT-DEBUG] localNonce.nonces type=${typeof localNonce.nonces} keys=${typeof localNonce.nonces === "object" && localNonce.nonces ? Object.keys(localNonce.nonces).join(",") : "N/A"}\n`);
|
|
421
|
-
process.stderr.write(`[CLIENT-DEBUG] commitmentList.length=${commitmentList.length}\n`);
|
|
422
|
-
commitmentList.forEach((c, i) => {
|
|
423
|
-
const cr = c;
|
|
424
|
-
process.stderr.write(`[CLIENT-DEBUG] commitmentList[${i}]: identifier=${String(cr.identifier)} hiding.isUint8Array=${cr.hiding instanceof Uint8Array} binding.isUint8Array=${cr.binding instanceof Uint8Array}\n`);
|
|
425
|
-
});
|
|
426
|
-
process.stderr.write(`[CLIENT-DEBUG] msg.length=${msg.length} isUint8Array=${msg instanceof Uint8Array}\n`);
|
|
427
|
-
process.stderr.write(`[CLIENT-DEBUG] clientId type=${typeof clientId} value=${String(clientId).slice(0, 20)}\n`);
|
|
428
452
|
clientSig = ed25519_FROST.signShare(localShare.secret, pub, localNonce.nonces, commitmentList, msg);
|
|
429
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: client signShare OK sigLength=${clientSig.length}\n`);
|
|
430
453
|
sigShares[String(clientId)] = clientSig;
|
|
431
454
|
partialSigCount++;
|
|
432
455
|
onProgress?.({ type: "partial_sig_collected", index: partialSigCount, total: totalParticipants });
|
|
433
456
|
}
|
|
434
|
-
catch
|
|
435
|
-
const msg2 = err instanceof Error ? err.message : String(err);
|
|
436
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: client signShare THREW: ${msg2}\n`);
|
|
457
|
+
catch {
|
|
437
458
|
continue;
|
|
438
459
|
}
|
|
439
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: sigShares count=${Object.keys(sigShares).length} threshold=${threshold}\n`);
|
|
440
460
|
if (Object.keys(sigShares).length < threshold) {
|
|
441
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: not enough sigShares, continuing\n`);
|
|
442
461
|
continue;
|
|
443
462
|
}
|
|
444
463
|
// Aggregate
|
|
445
464
|
let signature;
|
|
446
465
|
try {
|
|
447
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: calling aggregate sigShareKeys=${Object.keys(sigShares).map(k => k.slice(0, 8)).join(",")}\n`);
|
|
448
466
|
signature = ed25519_FROST.aggregate(pub, commitmentList, msg, sigShares);
|
|
449
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: aggregate OK sigLength=${signature.length}\n`);
|
|
450
467
|
}
|
|
451
|
-
catch
|
|
452
|
-
const msg2 = err instanceof Error ? err.message : String(err);
|
|
453
|
-
process.stderr.write(`[CLIENT-DEBUG] FrostThresholdSigner: aggregate THREW: ${msg2}\n`);
|
|
468
|
+
catch {
|
|
454
469
|
continue;
|
|
455
470
|
}
|
|
456
471
|
return { ok: true, signature };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frost-threshold-signer.js","sourceRoot":"","sources":["../../src/frost/frost-threshold-signer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"frost-threshold-signer.js","sourceRoot":"","sources":["../../src/frost/frost-threshold-signer.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,9 @@ export { buildMerkleTree, merkleRoot, inclusionProof, verifyInclusion } from "./
|
|
|
8
8
|
export type { IThresholdSigner, ThresholdSignature, ThresholdSignatureOk, ThresholdSignatureError, FrostThresholdSignerConfig, FrostContext, BootstrapResult, } from "./frost/index.js";
|
|
9
9
|
export { CONTEXT_SESSION_ESTABLISHMENT, CONTEXT_SEAL, FrostThresholdSigner, MockThresholdSigner, } from "./frost/index.js";
|
|
10
10
|
export { verifyFrostSignature } from "./frost/frost-threshold-signer.js";
|
|
11
|
+
export { generateRefreshContribution, verifyRefreshContribution, applyRefresh, } from "./frost/frost-resharing.js";
|
|
12
|
+
export type { RefreshContribution } from "./frost/frost-resharing.js";
|
|
13
|
+
export { getClientFrostIdentifier, generateClientRefreshContribution, applyRefreshToLocalShare, } from "./frost/frost-threshold-signer.js";
|
|
11
14
|
export { ed25519_FROST } from "@noble/curves/ed25519.js";
|
|
12
15
|
export { buildCheckpointTbs, computeCheckpointHash } from "./checkpoint.js";
|
|
13
16
|
export { buildRelayRegistrationTbs, verifyRelayRegistrationSignature } from "./relay-registration.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACpI,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClG,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,WAAW,EACX,oBAAoB,EACpB,SAAS,EACT,WAAW,EACX,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC3F,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3F,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,0BAA0B,EAC1B,YAAY,EACZ,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,6BAA6B,EAC7B,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACpI,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClG,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,WAAW,EACX,oBAAoB,EACpB,SAAS,EACT,WAAW,EACX,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC3F,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3F,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,0BAA0B,EAC1B,YAAY,EACZ,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,6BAA6B,EAC7B,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAIzE,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,YAAY,GACb,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EACL,wBAAwB,EACxB,iCAAiC,EACjC,wBAAwB,GACzB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAG5E,OAAO,EAAE,yBAAyB,EAAE,gCAAgC,EAAE,MAAM,yBAAyB,CAAC;AAGtG,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAG7F,YAAY,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACpK,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,11 @@ export { buildMerkleTree, merkleRoot, inclusionProof, verifyInclusion } from "./
|
|
|
5
5
|
export { CONTEXT_SESSION_ESTABLISHMENT, CONTEXT_SEAL, FrostThresholdSigner, MockThresholdSigner, } from "./frost/index.js";
|
|
6
6
|
// SESSION-004: standalone FROST verify (no signer instance needed — used by counterparty client)
|
|
7
7
|
export { verifyFrostSignature } from "./frost/frost-threshold-signer.js";
|
|
8
|
+
// M8B DOD-REFRESH-1: FROST proactive share resharing (PSS) — used by the directory (its own share) and
|
|
9
|
+
// the daemon coordinator (the client's share). Group key unchanged; old-epoch shares die.
|
|
10
|
+
export { generateRefreshContribution, verifyRefreshContribution, applyRefresh, } from "./frost/frost-resharing.js";
|
|
11
|
+
// Client-side refresh helpers (daemon coordinator): rotate the client's own share in-package.
|
|
12
|
+
export { getClientFrostIdentifier, generateClientRefreshContribution, applyRefreshToLocalShare, } from "./frost/frost-threshold-signer.js";
|
|
8
13
|
// REG-001: re-export ed25519_FROST for DKG coordinator in @cello-protocol/client
|
|
9
14
|
export { ed25519_FROST } from "@noble/curves/ed25519.js";
|
|
10
15
|
// FEDERATION-002: canonical checkpoint TBS serialization and hash computation
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEpI,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,WAAW,EACX,oBAAoB,EACpB,SAAS,EACT,WAAW,EACX,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE3F,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAU3F,OAAO,EACL,6BAA6B,EAC7B,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,iGAAiG;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE,iFAAiF;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,8EAA8E;AAC9E,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE5E,oEAAoE;AACpE,OAAO,EAAE,yBAAyB,EAAE,gCAAgC,EAAE,MAAM,yBAAyB,CAAC;AAEtG,+EAA+E;AAC/E,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAI7F,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEpI,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,WAAW,EACX,oBAAoB,EACpB,SAAS,EACT,WAAW,EACX,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE3F,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAU3F,OAAO,EACL,6BAA6B,EAC7B,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,iGAAiG;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE,uGAAuG;AACvG,0FAA0F;AAC1F,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,YAAY,GACb,MAAM,4BAA4B,CAAC;AAEpC,8FAA8F;AAC9F,OAAO,EACL,wBAAwB,EACxB,iCAAiC,EACjC,wBAAwB,GACzB,MAAM,mCAAmC,CAAC;AAE3C,iFAAiF;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,8EAA8E;AAC9E,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE5E,oEAAoE;AACpE,OAAO,EAAE,yBAAyB,EAAE,gCAAgC,EAAE,MAAM,yBAAyB,CAAC;AAEtG,+EAA+E;AAC/E,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAI7F,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC"}
|