|
|
|
@ -49,8 +49,7 @@ TXHASH_65b811 = bytes.fromhex(
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TestMsgSigntxTaproot:
|
|
|
|
|
def test_send_p2tr(self, client):
|
|
|
|
|
def test_send_p2tr(client):
|
|
|
|
|
inp1 = messages.TxInputType(
|
|
|
|
|
# tb1pn2d0yjeedavnkd8z8lhm566p0f2utm3lgvxrsdehnl94y34txmts5s7t4c
|
|
|
|
|
address_n=parse_path("86'/1'/0'/1/0"),
|
|
|
|
@ -87,7 +86,8 @@ class TestMsgSigntxTaproot:
|
|
|
|
|
== "010000000001017b350e3faca092f39883d7086cdd502c82b6f0314ab61541b062733edef156790100000000ffffffff016211000000000000225120e9af2fc69e20b0be2629cd0e9c34da9f3ef56af7beac4fb4298262bc5a45ec5d0140493145b992dacbd7ea579a415efc2cba20c3bf0f7827d1bcf999109c0d11783fe96f91ddb04a889faa17ad21ecc5c81a578009744e95c7e721aff2a5c442916600000000"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def test_send_two_with_change(self, client):
|
|
|
|
|
|
|
|
|
|
def test_send_two_with_change(client):
|
|
|
|
|
inp1 = messages.TxInputType(
|
|
|
|
|
# tb1pswrqtykue8r89t9u4rprjs0gt4qzkdfuursfnvqaa3f2yql07zmq8s8a5u
|
|
|
|
|
address_n=parse_path("86'/1'/0'/0/0"),
|
|
|
|
@ -143,7 +143,8 @@ class TestMsgSigntxTaproot:
|
|
|
|
|
== "010000000001029f67664b8972ae01498e25ea98a37889f19aa86a2f39ddad84ff31da312e86df0000000000ffffffff9b117a776a9aaf70d4c3ffe89f009dcd23210a03d649ee5e38791d83902ec33a0100000000ffffffff02983a000000000000160014f0ca4661a8c7f4edad7da1c864a8bd3db05d4ac4f8110000000000002251209a9af24b396f593b34e23fefba6b417a55c5ee3f430c3837379fcb5246ab36d70140b51992353d2f99b7b620c0882cb06694996f1b6c7e62a3c1d3036e0f896fbf0b92f3d9aeab94f2454809a501715667345f702c8214693f469225de5f6636b86b01409956e47403278bf76eecbbbc3af0c2731d8347763825248a2e0f39aca5a684a7d5054e7222a1033fb5864a886180f1a8c64adab12433c78298d1f83e4c8f46e100000000"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def test_send_mixed(self, client):
|
|
|
|
|
|
|
|
|
|
def test_send_mixed(client):
|
|
|
|
|
inp1 = messages.TxInputType(
|
|
|
|
|
# 2MutHjgAXkqo3jxX2DZWorLAckAnwTxSM9V
|
|
|
|
|
address_n=parse_path("49'/1'/1'/0/0"),
|
|
|
|
@ -285,11 +286,13 @@ class TestMsgSigntxTaproot:
|
|
|
|
|
== "010000000001045d77b6e482d770031ad3ce3423727cc1707bc2c82e729b1189d2b60aa1a73e8c0000000017160014a33c6e24c99e108b97bc411e7e9ef31e9d5d6164ffffffff7b350e3faca092f39883d7086cdd502c82b6f0314ab61541b062733edef156790000000000ffffffff852e125137abca2dd7a42837dccfc34edc358c72eefd62978d6747d3be9315900000000000ffffffff9b117a776a9aaf70d4c3ffe89f009dcd23210a03d649ee5e38791d83902ec33a020000006b483045022100f6bd64136839b49822cf7e2050bc5c91346fc18b5cf97a945d4fd6c502f712d002207d1859e66d218f705b704f3cfca0c75410349bb1f50623f4fc2d09d5d8df0a3f012103bae960983f83e28fcb8f0e5f3dc1f1297b9f9636612fd0835b768e1b7275fb9dffffffff05a861000000000000160014d1a739f628f7eca55e8b99e7f32b22dcdbf672d4581b0000000000001976a91402e9b094fd98e2a26e805894eb78f7ff3fef199b88acf41a00000000000017a9141ff816cbeb74817050de585ceb2c772ebf71147a870000000000000000186a1674657374206f66206f705f72657475726e206461746110270000000000002251205a02573f7b39770ac53f73d161dc86f5104c6812bac297cb6ba418f6f1219c070247304402205fae7fa2b5141548593d5623ce5bd82ee18dfc751c243526039c91848efd603702200febfbe3467a68c599245ff89055514f26e146c79b58d932ced2325e6dad1b1a0121021630971f20fa349ba940a6ba3706884c41579cd760c89901374358db5dd545b90247304402201b21212100c84207697cebb852374669c382ed97cbd08afbbdfe1b302802161602206b32b2140d094cf5b7e758135961c95478c8e82fea0df30f56ccee284b79eaea012103f6b2377d52960a6094ec158cf19dcf9e33b3da4798c2302aa5806483ed4187ae01404a81e4b7f55d6d4a26923c5e2daf3cc86ed6030f83ea6e7bb16d7b81b988b34585be21a64ab45ddcc2fb9f17be2dfeff6b22cf943bc3fc8f125a7f463af428ed0000000000"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def test_attack_script_type(self, client):
|
|
|
|
|
# Scenario: The attacker falsely claims that the transaction is Taproot-only to avoid prev
|
|
|
|
|
# tx streaming and gives a lower amount for one of the inputs. The correct input types and
|
|
|
|
|
# amounts are revelaled only in step6_sign_segwit_inputs() to get a valid signature. This
|
|
|
|
|
# results in a transaction which pays a fee much larger than what the user confirmed.
|
|
|
|
|
|
|
|
|
|
def test_attack_script_type(client):
|
|
|
|
|
# Scenario: The attacker falsely claims that the transaction is Taproot-only to
|
|
|
|
|
# avoid prev tx streaming and gives a lower amount for one of the inputs. The
|
|
|
|
|
# correct input types and amounts are revelaled only in step6_sign_segwit_inputs()
|
|
|
|
|
# to get a valid signature. This results in a transaction which pays a fee much
|
|
|
|
|
# larger than what the user confirmed.
|
|
|
|
|
|
|
|
|
|
inp1 = messages.TxInputType(
|
|
|
|
|
address_n=parse_path("84'/1'/0'/1/0"),
|
|
|
|
|