]> Untitled Git - bdk-cli/commitdiff
Corrected key origin prefix to contain full path of the key derived
authorVishal Menon <vishalmenon.92@gmail.com>
Tue, 18 May 2021 18:49:15 +0000 (00:19 +0530)
committerVishal Menon <vishalmenon.92@gmail.com>
Tue, 18 May 2021 18:49:15 +0000 (00:19 +0530)
src/lib.rs

index 8ad016244bec2b44cdf667dec1b74bd76b31cff1..f74c0143816f42d9fc736657c400d87686c06647 100644 (file)
@@ -890,22 +890,10 @@ pub fn handle_key_subcommand(
             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();
@@ -1279,8 +1267,8 @@ mod test {
         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")]