From 32bc1d026cb79f01a5ec50b0e2079ffc445fa594 Mon Sep 17 00:00:00 2001 From: Marzooqa Naeema Kather Date: Mon, 18 May 2026 14:03:41 +0530 Subject: [PATCH] fix(sdk-lib-mpc): use MPSUtil.executeTillRound in derive tests TICKET: WCI-390 Co-Authored-By: Claude Sonnet 4.6 --- .../sdk-lib-mpc/test/unit/tss/eddsa/derive.ts | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/modules/sdk-lib-mpc/test/unit/tss/eddsa/derive.ts b/modules/sdk-lib-mpc/test/unit/tss/eddsa/derive.ts index 5f3951d3b3..c948ddb5d3 100644 --- a/modules/sdk-lib-mpc/test/unit/tss/eddsa/derive.ts +++ b/modules/sdk-lib-mpc/test/unit/tss/eddsa/derive.ts @@ -1,7 +1,8 @@ import assert from 'assert'; import { ed25519 } from '@noble/curves/ed25519'; +import { EddsaMPSDsg, MPSUtil } from '../../../../src/tss/eddsa-mps'; import { deriveUnhardenedMps } from '../../../../src/tss/eddsa-mps/derive'; -import { generateEdDsaDKGKeyShares, runEdDsaDSG } from './util'; +import { generateEdDsaDKGKeyShares } from './util'; const MESSAGE = Buffer.from('The Times 03/Jan/2009 Chancellor on brink of second bailout for banks'); @@ -63,28 +64,40 @@ describe('deriveUnhardenedMps', function () { }); describe('DSG signature cross-check against the public key derived by deriveUnhardenedMps', function () { + let sigAtRoot: Buffer; + let sigAtM0: Buffer; + let sigAtM01: Buffer; + + before(function () { + const dsgA1 = new EddsaMPSDsg.DSG(0); + MPSUtil.executeTillRound(3, dsgA1, new EddsaMPSDsg.DSG(2), userKeyShare, bitgoKeyShare, MESSAGE, 'm'); + sigAtRoot = dsgA1.getSignature(); + + const dsgA2 = new EddsaMPSDsg.DSG(0); + MPSUtil.executeTillRound(3, dsgA2, new EddsaMPSDsg.DSG(2), userKeyShare, bitgoKeyShare, MESSAGE, 'm/0'); + sigAtM0 = dsgA2.getSignature(); + + const dsgA3 = new EddsaMPSDsg.DSG(0); + MPSUtil.executeTillRound(3, dsgA3, new EddsaMPSDsg.DSG(2), userKeyShare, bitgoKeyShare, MESSAGE, 'm/0/1'); + sigAtM01 = dsgA3.getSignature(); + }); + it('signature from DSG at "m" verifies against the root public key', function () { - const { dsgA } = runEdDsaDSG(userKeyShare, bitgoKeyShare, 0, 2, MESSAGE, 'm'); - const sig = dsgA.getSignature(); - assert(ed25519.verify(sig, MESSAGE, rootPubKey), 'DSG at "m" should verify against the raw DKG public key'); + assert(ed25519.verify(sigAtRoot, MESSAGE, rootPubKey), 'DSG at "m" should verify against the raw DKG public key'); }); it('signature from DSG at "m/0" verifies against deriveUnhardenedMps(commonKeychain, "m/0")', function () { const derivedPk = Buffer.from(deriveUnhardenedMps(commonKeychain, 'm/0').slice(0, 64), 'hex'); - const { dsgA } = runEdDsaDSG(userKeyShare, bitgoKeyShare, 0, 2, MESSAGE, 'm/0'); - const sig = dsgA.getSignature(); assert( - ed25519.verify(sig, MESSAGE, derivedPk), + ed25519.verify(sigAtM0, MESSAGE, derivedPk), 'DSG at "m/0" should verify against deriveUnhardenedMps result at "m/0"' ); }); it('signature from DSG at "m/0/1" verifies against deriveUnhardenedMps(commonKeychain, "m/0/1")', function () { const derivedPk = Buffer.from(deriveUnhardenedMps(commonKeychain, 'm/0/1').slice(0, 64), 'hex'); - const { dsgA } = runEdDsaDSG(userKeyShare, bitgoKeyShare, 0, 2, MESSAGE, 'm/0/1'); - const sig = dsgA.getSignature(); assert( - ed25519.verify(sig, MESSAGE, derivedPk), + ed25519.verify(sigAtM01, MESSAGE, derivedPk), 'DSG at "m/0/1" should verify against deriveUnhardenedMps result at "m/0/1"' ); });