Skip to content

Commit a8b548d

Browse files
committed
test: getdescriptorinfo/importdescriptors with whitespace in pubkeys
1 parent c7afca3 commit a8b548d

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

test/functional/rpc_getdescriptorinfo.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
assert_equal,
1212
assert_raises_rpc_error,
1313
)
14+
from test_framework.wallet_util import generate_keypair
1415

1516

1617
class DescriptorTest(BitcoinTestFramework):
@@ -36,6 +37,12 @@ def run_test(self):
3637
assert_raises_rpc_error(-1, 'getdescriptorinfo', self.nodes[0].getdescriptorinfo)
3738
assert_raises_rpc_error(-3, 'JSON value of type number is not of expected type string', self.nodes[0].getdescriptorinfo, 1)
3839
assert_raises_rpc_error(-5, "'' is not a valid descriptor function", self.nodes[0].getdescriptorinfo, "")
40+
assert_raises_rpc_error(-5, "pk(): Key ' 0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798' is invalid due to whitespace", self.nodes[0].getdescriptorinfo, "pk( 0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798)")
41+
assert_raises_rpc_error(-5, "pk(): Key '0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 ' is invalid due to whitespace", self.nodes[0].getdescriptorinfo, "pk(0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 )")
42+
assert_raises_rpc_error(-5, "Multi: Key ' 03a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7' is invalid due to whitespace", self.nodes[0].getdescriptorinfo, "wsh(multi(2, 03a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7,03774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb,03d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a))")
43+
assert_raises_rpc_error(-5, "Multi: Key ' 03774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb' is invalid due to whitespace", self.nodes[0].getdescriptorinfo, "wsh(multi(2,03a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7, 03774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb,03d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a))")
44+
priv_key = generate_keypair(wif=True)[0]
45+
assert_raises_rpc_error(-5, f"pk(): Key ' {priv_key}' is invalid due to whitespace", self.nodes[0].getdescriptorinfo, f"pk( {priv_key})")
3946

4047
# P2PK output with the specified public key.
4148
self.test_desc('pk(0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798)', isrange=False, issolvable=True, hasprivatekeys=False)

test/functional/wallet_importdescriptors.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,20 @@ def run_test(self):
129129
assert_equal(info["ismine"], True)
130130
assert_equal(info["ischange"], True)
131131

132+
self.log.info("Should not import a descriptor with an invalid public key due to whitespace")
133+
self.test_importdesc({"desc": descsum_create("pkh( " + key.pubkey + ")"),
134+
"timestamp": "now",
135+
"internal": True},
136+
error_code=-5,
137+
error_message=f"pkh(): Key ' {key.pubkey}' is invalid due to whitespace",
138+
success=False)
139+
self.test_importdesc({"desc": descsum_create("pkh(" + key.pubkey + " )"),
140+
"timestamp": "now",
141+
"internal": True},
142+
error_code=-5,
143+
error_message=f"pkh(): Key '{key.pubkey} ' is invalid due to whitespace",
144+
success=False)
145+
132146
# # Test importing of a P2SH-P2WPKH descriptor
133147
key = get_generate_key()
134148
self.log.info("Should not import a p2sh-p2wpkh descriptor without checksum")

0 commit comments

Comments
 (0)