Merge 04209159d297233600888cdaf569c0c6a2fd391d into 1d09afd9e004953a7218fe02d4e897cc45c67465

This commit is contained in:
fryorcraken 2026-01-07 10:08:06 +11:00 committed by GitHub
commit 9e6a95e154
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -20,6 +20,9 @@ pub enum AccountSubcommand {
/// Flag to get raw account data
#[arg(short, long)]
raw: bool,
/// Display keys (npk, ipk) for private accounts
#[arg(short, long)]
keys: bool,
/// Valid 32 byte base58 string with privacy prefix
#[arg(short, long)]
account_id: String,
@ -157,7 +160,11 @@ impl WalletSubcommand for AccountSubcommand {
wallet_core: &mut WalletCore,
) -> Result<SubcommandReturnValue> {
match self {
AccountSubcommand::Get { raw, account_id } => {
AccountSubcommand::Get {
raw,
keys,
account_id,
} => {
let (account_id, addr_kind) = parse_addr_with_privacy_prefix(&account_id)?;
let account_id = account_id.parse()?;
@ -222,6 +229,24 @@ impl WalletSubcommand for AccountSubcommand {
println!("{}", acc_view);
if keys {
if addr_kind != AccountPrivacyKind::Private {
anyhow::bail!("--keys option only works for private accounts");
}
let (key, _) = wallet_core
.storage
.user_data
.get_private_account(&account_id)
.ok_or(anyhow::anyhow!("Private account not found in storage"))?;
println!("npk {}", hex::encode(key.nullifer_public_key.0));
println!(
"ipk {}",
hex::encode(key.incoming_viewing_public_key.to_bytes())
);
}
Ok(SubcommandReturnValue::Empty)
}
AccountSubcommand::New(new_subcommand) => {