14
14
from test_framework .test_framework import BitcoinTestFramework
15
15
from test_framework .util import (
16
16
assert_equal ,
17
+ assert_raises_rpc_error ,
17
18
find_vout_for_address ,
18
19
)
19
20
from test_framework .script_util import (
33
34
Decimal ,
34
35
)
35
36
37
+ INPUTS = [
38
+ # Valid pay-to-pubkey scripts
39
+ {'txid' : '9b907ef1e3c26fc71fe4a4b3580bc75264112f95050014157059c736f0202e71' , 'vout' : 0 ,
40
+ 'scriptPubKey' : '76a91460baa0f494b38ce3c940dea67f3804dc52d1fb9488ac' },
41
+ {'txid' : '83a4f6a6b73660e13ee6cb3c6063fa3759c50c9b7521d0536022961898f4fb02' , 'vout' : 0 ,
42
+ 'scriptPubKey' : '76a914669b857c03a5ed269d5d85a1ffac9ed5d663072788ac' },
43
+ ]
44
+ OUTPUTS = {'mpLQjfK79b7CCV4VMJWEWAj5Mpx8Up5zxB' : 0.1 }
36
45
37
46
class SignRawTransactionWithKeyTest (BitcoinTestFramework ):
38
47
def set_test_params (self ):
@@ -56,19 +65,8 @@ def successful_signing_test(self):
56
65
2) No script verification error occurred"""
57
66
self .log .info ("Test valid raw transaction with one input" )
58
67
privKeys = ['cUeKHd5orzT3mz8P9pxyREHfsWtVfgsfDjiZZBcjUBAaGk1BTj7N' , 'cVKpPfVKSJxKqVpE9awvXNWuLHCa5j5tiE7K6zbUSptFpTEtiFrA' ]
59
-
60
- inputs = [
61
- # Valid pay-to-pubkey scripts
62
- {'txid' : '9b907ef1e3c26fc71fe4a4b3580bc75264112f95050014157059c736f0202e71' , 'vout' : 0 ,
63
- 'scriptPubKey' : '76a91460baa0f494b38ce3c940dea67f3804dc52d1fb9488ac' },
64
- {'txid' : '83a4f6a6b73660e13ee6cb3c6063fa3759c50c9b7521d0536022961898f4fb02' , 'vout' : 0 ,
65
- 'scriptPubKey' : '76a914669b857c03a5ed269d5d85a1ffac9ed5d663072788ac' },
66
- ]
67
-
68
- outputs = {'mpLQjfK79b7CCV4VMJWEWAj5Mpx8Up5zxB' : 0.1 }
69
-
70
- rawTx = self .nodes [0 ].createrawtransaction (inputs , outputs )
71
- rawTxSigned = self .nodes [0 ].signrawtransactionwithkey (rawTx , privKeys , inputs )
68
+ rawTx = self .nodes [0 ].createrawtransaction (INPUTS , OUTPUTS )
69
+ rawTxSigned = self .nodes [0 ].signrawtransactionwithkey (rawTx , privKeys , INPUTS )
72
70
73
71
# 1) The transaction has a complete set of signatures
74
72
assert rawTxSigned ['complete' ]
@@ -125,9 +123,16 @@ def verify_txn_with_witness_script(self, tx_type):
125
123
assert_equal (spending_tx_signed ['complete' ], True )
126
124
self .nodes [0 ].sendrawtransaction (spending_tx_signed ['hex' ])
127
125
126
+ def invalid_sighashtype_test (self ):
127
+ self .log .info ("Test signing transaction with invalid sighashtype" )
128
+ tx = self .nodes [0 ].createrawtransaction (INPUTS , OUTPUTS )
129
+ privkeys = [self .nodes [0 ].get_deterministic_priv_key ().key ]
130
+ assert_raises_rpc_error (- 8 , "all is not a valid sighash parameter." , self .nodes [0 ].signrawtransactionwithkey , tx , privkeys , sighashtype = "all" )
131
+
128
132
def run_test (self ):
129
133
self .successful_signing_test ()
130
134
self .witness_script_test ()
135
+ self .invalid_sighashtype_test ()
131
136
132
137
133
138
if __name__ == '__main__' :
0 commit comments