cryptoKeyTools/main.py

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}' )
"""