diff --git a/src/main/rust/lib.rs b/src/main/rust/lib.rs index 23ba0c63..7b424886 100644 --- a/src/main/rust/lib.rs +++ b/src/main/rust/lib.rs @@ -4,9 +4,9 @@ extern crate zip32; use zcash_client_backend::{ address::encode_payment_address, constants::HRP_SAPLING_EXTENDED_SPENDING_KEY_TEST, }; -use zip32::{ChildIndex, ExtendedSpendingKey}; +use zip32::{ChildIndex, ExtendedFullViewingKey, ExtendedSpendingKey}; -fn address_from_seed(seed: &[u8]) -> String { +fn extfvk_from_seed(seed: &[u8]) -> ExtendedFullViewingKey { let master = ExtendedSpendingKey::master(seed); let extsk = ExtendedSpendingKey::from_path( &master, @@ -16,7 +16,11 @@ fn address_from_seed(seed: &[u8]) -> String { ChildIndex::Hardened(0), ], ); - let addr = extsk.default_address().unwrap().1; + ExtendedFullViewingKey::from(&extsk) +} + +fn address_from_extfvk(extfvk: &ExtendedFullViewingKey) -> String { + let addr = extfvk.default_address().unwrap().1; encode_payment_address(HRP_SAPLING_EXTENDED_SPENDING_KEY_TEST, &addr) } @@ -30,7 +34,7 @@ pub mod android { use self::jni::sys::{jbyteArray, jstring}; use self::jni::JNIEnv; - use super::address_from_seed; + use super::{address_from_extfvk, extfvk_from_seed}; #[no_mangle] pub unsafe extern "C" fn Java_cash_z_wallet_sdk_jni_JniConverter_getAddress( @@ -40,7 +44,7 @@ pub mod android { ) -> jstring { let seed = env.convert_byte_array(seed).unwrap(); - let addr = address_from_seed(&seed); + let addr = address_from_extfvk(&extfvk_from_seed(&seed)); let output = env.new_string(addr).expect("Couldn't create Java string!"); output.into_inner()