let deriv_path: DerivationPath = DerivationPath::from_str(path.as_str())?;
let derived_xprv = &xprv.derive_priv(&secp, &deriv_path)?;
- let deriv_path_len = (&deriv_path).as_ref().len();
- let normal_suffix_len = (&deriv_path)
- .into_iter()
- .rev()
- .take_while(|c| c.is_normal())
- .count();
-
- let deriv_path_hardened =
- DerivationPath::from(&deriv_path[..(deriv_path_len - normal_suffix_len)]);
- let deriv_path_normal =
- DerivationPath::from(&deriv_path[(deriv_path_len - normal_suffix_len)..]);
-
- let origin: KeySource = (xprv.fingerprint(&secp), deriv_path_hardened);
+ let origin: KeySource = (xprv.fingerprint(&secp), deriv_path);
let derived_xprv_desc_key: DescriptorKey<Segwitv0> =
- derived_xprv.into_descriptor_key(Some(origin), deriv_path_normal)?;
+ derived_xprv.into_descriptor_key(Some(origin), DerivationPath::default())?;
if let Secret(desc_seckey, _, _) = derived_xprv_desc_key {
let desc_pubkey = desc_seckey.as_public(&secp).unwrap();
let xpub = result_obj.get("xpub").unwrap().as_str().unwrap();
let xprv = result_obj.get("xprv").unwrap().as_str().unwrap();
- assert_eq!(&xpub, &"[566844c5/84'/1'/0']tpubDFeqiDkfwR1tAhPxsXSZMfEmfpDhwhLyhLKZgmeBvuBkZQusoWeL62oGg2oTNGcENeKdwuGepAB85eMvyLemabYe9PSqv6cr5mFXktHc3Ka/0/*");
- assert_eq!(&xprv, &"[566844c5/84'/1'/0']tprv8ixoZoiRo3LDHENAysmxxFaf6nhmnNA582inQFbtWdPMivf7B7pjuYBQVuLC5bkM7tJZEDbfoivENsGZPBnQg1n52Kuc1P8X2Ei3XJuJX7c/0/*");
+ assert_eq!(&xpub, &"[566844c5/84'/1'/0'/0]tpubDFeqiDkfwR1tAhPxsXSZMfEmfpDhwhLyhLKZgmeBvuBkZQusoWeL62oGg2oTNGcENeKdwuGepAB85eMvyLemabYe9PSqv6cr5mFXktHc3Ka/*");
+ assert_eq!(&xprv, &"[566844c5/84'/1'/0'/0]tprv8ixoZoiRo3LDHENAysmxxFaf6nhmnNA582inQFbtWdPMivf7B7pjuYBQVuLC5bkM7tJZEDbfoivENsGZPBnQg1n52Kuc1P8X2Ei3XJuJX7c/*");
}
#[cfg(feature = "compiler")]