From 8c783fb5d34bdf9844a764a8fe5cb8c285008696 Mon Sep 17 00:00:00 2001 From: Rohan Jadvani Date: Thu, 22 Aug 2024 14:40:13 -0400 Subject: [PATCH 1/2] feat(cli): Add `wallet:decrypt` --- ironfish-cli/src/commands/wallet/decrypt.ts | 53 +++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 ironfish-cli/src/commands/wallet/decrypt.ts diff --git a/ironfish-cli/src/commands/wallet/decrypt.ts b/ironfish-cli/src/commands/wallet/decrypt.ts new file mode 100644 index 0000000000..f10e5f80e4 --- /dev/null +++ b/ironfish-cli/src/commands/wallet/decrypt.ts @@ -0,0 +1,53 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ +import { RpcRequestError } from '@ironfish/sdk' +import { Flags } from '@oclif/core' +import { IronfishCommand } from '../../command' +import { RemoteFlags } from '../../flags' +import { inputPrompt } from '../../ui' + +export class DecryptCommand extends IronfishCommand { + static hidden = true + + static description = 'Decrypt accounts in the wallet' + + static flags = { + ...RemoteFlags, + passphrase: Flags.string({ + description: 'Passphrase to decrypt the wallet with', + }), + } + + async start(): Promise { + const { flags } = await this.parse(DecryptCommand) + + const client = await this.connectRpc() + + const response = await client.wallet.getAccountsStatus() + if (!response.content.encrypted) { + this.log('Wallet is already decrypted') + this.exit(1) + } + + let passphrase = flags.passphrase + if (!passphrase) { + passphrase = await inputPrompt('Enter a passphrase to decrypt the wallet', true) + } + + try { + await client.wallet.decrypt({ + passphrase, + }) + } catch (e) { + if (e instanceof RpcRequestError) { + this.log('Wallet decryption failed') + this.exit(1) + } + + throw e + } + + this.log('Decrypted the wallet') + } +} From c67a3ecb81341bb160984c8cf7edbcaf7697f9cf Mon Sep 17 00:00:00 2001 From: Rohan Jadvani <5459049+rohanjadvani@users.noreply.github.com> Date: Fri, 23 Aug 2024 14:09:12 -0400 Subject: [PATCH 2/2] Update ironfish-cli/src/commands/wallet/decrypt.ts Co-authored-by: mat-if <97762857+mat-if@users.noreply.github.com> --- ironfish-cli/src/commands/wallet/decrypt.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ironfish-cli/src/commands/wallet/decrypt.ts b/ironfish-cli/src/commands/wallet/decrypt.ts index f10e5f80e4..3362da2b95 100644 --- a/ironfish-cli/src/commands/wallet/decrypt.ts +++ b/ironfish-cli/src/commands/wallet/decrypt.ts @@ -10,7 +10,7 @@ import { inputPrompt } from '../../ui' export class DecryptCommand extends IronfishCommand { static hidden = true - static description = 'Decrypt accounts in the wallet' + static description = 'decrypt accounts in the wallet' static flags = { ...RemoteFlags,