Apply updated style for key discovery

Co-authored-by: Kris Nuttycombe <kris@nutty.land>
This commit is contained in:
Andrew Arnott 2024-03-09 21:22:25 -07:00 committed by Andrew Arnott
parent 071d7c51d7
commit 2b3060d138
No known key found for this signature in database
GPG Key ID: 48F18646D6868924
1 changed files with 45 additions and 46 deletions

View File

@ -980,58 +980,57 @@ impl UnifiedIncomingViewingKey {
#[cfg(feature = "transparent-inputs")] #[cfg(feature = "transparent-inputs")]
let mut transparent = None; let mut transparent = None;
let mut unknown = vec![];
// We can use as-parsed order here for efficiency, because we're breaking out the // We can use as-parsed order here for efficiency, because we're breaking out the
// receivers we support from the unknown receivers. // receivers we support from the unknown receivers.
let unknown = uivk for receiver in uivk.items_as_parsed() {
.items_as_parsed() match receiver {
.iter()
.filter_map(|receiver| match receiver {
#[cfg(feature = "orchard")]
unified::Ivk::Orchard(data) => { unified::Ivk::Orchard(data) => {
Option::from(orchard::keys::IncomingViewingKey::from_bytes(data)) #[cfg(feature = "orchard")]
.ok_or(UnifiedError::InvalidShieldedKey(ShieldedProtocol::Orchard)) {
.map(|addr| { orchard = Some(
orchard = Some(addr); Option::from(orchard::keys::IncomingViewingKey::from_bytes(data))
None .ok_or(UnifiedError::InvalidShieldedKey(
}) ShieldedProtocol::Orchard,
.transpose() ))?,
);
}
#[cfg(not(feature = "orchard"))]
unknown.push((u32::from(unified::Typecode::Orchard), data.to_vec()));
} }
#[cfg(not(feature = "orchard"))]
unified::Ivk::Orchard(data) => Some(Ok::<_, UnifiedError>((
u32::from(unified::Typecode::Orchard),
data.to_vec(),
))),
#[cfg(feature = "sapling")]
unified::Ivk::Sapling(data) => { unified::Ivk::Sapling(data) => {
Option::from(::sapling::zip32::IncomingViewingKey::from_bytes(data)) #[cfg(feature = "sapling")]
.ok_or(UnifiedError::InvalidShieldedKey(ShieldedProtocol::Sapling)) {
.map(|pa| { sapling = Some(
sapling = Some(pa); Option::from(::sapling::zip32::IncomingViewingKey::from_bytes(data))
None .ok_or(UnifiedError::InvalidShieldedKey(
}) ShieldedProtocol::Sapling,
.transpose() ))?,
);
}
#[cfg(not(feature = "sapling"))]
unknown.push((u32::from(unified::Typecode::Sapling), data.to_vec()));
} }
#[cfg(not(feature = "sapling"))] unified::Ivk::P2pkh(data) => {
unified::Ivk::Sapling(data) => Some(Ok::<_, UnifiedError>(( #[cfg(feature = "transparent-inputs")]
u32::from(unified::Typecode::Sapling), {
data.to_vec(), transparent = Some(
))), legacy::ExternalIvk::deserialize(data)
#[cfg(feature = "transparent-inputs")] .map_err(UnifiedError::InvalidTransparentKey)?,
unified::Ivk::P2pkh(data) => legacy::ExternalIvk::deserialize(data) );
.map_err(UnifiedError::InvalidTransparentKey) }
.map(|tivk| {
transparent = Some(tivk); #[cfg(not(feature = "transparent-inputs"))]
None unknown.push((u32::from(unified::Typecode::P2pkh), data.to_vec()));
}) }
.transpose(), unified::Ivk::Unknown { typecode, data } => {
#[cfg(not(feature = "transparent-inputs"))] unknown.push((*typecode, data.clone()));
unified::Ivk::P2pkh(data) => Some(Ok::<_, UnifiedError>(( }
u32::from(unified::Typecode::P2pkh), }
data.to_vec(), }
))),
unified::Ivk::Unknown { typecode, data } => Some(Ok((*typecode, data.clone()))),
})
.collect::<Result<_, _>>()?;
Ok(Self { Ok(Self {
#[cfg(feature = "transparent-inputs")] #[cfg(feature = "transparent-inputs")]