Skip to content

Commit

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

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

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

---------

Co-authored-by: mat-if <[email protected]>
  • Loading branch information
rohanjadvani and mat-if authored Aug 23, 2024
1 parent 7088bfd commit 70b736d
Showing 1 changed file with 53 additions and 0 deletions.
53 changes: 53 additions & 0 deletions ironfish-cli/src/commands/wallet/encrypt.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 EncryptCommand extends IronfishCommand {
static hidden = true

static description = 'encrypt accounts in the wallet'

static flags = {
...RemoteFlags,
passphrase: Flags.string({
description: 'Passphrase to encrypt the wallet with',
}),
}

async start(): Promise<void> {
const { flags } = await this.parse(EncryptCommand)

const client = await this.connectRpc()

const response = await client.wallet.getAccountsStatus()
if (response.content.encrypted) {
this.log('Wallet is already encrypted')
this.exit(1)
}

let passphrase = flags.passphrase
if (!passphrase) {
passphrase = await inputPrompt('Enter a passphrase to encrypt the wallet', true)
}

try {
await client.wallet.encrypt({
passphrase,
})
} catch (e) {
if (e instanceof RpcRequestError) {
this.log('Wallet encryption failed')
this.exit(1)
}

throw e
}

this.log('Encrypted the wallet')
}
}

0 comments on commit 70b736d

Please sign in to comment.