zcash_keys: Fix a few problems with no-flags compilation.

This commit is contained in:
Kris Nuttycombe 2024-03-04 10:45:22 -07:00
parent e78ea02240
commit 836d88b9c3
4 changed files with 28 additions and 16 deletions

View File

@ -9,6 +9,11 @@ and this library adheres to Rust's notion of
### Added
- `zcash_keys::keys::UnifiedAddressRequest::all`
### Fixed
- A missing application of the `sapling` feature flag was remedied;
prior to this fix it was not possible to use this crate without the
`sapling` feature enabled.
## [0.1.0] - 2024-03-01
The entries below are relative to the `zcash_client_backend` crate as of
`zcash_client_backend 0.10.0`.

View File

@ -67,6 +67,7 @@ jubjub.workspace = true
proptest.workspace = true
rand_core.workspace = true
zcash_address = { workspace = true, features = ["test-dependencies"] }
zcash_primitives = { workspace = true, features = ["test-dependencies"] }
[features]
## Enables use of transparent key parts and addresses

View File

@ -143,7 +143,11 @@ impl UnifiedAddress {
/// Returns whether this address has a Sapling receiver.
pub fn has_sapling(&self) -> bool {
self.sapling.is_some()
#[cfg(not(feature = "sapling"))]
return false;
#[cfg(feature = "sapling")]
return self.sapling.is_some();
}
/// Returns the Sapling receiver within this Unified Address, if any.
@ -213,6 +217,7 @@ impl UnifiedAddress {
let result = std::iter::empty();
#[cfg(feature = "orchard")]
let result = result.chain(self.orchard.map(|_| Typecode::Orchard));
#[cfg(feature = "sapling")]
let result = result.chain(self.sapling.map(|_| Typecode::Sapling));
let result = result.chain(self.transparent.map(|taddr| match taddr {
TransparentAddress::PublicKeyHash(_) => Typecode::P2pkh,
@ -353,7 +358,7 @@ mod tests {
use zcash_address::test_vectors;
use zcash_primitives::consensus::MAIN_NETWORK;
use super::Address;
use super::{Address, UnifiedAddress};
#[cfg(feature = "sapling")]
use crate::keys::sapling;
@ -361,9 +366,6 @@ mod tests {
#[cfg(any(feature = "orchard", feature = "sapling"))]
use zcash_primitives::zip32::AccountId;
#[cfg(any(feature = "orchard", feature = "sapling"))]
use super::UnifiedAddress;
#[test]
#[cfg(any(feature = "orchard", feature = "sapling"))]
fn ua_round_trip() {

View File

@ -7,16 +7,16 @@ use zcash_primitives::{
use crate::address::UnifiedAddress;
#[cfg(feature = "transparent-inputs")]
use zcash_primitives::legacy::keys::NonHardenedChildIndex;
#[cfg(feature = "transparent-inputs")]
use {
std::convert::TryInto,
zcash_primitives::legacy::keys::{self as legacy, IncomingViewingKey},
zcash_primitives::legacy::keys::{self as legacy, IncomingViewingKey, NonHardenedChildIndex},
};
#[cfg(all(feature = "test-dependencies", feature = "transparent-inputs"))]
#[cfg(all(
feature = "transparent-inputs",
any(test, feature = "test-dependencies")
))]
use zcash_primitives::legacy::TransparentAddress;
#[cfg(feature = "unstable")]
@ -847,13 +847,15 @@ pub mod testing {
#[cfg(test)]
mod tests {
use super::UnifiedFullViewingKey;
use proptest::prelude::proptest;
use super::UnifiedFullViewingKey;
use zcash_primitives::consensus::MAIN_NETWORK;
#[cfg(any(feature = "orchard", feature = "sapling"))]
use zip32::AccountId;
#[cfg(any(
feature = "orchard",
feature = "sapling",
feature = "transparent-inputs"
))]
use {zcash_primitives::consensus::MAIN_NETWORK, zip32::AccountId};
#[cfg(feature = "sapling")]
use super::sapling;
@ -940,7 +942,7 @@ mod tests {
);
#[cfg(not(any(feature = "orchard", feature = "sapling")))]
assert_eq!(ufvk, None);
assert!(ufvk.is_none());
#[cfg(any(feature = "orchard", feature = "sapling"))]
{
@ -1055,6 +1057,7 @@ mod tests {
// The test vectors contain some diversifier indices that do not generate
// valid Sapling addresses, so skip those.
#[cfg(feature = "sapling")]
if ufvk.sapling().unwrap().address(d_idx).is_none() {
continue;
}
@ -1075,6 +1078,7 @@ mod tests {
if tvua.transparent().is_some() {
assert_eq!(tvua.transparent(), ua.transparent());
}
#[cfg(feature = "sapling")]
if tvua.sapling().is_some() {
assert_eq!(tvua.sapling(), ua.sapling());
}