Add test case from SomberNight

This commit is contained in:
Peter D. Gray 2018-11-08 10:50:47 -05:00
parent b100b5f5c8
commit 6728f50dae
2 changed files with 37 additions and 0 deletions

View File

@ -0,0 +1 @@
70736274ff0100550100000001b5969362c2ff9bfa1031ff20d12302a4044fa733b5404a07fd756b14eb0db0230100000000fdffffff01ac840100000000001976a914ed6fe40bbb27f098c1bc4d80d892d6bc0dcdc58088ac0402160000010122a0860100000000001976a914585aaff9ce51eea405a86d2c883fb6bd2a274d7f88ac220603511e0b8cc9411c2faf7427470b3e440de41f2f3a1e6c1843082265f3bc47cab5181907f0462c000080010000800000008000000000000000000000

View File

@ -766,5 +766,41 @@ def test_sign_multisig_partial_fail(start_sign, end_sign):
signed = end_sign(accept=True)
assert 'looks completely signed' in str(ee)
def test_sign_wutxo(start_sign, set_seed_words, end_sign, cap_story, sim_exec, sim_execfile):
# Example from SomberNight: we can sign it, but signature won't be accepted by
# network because the PSBT lies about the UTXO amount and tries to give away to miners,
# as overly-large fee.
set_seed_words('fault lava rice chest uncle exclude power tornado catalog stool'
' swear rival sun aspect oyster deer pepper exchange scrap toward'
' mix second world shaft')
in_psbt = a2b_hex(open('data/snight-example.psbt', 'rb').read()[:-1])
for fin in (False, True):
start_sign(in_psbt, finalize=fin)
time.sleep(.1)
_, story = cap_story()
#print(story)
assert 'Network fee:\n0.00000500 XTN' in story
ex = dict( had_witness=False, num_inputs=1, num_outputs=1, sw_inputs=[True],
miner_fee=500, warnings_expected=0,
lock_time=1442308, total_value_out=99500,
total_value_in=100000)
# check we understood it right
rv= sim_exec('import main; main.EXPECT = %r; ' % ex)
if rv: pytest.fail(rv)
rv = sim_execfile('devtest/check_decode.py')
if rv: pytest.fail(rv)
signed = end_sign(True, finalize=fin)
open('debug/sn-signed.'+ ('txn' if fin else 'psbt'), 'wb').write(signed)
# EOF