tbitcoin.py: nicer exception in deserialize_privkey if prefix byte is invalid - electrum - Electrum Bitcoin wallet
HTML git clone https://git.parazyd.org/electrum
DIR Log
DIR Files
DIR Refs
DIR Submodules
---
DIR commit a94e1d92a312bc686646f6b20adba81998926714
DIR parent b175c6b6094525c34039eecc5babd9d798eb9146
HTML 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(-)
---
DIR diff --git a/lib/bitcoin.py b/lib/bitcoin.py
t@@ -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)))