From d8c9965bea0ebbce9bac4605f2556aac6910f124 Mon Sep 17 00:00:00 2001 From: Jason Spafford Date: Mon, 7 Oct 2024 10:51:41 -0700 Subject: [PATCH] Upgrade wallet:multisig:sign to use ui.ledger (#5489) * Upgrade wallet:multisig:sign to use ui.ledger This uses the new ledger UI action so that it will wait for the user to connect and unlock their ledger. * Update ironfish-cli/src/commands/wallet/multisig/sign.ts Co-authored-by: Hugh Cunningham <57735705+hughy@users.noreply.github.com> --------- Co-authored-by: Hugh Cunningham <57735705+hughy@users.noreply.github.com> --- .../src/commands/wallet/multisig/sign.ts | 37 +++++++++++-------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/ironfish-cli/src/commands/wallet/multisig/sign.ts b/ironfish-cli/src/commands/wallet/multisig/sign.ts index 938f273964..4ca047b623 100644 --- a/ironfish-cli/src/commands/wallet/multisig/sign.ts +++ b/ironfish-cli/src/commands/wallet/multisig/sign.ts @@ -73,15 +73,6 @@ export class SignMultisigTransactionCommand extends IronfishCommand { if (flags.ledger) { ledger = new LedgerMultiSigner(this.logger) - try { - await ledger.connect() - } catch (e) { - if (e instanceof Error) { - this.error(e.message) - } else { - throw e - } - } } let multisigAccountName: string @@ -387,11 +378,16 @@ export class SignMultisigTransactionCommand extends IronfishCommand { const signingPackage = new multisig.SigningPackage(Buffer.from(signingPackageString, 'hex')) if (ledger) { - const frostSignatureShare = await ledger.dkgSign( - unsignedTransaction.publicKeyRandomness(), - signingPackage.frostSigningPackage().toString('hex'), - unsignedTransaction.hash().toString('hex'), - ) + const frostSignatureShare = await ui.ledger({ + ledger, + message: 'Sign Transaction', + action: () => + ledger.dkgSign( + unsignedTransaction.publicKeyRandomness(), + signingPackage.frostSigningPackage().toString('hex'), + unsignedTransaction.hash().toString('hex'), + ), + }) signatureShare = multisig.SignatureShare.fromFrost( frostSignatureShare, @@ -515,7 +511,12 @@ export class SignMultisigTransactionCommand extends IronfishCommand { let commitment if (ledger) { - await ledger.reviewTransaction(unsignedTransactionHex) + await ui.ledger({ + ledger, + message: 'Review Transaction', + action: () => ledger.reviewTransaction(unsignedTransactionHex), + approval: true, + }) commitment = await this.createSigningCommitmentWithLedger( ledger, @@ -545,7 +546,11 @@ export class SignMultisigTransactionCommand extends IronfishCommand { transactionHash: Buffer, signers: string[], ): Promise { - const rawCommitments = await ledger.dkgGetCommitments(transactionHash.toString('hex')) + const rawCommitments = await ui.ledger({ + ledger, + message: 'Get Commitments', + action: () => ledger.dkgGetCommitments(transactionHash.toString('hex')), + }) const sigingCommitment = multisig.SigningCommitment.fromRaw( participant.identity,