53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
"""Generate a JSON dump of keys for validating multimerchant.wallet.keys.
|
|
|
|
First install bitcoind and run
|
|
|
|
$ touch fakewallet.dat
|
|
$ bitcoind --rpcuser=bitcoinrpc --rpcpassword=multimerchanttest --server --wallet=fakewallet.dat
|
|
$ python generate_test_keys.py -o test_keys.json
|
|
"""
|
|
import argparse
|
|
import json
|
|
import pyjsonrpc
|
|
|
|
client = pyjsonrpc.HttpClient(
|
|
'http://localhost:8332',
|
|
username='bitcoinrpc',
|
|
password='multimerchanttest')
|
|
|
|
|
|
def get_new_address():
|
|
address = client.getnewaddress()
|
|
private_key = client.dumpprivkey(address)
|
|
address_info = client.validateaddress(address)
|
|
assert address_info['isvalid']
|
|
data = {
|
|
'private_key': private_key,
|
|
'iscompressed': address_info['iscompressed'],
|
|
'address': address,
|
|
'pubkey': address_info['pubkey'],
|
|
}
|
|
return data
|
|
|
|
|
|
def generate_address_vector(outfile, num_addresses):
|
|
with open(outfile, 'w') as f:
|
|
f.write("[\n")
|
|
for i in range(num_addresses):
|
|
f.write(json.dumps(get_new_address()))
|
|
if i < (num_addresses - 1):
|
|
f.write(",")
|
|
f.write("\n")
|
|
f.write("]")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(
|
|
description="Generate test vectors for pub/private key validation")
|
|
parser.add_argument("-o", "--output", help="output file path",
|
|
default="tests/keys_test_vector.json")
|
|
parser.add_argument("-n", "--num-keys", type=int, default=1000,
|
|
help="Number of keys to generate")
|
|
args = parser.parse_args()
|
|
generate_address_vector(outfile=args.output, num_addresses=args.num_keys)
|