commit a94e1d92a312bc686646f6b20adba81998926714 parent b175c6b6094525c34039eecc5babd9d798eb9146 Author: SomberNight <somber.night@protonmail.com> Date: Sun, 13 May 2018 16:26:00 +0200 bitcoin.py: nicer exception in deserialize_privkey if prefix byte is invalid related: #4364 Diffstat:
M | lib/bitcoin.py | | | 9 | +++++++-- |
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/lib/bitcoin.py b/lib/bitcoin.py @@ -567,11 +567,16 @@ def deserialize_privkey(key): if txin_type is None: # keys exported in version 3.0.x encoded script type in first byte - txin_type = inv_dict(SCRIPT_TYPES)[vch[0] - constants.net.WIF_PREFIX] + prefix_value = vch[0] - constants.net.WIF_PREFIX + inverse_script_types = inv_dict(SCRIPT_TYPES) + try: + txin_type = inverse_script_types[prefix_value] + except KeyError: + raise BitcoinException('invalid prefix ({}) for WIF key (1)'.format(vch[0])) else: # all other keys must have a fixed first byte if vch[0] != constants.net.WIF_PREFIX: - raise BitcoinException('invalid prefix ({}) for WIF key'.format(vch[0])) + raise BitcoinException('invalid prefix ({}) for WIF key (2)'.format(vch[0])) if len(vch) not in [33, 34]: raise BitcoinException('invalid vch len for WIF key: {}'.format(len(vch)))