Skip to content

Commit 3f79328

Browse files
committed
Now ensure that the MASP crate gets the correct key ak.
1 parent a938eb2 commit 3f79328

File tree

18 files changed

+253
-175
lines changed

18 files changed

+253
-175
lines changed

Cargo.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,8 @@ libc = "0.2.97"
138138
libloading = "0.7.2"
139139
linkme = "0.3.24"
140140
# branch = "tomas/arbitrary"
141-
masp_primitives = { git = "https://github.com/anoma/masp", rev = "e6451ecf64d519409f9b1a67aa1d8322a9fe0717" }
142-
masp_proofs = { git = "https://github.com/anoma/masp", rev = "e6451ecf64d519409f9b1a67aa1d8322a9fe0717", default-features = false, features = ["local-prover"] }
141+
masp_primitives = { git = "https://github.com/anoma/masp", rev = "f2b0cae3e495e4f7d482e587432ec4e5f2793528" }
142+
masp_proofs = { git = "https://github.com/anoma/masp", rev = "f2b0cae3e495e4f7d482e587432ec4e5f2793528", default-features = false, features = ["local-prover"] }
143143
num256 = "0.3.5"
144144
num_cpus = "1.13.0"
145145
num-derive = "0.4"

crates/apps_lib/src/cli/context.rs

Lines changed: 49 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ use std::path::{Path, PathBuf};
66
use std::str::FromStr;
77

88
use color_eyre::eyre::Result;
9+
use masp_primitives::zip32::sapling::PseudoExtendedKey;
10+
use masp_primitives::zip32::{
11+
ExtendedFullViewingKey as MaspExtendedViewingKey,
12+
ExtendedSpendingKey as MaspExtendedSpendingKey,
13+
};
914
use namada_sdk::address::{Address, InternalAddress};
1015
use namada_sdk::chain::ChainId;
1116
use namada_sdk::ethereum_events::EthAddress;
@@ -16,7 +21,6 @@ use namada_sdk::masp::fs::FsShieldedUtils;
1621
use namada_sdk::masp::{ShieldedContext, *};
1722
use namada_sdk::wallet::{DatedSpendingKey, DatedViewingKey, Wallet};
1823
use namada_sdk::{Namada, NamadaImpl};
19-
use masp_primitives::zip32::sapling::PseudoExtendedSpendingKey;
2024

2125
use super::args;
2226
use crate::cli::utils;
@@ -44,7 +48,7 @@ pub type WalletAddrOrNativeToken = FromContext<AddrOrNativeToken>;
4448

4549
/// A raw extended spending key (bech32m encoding) or an alias of an extended
4650
/// spending key in the wallet
47-
pub type WalletSpendingKey = FromContext<PseudoExtendedSpendingKey>;
51+
pub type WalletSpendingKey = FromContext<PseudoExtendedKey>;
4852

4953
/// A raw dated extended spending key (bech32m encoding) or an alias of an
5054
/// extended spending key in the wallet
@@ -585,33 +589,45 @@ impl ArgFromMutContext for ExtendedSpendingKey {
585589
}
586590
}
587591

588-
impl ArgFromMutContext for PseudoExtendedSpendingKey {
592+
impl ArgFromMutContext for PseudoExtendedKey {
589593
fn arg_from_mut_ctx(
590594
ctx: &mut ChainContext,
591595
raw: impl AsRef<str>,
592596
) -> Result<Self, String> {
593597
let raw = raw.as_ref();
594598
// Either the string is a raw extended spending key
595-
ExtendedSpendingKey::from_str(raw).map(
596-
|x| PseudoExtendedSpendingKey::from_spending_key(x.into())
597-
).or_else(|_parse_err| {
598-
ExtendedViewingKey::from_str(raw).map(
599-
|x| PseudoExtendedSpendingKey::from_viewing_key(x.into())
600-
)
601-
}).or_else(|_parse_err| {
602-
// Or it is a stored alias of one
603-
ctx.wallet
604-
.find_spending_key(raw, None)
605-
.map(|k| PseudoExtendedSpendingKey::from_spending_key(k.key.into()))
606-
.map_err(|_find_err| format!("Unknown spending key {}", raw))
607-
}).or_else(|_parse_err| {
608-
// Or it is a stored alias of one
609-
ctx.wallet
610-
.find_viewing_key(raw)
611-
.copied()
612-
.map(|k| PseudoExtendedSpendingKey::from_viewing_key(k.key.into()))
613-
.map_err(|_find_err| format!("Unknown viewing key {}", raw))
614-
})
599+
ExtendedSpendingKey::from_str(raw)
600+
.map(|x| PseudoExtendedKey::from(MaspExtendedSpendingKey::from(x)))
601+
.or_else(|_parse_err| {
602+
ExtendedViewingKey::from_str(raw).map(|x| {
603+
PseudoExtendedKey::from(MaspExtendedViewingKey::from(x))
604+
})
605+
})
606+
.or_else(|_parse_err| {
607+
// Or it is a stored alias of one
608+
ctx.wallet
609+
.find_spending_key(raw, None)
610+
.map(|k| {
611+
PseudoExtendedKey::from(MaspExtendedSpendingKey::from(
612+
k.key,
613+
))
614+
})
615+
.map_err(|_find_err| {
616+
format!("Unknown spending key {}", raw)
617+
})
618+
})
619+
.or_else(|_parse_err| {
620+
// Or it is a stored alias of one
621+
ctx.wallet
622+
.find_viewing_key(raw)
623+
.copied()
624+
.map(|k| {
625+
PseudoExtendedKey::from(MaspExtendedViewingKey::from(
626+
k.key,
627+
))
628+
})
629+
.map_err(|_find_err| format!("Unknown viewing key {}", raw))
630+
})
615631
}
616632
}
617633

@@ -693,12 +709,18 @@ impl ArgFromMutContext for TransferSource {
693709
Address::arg_from_ctx(ctx, raw)
694710
.map(Self::Address)
695711
.or_else(|_| {
696-
ExtendedSpendingKey::arg_from_mut_ctx(ctx, raw)
697-
.map(|x| Self::ExtendedSpendingKey(PseudoExtendedSpendingKey::from_spending_key(x.into())))
712+
ExtendedSpendingKey::arg_from_mut_ctx(ctx, raw).map(|x| {
713+
Self::ExtendedSpendingKey(PseudoExtendedKey::from(
714+
MaspExtendedSpendingKey::from(x),
715+
))
716+
})
698717
})
699718
.or_else(|_| {
700-
ExtendedViewingKey::arg_from_mut_ctx(ctx, raw)
701-
.map(|x| Self::ExtendedSpendingKey(PseudoExtendedSpendingKey::from_viewing_key(x.into())))
719+
ExtendedViewingKey::arg_from_mut_ctx(ctx, raw).map(|x| {
720+
Self::ExtendedSpendingKey(PseudoExtendedKey::from(
721+
MaspExtendedViewingKey::from(x),
722+
))
723+
})
702724
})
703725
}
704726
}

crates/apps_lib/src/cli/wallet.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,10 @@ async fn shielded_key_derive(
270270
cli::safe_exit(1)
271271
};
272272
let xfvk = ExtendedFullViewingKey::try_from_slice(&response_key.xfvk)
273-
.expect("unable to decode extended full viewing key from the hardware wallet");
273+
.expect(
274+
"unable to decode extended full viewing key from the hardware \
275+
wallet",
276+
);
274277

275278
wallet
276279
.insert_viewing_key(
@@ -416,7 +419,13 @@ fn shielded_key_address_add(
416419
let (alias, typ) = match masp_value {
417420
MaspValue::FullViewingKey(viewing_key) => {
418421
let alias = wallet
419-
.insert_viewing_key(alias, viewing_key, birthday, alias_force, None)
422+
.insert_viewing_key(
423+
alias,
424+
viewing_key,
425+
birthday,
426+
alias_force,
427+
None,
428+
)
420429
.unwrap_or_else(|| {
421430
edisplay_line!(io, "Viewing key not added");
422431
cli::safe_exit(1);

0 commit comments

Comments
 (0)