Apply updated style for key discovery
Co-authored-by: Kris Nuttycombe <kris@nutty.land>
This commit is contained in:
parent
071d7c51d7
commit
2b3060d138
|
@ -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")]
|
||||||
|
|
Loading…
Reference in New Issue