electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

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:
Mlib/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)))