Skip to content

Commit a6c4859

Browse files
committed
Merge commit 'refs/pull/43/head' of github.com:bitcoindevkit/bdk-cli
2 parents 1219fa5 + 134cc06 commit a6c4859

File tree

1 file changed

+7
-9
lines changed

1 file changed

+7
-9
lines changed

src/lib.rs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1036,10 +1036,10 @@ pub enum KeySubCommand {
10361036
Derive {
10371037
/// Extended private key to derive from
10381038
#[structopt(name = "XPRV", short = "x", long = "xprv")]
1039-
xprv: String,
1039+
xprv: ExtendedPrivKey,
10401040
/// Path to use to derive extended public key from extended private key
10411041
#[structopt(name = "PATH", short = "p", long = "path")]
1042-
path: String,
1042+
path: DerivationPath,
10431043
},
10441044
}
10451045

@@ -1084,14 +1084,12 @@ pub fn handle_key_subcommand(
10841084
Ok(json!({ "xprv": xprv.to_string(), "fingerprint": fingerprint.to_string() }))
10851085
}
10861086
KeySubCommand::Derive { xprv, path } => {
1087-
let xprv = ExtendedPrivKey::from_str(xprv.as_str())?;
10881087
if xprv.network != network {
10891088
return Err(Error::Key(InvalidNetwork));
10901089
}
1091-
let deriv_path: DerivationPath = DerivationPath::from_str(path.as_str())?;
1092-
let derived_xprv = &xprv.derive_priv(&secp, &deriv_path)?;
1090+
let derived_xprv = &xprv.derive_priv(&secp, &path)?;
10931091

1094-
let origin: KeySource = (xprv.fingerprint(&secp), deriv_path);
1092+
let origin: KeySource = (xprv.fingerprint(&secp), path);
10951093

10961094
let derived_xprv_desc_key: DescriptorKey<Segwitv0> =
10971095
derived_xprv.into_descriptor_key(Some(origin), DerivationPath::default())?;
@@ -1152,6 +1150,7 @@ mod test {
11521150
use crate::ProxyOpts;
11531151
use crate::{handle_key_subcommand, CliSubCommand, KeySubCommand, WalletSubCommand};
11541152

1153+
use bdk::bitcoin::util::bip32::{DerivationPath, ExtendedPrivKey};
11551154
use bdk::bitcoin::{Address, Network, OutPoint};
11561155
use bdk::miniscript::bitcoin::network::constants::Network::Testnet;
11571156
use std::str::FromStr;
@@ -1626,9 +1625,8 @@ mod test {
16261625
fn test_key_derive() {
16271626
let network = Testnet;
16281627
let key_generate_cmd = KeySubCommand::Derive {
1629-
xprv: "tprv8ZgxMBicQKsPfQjJy8ge2cvBfDjLxJSkvNLVQiw7BQ5gTjKadG2rrcQB5zjcdaaUTz5EDNJaS77q4DzjqjogQBfMsaXFFNP3UqoBnwt2kyT"
1630-
.to_string(),
1631-
path: "m/84'/1'/0'/0".to_string(),
1628+
xprv: ExtendedPrivKey::from_str("tprv8ZgxMBicQKsPfQjJy8ge2cvBfDjLxJSkvNLVQiw7BQ5gTjKadG2rrcQB5zjcdaaUTz5EDNJaS77q4DzjqjogQBfMsaXFFNP3UqoBnwt2kyT").unwrap(),
1629+
path: DerivationPath::from_str("m/84'/1'/0'/0").unwrap(),
16321630
};
16331631

16341632
let result = handle_key_subcommand(network, key_generate_cmd).unwrap();

0 commit comments

Comments
 (0)