54 lines
1.6 KiB
Python
Executable File
54 lines
1.6 KiB
Python
Executable File
#!/usr/bin/python3 -tt
|
|
|
|
import sys
|
|
import os
|
|
|
|
from random import getrandbits
|
|
|
|
from util import *
|
|
import base58
|
|
import keys
|
|
import bip32
|
|
import bip39
|
|
|
|
if __name__ == '__main__':
|
|
# test bip39
|
|
wlen = 12
|
|
b39phrase = bip39.genPhrase( intBytes( getrandbits( wlen // 3 * 32 ) ) )
|
|
b39seed = bip39.genSeed( b39phrase )
|
|
|
|
# test bip32
|
|
# master private extended key from seed bytes
|
|
masterPrv = bip32.ExtPrvKey.fromSeed(
|
|
bytes.fromhex( '4b381541583be4423346c643850da4b320e46a87ae3d2a4e6da11eba819cd4acba45d239319ac14f863b8d5ab5a0d0c64d2e8a1e7d1457df2e5a3c51c73235be' ) )
|
|
# serialize master ext prv and pub key
|
|
masterxprv = masterPrv.serialize()
|
|
masterxpub = bip32.ExtPubKey.fromExtPrvKey( masterPrv ).serialize()
|
|
|
|
print( 'BIP39 phrase, seed\n\t', b39phrase + '\n\t', b39seed.hex() +
|
|
'\nBIP32 master\n' + f'\t{masterxprv}\n\t{masterxpub}' )
|
|
print()
|
|
|
|
derivPath = "m/0'"
|
|
prvDeriv = masterPrv.getDerivedExtPrvKey( derivPath )
|
|
pubDeriv = bip32.ExtPubKey.fromExtPrvKey( prvDeriv )
|
|
|
|
print( f'derived ext keys:\n\t{prvDeriv.serialize()}\n\t{pubDeriv.serialize()}' )
|
|
|
|
for i in range( 5 ):
|
|
# pubkey - prvkey
|
|
pk = prvDeriv.getChildPrvKey( i )
|
|
print( '{}/{}: {} - {}'.format( derivPath, i,
|
|
keys.getPubKey( pk ).hex(), keys.getPrvKeyWIF( pk ) ) )
|
|
|
|
"""
|
|
pp = b'poop' #input( 'Phrase: ' ).encode()
|
|
prvkey = b32master[0]
|
|
pubkey = keys.getPubKey( prvkey )
|
|
pubaddr = keys.getPubKeyAddr( pubkey )
|
|
print( f'prvkey hex: {prvkey.hex()}' )
|
|
print( f'b58 wif pk: {keys.getPrvKeyWIF( prvkey )}' )
|
|
print( f'pubkey: {pubkey.hex()}\n\thash: {keys.getPubKeyHash( pubkey ).hex()}\n\taddr: {pubaddr}' )
|
|
"""
|
|
|