sort signatures for multisig

This commit is contained in:
ThomasV 2014-04-03 20:48:31 +02:00
parent 66e1e2707d
commit 8e644a4dc8
1 changed files with 9 additions and 5 deletions

View File

@ -443,7 +443,9 @@ class Transaction:
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
@ -511,7 +513,7 @@ class Transaction:
# 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
@ -531,7 +533,9 @@ class Transaction:
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
@ -572,7 +576,7 @@ class Transaction:
pubkeys, signatures, address = get_address_from_input_script(scriptSig)
else:
pubkeys = []
signatures = []
signatures = {}
address = None
d['address'] = address
@ -681,7 +685,7 @@ class Transaction:
'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