here is a python BIP32 library: https://github.com/pezcore/obsidian
the command line interface is in bin/oku
. Make sure the top level project forlder is on your PYTHONPATH
and you can use it like this :
$ oku -p44/0/0/0 xpub661MyMwAqRbcF3DZvDPYWEzuFxL1Xt6RDdjGsuinnueNLiUSUYb7gaXEWxGMS4T96kDrBTdxxfVx6vqhYT9ZcJdNcevVpzjK2HYFN2PGmke
Root key info -------------------------------------------------------------------------------------------------
depth : 0
index : 00000000
parent : 00000000
chaincode: 31D8745D939CD85B7E956A03908AA09C6E2FB7A3A7D74D3A90889DF5FED6AAA9
keydata : 03B72E8FB7C8F2CA7664C8DADC23AD452888F0347C790E6473245AC2EF9E541724
BIP32 str: xpub661MyMwAqRbcF3DZvDPYWEzuFxL1Xt6RDdjGsuinnueNLiUSUYb7gaXEWxGMS4T96kDrBTdxxfVx6vqhYT9ZcJdNcevVpzjK2HYFN2PGmke
Derived Key info ----------------------------------------------------------------------------------------------
path : 44/0/0/0
depth : 4
index : 00000000
parent : A18376A9
chaincode: 17D3059131888335A8D3A664A015F519FD89D811154492725823D9829A1D6EE3
keydata : 023FEED34B38497B005CA91BEA5AD5B1FCD0318DA01AC7EFDD1635B72FE3055CD3
BIP32 str: xpub6EikzRzgQiSsjiL3nz2SUZTi964wvqa1Je1WtRr5cXEwFEbMJvhas6BauDXoAVRhShfrJVTF1CKoq8zFmA9x72KocKxmRPBy4DizNPxLw9g
leaves--------------------------------------------------------------------------------------------------
0 1LDB6EomUoB4uXaqutFes9uduQ9Mz7PgHh 021367BDC3D91C499DE400BA561F526C77DC4241CCA7768C7A6A76B4A0AAF32CAF
1 1CfZgDBKAy9W6o4wJiGjCeMe4HPb3sibsY 037FEB277F7EE6EE89DC8CE25F6DDACEA12BCF9D937E5606A83CBC0A25C302CE8D
2 1L5CaYTqgyimJwT8RY2WBBtMuVxzPdH2X3 039D2328D0617BDA04C7D1F775B2E5C9A16105D9E4F14F922ACC61869689E3F53F
3 1AkdX6HckmWsq2j1RCWqM46n4ZEbgvbRdk 03DDC12460B3EE9152B89F9074E83D45A5823327BC2F947296E02157BB4939E20F
4 1PTCkaUS7jVVvQ7VwDGNK4nNNdt6XVqLbE 03E8DDB7AE466FD33D61DA6D26B69C0647BB743AB5C88E7D949BDE4F2707FD7C18
5 1CPWrifcbSNR3VjuqYZeSxWqqbCsiD8Mvk 024DD8FBDA96181F354AC9983BCC65CED733F991B2149003F6E064C84722C538F4
6 16ir5E3NZbqKhYaUZVp33NvX2iJijxN6GL 02807DB9F04E1EDCECC5975E0444F7A93C78C2124FE1D10BBF7B948E47A914ADF6
7 1BgeRDg7rfzwP4nWWEGPAzMheQJgQnC8Yk 034B8D9372A533F0320DA504CD73F21DB3E32E7A13C4241A52F92551C558F28E7A
8 1F98cQLJsErpztRiB46qxcoKUToQcpCneY 034266D06746682BEDC0B617B98596C3FF1D6BB57E6D0C2C36A680CDAFA6EB0DB5
The pubkey derivation functionality is in detemrinistic.py
take a look at the node_from_str()
function to see about creating PubBIP32Node
and PrivBIP32Node
objects from xpub and xpriv BIP32 extended key strings.
Take a look at the ckd()
methods of the classes in this file to see how the actual public and private child key derivation is performed.