4 releases (2 breaking)

0.3.0 Jan 22, 2021
0.2.1 Jun 28, 2019
0.2.0 Mar 11, 2019
0.1.0 Feb 20, 2019

#20 in #bip-32

Download history 1310/week @ 2024-01-06 2134/week @ 2024-01-13 1519/week @ 2024-01-20 10929/week @ 2024-01-27 2337/week @ 2024-02-03 2003/week @ 2024-02-10 2172/week @ 2024-02-17 2340/week @ 2024-02-24 3158/week @ 2024-03-02 2765/week @ 2024-03-09 2550/week @ 2024-03-16 2763/week @ 2024-03-23 1121/week @ 2024-03-30 1639/week @ 2024-04-06 1269/week @ 2024-04-13 1628/week @ 2024-04-20

5,803 downloads per month
Used in 6 crates

GPL-3.0 license

17KB
223 lines

tiny-hderive

A library for deriving secp256k1 secret keys from BIP39 seeds, using BIP32 crypto and BIP44 path formats.

use tiny_hderive::bip32::ExtendedPrivKey;

// Seed should be generated from your BIP39 phrase first!
let seed: &[u8] = &[42; 64];
let ext = ExtendedPrivKey::derive(seed, "m/44'/60'/0'/0/0").unwrap();

// Byte array of the secp256k1 secret key that can be used with Bitcoin or Ethereum.
assert_eq!(&ext.secret(), b"\x98\x84\xbf\x56\x24\xfa\xdd\x7f\xb2\x80\x4c\xfb\x0c\xb6\xf7\x1f\x28\x9e\x21\x1f\xcf\x0d\xe8\x36\xa3\x84\x17\x57\xda\xd9\x70\xd0");

// Deriving child keys from base one is also possible
use tiny_hderive::bip44::ChildNumber;
use std::str::FromStr;

let base_ext = ExtendedPrivKey::derive(seed, "m/44'/60'/0'/0").unwrap();
// child_ext is a key which is derived from this path: m/44'/60'/0'/0/0
let child_ext = base_ext.child(ChildNumber::from_str("0").unwrap()).unwrap();

assert_eq!(ext, child_ext);

lib.rs:

tiny-hderive

A library for deriving secp256k1 secret keys from BIP39 seeds, using BIP32 crypto and BIP44 path formats.

use tiny_hderive::bip32::ExtendedPrivKey;

// Seed should be generated from your BIP39 phrase first!
let seed: &[u8] = &[42; 64];
let ext = ExtendedPrivKey::derive(seed, "m/44'/60'/0'/0/0").unwrap();

// Byte array of the secp256k1 secret key that can be used with Bitcoin or Ethereum.
assert_eq!(&ext.secret(), b"\x98\x84\xbf\x56\x24\xfa\xdd\x7f\xb2\x80\x4c\xfb\x0c\xb6\xf7\x1f\x28\x9e\x21\x1f\xcf\x0d\xe8\x36\xa3\x84\x17\x57\xda\xd9\x70\xd0");

Dependencies

~1.5MB
~24K SLoC