cryptoKeyTools/main.py

56 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 (key, chain) bytes
b32master = bip32.getMaster( b39seed )
# serialize master ext prv and pub key
b32masterxprv = bip32.serializeExtPrvKey( b32master )
b32masterxpub = bip32.serializeExtPubKey( (keys.getPubKey( b32master[0] ), b32master[1]) )
print( 'BIP39 phrase, seed\n\t', b39phrase + '\n\t', b39seed.hex() +
'\nBIP32 master\n' + f'\t{b32masterxprv}\n\t{b32masterxpub}' )
print()
prvmaster = (b32master[0], b32master[1])
prvroot0 = bip32.ckdPrv( prvmaster, 0 ) # m/0
parfp = keys.getPubKeyHash( keys.getPubKey( prvmaster[0] ) )[:4] # parent fingerprint
prvroot0ext = bip32.serializeExtPrvKey(
prvroot0, 1, parfp, 0 )
pubroot0ext = bip32.serializeExtPubKey(
(keys.getPubKey( prvroot0[0] ), prvroot0[1]), 1, parfp, 0 )
print( f'm/0 derived ext keys:\n\t{prvroot0ext}\n\t{pubroot0ext}' )
for i in range( 20 ):
# pubkey - prvkey
pk = bip32.ckdPrv( prvroot0, i )[0]
print( 'm/0/{}: {} - {}'.format( 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}' )
"""