From bc926a2dd58f0c61978d96be72a90569b2512b7a Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 26 Mar 2020 15:58:44 +0100 Subject: [PATCH] tests: convert signtx tests to use request_* shortcuts for readability --- tests/device_tests/test_msg_signtx_bcash.py | 354 +++------- tests/device_tests/test_msg_signtx_bgold.py | 373 +++-------- tests/device_tests/test_msg_signtx_dash.py | 168 ++--- tests/device_tests/test_msg_signtx_decred.py | 256 ++----- tests/device_tests/test_msg_signtx_grs.py | 55 +- tests/device_tests/test_msg_signtx_komodo.py | 80 +-- tests/device_tests/test_msg_signtx_segwit.py | 275 +++----- .../test_msg_signtx_segwit_native.py | 622 +++++------------- tests/device_tests/test_msg_signtx_zcash.py | 54 +- tests/device_tests/test_multisig.py | 172 ++--- tests/device_tests/test_multisig_change.py | 156 ++--- tests/device_tests/test_op_return.py | 148 +---- tests/device_tests/test_protection_levels.py | 60 +- 13 files changed, 753 insertions(+), 2020 deletions(-) diff --git a/tests/device_tests/test_msg_signtx_bcash.py b/tests/device_tests/test_msg_signtx_bcash.py index faef7fb77..d95c94572 100644 --- a/tests/device_tests/test_msg_signtx_bcash.py +++ b/tests/device_tests/test_msg_signtx_bcash.py @@ -21,9 +21,24 @@ from trezorlib.exceptions import TrezorFailure from trezorlib.tools import H_, parse_path from ..tx_cache import TxCache +from .signtx import request_finished, request_input, request_output +B = proto.ButtonRequestType TX_API = TxCache("Bcash") +TXHASH_bc37c2 = bytes.fromhex( + "bc37c28dfb467d2ecb50261387bf752a3977d7e5337915071bb4151e6b711a78" +) +TXHASH_502e85 = bytes.fromhex( + "502e8577b237b0152843a416f8f1ab0c63321b1be7a8cad7bf5c5c216fcf062c" +) +TXHASH_f68caf = bytes.fromhex( + "f68caf10df12d5b07a34601d88fa6856c6edcbf4d05ebef3486510ae1c293d5f" +) +TXHASH_8b6db9 = bytes.fromhex( + "8b6db9b8ba24235d86b053ea2ccb484fc32b96f89c3c39f98d86f90db16076a0" +) + @pytest.mark.altcoin class TestMsgSigntxBch: @@ -32,9 +47,7 @@ class TestMsgSigntxBch: address_n=parse_path("44'/145'/0'/0/0"), # bitcoincash:qr08q88p9etk89wgv05nwlrkm4l0urz4cyl36hh9sv amount=1995344, - prev_hash=bytes.fromhex( - "bc37c28dfb467d2ecb50261387bf752a3977d7e5337915071bb4151e6b711a78" - ), + prev_hash=TXHASH_bc37c2, prev_index=0, script_type=proto.InputScriptType.SPENDADDRESS, ) @@ -51,33 +64,15 @@ class TestMsgSigntxBch: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + request_output(1), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(1), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -94,9 +89,7 @@ class TestMsgSigntxBch: address_n=parse_path("44'/145'/0'/1/0"), # bitcoincash:qzc5q87w069lzg7g3gzx0c8dz83mn7l02scej5aluw amount=1896050, - prev_hash=bytes.fromhex( - "502e8577b237b0152843a416f8f1ab0c63321b1be7a8cad7bf5c5c216fcf062c" - ), + prev_hash=TXHASH_502e85, prev_index=0, script_type=proto.InputScriptType.SPENDADDRESS, ) @@ -104,9 +97,7 @@ class TestMsgSigntxBch: address_n=parse_path("44'/145'/0'/0/1"), # bitcoincash:qr23ajjfd9wd73l87j642puf8cad20lfmqdgwvpat4 amount=73452, - prev_hash=bytes.fromhex( - "502e8577b237b0152843a416f8f1ab0c63321b1be7a8cad7bf5c5c216fcf062c" - ), + prev_hash=TXHASH_502e85, prev_index=1, script_type=proto.InputScriptType.SPENDADDRESS, ) @@ -118,33 +109,15 @@ class TestMsgSigntxBch: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_input(1), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_input(1), + request_output(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -161,9 +134,7 @@ class TestMsgSigntxBch: address_n=parse_path("44'/145'/0'/1/0"), # bitcoincash:qzc5q87w069lzg7g3gzx0c8dz83mn7l02scej5aluw amount=1896050, - prev_hash=bytes.fromhex( - "502e8577b237b0152843a416f8f1ab0c63321b1be7a8cad7bf5c5c216fcf062c" - ), + prev_hash=TXHASH_502e85, prev_index=0, script_type=proto.InputScriptType.SPENDADDRESS, ) @@ -171,9 +142,7 @@ class TestMsgSigntxBch: address_n=parse_path("44'/145'/0'/0/1"), # bitcoincash:qr23ajjfd9wd73l87j642puf8cad20lfmqdgwvpat4 amount=73452, - prev_hash=bytes.fromhex( - "502e8577b237b0152843a416f8f1ab0c63321b1be7a8cad7bf5c5c216fcf062c" - ), + prev_hash=TXHASH_502e85, prev_index=1, script_type=proto.InputScriptType.SPENDADDRESS, ) @@ -185,33 +154,15 @@ class TestMsgSigntxBch: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_input(1), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_input(1), + request_output(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -228,9 +179,7 @@ class TestMsgSigntxBch: address_n=parse_path("44'/145'/0'/1/0"), # bitcoincash:qzc5q87w069lzg7g3gzx0c8dz83mn7l02scej5aluw amount=300, - prev_hash=bytes.fromhex( - "502e8577b237b0152843a416f8f1ab0c63321b1be7a8cad7bf5c5c216fcf062c" - ), + prev_hash=TXHASH_502e85, prev_index=0, script_type=proto.InputScriptType.SPENDADDRESS, ) @@ -238,9 +187,7 @@ class TestMsgSigntxBch: address_n=parse_path("44'/145'/0'/0/1"), # bitcoincash:qr23ajjfd9wd73l87j642puf8cad20lfmqdgwvpat4 amount=70, - prev_hash=bytes.fromhex( - "502e8577b237b0152843a416f8f1ab0c63321b1be7a8cad7bf5c5c216fcf062c" - ), + prev_hash=TXHASH_502e85, prev_index=1, script_type=proto.InputScriptType.SPENDADDRESS, ) @@ -254,33 +201,15 @@ class TestMsgSigntxBch: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_input(1), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_input(1), + request_output(0), + request_finished(), ] ) btc.sign_tx(client, "Bcash", [inp1, inp2], [out1], prev_txes=TX_API) @@ -304,28 +233,13 @@ class TestMsgSigntxBch: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), + request_input(0), + request_input(1), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_input(1), proto.Failure(), ] ) @@ -339,9 +253,7 @@ class TestMsgSigntxBch: inp1 = proto.TxInputType( address_n=parse_path("44'/145'/10'/0/0"), amount=1995344, - prev_hash=bytes.fromhex( - "bc37c28dfb467d2ecb50261387bf752a3977d7e5337915071bb4151e6b711a78" - ), + prev_hash=TXHASH_bc37c2, prev_index=0, script_type=proto.InputScriptType.SPENDADDRESS, ) @@ -374,24 +286,12 @@ class TestMsgSigntxBch: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), + request_input(0), + request_output(0), + request_output(1), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), proto.Failure(code=proto.FailureType.ProcessError), ] ) @@ -429,9 +329,7 @@ class TestMsgSigntxBch: multisig=getmultisig(1, 0, [b"", sig, b""]), # bitcoincash:pp6kcpkhua7789g2vyj0qfkcux3yvje7euhyhltn0a amount=24000, - prev_hash=bytes.fromhex( - "f68caf10df12d5b07a34601d88fa6856c6edcbf4d05ebef3486510ae1c293d5f" - ), + prev_hash=TXHASH_f68caf, prev_index=1, script_type=proto.InputScriptType.SPENDMULTISIG, ) @@ -452,25 +350,13 @@ class TestMsgSigntxBch: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_finished(), ] ) (signatures1, serialized_tx) = btc.sign_tx( @@ -501,9 +387,7 @@ class TestMsgSigntxBch: address_n=parse_path("48'/145'/3'/0/0"), multisig=getmultisig(0, 0), amount=48490, - prev_hash=bytes.fromhex( - "8b6db9b8ba24235d86b053ea2ccb484fc32b96f89c3c39f98d86f90db16076a0" - ), + prev_hash=TXHASH_8b6db9, prev_index=0, script_type=proto.InputScriptType.SPENDMULTISIG, ) @@ -521,33 +405,15 @@ class TestMsgSigntxBch: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(1), + request_finished(), ] ) (signatures1, serialized_tx) = btc.sign_tx( @@ -564,9 +430,7 @@ class TestMsgSigntxBch: multisig=getmultisig(0, 0, [b"", b"", signatures1[0]]), # bitcoincash:pqguz4nqq64jhr5v3kvpq4dsjrkda75hwy86gq0qzw amount=48490, - prev_hash=bytes.fromhex( - "8b6db9b8ba24235d86b053ea2ccb484fc32b96f89c3c39f98d86f90db16076a0" - ), + prev_hash=TXHASH_8b6db9, prev_index=0, script_type=proto.InputScriptType.SPENDMULTISIG, ) @@ -575,33 +439,15 @@ class TestMsgSigntxBch: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(1), + request_finished(), ] ) (signatures1, serialized_tx) = btc.sign_tx( diff --git a/tests/device_tests/test_msg_signtx_bgold.py b/tests/device_tests/test_msg_signtx_bgold.py index ce01ee702..3ec4ca630 100644 --- a/tests/device_tests/test_msg_signtx_bgold.py +++ b/tests/device_tests/test_msg_signtx_bgold.py @@ -21,9 +21,24 @@ from trezorlib.exceptions import TrezorFailure from trezorlib.tools import H_, parse_path from ..tx_cache import TxCache +from .signtx import request_finished, request_input, request_output +B = proto.ButtonRequestType TX_API = TxCache("Bgold") +TXHASH_25526b = bytes.fromhex( + "25526bf06c76ad3082bba930cf627cdd5f1b3cd0b9907dd7ff1a07e14addc985" +) +TXHASH_db77c2 = bytes.fromhex( + "db77c2461b840e6edbe7f9280043184a98e020d9795c1b65cb7cef2551a8fb18" +) +TXHASH_e5040e = bytes.fromhex( + "e5040e1bc1ae7667ffb9e5248e90b2fb93cd9150234151ce90e14ab2f5933bcd" +) +TXHASH_65b811 = bytes.fromhex( + "65b811d3eca0fe6915d9f2d77c86c5a7f19bf66b1b1253c2c51cb4ae5f0c017b" +) + # All data taken from T1 @pytest.mark.altcoin @@ -32,9 +47,7 @@ class TestMsgSigntxBitcoinGold: inp1 = proto.TxInputType( address_n=parse_path("44'/156'/0'/0/0"), amount=1995344, - prev_hash=bytes.fromhex( - "25526bf06c76ad3082bba930cf627cdd5f1b3cd0b9907dd7ff1a07e14addc985" - ), + prev_hash=TXHASH_25526b, prev_index=0, script_type=proto.InputScriptType.SPENDADDRESS, ) @@ -51,33 +64,15 @@ class TestMsgSigntxBitcoinGold: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + request_output(1), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(1), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -93,9 +88,7 @@ class TestMsgSigntxBitcoinGold: inp1 = proto.TxInputType( address_n=parse_path("44'/156'/0'/1/0"), amount=1896050, - prev_hash=bytes.fromhex( - "25526bf06c76ad3082bba930cf627cdd5f1b3cd0b9907dd7ff1a07e14addc985" - ), + prev_hash=TXHASH_25526b, prev_index=0, script_type=proto.InputScriptType.SPENDADDRESS, ) @@ -103,9 +96,7 @@ class TestMsgSigntxBitcoinGold: address_n=parse_path("44'/156'/0'/0/1"), # 1LRspCZNFJcbuNKQkXgHMDucctFRQya5a3 amount=73452, - prev_hash=bytes.fromhex( - "db77c2461b840e6edbe7f9280043184a98e020d9795c1b65cb7cef2551a8fb18" - ), + prev_hash=TXHASH_db77c2, prev_index=1, script_type=proto.InputScriptType.SPENDADDRESS, ) @@ -117,33 +108,15 @@ class TestMsgSigntxBitcoinGold: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_input(1), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_input(1), + request_output(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -159,9 +132,7 @@ class TestMsgSigntxBitcoinGold: inp1 = proto.TxInputType( address_n=parse_path("44'/156'/11'/0/0"), amount=1995344, - prev_hash=bytes.fromhex( - "25526bf06c76ad3082bba930cf627cdd5f1b3cd0b9907dd7ff1a07e14addc985" - ), + prev_hash=TXHASH_25526b, prev_index=0, script_type=proto.InputScriptType.SPENDADDRESS, ) @@ -193,24 +164,12 @@ class TestMsgSigntxBitcoinGold: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), + request_input(0), + request_output(0), + request_output(1), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), proto.Failure(code=proto.FailureType.ProcessError), ] ) @@ -234,9 +193,7 @@ class TestMsgSigntxBitcoinGold: multisig=getmultisig(0, 0), # 33Ju286QvonBz5N1V754ZekQv4GLJqcc5R amount=48490, - prev_hash=bytes.fromhex( - "25526bf06c76ad3082bba930cf627cdd5f1b3cd0b9907dd7ff1a07e14addc985" - ), + prev_hash=TXHASH_25526b, prev_index=0, script_type=proto.InputScriptType.SPENDMULTISIG, ) @@ -254,33 +211,15 @@ class TestMsgSigntxBitcoinGold: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(1), + request_finished(), ] ) signatures, serialized_tx = btc.sign_tx( @@ -296,9 +235,7 @@ class TestMsgSigntxBitcoinGold: address_n=parse_path("48'/156'/1'/0/0"), multisig=getmultisig(0, 0, [b"", b"", signatures[0]]), amount=48490, - prev_hash=bytes.fromhex( - "25526bf06c76ad3082bba930cf627cdd5f1b3cd0b9907dd7ff1a07e14addc985" - ), + prev_hash=TXHASH_25526b, prev_index=0, script_type=proto.InputScriptType.SPENDMULTISIG, ) @@ -307,33 +244,15 @@ class TestMsgSigntxBitcoinGold: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(1), + request_finished(), ] ) signatures, serialized_tx = btc.sign_tx( @@ -353,9 +272,7 @@ class TestMsgSigntxBitcoinGold: inp1 = proto.TxInputType( address_n=parse_path("49'/156'/0'/1/0"), amount=123456789, - prev_hash=bytes.fromhex( - "25526bf06c76ad3082bba930cf627cdd5f1b3cd0b9907dd7ff1a07e14addc985" - ), + prev_hash=TXHASH_25526b, prev_index=0, script_type=proto.InputScriptType.SPENDP2SHWITNESS, ) @@ -372,38 +289,17 @@ class TestMsgSigntxBitcoinGold: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(1), + request_input(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -419,9 +315,7 @@ class TestMsgSigntxBitcoinGold: inp1 = proto.TxInputType( address_n=parse_path("49'/156'/0'/1/0"), amount=123456789, - prev_hash=bytes.fromhex( - "25526bf06c76ad3082bba930cf627cdd5f1b3cd0b9907dd7ff1a07e14addc985" - ), + prev_hash=TXHASH_25526b, prev_index=0, script_type=proto.InputScriptType.SPENDP2SHWITNESS, ) @@ -438,37 +332,16 @@ class TestMsgSigntxBitcoinGold: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(1), + request_input(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -492,9 +365,7 @@ class TestMsgSigntxBitcoinGold: inp1 = proto.TxInputType( address_n=parse_path("49'/156'/1'/1/0"), - prev_hash=bytes.fromhex( - "25526bf06c76ad3082bba930cf627cdd5f1b3cd0b9907dd7ff1a07e14addc985" - ), + prev_hash=TXHASH_25526b, prev_index=1, script_type=proto.InputScriptType.SPENDP2SHWITNESS, multisig=multisig, @@ -510,29 +381,14 @@ class TestMsgSigntxBitcoinGold: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_input(0), + request_finished(), ] ) signatures, _ = btc.sign_tx( @@ -544,29 +400,14 @@ class TestMsgSigntxBitcoinGold: inp1.address_n[2] = H_(3) client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_input(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -584,18 +425,14 @@ class TestMsgSigntxBitcoinGold: inp1 = proto.TxInputType( address_n=parse_path("44'/156'/0'/0/0"), amount=31000000, - prev_hash=bytes.fromhex( - "e5040e1bc1ae7667ffb9e5248e90b2fb93cd9150234151ce90e14ab2f5933bcd" - ), + prev_hash=TXHASH_e5040e, prev_index=0, ) inp2 = proto.TxInputType( address_n=parse_path("84'/156'/0'/1/0"), amount=7289000, - prev_hash=bytes.fromhex( - "65b811d3eca0fe6915d9f2d77c86c5a7f19bf66b1b1253c2c51cb4ae5f0c017b" - ), + prev_hash=TXHASH_65b811, prev_index=1, script_type=proto.InputScriptType.SPENDWITNESS, ) diff --git a/tests/device_tests/test_msg_signtx_dash.py b/tests/device_tests/test_msg_signtx_dash.py index 3714d2ae9..9706fcbb0 100644 --- a/tests/device_tests/test_msg_signtx_dash.py +++ b/tests/device_tests/test_msg_signtx_dash.py @@ -20,9 +20,24 @@ from trezorlib import btc, messages as proto from trezorlib.tools import parse_path from ..tx_cache import TxCache +from .signtx import ( + request_extra_data, + request_finished, + request_input, + request_meta, + request_output, +) +B = proto.ButtonRequestType TX_API = TxCache("Dash") +TXHASH_5579ea = bytes.fromhex( + "5579eaa64b2a0233e7d8d037f5a5afc957cedf48f1c4067e9e33ca6df22ab04f" +) +TXHASH_15575a = bytes.fromhex( + "15575a1c874bd60a819884e116c42e6791c8283ce1fc3b79f0d18531a61bbb8a" +) + @pytest.mark.altcoin class TestMsgSigntxDash: @@ -31,9 +46,7 @@ class TestMsgSigntxDash: address_n=parse_path("44'/5'/0'/0/0"), # dash:XdTw4G5AWW4cogGd7ayybyBNDbuB45UpgH amount=1000000000, - prev_hash=bytes.fromhex( - "5579eaa64b2a0233e7d8d037f5a5afc957cedf48f1c4067e9e33ca6df22ab04f" - ), + prev_hash=TXHASH_5579ea, prev_index=1, script_type=proto.InputScriptType.SPENDADDRESS, ) @@ -45,57 +58,19 @@ class TestMsgSigntxDash: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXMETA, - details=proto.TxRequestDetailsType(tx_hash=inp1.prev_hash), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=inp1.prev_hash - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - request_index=1, tx_hash=inp1.prev_hash - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=inp1.prev_hash - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - request_index=1, tx_hash=inp1.prev_hash - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_meta(inp1.prev_hash), + request_input(0, inp1.prev_hash), + request_input(1, inp1.prev_hash), + request_output(0, inp1.prev_hash), + request_output(1, inp1.prev_hash), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -112,9 +87,7 @@ class TestMsgSigntxDash: address_n=parse_path("44'/5'/0'/0/0"), # dash:XdTw4G5AWW4cogGd7ayybyBNDbuB45UpgH amount=4095000260, - prev_hash=bytes.fromhex( - "15575a1c874bd60a819884e116c42e6791c8283ce1fc3b79f0d18531a61bbb8a" - ), + prev_hash=TXHASH_15575a, prev_index=1, script_type=proto.InputScriptType.SPENDADDRESS, ) @@ -131,71 +104,22 @@ class TestMsgSigntxDash: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXMETA, - details=proto.TxRequestDetailsType(tx_hash=inp1.prev_hash), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=inp1.prev_hash - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=inp1.prev_hash - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - request_index=1, tx_hash=inp1.prev_hash - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXEXTRADATA, - details=proto.TxRequestDetailsType( - extra_data_len=39, - extra_data_offset=0, - tx_hash=inp1.prev_hash, - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_meta(inp1.prev_hash), + request_input(0, inp1.prev_hash), + request_output(0, inp1.prev_hash), + request_output(1, inp1.prev_hash), + request_extra_data(0, 39, inp1.prev_hash), + request_output(0), + request_output(1), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(1), + request_output(0), + request_output(1), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( diff --git a/tests/device_tests/test_msg_signtx_decred.py b/tests/device_tests/test_msg_signtx_decred.py index 4bf28a88d..18ddbbe57 100644 --- a/tests/device_tests/test_msg_signtx_decred.py +++ b/tests/device_tests/test_msg_signtx_decred.py @@ -20,7 +20,9 @@ from trezorlib import btc, messages as proto from trezorlib.tools import parse_path from ..tx_cache import TxCache +from .signtx import request_finished, request_input, request_meta, request_output +B = proto.ButtonRequestType TX_API = TxCache("Decred Testnet") @@ -67,44 +69,17 @@ class TestMsgSigntxDecred: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXMETA, - details=proto.TxRequestDetailsType(tx_hash=TXHASH_e16248), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - tx_hash=TXHASH_e16248, request_index=0 - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - tx_hash=TXHASH_e16248, request_index=0 - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - tx_hash=TXHASH_e16248, request_index=1 - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.FeeOverThreshold), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_meta(TXHASH_e16248), + request_input(0, TXHASH_e16248), + request_output(0, TXHASH_e16248), + request_output(1, TXHASH_e16248), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.FeeOverThreshold), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -162,101 +137,28 @@ class TestMsgSigntxDecred: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXMETA, - details=proto.TxRequestDetailsType(tx_hash=TXHASH_5e6e35), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - tx_hash=TXHASH_5e6e35, request_index=0 - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - tx_hash=TXHASH_5e6e35, request_index=0 - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXMETA, - details=proto.TxRequestDetailsType(tx_hash=TXHASH_ccf95b), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - tx_hash=TXHASH_ccf95b, request_index=0 - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - tx_hash=TXHASH_ccf95b, request_index=0 - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - tx_hash=TXHASH_ccf95b, request_index=1 - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=2), - ), - proto.TxRequest( - request_type=proto.RequestType.TXMETA, - details=proto.TxRequestDetailsType(tx_hash=TXHASH_f395ef), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - tx_hash=TXHASH_f395ef, request_index=0 - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - tx_hash=TXHASH_f395ef, request_index=0 - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - tx_hash=TXHASH_f395ef, request_index=1 - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=2), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_meta(TXHASH_5e6e35), + request_input(0, TXHASH_5e6e35), + request_output(0, TXHASH_5e6e35), + request_input(1), + request_meta(TXHASH_ccf95b), + request_input(0, TXHASH_ccf95b), + request_output(0, TXHASH_ccf95b), + request_output(1, TXHASH_ccf95b), + request_input(2), + request_meta(TXHASH_f395ef), + request_input(0, TXHASH_f395ef), + request_output(0, TXHASH_f395ef), + request_output(1, TXHASH_f395ef), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_input(1), + request_input(2), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -333,77 +235,23 @@ class TestMsgSigntxDecred: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXMETA, - details=proto.TxRequestDetailsType(tx_hash=TXHASH_3f7c39), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - tx_hash=TXHASH_3f7c39, request_index=0 - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - tx_hash=TXHASH_3f7c39, request_index=0 - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - tx_hash=TXHASH_3f7c39, request_index=1 - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXMETA, - details=proto.TxRequestDetailsType(tx_hash=TXHASH_16da18), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - tx_hash=TXHASH_16da18, request_index=0 - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - tx_hash=TXHASH_16da18, request_index=0 - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - tx_hash=TXHASH_16da18, request_index=1 - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_meta(TXHASH_3f7c39), + request_input(0, TXHASH_3f7c39), + request_output(0, TXHASH_3f7c39), + request_output(1, TXHASH_3f7c39), + request_input(1), + request_meta(TXHASH_16da18), + request_input(0, TXHASH_16da18), + request_output(0, TXHASH_16da18), + request_output(1, TXHASH_16da18), + request_output(0), + request_output(1), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_input(1), + request_finished(), ] ) signature, serialized_tx = btc.sign_tx( diff --git a/tests/device_tests/test_msg_signtx_grs.py b/tests/device_tests/test_msg_signtx_grs.py index fd3676b84..0ac3b9dce 100644 --- a/tests/device_tests/test_msg_signtx_grs.py +++ b/tests/device_tests/test_msg_signtx_grs.py @@ -21,19 +21,27 @@ from trezorlib.tools import parse_path from ..tx_cache import TxCache +B = proto.ButtonRequestType TX_API = TxCache("Groestlcoin") +TXHASH_cb74c8 = bytes.fromhex( + "cb74c8478c5814742c87cffdb4a21231869888f8042fb07a90e015a9db1f9d4a" +) +TXHASH_09a48b = bytes.fromhex( + "09a48bce2f9d5c6e4f0cb9ea1b32d0891855e8acfe5334f9ebd72b9ad2de60cf" +) +TXHASH_4f2f85 = bytes.fromhex( + "4f2f857f39ed1afe05542d058fb0be865a387446e32fc876d086203f483f61d1" +) + @pytest.mark.altcoin class TestMsgSigntxGRS: def test_legacy(self, client): inp1 = proto.TxInputType( - address_n=parse_path( - "44'/17'/0'/0/2" - ), # FXHDsC5ZqWQHkDmShzgRVZ1MatpWhwxTAA - prev_hash=bytes.fromhex( - "cb74c8478c5814742c87cffdb4a21231869888f8042fb07a90e015a9db1f9d4a" - ), + # FXHDsC5ZqWQHkDmShzgRVZ1MatpWhwxTAA + address_n=parse_path("44'/17'/0'/0/2"), + prev_hash=TXHASH_cb74c8, prev_index=0, ) out1 = proto.TxOutputType( @@ -51,12 +59,9 @@ class TestMsgSigntxGRS: def test_legacy_change(self, client): inp1 = proto.TxInputType( - address_n=parse_path( - "44'/17'/0'/0/2" - ), # FXHDsC5ZqWQHkDmShzgRVZ1MatpWhwxTAA - prev_hash=bytes.fromhex( - "cb74c8478c5814742c87cffdb4a21231869888f8042fb07a90e015a9db1f9d4a" - ), + # FXHDsC5ZqWQHkDmShzgRVZ1MatpWhwxTAA + address_n=parse_path("44'/17'/0'/0/2"), + prev_hash=TXHASH_cb74c8, prev_index=0, ) out1 = proto.TxOutputType( @@ -76,13 +81,10 @@ class TestMsgSigntxGRS: def test_send_segwit_p2sh(self, client): inp1 = proto.TxInputType( - address_n=parse_path( - "49'/1'/0'/1/0" - ), # 2N1LGaGg836mqSQqiuUBLfcyGBhyZYBtBZ7 + # 2N1LGaGg836mqSQqiuUBLfcyGBhyZYBtBZ7 + address_n=parse_path("49'/1'/0'/1/0"), amount=123456789, - prev_hash=bytes.fromhex( - "09a48bce2f9d5c6e4f0cb9ea1b32d0891855e8acfe5334f9ebd72b9ad2de60cf" - ), + prev_hash=TXHASH_09a48b, prev_index=0, script_type=proto.InputScriptType.SPENDP2SHWITNESS, sequence=0xFFFFFFFE, @@ -108,13 +110,10 @@ class TestMsgSigntxGRS: def test_send_segwit_p2sh_change(self, client): inp1 = proto.TxInputType( - address_n=parse_path( - "49'/1'/0'/1/0" - ), # 2N1LGaGg836mqSQqiuUBLfcyGBhyZYBtBZ7 + # 2N1LGaGg836mqSQqiuUBLfcyGBhyZYBtBZ7 + address_n=parse_path("49'/1'/0'/1/0"), amount=123456789, - prev_hash=bytes.fromhex( - "09a48bce2f9d5c6e4f0cb9ea1b32d0891855e8acfe5334f9ebd72b9ad2de60cf" - ), + prev_hash=TXHASH_09a48b, prev_index=0, script_type=proto.InputScriptType.SPENDP2SHWITNESS, sequence=0xFFFFFFFE, @@ -142,9 +141,7 @@ class TestMsgSigntxGRS: inp1 = proto.TxInputType( address_n=parse_path("84'/1'/0'/0/0"), amount=12300000, - prev_hash=bytes.fromhex( - "4f2f857f39ed1afe05542d058fb0be865a387446e32fc876d086203f483f61d1" - ), + prev_hash=TXHASH_4f2f85, prev_index=0, script_type=proto.InputScriptType.SPENDWITNESS, sequence=0xFFFFFFFE, @@ -172,9 +169,7 @@ class TestMsgSigntxGRS: inp1 = proto.TxInputType( address_n=parse_path("84'/1'/0'/0/0"), amount=12300000, - prev_hash=bytes.fromhex( - "4f2f857f39ed1afe05542d058fb0be865a387446e32fc876d086203f483f61d1" - ), + prev_hash=TXHASH_4f2f85, prev_index=0, script_type=proto.InputScriptType.SPENDWITNESS, sequence=0xFFFFFFFE, diff --git a/tests/device_tests/test_msg_signtx_komodo.py b/tests/device_tests/test_msg_signtx_komodo.py index a6e5fb0d9..917b8d37d 100644 --- a/tests/device_tests/test_msg_signtx_komodo.py +++ b/tests/device_tests/test_msg_signtx_komodo.py @@ -20,7 +20,9 @@ from trezorlib import btc, messages as proto from trezorlib.tools import parse_path from ..tx_cache import TxCache +from .signtx import request_finished, request_input, request_output +B = proto.ButtonRequestType TX_API = TxCache("Komodo") TXHASH_2807c = bytes.fromhex( @@ -39,9 +41,8 @@ class TestMsgSigntxKomodo: # input 1: 10.9998 KMD inp1 = proto.TxInputType( - address_n=parse_path( - "44'/141'/0'/0/0" - ), # R9HgJZo6JBKmPvhm7whLSR8wiHyZrEDVRi + # R9HgJZo6JBKmPvhm7whLSR8wiHyZrEDVRi + address_n=parse_path("44'/141'/0'/0/0"), amount=1099980000, prev_hash=TXHASH_2807c, prev_index=0, @@ -55,29 +56,17 @@ class TestMsgSigntxKomodo: with client: er = [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), ] if client.features.model != "1": # extra screen for lock_time - er += [proto.ButtonRequest(code=proto.ButtonRequestType.SignTx)] + er += [proto.ButtonRequest(code=B.SignTx)] er += [ - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_finished(), ] client.set_expected_responses(er) @@ -103,9 +92,8 @@ class TestMsgSigntxKomodo: # input 1: 10.9997 KMD inp1 = proto.TxInputType( - address_n=parse_path( - "44'/141'/0'/0/0" - ), # R9HgJZo6JBKmPvhm7whLSR8wiHyZrEDVRi + # R9HgJZo6JBKmPvhm7whLSR8wiHyZrEDVRi + address_n=parse_path("44'/141'/0'/0/0"), amount=1099970000, prev_hash=TXHASH_7b28bd, prev_index=0, @@ -126,38 +114,20 @@ class TestMsgSigntxKomodo: with client: er = [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), + proto.ButtonRequest(code=B.ConfirmOutput), ] if client.features.model != "1": # extra screen for lock_time - er += [proto.ButtonRequest(code=proto.ButtonRequestType.SignTx)] + er += [proto.ButtonRequest(code=B.SignTx)] er += [ - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(1), + request_finished(), ] client.set_expected_responses(er) diff --git a/tests/device_tests/test_msg_signtx_segwit.py b/tests/device_tests/test_msg_signtx_segwit.py index 8e6f135b7..141d42374 100644 --- a/tests/device_tests/test_msg_signtx_segwit.py +++ b/tests/device_tests/test_msg_signtx_segwit.py @@ -21,9 +21,18 @@ from trezorlib.exceptions import TrezorFailure from trezorlib.tools import H_, parse_path from ..tx_cache import TxCache +from .signtx import request_finished, request_input, request_output +B = proto.ButtonRequestType TX_API = TxCache("Testnet") +TXHASH_20912f = bytes.fromhex( + "20912f98ea3ed849042efed0fdac8cb4fc301961c5988cba56902d8ffb61c337" +) +TXHASH_9c3192 = bytes.fromhex( + "9c31922be756c06d02167656465c8dc83bb553bf386a3f478ae65b5c021002be" +) + class TestMsgSigntxSegwit: def test_send_p2sh(self, client): @@ -31,9 +40,7 @@ class TestMsgSigntxSegwit: address_n=parse_path("49'/1'/0'/1/0"), # 2N1LGaGg836mqSQqiuUBLfcyGBhyZbremDX amount=123456789, - prev_hash=bytes.fromhex( - "20912f98ea3ed849042efed0fdac8cb4fc301961c5988cba56902d8ffb61c337" - ), + prev_hash=TXHASH_20912f, prev_index=0, script_type=proto.InputScriptType.SPENDP2SHWITNESS, ) @@ -50,38 +57,17 @@ class TestMsgSigntxSegwit: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(1), + request_input(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -98,9 +84,7 @@ class TestMsgSigntxSegwit: address_n=parse_path("49'/1'/0'/1/0"), # 2N1LGaGg836mqSQqiuUBLfcyGBhyZbremDX amount=123456789, - prev_hash=bytes.fromhex( - "20912f98ea3ed849042efed0fdac8cb4fc301961c5988cba56902d8ffb61c337" - ), + prev_hash=TXHASH_20912f, prev_index=0, script_type=proto.InputScriptType.SPENDP2SHWITNESS, ) @@ -117,37 +101,16 @@ class TestMsgSigntxSegwit: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(1), + request_input(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -177,29 +140,14 @@ class TestMsgSigntxSegwit: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_input(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx(client, "Testnet", [inp1], [out1]) @@ -221,9 +169,7 @@ class TestMsgSigntxSegwit: inp1 = proto.TxInputType( address_n=parse_path("49'/1'/1'/1/0"), - prev_hash=bytes.fromhex( - "9c31922be756c06d02167656465c8dc83bb553bf386a3f478ae65b5c021002be" - ), + prev_hash=TXHASH_9c3192, prev_index=1, script_type=proto.InputScriptType.SPENDP2SHWITNESS, multisig=multisig, @@ -239,29 +185,14 @@ class TestMsgSigntxSegwit: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_input(0), + request_finished(), ] ) signatures, _ = btc.sign_tx( @@ -273,29 +204,14 @@ class TestMsgSigntxSegwit: inp1.address_n[2] = H_(3) client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_input(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -312,9 +228,7 @@ class TestMsgSigntxSegwit: address_n=parse_path("49'/1'/0'/1/0"), # 2N1LGaGg836mqSQqiuUBLfcyGBhyZbremDX amount=123456789, - prev_hash=bytes.fromhex( - "20912f98ea3ed849042efed0fdac8cb4fc301961c5988cba56902d8ffb61c337" - ), + prev_hash=TXHASH_20912f, prev_index=0, script_type=proto.InputScriptType.SPENDP2SHWITNESS, ) @@ -333,38 +247,17 @@ class TestMsgSigntxSegwit: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(1), + request_input(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -392,33 +285,21 @@ class TestMsgSigntxSegwit: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), + proto.ButtonRequest(code=B.SignTx), + request_input(0), proto.Failure(code=proto.FailureType.ProcessError), ] ) with pytest.raises(TrezorFailure) as exc: btc.sign_tx(client, "Testnet", [inp1], [out1, out2], prev_txes=TX_API) - assert exc.value.args[0] == proto.FailureType.ProcessError + assert exc.value.code == proto.FailureType.ProcessError if client.features.model == "1": - assert exc.value.args[1].endswith("Failed to compile input") + assert exc.value.message.endswith("Failed to compile input") else: - assert exc.value.args[1].endswith( + assert exc.value.message.endswith( "Transaction has changed during signing" ) diff --git a/tests/device_tests/test_msg_signtx_segwit_native.py b/tests/device_tests/test_msg_signtx_segwit_native.py index 1d2e3e4fb..2d2eb19c6 100644 --- a/tests/device_tests/test_msg_signtx_segwit_native.py +++ b/tests/device_tests/test_msg_signtx_segwit_native.py @@ -21,9 +21,39 @@ from trezorlib.tools import H_, parse_path from ..bip32 import deserialize from ..tx_cache import TxCache +from .signtx import request_finished, request_input, request_output +B = proto.ButtonRequestType TX_API = TxCache("Testnet") +TXHASH_20912f = bytes.fromhex( + "20912f98ea3ed849042efed0fdac8cb4fc301961c5988cba56902d8ffb61c337" +) +TXHASH_091446 = bytes.fromhex( + "09144602765ce3dd8f4329445b20e3684e948709c5cdcaf12da3bb079c99448a" +) +TXHASH_65b811 = bytes.fromhex( + "65b811d3eca0fe6915d9f2d77c86c5a7f19bf66b1b1253c2c51cb4ae5f0c017b" +) +TXHASH_e5040e = bytes.fromhex( + "e5040e1bc1ae7667ffb9e5248e90b2fb93cd9150234151ce90e14ab2f5933bcd" +) +TXHASH_9c3192 = bytes.fromhex( + "9c31922be756c06d02167656465c8dc83bb553bf386a3f478ae65b5c021002be" +) +TXHASH_f41cbe = bytes.fromhex( + "f41cbedd8becee05a830f418d13aa665125464547db5c7a6cd28f21639fe1228" +) +TXHASH_c93480 = bytes.fromhex( + "c9348040bbc2024e12dcb4a0b4806b0398646b91acf314da028c3f03dd0179fc" +) +TXHASH_31bc1c = bytes.fromhex( + "31bc1c88ce6ae337a6b3057a16d5bad0b561ad1dfc047d0a7fbb8814668f91e5" +) +TXHASH_a345b8 = bytes.fromhex( + "a345b85759b385c6446055e4c3baa77e8161a65009dc009489b48aa6587ce348" +) + class TestMsgSigntxSegwitNative: def test_send_p2sh(self, client): @@ -31,9 +61,7 @@ class TestMsgSigntxSegwitNative: address_n=parse_path("49'/1'/0'/1/0"), # 2N1LGaGg836mqSQqiuUBLfcyGBhyZbremDX amount=123456789, - prev_hash=bytes.fromhex( - "20912f98ea3ed849042efed0fdac8cb4fc301961c5988cba56902d8ffb61c337" - ), + prev_hash=TXHASH_20912f, prev_index=0, script_type=proto.InputScriptType.SPENDP2SHWITNESS, ) @@ -50,38 +78,17 @@ class TestMsgSigntxSegwitNative: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(1), + request_input(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -98,9 +105,7 @@ class TestMsgSigntxSegwitNative: address_n=parse_path("49'/1'/0'/1/0"), # 2N1LGaGg836mqSQqiuUBLfcyGBhyZbremDX amount=123456789, - prev_hash=bytes.fromhex( - "20912f98ea3ed849042efed0fdac8cb4fc301961c5988cba56902d8ffb61c337" - ), + prev_hash=TXHASH_20912f, prev_index=0, script_type=proto.InputScriptType.SPENDP2SHWITNESS, ) @@ -117,37 +122,16 @@ class TestMsgSigntxSegwitNative: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(1), + request_input(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -163,9 +147,7 @@ class TestMsgSigntxSegwitNative: inp1 = proto.TxInputType( address_n=parse_path("84'/1'/0'/0/0"), amount=12300000, - prev_hash=bytes.fromhex( - "09144602765ce3dd8f4329445b20e3684e948709c5cdcaf12da3bb079c99448a" - ), + prev_hash=TXHASH_091446, prev_index=0, script_type=proto.InputScriptType.SPENDWITNESS, ) @@ -182,38 +164,17 @@ class TestMsgSigntxSegwitNative: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(1), + request_input(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -229,9 +190,7 @@ class TestMsgSigntxSegwitNative: inp1 = proto.TxInputType( address_n=parse_path("84'/1'/0'/0/0"), amount=12300000, - prev_hash=bytes.fromhex( - "09144602765ce3dd8f4329445b20e3684e948709c5cdcaf12da3bb079c99448a" - ), + prev_hash=TXHASH_091446, prev_index=0, script_type=proto.InputScriptType.SPENDWITNESS, ) @@ -248,37 +207,16 @@ class TestMsgSigntxSegwitNative: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(1), + request_input(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -295,18 +233,14 @@ class TestMsgSigntxSegwitNative: address_n=parse_path("49'/1'/0'/1/0"), # 2N1LGaGg836mqSQqiuUBLfcyGBhyZbremDX amount=111145789, - prev_hash=bytes.fromhex( - "09144602765ce3dd8f4329445b20e3684e948709c5cdcaf12da3bb079c99448a" - ), + prev_hash=TXHASH_091446, prev_index=1, script_type=proto.InputScriptType.SPENDP2SHWITNESS, ) inp2 = proto.TxInputType( address_n=parse_path("84'/1'/0'/1/0"), amount=7289000, - prev_hash=bytes.fromhex( - "65b811d3eca0fe6915d9f2d77c86c5a7f19bf66b1b1253c2c51cb4ae5f0c017b" - ), + prev_hash=TXHASH_65b811, prev_index=1, script_type=proto.InputScriptType.SPENDWITNESS, ) @@ -331,59 +265,23 @@ class TestMsgSigntxSegwitNative: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=2), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=2), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_input(1), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(2), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_input(1), + request_output(0), + request_output(1), + request_output(2), + request_input(0), + request_input(1), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -401,18 +299,14 @@ class TestMsgSigntxSegwitNative: inp1 = proto.TxInputType( address_n=parse_path("44'/1'/0'/0/0"), # amount=31000000, - prev_hash=bytes.fromhex( - "e5040e1bc1ae7667ffb9e5248e90b2fb93cd9150234151ce90e14ab2f5933bcd" - ), + prev_hash=TXHASH_e5040e, prev_index=0, ) inp2 = proto.TxInputType( address_n=parse_path("84'/1'/0'/1/0"), amount=7289000, - prev_hash=bytes.fromhex( - "65b811d3eca0fe6915d9f2d77c86c5a7f19bf66b1b1253c2c51cb4ae5f0c017b" - ), + prev_hash=TXHASH_65b811, prev_index=1, script_type=proto.InputScriptType.SPENDWITNESS, ) @@ -447,9 +341,7 @@ class TestMsgSigntxSegwitNative: inp1 = proto.TxInputType( address_n=parse_path("49'/1'/1'/0/0"), - prev_hash=bytes.fromhex( - "9c31922be756c06d02167656465c8dc83bb553bf386a3f478ae65b5c021002be" - ), + prev_hash=TXHASH_9c3192, prev_index=1, script_type=proto.InputScriptType.SPENDP2SHWITNESS, multisig=multisig, @@ -465,29 +357,14 @@ class TestMsgSigntxSegwitNative: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_input(0), + request_finished(), ] ) signatures, _ = btc.sign_tx( @@ -499,29 +376,14 @@ class TestMsgSigntxSegwitNative: inp1.address_n[2] = H_(3) client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_input(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -548,9 +410,7 @@ class TestMsgSigntxSegwitNative: inp1 = proto.TxInputType( address_n=parse_path("84'/1'/2'/0/1"), - prev_hash=bytes.fromhex( - "f41cbedd8becee05a830f418d13aa665125464547db5c7a6cd28f21639fe1228" - ), + prev_hash=TXHASH_f41cbe, prev_index=0, script_type=proto.InputScriptType.SPENDWITNESS, multisig=multisig, @@ -566,29 +426,14 @@ class TestMsgSigntxSegwitNative: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_input(0), + request_finished(), ] ) signatures, _ = btc.sign_tx( @@ -600,29 +445,14 @@ class TestMsgSigntxSegwitNative: inp1.address_n[2] = H_(1) client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_input(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -655,9 +485,7 @@ class TestMsgSigntxSegwitNative: inp1 = proto.TxInputType( address_n=parse_path("84'/1'/1'/1/0"), - prev_hash=bytes.fromhex( - "c9348040bbc2024e12dcb4a0b4806b0398646b91acf314da028c3f03dd0179fc" - ), + prev_hash=TXHASH_c93480, prev_index=0, script_type=proto.InputScriptType.SPENDWITNESS, multisig=multisig, @@ -674,28 +502,13 @@ class TestMsgSigntxSegwitNative: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_input(0), + request_finished(), ] ) signatures, _ = btc.sign_tx( @@ -708,28 +521,13 @@ class TestMsgSigntxSegwitNative: out1.address_n[2] = H_(3) client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_input(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -762,9 +560,7 @@ class TestMsgSigntxSegwitNative: inp1 = proto.TxInputType( address_n=parse_path("49'/1'/1'/1/1"), - prev_hash=bytes.fromhex( - "31bc1c88ce6ae337a6b3057a16d5bad0b561ad1dfc047d0a7fbb8814668f91e5" - ), + prev_hash=TXHASH_31bc1c, prev_index=0, script_type=proto.InputScriptType.SPENDP2SHWITNESS, multisig=multisig, @@ -781,28 +577,13 @@ class TestMsgSigntxSegwitNative: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_input(0), + request_finished(), ] ) signatures, _ = btc.sign_tx( @@ -815,28 +596,13 @@ class TestMsgSigntxSegwitNative: out1.address_n[2] = H_(3) client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_input(0), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -873,18 +639,14 @@ class TestMsgSigntxSegwitNative: inp1 = proto.TxInputType( address_n=parse_path("84'/1'/0'/0/0"), amount=12300000, - prev_hash=bytes.fromhex( - "09144602765ce3dd8f4329445b20e3684e948709c5cdcaf12da3bb079c99448a" - ), + prev_hash=TXHASH_091446, prev_index=0, script_type=proto.InputScriptType.SPENDWITNESS, ) inp2 = proto.TxInputType( address_n=parse_path("84'/1'/0'/0/0"), - prev_hash=bytes.fromhex( - "a345b85759b385c6446055e4c3baa77e8161a65009dc009489b48aa6587ce348" - ), + prev_hash=TXHASH_a345b8, prev_index=0, script_type=proto.InputScriptType.SPENDWITNESS, multisig=multisig_in, @@ -907,51 +669,21 @@ class TestMsgSigntxSegwitNative: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), + request_input(0), + request_input(1), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), # Ensure that the multisig output is not identified as a change output. - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_input(1), + request_output(0), + request_output(1), + request_input(0), + request_input(1), + request_finished(), ] ) diff --git a/tests/device_tests/test_msg_signtx_zcash.py b/tests/device_tests/test_msg_signtx_zcash.py index ee2cb85bc..7df4e1197 100644 --- a/tests/device_tests/test_msg_signtx_zcash.py +++ b/tests/device_tests/test_msg_signtx_zcash.py @@ -20,7 +20,9 @@ from trezorlib import btc, messages as proto from trezorlib.tools import parse_path from ..tx_cache import TxCache +from .signtx import request_finished, request_input, request_output +B = proto.ButtonRequestType TX_API = TxCache("Zcash Testnet") TXHASH_aaf51e = bytes.fromhex( @@ -55,25 +57,13 @@ class TestMsgSigntxZcash: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_finished(), ] ) @@ -116,25 +106,13 @@ class TestMsgSigntxZcash: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_finished(), ] ) diff --git a/tests/device_tests/test_multisig.py b/tests/device_tests/test_multisig.py index 2fbc557d1..b25dba701 100644 --- a/tests/device_tests/test_multisig.py +++ b/tests/device_tests/test_multisig.py @@ -23,12 +23,20 @@ from trezorlib.tools import parse_path from .. import bip32 from ..common import MNEMONIC12 from ..tx_cache import TxCache +from .signtx import request_finished, request_input, request_meta, request_output +B = proto.ButtonRequestType TX_API = TxCache("Bitcoin") TXHASH_c6091a = bytes.fromhex( "c6091adf4c0c23982a35899a6e58ae11e703eacd7954f588ed4b9cdefc4dba52" ) +TXHASH_6189e3 = bytes.fromhex( + "6189e3febb5a21cee8b725aa1ef04ffce7e609448446d3a8d6f483c634ef5315" +) +TXHASH_fbbff7 = bytes.fromhex( + "fbbff7f3c85f8067453d7c062bd5efb8ad839953376ae5eceaf92774102c6e39" +) class TestMultisig: @@ -60,51 +68,18 @@ class TestMultisig: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXMETA, - details=proto.TxRequestDetailsType(tx_hash=TXHASH_c6091a), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=TXHASH_c6091a - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=TXHASH_c6091a - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - request_index=1, tx_hash=TXHASH_c6091a - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_meta(TXHASH_c6091a), + request_input(0, TXHASH_c6091a), + request_output(0, TXHASH_c6091a), + request_output(1, TXHASH_c6091a), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(0), + request_finished(), ] ) @@ -144,51 +119,18 @@ class TestMultisig: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXMETA, - details=proto.TxRequestDetailsType(tx_hash=TXHASH_c6091a), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=TXHASH_c6091a - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=TXHASH_c6091a - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - request_index=1, tx_hash=TXHASH_c6091a - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_meta(TXHASH_c6091a), + request_input(0, TXHASH_c6091a), + request_output(0, TXHASH_c6091a), + request_output(1, TXHASH_c6091a), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(0), + request_finished(), ] ) signatures2, serialized_tx = btc.sign_tx( @@ -246,9 +188,7 @@ class TestMultisig: inp1 = proto.TxInputType( address_n=[x], - prev_hash=bytes.fromhex( - "6189e3febb5a21cee8b725aa1ef04ffce7e609448446d3a8d6f483c634ef5315" - ), + prev_hash=TXHASH_6189e3, prev_index=1, script_type=proto.InputScriptType.SPENDMULTISIG, multisig=multisig, @@ -315,9 +255,7 @@ class TestMultisig: input_real = proto.TxInputType( address_n=address_n, - prev_hash=bytes.fromhex( - "fbbff7f3c85f8067453d7c062bd5efb8ad839953376ae5eceaf92774102c6e39" - ), + prev_hash=TXHASH_fbbff7, prev_index=1, script_type=proto.InputScriptType.SPENDP2SHWITNESS, amount=1000000, @@ -374,39 +312,15 @@ class TestMultisig: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - # serialized_tx: 01000000000101396e2c107427f9eaece56a37539983adb8efd52b067c3d4567805fc8f3f7bffb01000000232200200b5eada0e3bd4e52b831d6a14553e6f73a4387f1d3a19466af2850dedd74374effffffff - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - # serialized_tx: 02e8030000000000001976a914e7c1345fc8f87c68170b3aa798a956c2fe6a9eff88ac - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - # serialized_tx: 703a0f000000000017a914a1261837f1b40e84346b1504ffe294e402965f2687 - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), + request_input(0), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(1), + request_input(0), proto.Failure(code=proto.FailureType.ProcessError), ] ) diff --git a/tests/device_tests/test_multisig_change.py b/tests/device_tests/test_multisig_change.py index 163a6dfa5..9869bb56d 100644 --- a/tests/device_tests/test_multisig_change.py +++ b/tests/device_tests/test_multisig_change.py @@ -22,9 +22,21 @@ from trezorlib.tools import H_, parse_path from .. import bip32 from ..common import MNEMONIC12 from ..tx_cache import TxCache +from .signtx import request_finished, request_input, request_meta, request_output +B = proto.ButtonRequestType TX_API = TxCache("Testnet") +TXHASH_16c6c8 = bytes.fromhex( + "16c6c8471b8db7a628f2b2bb86bfeefae1766463ce8692438c7fd3fce3f43ce5" +) +TXHASH_d80c34 = bytes.fromhex( + "d80c34ee14143a8bf61125102b7ef594118a3796cad670fa8ee15080ae155318" +) +TXHASH_b0946d = bytes.fromhex( + "b0946dc27ba308a749b11afecc2018980af18f79e89ad6b080b58220d856f739" +) + class TestMultisigChange: node_ext1 = bip32.deserialize( @@ -93,9 +105,7 @@ class TestMultisigChange: # 2N9W4z9AhAPaHghtqVQPbaTAGHdbrhKeBQw inp1 = proto.TxInputType( address_n=[H_(45), 0, 0, 0], - prev_hash=bytes.fromhex( - "16c6c8471b8db7a628f2b2bb86bfeefae1766463ce8692438c7fd3fce3f43ce5" - ), + prev_hash=TXHASH_16c6c8, prev_index=1, script_type=proto.InputScriptType.SPENDMULTISIG, multisig=multisig_in1, @@ -104,9 +114,7 @@ class TestMultisigChange: # 2NDBG6QXQLtnQ3jRGkrqo53BiCeXfQXLdj4 inp2 = proto.TxInputType( address_n=[H_(45), 0, 0, 1], - prev_hash=bytes.fromhex( - "d80c34ee14143a8bf61125102b7ef594118a3796cad670fa8ee15080ae155318" - ), + prev_hash=TXHASH_d80c34, prev_index=0, script_type=proto.InputScriptType.SPENDMULTISIG, multisig=multisig_in2, @@ -115,9 +123,7 @@ class TestMultisigChange: # 2MvwPWfp2XPU3S1cMwgEMKBPUw38VP5SBE4 inp3 = proto.TxInputType( address_n=[H_(45), 0, 0, 1], - prev_hash=bytes.fromhex( - "b0946dc27ba308a749b11afecc2018980af18f79e89ad6b080b58220d856f739" - ), + prev_hash=TXHASH_b0946d, prev_index=0, script_type=proto.InputScriptType.SPENDMULTISIG, multisig=multisig_in3, @@ -125,116 +131,36 @@ class TestMultisigChange: def _responses(self, inp1, inp2, change=0): resp = [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXMETA, - details=proto.TxRequestDetailsType(tx_hash=inp1.prev_hash), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=inp1.prev_hash - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=inp1.prev_hash - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - request_index=1, tx_hash=inp1.prev_hash - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXMETA, - details=proto.TxRequestDetailsType(tx_hash=inp2.prev_hash), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=inp2.prev_hash - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=inp2.prev_hash - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - request_index=1, tx_hash=inp2.prev_hash - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), + request_input(0), + request_meta(inp1.prev_hash), + request_input(0, inp1.prev_hash), + request_output(0, inp1.prev_hash), + request_output(1, inp1.prev_hash), + request_input(1), + request_meta(inp2.prev_hash), + request_input(0, inp2.prev_hash), + request_output(0, inp2.prev_hash), + request_output(1, inp2.prev_hash), + request_output(0), ] if change != 1: - resp.append(proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput)) - resp.append( - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ) - ) + resp.append(proto.ButtonRequest(code=B.ConfirmOutput)) + resp.append(request_output(1)) if change != 2: - resp.append(proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput)) + resp.append(proto.ButtonRequest(code=B.ConfirmOutput)) resp += [ - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_input(1), + request_output(0), + request_output(1), + request_input(0), + request_input(1), + request_output(0), + request_output(1), + request_output(0), + request_output(1), + request_finished(), ] return resp diff --git a/tests/device_tests/test_op_return.py b/tests/device_tests/test_op_return.py index 2f631b4f6..989689668 100644 --- a/tests/device_tests/test_op_return.py +++ b/tests/device_tests/test_op_return.py @@ -21,7 +21,9 @@ from trezorlib.exceptions import TrezorFailure from trezorlib.tools import parse_path from ..tx_cache import TxCache +from .signtx import request_finished, request_input, request_meta, request_output +B = proto.ButtonRequestType TX_API = TxCache("Bitcoin") TXHASH_d5f65e = bytes.fromhex( @@ -50,64 +52,22 @@ class TestOpReturn: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXMETA, - details=proto.TxRequestDetailsType(tx_hash=TXHASH_d5f65e), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=TXHASH_d5f65e - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - request_index=1, tx_hash=TXHASH_d5f65e - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=TXHASH_d5f65e - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=1), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_meta(TXHASH_d5f65e), + request_input(0, TXHASH_d5f65e), + request_input(1, TXHASH_d5f65e), + request_output(0, TXHASH_d5f65e), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + request_output(1), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(1), + request_output(0), + request_output(1), + request_finished(), ] ) _, serialized_tx = btc.sign_tx( @@ -136,36 +96,12 @@ class TestOpReturn: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXMETA, - details=proto.TxRequestDetailsType(tx_hash=TXHASH_d5f65e), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=TXHASH_d5f65e - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - request_index=1, tx_hash=TXHASH_d5f65e - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=TXHASH_d5f65e - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), + request_input(0), + request_meta(TXHASH_d5f65e), + request_input(0, TXHASH_d5f65e), + request_input(1, TXHASH_d5f65e), + request_output(0, TXHASH_d5f65e), + request_output(0), proto.Failure(), ] ) @@ -191,36 +127,12 @@ class TestOpReturn: with client: client.set_expected_responses( [ - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXMETA, - details=proto.TxRequestDetailsType(tx_hash=TXHASH_d5f65e), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=TXHASH_d5f65e - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - request_index=1, tx_hash=TXHASH_d5f65e - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=TXHASH_d5f65e - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), + request_input(0), + request_meta(TXHASH_d5f65e), + request_input(0, TXHASH_d5f65e), + request_input(1, TXHASH_d5f65e), + request_output(0, TXHASH_d5f65e), + request_output(0), proto.Failure(), ] ) diff --git a/tests/device_tests/test_protection_levels.py b/tests/device_tests/test_protection_levels.py index 6b2a68099..5ef5f6298 100644 --- a/tests/device_tests/test_protection_levels.py +++ b/tests/device_tests/test_protection_levels.py @@ -21,6 +21,9 @@ from trezorlib.exceptions import TrezorFailure from ..common import MNEMONIC12 from ..tx_cache import TxCache +from .signtx import request_finished, request_input, request_meta, request_output + +B = proto.ButtonRequestType TXHASH_d5f65e = bytes.fromhex( "d5f65ee80147b4bcc70b75e4bbf2d7382021b871bd8867ef8fa525ef50864882" @@ -199,51 +202,18 @@ class TestProtectionLevels: [ proto.PinMatrixRequest(), proto.PassphraseRequest(), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXMETA, - details=proto.TxRequestDetailsType(tx_hash=TXHASH_d5f65e), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=TXHASH_d5f65e - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType( - request_index=1, tx_hash=TXHASH_d5f65e - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType( - request_index=0, tx_hash=TXHASH_d5f65e - ), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.ButtonRequest(code=proto.ButtonRequestType.ConfirmOutput), - proto.ButtonRequest(code=proto.ButtonRequestType.SignTx), - proto.TxRequest( - request_type=proto.RequestType.TXINPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest( - request_type=proto.RequestType.TXOUTPUT, - details=proto.TxRequestDetailsType(request_index=0), - ), - proto.TxRequest(request_type=proto.RequestType.TXFINISHED), + request_input(0), + request_meta(TXHASH_d5f65e), + request_input(0, TXHASH_d5f65e), + request_input(1, TXHASH_d5f65e), + request_output(0, TXHASH_d5f65e), + request_output(0), + proto.ButtonRequest(code=B.ConfirmOutput), + proto.ButtonRequest(code=B.SignTx), + request_input(0), + request_output(0), + request_output(0), + request_finished(), ] ) btc.sign_tx(client, "Bitcoin", [inp1], [out1], prev_txes=TxCache("Bitcoin"))