From a56220f0507fb50b4de894d52af8c0be0a5ffcc0 Mon Sep 17 00:00:00 2001 From: thomasv Date: Sat, 23 Feb 2013 14:42:31 +0100 Subject: [PATCH] multisig: raise exception if no signature can be added --- lib/bitcoin.py | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/lib/bitcoin.py b/lib/bitcoin.py index 1fd840d..a70c9b5 100644 --- a/lib/bitcoin.py +++ b/lib/bitcoin.py @@ -599,10 +599,11 @@ class Transaction: pubkey = GetPubKey(pkey.pubkey, compressed) keypairs[ pubkey.encode('hex') ] = sec - # list of signatures + # list of already existing signatures signatures = txin.get("signatures",[]) # check if we have a key corresponding to the redeem script + found = False for pubkey, privkey in keypairs.items(): if pubkey in redeem_pubkeys: # add signature @@ -616,6 +617,10 @@ class Transaction: sig = private_key.sign_digest( Hash( tx.decode('hex') ), sigencode = ecdsa.util.sigencode_der ) assert public_key.verify_digest( sig, Hash( tx.decode('hex') ), sigdecode = ecdsa.util.sigdecode_der) signatures.append( sig.encode('hex') ) + found = True + + if not found: + raise BaseException("public key not found", keypairs.keys(), redeem_pubkeys) # for p2sh, pubkeysig is a tuple (may be incomplete) self.inputs[i]["signatures"] = signatures -- 1.7.1