tecc.py: _MyVerifyingKey.from_signature is raising low level exception - electrum - Electrum Bitcoin wallet (HTM) git clone https://git.parazyd.org/electrum (DIR) Log (DIR) Files (DIR) Refs (DIR) Submodules --- (DIR) commit 7ebff5616e81e75542ee0d8570a5b54bcc023755 (DIR) parent 0438bbc2c26d32ec17c76a0c8f1beb69255142f2 (HTM) Author: SomberNight <somber.night@protonmail.com> Date: Thu, 14 Jun 2018 20:14:38 +0200 ecc.py: _MyVerifyingKey.from_signature is raising low level exception Traceback (most recent call last): File "...\electrum\gui\qt\util.py", line 645, in run result = task.task() File "...\electrum\lib\wallet.py", line 1500, in sign_transaction k.sign_transaction(tx, password) File "...\electrum\plugins\keepkey\keepkey.py", line 67, in sign_transaction self.plugin.sign_transaction(self, tx, prev_tx, xpub_path) File "...\electrum\plugins\keepkey\keepkey.py", line 263, in sign_transaction tx.update_signatures(signatures) File "...\electrum\lib\transaction.py", line 667, in update_signatures public_key = ecc.ECPubkey.from_sig_string(sig_string, recid, pre_hash) File "...\electrum\lib\ecc.py", line 180, in from_sig_string ecdsa_verifying_key = _MyVerifyingKey.from_signature(sig_string, recid, msg_hash, curve=SECP256k1) File "...\electrum\lib\ecc.py", line 152, in from_signature Q = inv_r * ( s * R + minus_e * G ) File "...\Python\Python36-32\lib\site-packages\ecdsa\ellipticcurve.py", line 143, in __rmul__ return self * other File "...\electrum\lib\ecc_fast.py", line 120, in mul public_pair_bytes = b'\4' + self.x().to_bytes(32, byteorder="big") + self.y().to_bytes(32, byteorder="big") OverflowError: int too big to convert Diffstat: M lib/ecc.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) --- (DIR) diff --git a/lib/ecc.py b/lib/ecc.py t@@ -149,7 +149,10 @@ class _MyVerifyingKey(ecdsa.VerifyingKey): minus_e = -e % order # 1.6 compute Q = r^-1 (sR - eG) inv_r = numbertheory.inverse_mod(r,order) - Q = inv_r * ( s * R + minus_e * G ) + try: + Q = inv_r * ( s * R + minus_e * G ) + except: + raise InvalidECPointException() return klass.from_public_point( Q, curve )