Skip to content

Commit

Permalink
feat(cli): Add wallet:decrypt (#5328)
Browse files Browse the repository at this point in the history
* feat(cli): Add `wallet:decrypt`

* Update ironfish-cli/src/commands/wallet/decrypt.ts

Co-authored-by: mat-if <[email protected]>

---------

Co-authored-by: mat-if <[email protected]>
  • Loading branch information
rohanjadvani and mat-if committed Aug 23, 2024
1 parent 70b736d commit 487fbee
Showing 1 changed file with 53 additions and 0 deletions.
53 changes: 53 additions & 0 deletions ironfish-cli/src/commands/wallet/decrypt.ts
Original file line number Diff line number Diff line change
@@ -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<void> {
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')
}
}

0 comments on commit 487fbee

Please sign in to comment.