better derivation path building
This commit is contained in:
parent
396ffb42f9
commit
201bd6ee02
@ -223,15 +223,21 @@ impl Signer for DescriptorXKey<ExtendedPrivKey> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let derived_key = match self.origin.clone() {
|
let derived_key = match self.origin.clone() {
|
||||||
Some((_fingerprint, path)) => {
|
Some((_fingerprint, origin_path)) => {
|
||||||
let split_origin_path: Vec<&ChildNumber> = path.into_iter().collect();
|
let deriv_path = DerivationPath::from(
|
||||||
let mut deriv_path = DerivationPath::default();
|
full_path
|
||||||
for (i, child) in full_path.into_iter().cloned().enumerate() {
|
.into_iter()
|
||||||
match split_origin_path.get(i) {
|
.enumerate()
|
||||||
Some(_) => continue,
|
.filter_map(|(i, child)| {
|
||||||
None => deriv_path = deriv_path.extend(&[child]),
|
if i >= origin_path.len() {
|
||||||
}
|
Some(child)
|
||||||
}
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.cloned()
|
||||||
|
.collect::<Vec<ChildNumber>>(),
|
||||||
|
);
|
||||||
self.xkey.derive_priv(&secp, &deriv_path).unwrap()
|
self.xkey.derive_priv(&secp, &deriv_path).unwrap()
|
||||||
}
|
}
|
||||||
None => self.xkey.derive_priv(&secp, &full_path).unwrap(),
|
None => self.xkey.derive_priv(&secp, &full_path).unwrap(),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user