Rust wrapper for the Bitcoin Hardware Wallet Interface library.
This library internally uses PyO3 to call HWI's functions. It is not a re-implementation of HWI in native Rust.
The MSRV for this project is 1.63.0.
Python 3 is required. The libraries and udev rules for each device must also be installed. Some libraries will need to be installed
For Ubuntu/Debian:
sudo apt install libusb-1.0-0-dev libudev-dev python3-devFor Centos:
sudo yum -y install python3-devel libusbx-devel systemd-develFor macOS:
brew install libusb- Clone the repo
git clone https://github.com/bitcoindevkit/rust-hwi.git &&cd rust-hwi- Create a virtualenv:
virtualenv -p python3 venv
source venv/bin/activate- Install all the dependencies using pip:
pip install -r requirements.txtuse bitcoin::Network;use bitcoin::bip32::DerivationPath;use hwi::error::Error;use hwi::HWIClient;use std::str::FromStr;fnmain() -> Result<(),Error>{letmut devices = HWIClient::enumerate()?;if devices.is_empty(){panic!("No devices found!");}let first_device = devices.remove(0)?;let client = HWIClient::get_client(&first_device,true,Network::Bitcoin.into())?;let derivation_path = DerivationPath::from_str("m/44'/1'/0'/0/0").unwrap();let s = client.sign_message("I love BDK wallet",&derivation_path)?;println!("{:?}", s.signature);Ok(())}To run the tests, you need to have a hardware wallet plugged in. If you don't have a HW for testing, you can try:
Don't use a device with funds for testing!
Either use a testing device with no funds, or use a simulator.
You can run the tests with cargo test.