|
|
|
@ -127,13 +127,13 @@ def test_one_one_fee(client: Client):
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
with client:
|
|
|
|
|
tt = client.features.model == "T"
|
|
|
|
|
is_core = client.features.model in ("T", "R")
|
|
|
|
|
client.set_expected_responses(
|
|
|
|
|
[
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_output(0),
|
|
|
|
|
messages.ButtonRequest(code=B.ConfirmOutput),
|
|
|
|
|
(tt, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
(is_core, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
messages.ButtonRequest(code=B.SignTx),
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_meta(TXHASH_0dac36),
|
|
|
|
@ -181,13 +181,13 @@ def test_testnet_one_two_fee(client: Client):
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
with client:
|
|
|
|
|
tt = client.features.model == "T"
|
|
|
|
|
is_core = client.features.model in ("T", "R")
|
|
|
|
|
client.set_expected_responses(
|
|
|
|
|
[
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_output(0),
|
|
|
|
|
messages.ButtonRequest(code=B.ConfirmOutput),
|
|
|
|
|
(tt, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
(is_core, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
request_output(1),
|
|
|
|
|
messages.ButtonRequest(code=B.SignTx),
|
|
|
|
|
request_input(0),
|
|
|
|
@ -232,13 +232,13 @@ def test_testnet_fee_high_warning(client: Client):
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
with client:
|
|
|
|
|
tt = client.features.model == "T"
|
|
|
|
|
is_core = client.features.model in ("T", "R")
|
|
|
|
|
client.set_expected_responses(
|
|
|
|
|
[
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_output(0),
|
|
|
|
|
messages.ButtonRequest(code=B.ConfirmOutput),
|
|
|
|
|
(tt, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
(is_core, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
messages.ButtonRequest(code=B.FeeOverThreshold),
|
|
|
|
|
messages.ButtonRequest(code=B.SignTx),
|
|
|
|
|
request_input(0),
|
|
|
|
@ -285,14 +285,14 @@ def test_one_two_fee(client: Client):
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
with client:
|
|
|
|
|
tt = client.features.model == "T"
|
|
|
|
|
is_core = client.features.model in ("T", "R")
|
|
|
|
|
client.set_expected_responses(
|
|
|
|
|
[
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_output(0),
|
|
|
|
|
request_output(1),
|
|
|
|
|
messages.ButtonRequest(code=B.ConfirmOutput),
|
|
|
|
|
(tt, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
(is_core, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
messages.ButtonRequest(code=B.SignTx),
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_meta(TXHASH_50f6f1),
|
|
|
|
@ -348,16 +348,16 @@ def test_one_three_fee(client: Client, chunkify: bool):
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
with client:
|
|
|
|
|
tt = client.features.model == "T"
|
|
|
|
|
is_core = client.features.model in ("T", "R")
|
|
|
|
|
client.set_expected_responses(
|
|
|
|
|
[
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_output(0),
|
|
|
|
|
messages.ButtonRequest(code=B.ConfirmOutput),
|
|
|
|
|
(tt, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
(is_core, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
request_output(1),
|
|
|
|
|
messages.ButtonRequest(code=B.ConfirmOutput),
|
|
|
|
|
(tt, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
(is_core, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
request_output(2),
|
|
|
|
|
messages.ButtonRequest(code=B.SignTx),
|
|
|
|
|
request_input(0),
|
|
|
|
@ -420,7 +420,7 @@ def test_two_two(client: Client):
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
with client:
|
|
|
|
|
tt = client.features.model == "T"
|
|
|
|
|
is_core = client.features.model in ("T", "R")
|
|
|
|
|
client.set_expected_responses(
|
|
|
|
|
[
|
|
|
|
|
request_input(0),
|
|
|
|
@ -428,7 +428,7 @@ def test_two_two(client: Client):
|
|
|
|
|
request_output(0),
|
|
|
|
|
request_output(1),
|
|
|
|
|
messages.ButtonRequest(code=B.ConfirmOutput),
|
|
|
|
|
(tt, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
(is_core, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
messages.ButtonRequest(code=B.SignTx),
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_meta(TXHASH_ac4ca0),
|
|
|
|
@ -565,13 +565,13 @@ def test_lots_of_change(client: Client):
|
|
|
|
|
request_change_outputs = [request_output(i + 1) for i in range(cnt)]
|
|
|
|
|
|
|
|
|
|
with client:
|
|
|
|
|
tt = client.features.model == "T"
|
|
|
|
|
is_core = client.features.model in ("T", "R")
|
|
|
|
|
client.set_expected_responses(
|
|
|
|
|
[
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_output(0),
|
|
|
|
|
messages.ButtonRequest(code=B.ConfirmOutput),
|
|
|
|
|
(tt, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
(is_core, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
]
|
|
|
|
|
+ request_change_outputs
|
|
|
|
|
+ [
|
|
|
|
@ -617,13 +617,13 @@ def test_fee_high_warning(client: Client):
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
with client:
|
|
|
|
|
tt = client.features.model == "T"
|
|
|
|
|
is_core = client.features.model in ("T", "R")
|
|
|
|
|
client.set_expected_responses(
|
|
|
|
|
[
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_output(0),
|
|
|
|
|
messages.ButtonRequest(code=B.ConfirmOutput),
|
|
|
|
|
(tt, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
(is_core, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
messages.ButtonRequest(code=B.FeeOverThreshold),
|
|
|
|
|
messages.ButtonRequest(code=B.SignTx),
|
|
|
|
|
request_input(0),
|
|
|
|
@ -706,13 +706,13 @@ def test_not_enough_funds(client: Client):
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
with client:
|
|
|
|
|
tt = client.features.model == "T"
|
|
|
|
|
is_core = client.features.model in ("T", "R")
|
|
|
|
|
client.set_expected_responses(
|
|
|
|
|
[
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_output(0),
|
|
|
|
|
messages.ButtonRequest(code=B.ConfirmOutput),
|
|
|
|
|
(tt, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
(is_core, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
messages.Failure(code=messages.FailureType.NotEnoughFunds),
|
|
|
|
|
]
|
|
|
|
|
)
|
|
|
|
@ -737,13 +737,13 @@ def test_p2sh(client: Client):
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
with client:
|
|
|
|
|
tt = client.features.model == "T"
|
|
|
|
|
is_core = client.features.model in ("T", "R")
|
|
|
|
|
client.set_expected_responses(
|
|
|
|
|
[
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_output(0),
|
|
|
|
|
messages.ButtonRequest(code=B.ConfirmOutput),
|
|
|
|
|
(tt, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
(is_core, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
messages.ButtonRequest(code=B.SignTx),
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_meta(TXHASH_58d56a),
|
|
|
|
@ -825,7 +825,7 @@ def test_attack_change_outputs(client: Client):
|
|
|
|
|
|
|
|
|
|
# Test if the transaction can be signed normally
|
|
|
|
|
with client:
|
|
|
|
|
tt = client.features.model == "T"
|
|
|
|
|
is_core = client.features.model in ("T", "R")
|
|
|
|
|
client.set_expected_responses(
|
|
|
|
|
[
|
|
|
|
|
request_input(0),
|
|
|
|
@ -833,7 +833,7 @@ def test_attack_change_outputs(client: Client):
|
|
|
|
|
request_output(0),
|
|
|
|
|
request_output(1),
|
|
|
|
|
messages.ButtonRequest(code=B.ConfirmOutput),
|
|
|
|
|
(tt, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
(is_core, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
messages.ButtonRequest(code=B.SignTx),
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_meta(TXHASH_ac4ca0),
|
|
|
|
@ -993,14 +993,14 @@ def test_attack_change_input_address(client: Client):
|
|
|
|
|
|
|
|
|
|
# Now run the attack, must trigger the exception
|
|
|
|
|
with client:
|
|
|
|
|
tt = client.features.model == "T"
|
|
|
|
|
is_core = client.features.model in ("T", "R")
|
|
|
|
|
client.set_filter(messages.TxAck, attack_processor)
|
|
|
|
|
client.set_expected_responses(
|
|
|
|
|
[
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_output(0),
|
|
|
|
|
messages.ButtonRequest(code=B.ConfirmOutput),
|
|
|
|
|
(tt, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
(is_core, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
request_output(1),
|
|
|
|
|
messages.ButtonRequest(code=B.SignTx),
|
|
|
|
|
request_input(0),
|
|
|
|
@ -1045,13 +1045,13 @@ def test_spend_coinbase(client: Client):
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
with client:
|
|
|
|
|
tt = client.features.model == "T"
|
|
|
|
|
is_core = client.features.model in ("T", "R")
|
|
|
|
|
client.set_expected_responses(
|
|
|
|
|
[
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_output(0),
|
|
|
|
|
messages.ButtonRequest(code=B.ConfirmOutput),
|
|
|
|
|
(tt, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
(is_core, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
messages.ButtonRequest(code=B.SignTx),
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_meta(FAKE_TXHASH_005f6f),
|
|
|
|
@ -1104,13 +1104,13 @@ def test_two_changes(client: Client):
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
with client:
|
|
|
|
|
tt = client.features.model == "T"
|
|
|
|
|
is_core = client.features.model in ("T", "R")
|
|
|
|
|
client.set_expected_responses(
|
|
|
|
|
[
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_output(0),
|
|
|
|
|
messages.ButtonRequest(code=B.ConfirmOutput),
|
|
|
|
|
(tt, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
(is_core, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
request_output(1),
|
|
|
|
|
request_output(2),
|
|
|
|
|
messages.ButtonRequest(code=B.SignTx),
|
|
|
|
@ -1164,13 +1164,13 @@ def test_change_on_main_chain_allowed(client: Client):
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
with client:
|
|
|
|
|
tt = client.features.model == "T"
|
|
|
|
|
is_core = client.features.model in ("T", "R")
|
|
|
|
|
client.set_expected_responses(
|
|
|
|
|
[
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_output(0),
|
|
|
|
|
messages.ButtonRequest(code=B.ConfirmOutput),
|
|
|
|
|
(tt, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
(is_core, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
request_output(1),
|
|
|
|
|
messages.ButtonRequest(code=B.SignTx),
|
|
|
|
|
request_input(0),
|
|
|
|
@ -1429,13 +1429,13 @@ def test_lock_time(client: Client, lock_time: int, sequence: int):
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
with client:
|
|
|
|
|
tt = client.features.model == "T"
|
|
|
|
|
is_core = client.features.model in ("T", "R")
|
|
|
|
|
client.set_expected_responses(
|
|
|
|
|
[
|
|
|
|
|
request_input(0),
|
|
|
|
|
request_output(0),
|
|
|
|
|
messages.ButtonRequest(code=B.ConfirmOutput),
|
|
|
|
|
(tt, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
(is_core, messages.ButtonRequest(code=B.ConfirmOutput)),
|
|
|
|
|
messages.ButtonRequest(code=B.SignTx),
|
|
|
|
|
messages.ButtonRequest(code=B.SignTx),
|
|
|
|
|
request_input(0),
|
|
|
|
|