From a94e1d92a312bc686646f6b20adba81998926714 Mon Sep 17 00:00:00 2001 From: SomberNight Date: Sun, 13 May 2018 16:26:00 +0200 Subject: [PATCH] bitcoin.py: nicer exception in deserialize_privkey if prefix byte is invalid related: #4364 --- lib/bitcoin.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/bitcoin.py b/lib/bitcoin.py index 76888e451..b86a7fd7a 100644 --- 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)))