script += pubkey
else:
script = '00' # op_0
- for sig in signatures:
+ for pubkey in pubkeys:
+ sig = signatures.get(pubkey)
+ if not sig: continue
sig = sig + '01'
script += op_push(len(sig)/2)
script += sig
# add pubkeys
txin["pubkeys"] = redeem_pubkeys
# get list of already existing signatures
- signatures = txin.get("signatures",[])
+ signatures = txin.get("signatures",{})
# continue if this txin is complete
if len(signatures) == num:
continue
public_key = private_key.get_verifying_key()
sig = private_key.sign_digest_deterministic( Hash( tx_for_sig.decode('hex') ), hashfunc=hashlib.sha256, sigencode = ecdsa.util.sigencode_der )
assert public_key.verify_digest( sig, Hash( tx_for_sig.decode('hex') ), sigdecode = ecdsa.util.sigdecode_der)
- signatures.append( sig.encode('hex') )
+
+ # insert signature in the list
+ signatures[pubkey] = sig.encode('hex')
print_error("adding signature for", pubkey)
txin["signatures"] = signatures
pubkeys, signatures, address = get_address_from_input_script(scriptSig)
else:
pubkeys = []
- signatures = []
+ signatures = {}
address = None
d['address'] = address
'redeemScript':i.get('redeemScript'),
'redeemPubkey':i.get('redeemPubkey'),
'pubkeys':i.get('pubkeys'),
- 'signatures':i.get('signatures',[]),
+ 'signatures':i.get('signatures',{}),
}
info.append(item)
return info