1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-11-26 09:28:13 +00:00

core: ensure multisig (m,n) parameters are valid (#423)

This commit is contained in:
Roman Zeyde 2019-08-20 20:18:34 +03:00 committed by Pavol Rusnak
parent 1eb823be03
commit 5b3427a21d
2 changed files with 5 additions and 1 deletions

View File

@ -250,7 +250,7 @@ def input_script_multisig(
def output_script_multisig(pubkeys, m: int, w: bytearray = None) -> bytearray: def output_script_multisig(pubkeys, m: int, w: bytearray = None) -> bytearray:
n = len(pubkeys) n = len(pubkeys)
if n < 1 or n > 15 or m < 1 or m > 15: if n < 1 or n > 15 or m < 1 or m > 15 or m > n:
raise ScriptsError("Invalid multisig parameters") raise ScriptsError("Invalid multisig parameters")
for pubkey in pubkeys: for pubkey in pubkeys:
if len(pubkey) != 33: if len(pubkey) != 33:

View File

@ -110,6 +110,10 @@ class TestAddress(unittest.TestCase):
address = address_multisig_p2sh(pubkeys, 2, coin) address = address_multisig_p2sh(pubkeys, 2, coin)
self.assertEqual(address, '39bgKC7RFbpoCRbtD5KEdkYKtNyhpsNa3Z') self.assertEqual(address, '39bgKC7RFbpoCRbtD5KEdkYKtNyhpsNa3Z')
for invalid_m in (-1, 0, len(pubkeys) + 1, 16):
with self.assertRaises(scripts.ScriptsError):
address_multisig_p2sh(pubkeys, invalid_m, coin)
def test_multisig_address_p2wsh_in_p2sh(self): def test_multisig_address_p2wsh_in_p2sh(self):
# test data from # test data from
# https://bitcoin.stackexchange.com/questions/62656/generate-a-p2sh-p2wsh-address-and-spend-output-sent-to-it # https://bitcoin.stackexchange.com/questions/62656/generate-a-p2sh-p2wsh-address-and-spend-output-sent-to-it