Merge pull request #800 from junderw/junderw-patch-1

BIP174: Include suggested sighash check
This commit is contained in:
Luke Dashjr 2019-07-23 14:51:01 +00:00 committed by GitHub
commit 6a25c1478f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -325,6 +325,8 @@ For a Signer to only produce valid signatures for what it expects to sign, it mu
* If a witness UTXO is provided, no non-witness signature may be created
* If a redeemScript is provided, the scriptPubKey must be for that redeemScript
* If a witnessScript is provided, the scriptPubKey or the redeemScript must be for that witnessScript
* If a sighash type is provided, the signer must check that the sighash is acceptable. If unacceptable, they must fail.
* If a sighash type is not provided, the signer should sign using SIGHASH_ALL, but may use any sighash type they wish.
=====Simple Signer Algorithm=====
@ -332,13 +334,17 @@ A simple signer can use the following algorithm to determine what and how to sig
<pre>
sign_witness(script_code, i):
for key in psbt.inputs[i].keys:
if IsMine(key):
for key, sighash_type in psbt.inputs[i].items:
if sighash_type == None:
sighash_type = SIGHASH_ALL
if IsMine(key) and IsAcceptable(sighash_type):
sign(witness_sighash(script_code, i, input))
sign_non_witness(script_code, i):
for key in psbt.inputs[i].keys:
if IsMine(key):
for key, sighash_type in psbt.inputs[i].items:
if sighash_type == None:
sighash_type = SIGHASH_ALL
if IsMine(key) and IsAcceptable(sighash_type):
sign(non_witness_sighash(script_code, i, input))
for input,i in enumerate(psbt.inputs):