multisig: raise exception if no signature can be added
This commit is contained in:
@@ -599,10 +599,11 @@ class Transaction:
|
|||||||
pubkey = GetPubKey(pkey.pubkey, compressed)
|
pubkey = GetPubKey(pkey.pubkey, compressed)
|
||||||
keypairs[ pubkey.encode('hex') ] = sec
|
keypairs[ pubkey.encode('hex') ] = sec
|
||||||
|
|
||||||
# list of signatures
|
# list of already existing signatures
|
||||||
signatures = txin.get("signatures",[])
|
signatures = txin.get("signatures",[])
|
||||||
|
|
||||||
# check if we have a key corresponding to the redeem script
|
# check if we have a key corresponding to the redeem script
|
||||||
|
found = False
|
||||||
for pubkey, privkey in keypairs.items():
|
for pubkey, privkey in keypairs.items():
|
||||||
if pubkey in redeem_pubkeys:
|
if pubkey in redeem_pubkeys:
|
||||||
# add signature
|
# add signature
|
||||||
@@ -616,6 +617,10 @@ class Transaction:
|
|||||||
sig = private_key.sign_digest( Hash( tx.decode('hex') ), sigencode = ecdsa.util.sigencode_der )
|
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)
|
assert public_key.verify_digest( sig, Hash( tx.decode('hex') ), sigdecode = ecdsa.util.sigdecode_der)
|
||||||
signatures.append( sig.encode('hex') )
|
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)
|
# for p2sh, pubkeysig is a tuple (may be incomplete)
|
||||||
self.inputs[i]["signatures"] = signatures
|
self.inputs[i]["signatures"] = signatures
|
||||||
|
|||||||
Reference in New Issue
Block a user