mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-10-10 19:43:13 +02:00
test: refactor: introduce generate_keypair
helper with WIF support
In functional tests it is a quite common scenario to generate fresh elliptic curve keypairs, which is currently a bit cumbersome as it involves multiple steps, e.g.: privkey = ECKey() privkey.generate() privkey_wif = bytes_to_wif(privkey.get_bytes()) pubkey = privkey.get_pubkey().get_bytes() Simplify this by providing a new `generate_keypair` helper function that returns the private key either as `ECKey` object or as WIF-string (depending on the boolean `wif` parameter) and the public key as byte-string; these formats are what we mostly need (currently we don't use `ECPubKey` objects from generated keypairs anywhere). With this, most of the affected code blocks following the pattern above can be replaced by one-liners, e.g.: privkey, pubkey = generate_keypair(wif=True) Note that after this commit, the only direct uses of `ECKey` remain in situations where we want to set the private key explicitly, e.g. in MiniWallet (test/functional/test_framework/wallet.py) or the test for the signet miner script (test/functional/tool_signet_miner.py).
This commit is contained in:
@@ -35,8 +35,7 @@ from test_framework.util import (
|
||||
assert_raises_rpc_error,
|
||||
)
|
||||
from test_framework.wallet import getnewdestination
|
||||
from test_framework.key import ECKey
|
||||
from test_framework.wallet_util import bytes_to_wif
|
||||
from test_framework.wallet_util import generate_keypair
|
||||
|
||||
NULLDUMMY_ERROR = "non-mandatory-script-verify-flag (Dummy CHECKMULTISIG argument must be zero)"
|
||||
|
||||
@@ -71,12 +70,9 @@ class NULLDUMMYTest(BitcoinTestFramework):
|
||||
return tx_from_hex(signedtx["hex"])
|
||||
|
||||
def run_test(self):
|
||||
eckey = ECKey()
|
||||
eckey.generate()
|
||||
self.privkey = bytes_to_wif(eckey.get_bytes())
|
||||
self.pubkey = eckey.get_pubkey().get_bytes().hex()
|
||||
cms = self.nodes[0].createmultisig(1, [self.pubkey])
|
||||
wms = self.nodes[0].createmultisig(1, [self.pubkey], 'p2sh-segwit')
|
||||
self.privkey, self.pubkey = generate_keypair(wif=True)
|
||||
cms = self.nodes[0].createmultisig(1, [self.pubkey.hex()])
|
||||
wms = self.nodes[0].createmultisig(1, [self.pubkey.hex()], 'p2sh-segwit')
|
||||
self.ms_address = cms["address"]
|
||||
ms_unlock_details = {"scriptPubKey": address_to_scriptpubkey(self.ms_address).hex(),
|
||||
"redeemScript": cms["redeemScript"]}
|
||||
|
Reference in New Issue
Block a user