diff --git a/common/protob/messages-cardano.proto b/common/protob/messages-cardano.proto index b1331beee92..0f259027a12 100644 --- a/common/protob/messages-cardano.proto +++ b/common/protob/messages-cardano.proto @@ -56,6 +56,16 @@ enum CardanoCertificateType { STAKE_DEREGISTRATION = 1; STAKE_DELEGATION = 2; STAKE_POOL_REGISTRATION = 3; + STAKE_REGISTRATION_CONWAY = 7; + STAKE_DEREGISTRATION_CONWAY = 8; + VOTE_DELEGATION = 9; +} + +enum CardanoDRepType { + KEY_HASH = 0; + SCRIPT_HASH = 1; + ABSTAIN = 2; + NO_CONFIDENCE = 3; } enum CardanoPoolRelayType { @@ -225,6 +235,7 @@ message CardanoSignTxInit { optional uint64 total_collateral = 20; optional uint32 reference_inputs_count = 21 [default=0]; optional bool chunkify = 22; // display the address in chunks of 4 characters + optional bool tag_cbor_sets = 23 [default=false]; // use tag 258 for sets in cbor } /** @@ -335,6 +346,16 @@ message CardanoPoolParametersType { required uint32 relays_count = 12; // number of pool relays } +/** + * DRep delegation parameters + * @embed +*/ +message CardanoDRep { + required CardanoDRepType type = 1; // drep type + optional bytes key_hash = 2; // drep key hash + optional bytes script_hash = 3; // drep script hash +} + /** * Request: Transaction certificate data * @next CardanoTxItemAck @@ -346,6 +367,8 @@ message CardanoTxCertificate { optional CardanoPoolParametersType pool_parameters = 4; // used for stake pool registration certificate optional bytes script_hash = 5; // stake credential script hash optional bytes key_hash = 6; // stake credential key hash + optional uint64 deposit = 7; // used for stake key registration certificate + optional CardanoDRep drep = 8; // used for vote delegation certificate } /** diff --git a/common/tests/fixtures/cardano/sign_tx.failed.json b/common/tests/fixtures/cardano/sign_tx.failed.json index 1a3911c26b1..d993594a3cd 100644 --- a/common/tests/fixtures/cardano/sign_tx.failed.json +++ b/common/tests/fixtures/cardano/sign_tx.failed.json @@ -37,7 +37,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid input" @@ -76,7 +77,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address" @@ -115,7 +117,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address" @@ -154,7 +157,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address" @@ -193,7 +197,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address" @@ -232,7 +237,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address" @@ -271,7 +277,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Fee is out of range" @@ -315,7 +322,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Total transaction amount is out of range!" @@ -354,7 +362,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Output address network mismatch" @@ -393,7 +402,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Output address network mismatch" @@ -432,7 +442,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address" @@ -471,7 +482,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address" @@ -510,7 +522,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid network id/protocol magic combination!" @@ -549,7 +562,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid network id/protocol magic combination!" @@ -588,7 +602,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address" @@ -630,7 +645,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid output" @@ -674,7 +690,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -718,7 +735,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -762,7 +780,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -806,7 +825,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -851,7 +871,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -896,7 +917,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -941,7 +963,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -985,7 +1008,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -1029,7 +1053,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -1073,7 +1098,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -1117,7 +1143,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -1161,7 +1188,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -1206,7 +1234,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -1251,7 +1280,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -1292,7 +1322,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid auxiliary data" @@ -1341,7 +1372,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address parameters" @@ -1392,7 +1424,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid auxiliary data" @@ -1449,7 +1482,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid auxiliary data" @@ -1489,7 +1523,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid output datum hash" @@ -1528,7 +1563,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid script data hash" @@ -1573,7 +1609,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -1615,7 +1652,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -1654,7 +1692,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -1698,7 +1737,8 @@ ], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -1739,7 +1779,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid output" @@ -1781,7 +1822,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid output" @@ -1826,7 +1868,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid change output path" @@ -1871,7 +1914,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid change output staking path" @@ -1916,7 +1960,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address parameters" @@ -1955,7 +2000,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address" @@ -1999,7 +2045,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate path" @@ -2043,7 +2090,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -2097,7 +2145,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid token bundle in output" @@ -2156,7 +2205,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid token bundle in output" @@ -2209,7 +2259,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid mint token bundle" @@ -2267,7 +2318,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid mint token bundle" @@ -2325,7 +2377,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid token bundle in output" @@ -2393,7 +2446,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid token bundle in output" @@ -2450,7 +2504,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid mint token bundle" @@ -2517,7 +2572,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid mint token bundle" @@ -2560,7 +2616,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -2603,7 +2660,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -2644,7 +2702,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address parameters" @@ -2734,7 +2793,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -2777,7 +2837,8 @@ "path": "m/1855'/1815'/0'" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -2871,7 +2932,8 @@ "path": "m/1855'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -2916,7 +2978,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -2960,7 +3023,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -3004,7 +3068,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -3054,7 +3119,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -3104,7 +3170,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -3153,7 +3220,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -3197,7 +3265,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -3238,7 +3307,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" diff --git a/common/tests/fixtures/cardano/sign_tx.json b/common/tests/fixtures/cardano/sign_tx.json index 52ebc5adab1..102bc9fbed5 100644 --- a/common/tests/fixtures/cardano/sign_tx.json +++ b/common/tests/fixtures/cardano/sign_tx.json @@ -37,7 +37,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "73e09bdebf98a9e0f17f86a2d11e0f14f4f8dae77cdf26ff1678e821f20c8db6", @@ -89,7 +90,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "81b14b7e62972127eb33c0b1198de6430540ad3a98eec621a3194f2baac43a43", @@ -142,7 +144,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "16fe72bb198be423677577e6326f1f648ec5fc11263b072006382d8125a6edda", @@ -204,7 +207,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "7e16a0b47bdfc37abf4ddd3143f7481af07ffe7abd68f752676f5b0b2890d05b", @@ -275,7 +279,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "5ddbb530b8a89e2b08fc91db03950c876c4a9c1c3fb6e628c4cab638b1c97648", @@ -329,7 +334,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "1fc82ce2420c173a0947eaf49af76fcd6f4e400e2bfb5fa152a482ea12dde24b", @@ -383,7 +389,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "abd1b24ac0638251398444ee136110f952738df32a512ce35894f8453d0e8edf", @@ -436,7 +443,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "d1610bb89bece22ed3158738bc1fbb31c6af0685053e2993361e3380f49afad9", @@ -489,7 +497,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "1d6fc2044d54d4af5b44e4be4c1ce3670fe4d2e37523a945d087252c27b215f2", @@ -544,7 +553,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "40535fa8f88515f1da008d3cdf544cf9dbf1675c3cb0adb13b74b9293f1b7096", @@ -596,7 +606,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "d3570557b197604109481a80aeb66cd2cfabc57f802ad593bacc12eb658e5d72", @@ -648,7 +659,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "1a3a295908afd8b2afc368071272d6964be6ee0af062bb765aea65ca454dc0c9", @@ -662,6 +674,126 @@ ] } }, + { + "description": "transaction with conway stake registration certificate", + "parameters": { + "protocol_magic": 764824073, + "network_id": 1, + "fee": 42, + "ttl": 10, + "validity_interval_start": null, + "certificates": [ + { + "type": 7, + "path": "m/1852'/1815'/0'/2/0", + "deposit": 2000000 + } + ], + "withdrawals": [], + "auxiliary_data": null, + "inputs": [ + { + "path": "m/1852'/1815'/0'/0/0", + "prev_hash": "3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7", + "prev_index": 0 + } + ], + "outputs": [ + { + "address": "addr1q84sh2j72ux0l03fxndjnhctdg7hcppsaejafsa84vh7lwgmcs5wgus8qt4atk45lvt4xfxpjtwfhdmvchdf2m3u3hlsd5tq5r", + "amount": "1" + } + ], + "mint": [], + "script_data_hash": null, + "collateral_inputs": [], + "required_signers": [], + "collateral_return": null, + "total_collateral": null, + "reference_inputs": [], + "signing_mode": "ORDINARY_TRANSACTION", + "additional_witness_requests": [], + "include_network_id": false, + "tag_cbor_sets": false + }, + "result": { + "tx_hash": "e200b2c91f3493a1f3b9cfc8b6c141f70181741025e53941e9d57d22b1470c5c", + "witnesses": [ + { + "type": 1, + "pub_key": "5d010cf16fdeff40955633d6c565f3844a288a24967cf6b76acbeb271b4f13c1", + "signature": "79a357517a08c7256b0fab1e93a92a477386f4c2d72cea7bc68527c0133c32472305f010350665d72e8017bb6c2080b5742680ce7700bbddda561c917f294a07", + "chain_code": null + }, + { + "type": 1, + "pub_key": "bc65be1b0b9d7531778a1317c2aa6de936963c3f9ac7d5ee9e9eda25e0c97c5e", + "signature": "dca542910d0362fc22744e7a24732343db4e013495a7d9b47562886f09af8eb56ecaa105e20a9df3e4248fdab61dd91b6fb2a3bfc15d0d9a0442671c07e1ba02", + "chain_code": null + } + ] + } + }, + { + "description": "transaction with conway stake registration certificate and 258-tagged sets", + "parameters": { + "protocol_magic": 764824073, + "network_id": 1, + "fee": 42, + "ttl": 10, + "validity_interval_start": null, + "certificates": [ + { + "type": 7, + "path": "m/1852'/1815'/0'/2/0", + "deposit": 2000000 + } + ], + "withdrawals": [], + "auxiliary_data": null, + "inputs": [ + { + "path": "m/1852'/1815'/0'/0/0", + "prev_hash": "3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7", + "prev_index": 0 + } + ], + "outputs": [ + { + "address": "addr1q84sh2j72ux0l03fxndjnhctdg7hcppsaejafsa84vh7lwgmcs5wgus8qt4atk45lvt4xfxpjtwfhdmvchdf2m3u3hlsd5tq5r", + "amount": "1" + } + ], + "mint": [], + "script_data_hash": null, + "collateral_inputs": [], + "required_signers": [], + "collateral_return": null, + "total_collateral": null, + "reference_inputs": [], + "signing_mode": "ORDINARY_TRANSACTION", + "additional_witness_requests": [], + "include_network_id": false, + "tag_cbor_sets": true + }, + "result": { + "tx_hash": "5e27f8fba938603411452a8cb373462fb64305539573b7a9edc9155be5cd6473", + "witnesses": [ + { + "type": 1, + "pub_key": "5d010cf16fdeff40955633d6c565f3844a288a24967cf6b76acbeb271b4f13c1", + "signature": "13c136487d8048ab7bbb081a324aa6b999e0b3237f956503b5446a4c409ec1062091b82e9e5459dee7ab0ba67ed874692d788872c8bbdb5ad4a3975c465fea09", + "chain_code": null + }, + { + "type": 1, + "pub_key": "bc65be1b0b9d7531778a1317c2aa6de936963c3f9ac7d5ee9e9eda25e0c97c5e", + "signature": "f0674db7194d8e04d7df416af8ad9dcf1b1203ca4b78f14c1e394d47418c8f7e95fd41a8f01c43eeeb39df6264359c865a41621fc1e6b540819b25c7c4df5803", + "chain_code": null + } + ] + } + }, { "description": "transaction with stake registration certificate (no outputs)", "parameters": { @@ -695,7 +827,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "03535791d04fc1b4457fada025f1c1f7778b5c2d7fa580bbac8abd53b85d3255", @@ -752,7 +885,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "439764b5f7e08839881536a3191faeaf111e75d9f00f83b102c5c1c6fa9fcaf9", @@ -810,7 +944,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "3aca1784d151dc75bdbb80fae71bda3f4b26af3f5fd71bd5e9e9bbcdd2b64ad1", @@ -830,6 +965,66 @@ ] } }, + { + "description": "transaction with conway stake deregistration certificate", + "parameters": { + "protocol_magic": 764824073, + "network_id": 1, + "fee": 42, + "ttl": 10, + "validity_interval_start": null, + "certificates": [ + { + "type": 8, + "path": "m/1852'/1815'/0'/2/0", + "deposit": 2000000 + } + ], + "withdrawals": [], + "auxiliary_data": null, + "inputs": [ + { + "path": "m/1852'/1815'/0'/0/0", + "prev_hash": "3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7", + "prev_index": 0 + } + ], + "outputs": [ + { + "address": "addr1q84sh2j72ux0l03fxndjnhctdg7hcppsaejafsa84vh7lwgmcs5wgus8qt4atk45lvt4xfxpjtwfhdmvchdf2m3u3hlsd5tq5r", + "amount": "1" + } + ], + "mint": [], + "script_data_hash": null, + "collateral_inputs": [], + "required_signers": [], + "collateral_return": null, + "total_collateral": null, + "reference_inputs": [], + "signing_mode": "ORDINARY_TRANSACTION", + "additional_witness_requests": [], + "include_network_id": false, + "tag_cbor_sets": false + }, + "result": { + "tx_hash": "564ad55097101e1ca85629cffe839f43a19bf33aa1940c99a62eb8f14392eebb", + "witnesses": [ + { + "type": 1, + "pub_key": "5d010cf16fdeff40955633d6c565f3844a288a24967cf6b76acbeb271b4f13c1", + "signature": "a0fa6630498f57249b305824ad4d32157653820e7d651332a58af70a80364df882ee8b0471e76dd7a335eea84a18c52b12c02508779d46b193bc418c22e8a00f", + "chain_code": null + }, + { + "type": 1, + "pub_key": "bc65be1b0b9d7531778a1317c2aa6de936963c3f9ac7d5ee9e9eda25e0c97c5e", + "signature": "5d282fcd2685ee47f3770f84b2badf4046e8e76bfdaa26f74e292ecd16bcf89fb330b99edff13bc9c81e8c6523864f69a3ac7cde29d5a648707724c5cb48730e", + "chain_code": null + } + ] + } + }, { "description": "transaction with stake deregistration and withdrawal", "parameters": { @@ -873,7 +1068,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "22c67f12e6f6aa0f2f09fd27d472b19c7208ccd7c3af4b09604fd5d462c1de2b", @@ -932,7 +1128,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "cc068a25994ef6a90cdab8adfbe302d6f742de9901ba2495dd64a09f2ef951f5", @@ -952,6 +1149,256 @@ ] } }, + { + "description": "transaction delegating vote to DRep by key hash", + "parameters": { + "protocol_magic": 764824073, + "network_id": 1, + "fee": 42, + "ttl": 10, + "validity_interval_start": null, + "certificates": [ + { + "type": 9, + "path": "m/1852'/1815'/0'/2/0", + "drep": { + "type": 0, + "key_hash": "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + } + } + ], + "withdrawals": [], + "auxiliary_data": null, + "inputs": [ + { + "path": "m/1852'/1815'/0'/0/0", + "prev_hash": "3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7", + "prev_index": 0 + } + ], + "outputs": [ + { + "address": "addr1q84sh2j72ux0l03fxndjnhctdg7hcppsaejafsa84vh7lwgmcs5wgus8qt4atk45lvt4xfxpjtwfhdmvchdf2m3u3hlsd5tq5r", + "amount": "1" + } + ], + "mint": [], + "script_data_hash": null, + "collateral_inputs": [], + "required_signers": [], + "collateral_return": null, + "total_collateral": null, + "reference_inputs": [], + "signing_mode": "ORDINARY_TRANSACTION", + "additional_witness_requests": [], + "include_network_id": false, + "tag_cbor_sets": false + }, + "result": { + "tx_hash": "1669062fd6efc4f11ed8ae9511a9c9f4454fa4f64e2043483f99d7c711236664", + "witnesses": [ + { + "type": 1, + "pub_key": "5d010cf16fdeff40955633d6c565f3844a288a24967cf6b76acbeb271b4f13c1", + "signature": "b900968efd7cfed3666a63f11267bb4fdc08684788883b91cf690e37834263387b164d52c770d1bb91578ca0029a954c9ef787ab0d3b9f3f396dedf744baa80b", + "chain_code": null + }, + { + "type": 1, + "pub_key": "bc65be1b0b9d7531778a1317c2aa6de936963c3f9ac7d5ee9e9eda25e0c97c5e", + "signature": "d4fb5ebae0a061afa784df1ecceda5c06955a59ebc1ca4f7c2457f7ba27eacca756b8be9d84584f1b2ea23ce7b8420c73fc447398cf6caa725cb0d5c9b9f700e", + "chain_code": null + } + ] + } + }, + { + "description": "transaction delegating vote to DRep by script hash", + "parameters": { + "protocol_magic": 764824073, + "network_id": 1, + "fee": 42, + "ttl": 10, + "validity_interval_start": null, + "certificates": [ + { + "type": 9, + "path": "m/1852'/1815'/0'/2/0", + "drep": { + "type": 1, + "script_hash": "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + } + } + ], + "withdrawals": [], + "auxiliary_data": null, + "inputs": [ + { + "path": "m/1852'/1815'/0'/0/0", + "prev_hash": "3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7", + "prev_index": 0 + } + ], + "outputs": [ + { + "address": "addr1q84sh2j72ux0l03fxndjnhctdg7hcppsaejafsa84vh7lwgmcs5wgus8qt4atk45lvt4xfxpjtwfhdmvchdf2m3u3hlsd5tq5r", + "amount": "1" + } + ], + "mint": [], + "script_data_hash": null, + "collateral_inputs": [], + "required_signers": [], + "collateral_return": null, + "total_collateral": null, + "reference_inputs": [], + "signing_mode": "ORDINARY_TRANSACTION", + "additional_witness_requests": [], + "include_network_id": false, + "tag_cbor_sets": false + }, + "result": { + "tx_hash": "fccf753e4f96e20c880e5ea933041ed33509ec6c0dc1aee8b25a1fe3d562b7aa", + "witnesses": [ + { + "type": 1, + "pub_key": "5d010cf16fdeff40955633d6c565f3844a288a24967cf6b76acbeb271b4f13c1", + "signature": "bde0242fee0de5b862d2f02847d789ebe10e8f82bf15837370f115c89c1b413f1b0fa5a470210127af92059c4d3ebff297d39e93143667d3823476f12f0f6f07", + "chain_code": null + }, + { + "type": 1, + "pub_key": "bc65be1b0b9d7531778a1317c2aa6de936963c3f9ac7d5ee9e9eda25e0c97c5e", + "signature": "cd8a2fca634c1aa2c88609042de7e4fce232bf233b1271612b5edc7b806e11ff44e6b6b15feb5b6e76b7e16a8d703e7653d860c00981edf6fe3b1e4cbeaba406", + "chain_code": null + } + ] + } + }, + { + "description": "transaction delegating vote to predefined DRep 'Abstain'", + "parameters": { + "protocol_magic": 764824073, + "network_id": 1, + "fee": 42, + "ttl": 10, + "validity_interval_start": null, + "certificates": [ + { + "type": 9, + "path": "m/1852'/1815'/0'/2/0", + "drep": { + "type": 2 + } + } + ], + "withdrawals": [], + "auxiliary_data": null, + "inputs": [ + { + "path": "m/1852'/1815'/0'/0/0", + "prev_hash": "3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7", + "prev_index": 0 + } + ], + "outputs": [ + { + "address": "addr1q84sh2j72ux0l03fxndjnhctdg7hcppsaejafsa84vh7lwgmcs5wgus8qt4atk45lvt4xfxpjtwfhdmvchdf2m3u3hlsd5tq5r", + "amount": "1" + } + ], + "mint": [], + "script_data_hash": null, + "collateral_inputs": [], + "required_signers": [], + "collateral_return": null, + "total_collateral": null, + "reference_inputs": [], + "signing_mode": "ORDINARY_TRANSACTION", + "additional_witness_requests": [], + "include_network_id": false, + "tag_cbor_sets": false + }, + "result": { + "tx_hash": "01d0f76fadc899087c5352befac56cbfdc2e868ac715fbfe00230bab3f7fa751", + "witnesses": [ + { + "type": 1, + "pub_key": "5d010cf16fdeff40955633d6c565f3844a288a24967cf6b76acbeb271b4f13c1", + "signature": "52c57d9c0e06fc9883285db4eec1a1504e27726dc5afce943d6f54df22188f05c3eeee06d052375eceb55df83c314237b3718f07fccef6198bda8c20d794b102", + "chain_code": null + }, + { + "type": 1, + "pub_key": "bc65be1b0b9d7531778a1317c2aa6de936963c3f9ac7d5ee9e9eda25e0c97c5e", + "signature": "6de4940ff99738aaf3659ffeb8e4f6f01ff88ddb65c24028d75a847ca684d07af000e32eaa4c915c8031f6d928b2bcbe8c6f57e389299d3eafe213bd0ab1190c", + "chain_code": null + } + ] + } + }, + { + "description": "transaction delegating vote to predefined DRep 'No Confidence'", + "parameters": { + "protocol_magic": 764824073, + "network_id": 1, + "fee": 42, + "ttl": 10, + "validity_interval_start": null, + "certificates": [ + { + "type": 9, + "path": "m/1852'/1815'/0'/2/0", + "drep": { + "type": 3 + } + } + ], + "withdrawals": [], + "auxiliary_data": null, + "inputs": [ + { + "path": "m/1852'/1815'/0'/0/0", + "prev_hash": "3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7", + "prev_index": 0 + } + ], + "outputs": [ + { + "address": "addr1q84sh2j72ux0l03fxndjnhctdg7hcppsaejafsa84vh7lwgmcs5wgus8qt4atk45lvt4xfxpjtwfhdmvchdf2m3u3hlsd5tq5r", + "amount": "1" + } + ], + "mint": [], + "script_data_hash": null, + "collateral_inputs": [], + "required_signers": [], + "collateral_return": null, + "total_collateral": null, + "reference_inputs": [], + "signing_mode": "ORDINARY_TRANSACTION", + "additional_witness_requests": [], + "include_network_id": false, + "tag_cbor_sets": false + }, + "result": { + "tx_hash": "567e9bd00787190f1ab51879dcf834002b76007130c526b2e4d1bf9a996f5ad0", + "witnesses": [ + { + "type": 1, + "pub_key": "5d010cf16fdeff40955633d6c565f3844a288a24967cf6b76acbeb271b4f13c1", + "signature": "20e3f9ecc3a1b97cbda08cf610b2e72b45d0e0916af2be2ad472d4c8d2be4b13818497818961c8d27379754f0057b00fa286bce0d59f177f24eeee4e2b24940f", + "chain_code": null + }, + { + "type": 1, + "pub_key": "bc65be1b0b9d7531778a1317c2aa6de936963c3f9ac7d5ee9e9eda25e0c97c5e", + "signature": "898fb2cef0c4b954f22c4218fc9a188a5da340ddb5c6d5bba01c67520bbf537f5743814b6d40dd7f299ece7e39d7efb16a1cb597e8d421649a9483f631371703", + "chain_code": null + } + ] + } + }, { "description": "transaction with auxiliary data hash", "parameters": { @@ -987,7 +1434,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "1875f1d59a53f1cb4c43949867d72bcfd857fa3b64feb88f41b78ddaa1a21cbf", @@ -1045,7 +1493,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "839a587109358e0aa81b8fb3d5fa74665fac303425ec544a4db7f6ba4e882dff", @@ -1118,7 +1567,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "15e4e382d913a743776b93d730fee3ca39bfa3ee203801205333bc9aad249612", @@ -1188,7 +1638,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "98357cec961c4c2bfef747bb204a06945ab55077166ec4367b644882136b8b39", @@ -1253,7 +1704,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "a5c5506777fb62aa98e6c45f1c85ab9ddf706a1f199e777c43f2288a6b4fdcab", @@ -1321,7 +1773,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "c5b5f451fb5992e97ab50364467348c1899a2c8972d2d79ae5893bbac37eb51f", @@ -1386,7 +1839,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "c5b5f451fb5992e97ab50364467348c1899a2c8972d2d79ae5893bbac37eb51f", @@ -1447,7 +1901,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "47cf79f20c6c62edb4162b3b232a57afc1bd0b57c7fd8389555276408a004776", @@ -1511,7 +1966,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "b7269ddc59e4094a6581c653e0d5dc1e553e3a5fb6ffae47d3d094dff1cfe87b", @@ -1588,7 +2044,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "0b929def7bd9f44f5602f809bc0f9be30521f6b93d625525cf33b956993bfb22", @@ -1637,7 +2094,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "b621e22f7cb9aac1a70a3362fde88bdfd31fc100e20f3f3c24a7b853536b4f50", @@ -1695,7 +2153,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "00d393f7fc9a8c17b3efccb44dad9d7e15fdaf2d942a3a455b52b5be016066dd", @@ -1754,7 +2213,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "f4b7315ec080d05024d1f7bf6795dd234c6624970d8e272a245702de539feaa2", @@ -1807,7 +2267,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "cabc87a76ad8944e8a97a7cbf9c893a77ed7d1bd963c428c3786d663adb7f0dd", @@ -1959,7 +2420,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "f98e1b5edfd376356eb211103bfae679380929bf7fbc40b3355a68e98111d091", @@ -2084,7 +2546,8 @@ "path": "m/1855'/1815'/0'" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "042c1d3a6eab693d2ea6b186a88aed038159e7eb581da80464bca7339fb9afe0", @@ -2137,7 +2600,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": true + "include_network_id": true, + "tag_cbor_sets": false }, "result": { "tx_hash": "4fcd4532bb0a9dfff2368e60be80d46819a92a9acfb2c64a7bf5975040789bac", @@ -2185,7 +2649,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "8ea2765f1e46d84f02d8b25a5f0cf445aaeaadcab913e17e59388a4f898ca812", @@ -2235,7 +2700,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "b90ad6dd0e1155559bd3e66f2fce91f4c85598d47c90922f01e121ea4f51f96e", @@ -2282,7 +2748,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "06d6587ddd79e000b6922c54069b78bb931b0cba06d97ba4171f3ce6590438d2", @@ -2329,7 +2796,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "8606e5b69b5c40bd359d7bad6ed6f77810b8e8acba6cbca298c13f92b11178d4", @@ -2380,7 +2848,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "8c328640f974f47cecbcaed56e46c3ba4f2ea6769e6e3528915deb3bb518aa06", @@ -2463,7 +2932,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "b664d33bfcbfc1b54f34c813438ab4dac788ce715a3461f85142c4d19460e949", @@ -2513,7 +2983,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "719d33e1e2811f82046951dccee1a9af82d8fe1d8abc36d581a9eccc421c3204", @@ -2565,7 +3036,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "821e8163c5cf225c09f338f385c81e4326610f830e2abb89f9961e20741e6b70", @@ -2708,7 +3180,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "f1bda77315626ce61c784f3e60a74128f29b7d00a0c8baca030464293da2d7c4", @@ -2761,7 +3234,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "f2c5b7bd408add0234e2302d1b46cc72e0af8a88e6d12add95d230c51febdb04", @@ -2813,7 +3287,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "62baf68499258a35809faab713420d7d609dd0a1a3bbc5f6e3332917cf5ddece", @@ -2865,7 +3340,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "ac4bdaaf2288a0108654919e7f89811b32274d54da834162e407635db39de4f4", diff --git a/common/tests/fixtures/cardano/sign_tx.multisig.failed.json b/common/tests/fixtures/cardano/sign_tx.multisig.failed.json index caf6fe7bc21..d6bcd7c370c 100644 --- a/common/tests/fixtures/cardano/sign_tx.multisig.failed.json +++ b/common/tests/fixtures/cardano/sign_tx.multisig.failed.json @@ -45,7 +45,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -92,7 +93,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -142,7 +144,8 @@ "path": "m/1854'/1815'/2'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -192,7 +195,8 @@ "path": "m/1854'/1815'/2'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -240,7 +244,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -288,7 +293,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -335,7 +341,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -382,7 +389,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -433,7 +441,8 @@ "reference_inputs": [], "signing_mode": "MULTISIG_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -480,7 +489,8 @@ "reference_inputs": [], "signing_mode": "MULTISIG_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -522,7 +532,8 @@ "path": "m/1852'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -566,7 +577,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid output" @@ -608,7 +620,8 @@ "path": "m/1855'/1815'/0'" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -701,7 +714,8 @@ "path": "m/1855'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -748,7 +762,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -793,7 +808,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -835,7 +851,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -882,7 +899,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" diff --git a/common/tests/fixtures/cardano/sign_tx.multisig.json b/common/tests/fixtures/cardano/sign_tx.multisig.json index 44051c5004c..a5e47f67493 100644 --- a/common/tests/fixtures/cardano/sign_tx.multisig.json +++ b/common/tests/fixtures/cardano/sign_tx.multisig.json @@ -94,7 +94,8 @@ "path": "m/1855'/1815'/0'" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "042c1d3a6eab693d2ea6b186a88aed038159e7eb581da80464bca7339fb9afe0", @@ -155,7 +156,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "ed9fc2755091fa72b58e9dd06db05cce87c0c6f3962f587d5fc348fe478f0752", @@ -218,7 +220,8 @@ "path": "m/1854'/1815'/0'/2/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "26fb07b23368898665829283985ffe6c4cb2ec13758e83f467b78e5061f9619b", @@ -282,7 +285,8 @@ "path": "m/1854'/1815'/0'/2/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "c4e70484c964eca910219047542632ac9a9ac81f11f5d5afd8bb1b0ef4366d69", @@ -351,7 +355,8 @@ "path": "m/1854'/1815'/0'/2/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "e02d252c5cad2a4d8f163069cd7f0822c7876d16af9ad8ac2d461655812b2d1b", @@ -464,7 +469,8 @@ "path": "m/1855'/1815'/0'" } ], - "include_network_id": true + "include_network_id": true, + "tag_cbor_sets": false }, "result": { "tx_hash": "c3637e34529fae17dbbb90c58307df0cf3b818f4c034860fff362d1ea864cca4", @@ -527,7 +533,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "8ea2765f1e46d84f02d8b25a5f0cf445aaeaadcab913e17e59388a4f898ca812", @@ -577,7 +584,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "ee065ce429d8dbcc2432aa81706877f2eee4fc5031d1e1ae06fe993b9987b1be", @@ -631,7 +639,8 @@ "path": "m/1854'/1815'/0'/0/2" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "dae07f98f82878ecd1a6ad988c55f80870c2fb299705ed181458664906583e51", diff --git a/common/tests/fixtures/cardano/sign_tx.plutus.failed.json b/common/tests/fixtures/cardano/sign_tx.plutus.failed.json index 0f4e8065b28..973a528a5fe 100644 --- a/common/tests/fixtures/cardano/sign_tx.plutus.failed.json +++ b/common/tests/fixtures/cardano/sign_tx.plutus.failed.json @@ -43,7 +43,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid collateral input" @@ -89,7 +90,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address parameters" @@ -138,7 +140,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid required signer" @@ -185,7 +188,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid collateral return" @@ -233,7 +237,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid collateral return" diff --git a/common/tests/fixtures/cardano/sign_tx.plutus.json b/common/tests/fixtures/cardano/sign_tx.plutus.json index 8643c039158..b7fce3e6348 100644 --- a/common/tests/fixtures/cardano/sign_tx.plutus.json +++ b/common/tests/fixtures/cardano/sign_tx.plutus.json @@ -42,7 +42,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "598dc85bc03cc682ee7ce8b4db798d836a0840429cae7fc62fe388e727a669a2", @@ -107,7 +108,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "ff4a515636b38ed2b2b37f64501f75f04a25d05349b5b84c07f319b6f86372f4", @@ -139,6 +141,95 @@ ] } }, + { + "description": "Plutus transaction with required signers, reference input and 258-tagged sets", + "parameters": { + "protocol_magic": 764824073, + "network_id": 1, + "fee": 42, + "ttl": 10, + "validity_interval_start": null, + "certificates": [], + "withdrawals": [], + "auxiliary_data": null, + "inputs": [ + { + "prev_hash": "1af8fa0b754ff99253d983894e63a2b09cbb56c833ba18c3384210163f63dcfc", + "prev_index": 0 + } + ], + "outputs": [ + { + "address": "addr1q84sh2j72ux0l03fxndjnhctdg7hcppsaejafsa84vh7lwgmcs5wgus8qt4atk45lvt4xfxpjtwfhdmvchdf2m3u3hlsd5tq5r", + "amount": "1" + } + ], + "mint": [], + "script_data_hash": "d593fd793c377ac50a3169bb8378ffc257c944da31aa8f355dfa5a4f6ff89e02", + "collateral_inputs": [ + { + "path": "m/1852'/1815'/0'/0/0", + "prev_hash": "1af8fa0b754ff99253d983894e63a2b09cbb56c833ba18c3384210163f63dcfc", + "prev_index": 0 + } + ], + "required_signers": [ + { + "key_path": "m/1852'/1815'/0'/0/1" + }, + { + "key_path": "m/1854'/1815'/0'/0/0" + }, + { + "key_path": "m/1855'/1815'/0'" + }, + { + "key_hash": "3a7f09d3df4cf66a7399c2b05bfa234d5a29560c311fc5db4c490711" + } + ], + "collateral_return": null, + "total_collateral": null, + "reference_inputs": [ + { + "prev_hash": "1af8fa0b754ff99253d983894e63a2b09cbb56c833ba18c3384210163f63dcfc", + "prev_index": 0 + } + ], + "signing_mode": "PLUTUS_TRANSACTION", + "additional_witness_requests": [], + "include_network_id": false, + "tag_cbor_sets": true + }, + "result": { + "tx_hash": "9cb88fd25d43f4e8140be00dd9538c59b0e8fe1f3186890421d8820cf33e6be7", + "witnesses": [ + { + "type": 1, + "pub_key": "5d010cf16fdeff40955633d6c565f3844a288a24967cf6b76acbeb271b4f13c1", + "signature": "5f9426495c0fe515a2f933cb43a2d3f4de32b5102e32ce8d71e1d3718fda2b6a91c6845f9d612787096813c8be7aea4bc140c1288ac24f6bedf9d6c105ff7c05", + "chain_code": null + }, + { + "type": 1, + "pub_key": "36a8ef21d5b98fdf23a27325cf643deaac35e912c835e35037f23d1061ae5b16", + "signature": "a2251fc5daa777643db0c12becf35b8d75d14743888beb7f48da0a5c2428bfade90926b4df6f70a9d967b26d6a09208e6278d210fbfc84a5a01ad7d0fd04d90e", + "chain_code": null + }, + { + "type": 1, + "pub_key": "b10be5c0d11ad8292bbe69e220ca0cfbe154610b3041a8e72f9d515c226ab3b1", + "signature": "0a457eca4d1dac83f9f794f07215e625d4af4db361ce303f8744efc609714f4f075805e0ad81c9127bd0d8ad5f22a21b6d166c2d9cab2c8309d90c493956ca07", + "chain_code": null + }, + { + "type": 1, + "pub_key": "b75258e4f61eb7b313d8554c2fe10673cf214ca2d762bfd53ec3b7846e2ee872", + "signature": "f60e26cb4152179ebe9af3beae7c54abe04d4d195efe5cebde1d007084dcce3c664fc43629da524ae33ba9fe40bba8a8f36964845c196fafc182459ad8f7f60e", + "chain_code": null + } + ] + } + }, { "description": "Simple Plutus transaction with additional witness requests", "parameters": { @@ -187,7 +278,8 @@ "path": "m/1855'/1815'/0'" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "598dc85bc03cc682ee7ce8b4db798d836a0840429cae7fc62fe388e727a669a2", @@ -255,7 +347,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "3fbf931170d2ed6df95a35572d850b40bab4b350763872cb9110f93e9ce8668b", @@ -316,7 +409,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "08bd557131d89c5008cf79f7bdf9c47d27ad7c00b3a1a19dfecedd7c1f7508d8", @@ -439,7 +533,8 @@ "path": "m/1855'/1815'/0'" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "f1ff85026488d1ea60950d9d1819ee00a012560074cd60435f2510e917d86a7f", @@ -512,7 +607,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "0c4a8ec4a0e6718d81a391d09bbc7d48e14f879c94b7e48a35092ef532ebf597", @@ -587,7 +683,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "53d7a7ee887178a08ac70ff2088f8bfbafc7b6bcd5a54e79a686b013455d5e25", @@ -663,7 +760,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "c55ef20e0c8da066bab5221a5c010c32d90905753b0257576e34d7e639f65c9d", @@ -744,7 +842,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "b3ccc29173719973363988763826eb853cb314df8dde07fcf82dab9961d47c25", @@ -825,7 +924,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "717e9b63b08fda304bf7625d5df4149200b28b740db9b66082961a1d2f938ccd", @@ -912,7 +1012,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "baabb4e6dced60de330a089590ea38b7bbe505bbf9c785ef88078242f0ea9860", @@ -981,7 +1082,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "bb4d26c40c67d23ca74bb2e4ad28f586567b99907b86c0337fb7d8f4cde90100", @@ -1035,7 +1137,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "5581fb7a99b8e0ebaf552a5d7157cebb37c9624602d78d86337dfbf838fb2e13", @@ -1089,7 +1192,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "e5beff2153154ab3dba4ff5c638f40ae8c1594c67aee3310bd19997f5013e47b", @@ -1143,7 +1247,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "2399f1743e4074d3e18a742898c3e4d5eac66a7284a949ddcd1eac004498720f", @@ -1197,7 +1302,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "8c131e38f378d141deb05d4bf2eb2d13bb75d6363dd470a1f524ba027eff566a", @@ -1263,7 +1369,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "6c5ccc9f6ec1b0b25ccb81ae533b9d46e545af4b745f7e287c967f13a152d537", @@ -1331,7 +1438,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "c95a6f99f5763d89926b44b8a0f7fa12f14ee3978c120e42c581a3f47638d490", @@ -1383,7 +1491,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "3a2a702ed7a907323a7f6ef7bf5d5ad4685bd1a605a0594e535b93597a33b574", @@ -1449,7 +1558,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "6852e7285d0a187f692bdb2ea93451f96952303c54168d5bd7c428a78d0fac07", @@ -1517,7 +1627,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "1bef5859c3e23fad63141b61e03aa45537c5ec10ad7c4780a4ed198c17bee165", @@ -1574,7 +1685,8 @@ ], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "98657251d3014dfd98e1eab94bf0a7f6252968d683df9bc8585bf431b4c72a51", diff --git a/common/tests/fixtures/cardano/sign_tx.show_details.json b/common/tests/fixtures/cardano/sign_tx.show_details.json index 7d89e6cedf1..3bf0151414f 100644 --- a/common/tests/fixtures/cardano/sign_tx.show_details.json +++ b/common/tests/fixtures/cardano/sign_tx.show_details.json @@ -37,7 +37,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "73e09bdebf98a9e0f17f86a2d11e0f14f4f8dae77cdf26ff1678e821f20c8db6", @@ -94,7 +95,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "22c67f12e6f6aa0f2f09fd27d472b19c7208ccd7c3af4b09604fd5d462c1de2b", @@ -148,7 +150,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "8ea2765f1e46d84f02d8b25a5f0cf445aaeaadcab913e17e59388a4f898ca812", @@ -199,7 +202,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "8c328640f974f47cecbcaed56e46c3ba4f2ea6769e6e3528915deb3bb518aa06", @@ -257,7 +261,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "ea6d50d786a7c252451704379a05bb21d3f9ad47d043d90fcc88cad5b78ca3bc", @@ -311,7 +316,8 @@ "path": "m/1854'/1815'/0'/0/2" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "dae07f98f82878ecd1a6ad988c55f80870c2fb299705ed181458664906583e51", @@ -385,7 +391,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "1bef5859c3e23fad63141b61e03aa45537c5ec10ad7c4780a4ed198c17bee165", @@ -442,7 +449,8 @@ ], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "98657251d3014dfd98e1eab94bf0a7f6252968d683df9bc8585bf431b4c72a51", @@ -510,7 +518,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "15e4e382d913a743776b93d730fee3ca39bfa3ee203801205333bc9aad249612", diff --git a/common/tests/fixtures/cardano/sign_tx.slip39.json b/common/tests/fixtures/cardano/sign_tx.slip39.json index 3e0b89907c8..a706a91cc1a 100644 --- a/common/tests/fixtures/cardano/sign_tx.slip39.json +++ b/common/tests/fixtures/cardano/sign_tx.slip39.json @@ -41,7 +41,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "73e09bdebf98a9e0f17f86a2d11e0f14f4f8dae77cdf26ff1678e821f20c8db6", @@ -93,7 +94,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "4c43ce4c72f145b145ae7add414722735e250d048f61c4585a5becafcbffa6ae", @@ -145,7 +147,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "93a2c3cfb67ef1e4bae167b0f443c3370664bdb9171bc9cd41bad98e5cc049b2", diff --git a/common/tests/fixtures/cardano/sign_tx_stake_pool_registration.failed.json b/common/tests/fixtures/cardano/sign_tx_stake_pool_registration.failed.json index b13d4f77f0c..8548de8c648 100644 --- a/common/tests/fixtures/cardano/sign_tx_stake_pool_registration.failed.json +++ b/common/tests/fixtures/cardano/sign_tx_stake_pool_registration.failed.json @@ -58,7 +58,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -121,7 +122,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -181,7 +183,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -241,7 +244,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -322,7 +326,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -365,7 +370,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -430,7 +436,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -490,7 +497,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Stakepool registration transaction can only contain the pool owner witness request" @@ -549,7 +557,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "ProcessError: Invalid address" @@ -608,7 +617,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "ProcessError: Invalid address" @@ -701,7 +711,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid pool owner staking path" @@ -794,7 +805,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -887,7 +899,8 @@ "reference_inputs": [], "signing_mode": "MULTISIG_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -980,7 +993,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -1077,7 +1091,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Stakepool registration transaction can only contain the pool owner witness request" @@ -1174,7 +1189,8 @@ "path": "m/1855'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Stakepool registration transaction can only contain the pool owner witness request" @@ -1298,7 +1314,8 @@ "path": "m/1855'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -1377,7 +1394,7 @@ } ], "outputs": [ - { + { "addressType": 0, "path": "m/1852'/1815'/0'/0/0", "stakingPath": "m/1852'/1815'/0'/2/0", @@ -1393,7 +1410,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid output" @@ -1487,7 +1505,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid output" @@ -1580,7 +1599,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -1679,7 +1699,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -1775,7 +1796,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -1868,7 +1890,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -1966,7 +1989,8 @@ ], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -2063,7 +2087,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -2160,7 +2185,8 @@ "path": "m/1852'/1815'/0'/2/1" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Stakepool registration transaction can only contain the pool owner witness request" diff --git a/common/tests/fixtures/cardano/sign_tx_stake_pool_registration.json b/common/tests/fixtures/cardano/sign_tx_stake_pool_registration.json index 033c577cc74..6c94b850335 100644 --- a/common/tests/fixtures/cardano/sign_tx_stake_pool_registration.json +++ b/common/tests/fixtures/cardano/sign_tx_stake_pool_registration.json @@ -91,7 +91,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "e3b9a5657bf62609465a930c8359d774c73944973cfc5a104a0f0ed1e1e8db21", @@ -192,7 +193,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "c0d944db15446cf05e8db014685414c928d4d9a3e96aea229234be56eeae34c5", @@ -294,7 +296,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "f3d62758ff2f520e7256e65be9d8165da60c7979a97202c19d625709412411fd", @@ -362,7 +365,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "504f9214142996e0b7e315103b25d88a4afa3d01dd5be22376921b52b01483c3", @@ -430,7 +434,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "12921b4f8e77f815e0c8ed97c541fbd5ba38a6d3323f4ff1af0cb934b8ac6b39", @@ -533,7 +538,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "880fafab19a36407e9af300c2905e2f6bc8a8debd8b625005f56994d242ba460", @@ -634,7 +640,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "36d7e5b9acc9487b9190c3bbe8fa0ec60a6fd66b3c0af7cfd8a015a18b00d765", diff --git a/core/.changelog.d/3496.added.1 b/core/.changelog.d/3496.added.1 new file mode 100644 index 00000000000..6e208d171fc --- /dev/null +++ b/core/.changelog.d/3496.added.1 @@ -0,0 +1 @@ +Cardano: Added support for Conway certificates diff --git a/core/.changelog.d/3496.added.2 b/core/.changelog.d/3496.added.2 new file mode 100644 index 00000000000..509c632add5 --- /dev/null +++ b/core/.changelog.d/3496.added.2 @@ -0,0 +1 @@ +Cardano: Added support for tagged sets in CBOR (tag 258) diff --git a/core/.changelog.d/3496.changed.3 b/core/.changelog.d/3496.changed.3 new file mode 100644 index 00000000000..b7d9fb6727a --- /dev/null +++ b/core/.changelog.d/3496.changed.3 @@ -0,0 +1 @@ +Cardano: Increased max URL length to 128 bytes diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 86007084a76..2539e3565a7 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -663,6 +663,8 @@ static void _librust_qstrs(void) { MP_QSTR_cardano__addr_pointer; MP_QSTR_cardano__addr_reward; MP_QSTR_cardano__address_no_staking; + MP_QSTR_cardano__always_abstain; + MP_QSTR_cardano__always_no_confidence; MP_QSTR_cardano__amount_burned_decimals_unknown; MP_QSTR_cardano__amount_minted_decimals_unknown; MP_QSTR_cardano__amount_sent_decimals_unknown; @@ -690,6 +692,9 @@ static void _librust_qstrs(void) { MP_QSTR_cardano__credential_mismatch; MP_QSTR_cardano__datum_hash; MP_QSTR_cardano__delegating_to; + MP_QSTR_cardano__delegating_to_key_hash; + MP_QSTR_cardano__delegating_to_script; + MP_QSTR_cardano__deposit; MP_QSTR_cardano__for_account_and_index_template; MP_QSTR_cardano__for_account_template; MP_QSTR_cardano__for_key_hash; @@ -759,6 +764,7 @@ static void _librust_qstrs(void) { MP_QSTR_cardano__unusual_path; MP_QSTR_cardano__valid_since; MP_QSTR_cardano__verify_script; + MP_QSTR_cardano__vote_delegation; MP_QSTR_cardano__vote_key_registration; MP_QSTR_cardano__vote_public_key; MP_QSTR_cardano__voting_purpose; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 1e8b72e94e5..70f9baab909 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1239,6 +1239,18 @@ pub enum TranslatedString { storage_msg__wrong_pin = 844, // "Wrong PIN" reset__create_x_of_y_multi_share_backup_template = 845, // "Do you want to create a {0} of {1} multi-share backup?" reset__title_shamir_backup = 846, // "Multi-share backup" + #[cfg(feature = "universal_fw")] + cardano__always_abstain = 847, // "Always Abstain" + #[cfg(feature = "universal_fw")] + cardano__always_no_confidence = 848, // "Always No Confidence" + #[cfg(feature = "universal_fw")] + cardano__delegating_to_key_hash = 849, // "Delegating to key hash:" + #[cfg(feature = "universal_fw")] + cardano__delegating_to_script = 850, // "Delegating to script:" + #[cfg(feature = "universal_fw")] + cardano__deposit = 851, // "Deposit:" + #[cfg(feature = "universal_fw")] + cardano__vote_delegation = 852, // "Vote delegation" } impl TranslatedString { @@ -2473,6 +2485,18 @@ impl TranslatedString { Self::storage_msg__wrong_pin => "Wrong PIN", Self::reset__create_x_of_y_multi_share_backup_template => "Do you want to create a {0} of {1} multi-share backup?", Self::reset__title_shamir_backup => "Multi-share backup", + #[cfg(feature = "universal_fw")] + Self::cardano__always_abstain => "Always Abstain", + #[cfg(feature = "universal_fw")] + Self::cardano__always_no_confidence => "Always No Confidence", + #[cfg(feature = "universal_fw")] + Self::cardano__delegating_to_key_hash => "Delegating to key hash:", + #[cfg(feature = "universal_fw")] + Self::cardano__delegating_to_script => "Delegating to script:", + #[cfg(feature = "universal_fw")] + Self::cardano__deposit => "Deposit:", + #[cfg(feature = "universal_fw")] + Self::cardano__vote_delegation => "Vote delegation", } } @@ -3708,6 +3732,18 @@ impl TranslatedString { Qstr::MP_QSTR_storage_msg__wrong_pin => Some(Self::storage_msg__wrong_pin), Qstr::MP_QSTR_reset__create_x_of_y_multi_share_backup_template => Some(Self::reset__create_x_of_y_multi_share_backup_template), Qstr::MP_QSTR_reset__title_shamir_backup => Some(Self::reset__title_shamir_backup), + #[cfg(feature = "universal_fw")] + Qstr::MP_QSTR_cardano__always_abstain => Some(Self::cardano__always_abstain), + #[cfg(feature = "universal_fw")] + Qstr::MP_QSTR_cardano__always_no_confidence => Some(Self::cardano__always_no_confidence), + #[cfg(feature = "universal_fw")] + Qstr::MP_QSTR_cardano__delegating_to_key_hash => Some(Self::cardano__delegating_to_key_hash), + #[cfg(feature = "universal_fw")] + Qstr::MP_QSTR_cardano__delegating_to_script => Some(Self::cardano__delegating_to_script), + #[cfg(feature = "universal_fw")] + Qstr::MP_QSTR_cardano__deposit => Some(Self::cardano__deposit), + #[cfg(feature = "universal_fw")] + Qstr::MP_QSTR_cardano__vote_delegation => Some(Self::cardano__vote_delegation), _ => None, } } diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index eb15d7d8134..81fd7e4b750 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -111,6 +111,8 @@ class TR: cardano__addr_pointer: str = "Pointer" cardano__addr_reward: str = "Reward" cardano__address_no_staking: str = "address - no staking rewards." + cardano__always_abstain: str = "Always Abstain" + cardano__always_no_confidence: str = "Always No Confidence" cardano__amount_burned_decimals_unknown: str = "Amount burned (decimals unknown):" cardano__amount_minted_decimals_unknown: str = "Amount minted (decimals unknown):" cardano__amount_sent_decimals_unknown: str = "Amount sent (decimals unknown):" @@ -138,6 +140,9 @@ class TR: cardano__credential_mismatch: str = "Credential doesn't match payment credential." cardano__datum_hash: str = "Datum hash:" cardano__delegating_to: str = "Delegating to:" + cardano__delegating_to_key_hash: str = "Delegating to key hash:" + cardano__delegating_to_script: str = "Delegating to script:" + cardano__deposit: str = "Deposit:" cardano__for_account_and_index_template: str = "for account {0} and index {1}:" cardano__for_account_template: str = "for account {0}:" cardano__for_key_hash: str = "for key hash:" @@ -207,6 +212,7 @@ class TR: cardano__unusual_path: str = "Path is unusual." cardano__valid_since: str = "Valid since:" cardano__verify_script: str = "Verify script" + cardano__vote_delegation: str = "Vote delegation" cardano__vote_key_registration: str = "Vote key registration (CIP-36)" cardano__vote_public_key: str = "Vote public key:" cardano__voting_purpose: str = "Voting purpose:" diff --git a/core/src/all_modules.py b/core/src/all_modules.py index 571e7cda5e3..55e81e360a3 100644 --- a/core/src/all_modules.py +++ b/core/src/all_modules.py @@ -381,6 +381,8 @@ import trezor.enums.CardanoCVoteRegistrationFormat trezor.enums.CardanoCertificateType import trezor.enums.CardanoCertificateType + trezor.enums.CardanoDRepType + import trezor.enums.CardanoDRepType trezor.enums.CardanoDerivationType import trezor.enums.CardanoDerivationType trezor.enums.CardanoNativeScriptHashDisplayFormat diff --git a/core/src/apps/cardano/certificates.py b/core/src/apps/cardano/certificates.py index bd3a3543105..762dea4329c 100644 --- a/core/src/apps/cardano/certificates.py +++ b/core/src/apps/cardano/certificates.py @@ -1,7 +1,7 @@ from micropython import const from typing import TYPE_CHECKING -from trezor.enums import CardanoCertificateType, CardanoPoolRelayType +from trezor.enums import CardanoCertificateType, CardanoDRepType, CardanoPoolRelayType from trezor.wire import ProcessError from . import addresses @@ -23,7 +23,7 @@ _IPV4_ADDRESS_SIZE = const(4) _IPV6_ADDRESS_SIZE = const(16) -_MAX_URL_LENGTH = const(64) +_MAX_URL_LENGTH = const(128) _MAX_PORT_NUMBER = const(65535) @@ -51,6 +51,19 @@ def validate( ProcessError("Invalid certificate"), ) + if certificate.type in ( + CCT.STAKE_REGISTRATION_CONWAY, + CCT.STAKE_DEREGISTRATION_CONWAY, + ): + if certificate.deposit is None: + raise ProcessError("Invalid certificate") + validate_stake_credential( + certificate.path, + certificate.script_hash, + certificate.key_hash, + ProcessError("Invalid certificate"), + ) + if certificate.type == CCT.STAKE_DELEGATION: if not certificate.pool or len(certificate.pool) != _POOL_HASH_SIZE: raise ProcessError("Invalid certificate") @@ -62,24 +75,45 @@ def validate( certificate.pool_parameters, protocol_magic, network_id ) + if certificate.type == CCT.VOTE_DELEGATION: + if certificate.drep is None: + raise ProcessError("Invalid certificate") + validate_drep( + certificate.drep, + ProcessError("Invalid certificate"), + ) + validate_stake_credential( + certificate.path, + certificate.script_hash, + certificate.key_hash, + ProcessError("Invalid certificate"), + ) + account_path_checker.add_certificate(certificate) def _validate_structure(certificate: messages.CardanoTxCertificate) -> None: pool = certificate.pool # local_cache_attribute pool_parameters = certificate.pool_parameters # local_cache_attribute + deposit = certificate.deposit + drep = certificate.drep CCT = CardanoCertificateType # local_cache_global fields_to_be_empty: dict[CardanoCertificateType, tuple[Any, ...]] = { - CCT.STAKE_REGISTRATION: (pool, pool_parameters), - CCT.STAKE_DELEGATION: (pool_parameters,), - CCT.STAKE_DEREGISTRATION: (pool, pool_parameters), + CCT.STAKE_REGISTRATION: (pool, pool_parameters, deposit, drep), + CCT.STAKE_REGISTRATION_CONWAY: (pool, pool_parameters, drep), + CCT.STAKE_DELEGATION: (pool_parameters, deposit, drep), + CCT.STAKE_DEREGISTRATION: (pool, pool_parameters, deposit, drep), + CCT.STAKE_DEREGISTRATION_CONWAY: (pool, pool_parameters, drep), CCT.STAKE_POOL_REGISTRATION: ( certificate.path, certificate.script_hash, certificate.key_hash, pool, + deposit, + drep, ), + CCT.VOTE_DELEGATION: (pool, pool_parameters, deposit), } if certificate.type not in fields_to_be_empty or any( @@ -106,6 +140,20 @@ def cborize( certificate.key_hash, ), ) + elif cert_type in ( + CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + ): + return ( + cert_type, + cborize_stake_credential( + keychain, + certificate.path, + certificate.script_hash, + certificate.key_hash, + ), + certificate.deposit, + ) elif cert_type == CardanoCertificateType.STAKE_DELEGATION: return ( cert_type, @@ -117,6 +165,18 @@ def cborize( ), certificate.pool, ) + elif cert_type == CardanoCertificateType.VOTE_DELEGATION: + assert certificate.drep is not None + return ( + cert_type, + cborize_stake_credential( + keychain, + certificate.path, + certificate.script_hash, + certificate.key_hash, + ), + cborize_drep(certificate.drep), + ) else: raise RuntimeError # should be unreachable @@ -198,6 +258,32 @@ def _validate_pool_parameters( assert_cond(all((32 <= ord(c) < 127) for c in pool_metadata.url)) +def validate_drep( + drep: messages.CardanoDRep, + error: ProcessError, +) -> None: + from .helpers import ADDRESS_KEY_HASH_SIZE, SCRIPT_HASH_SIZE + + drep_type = drep.type + script_hash = drep.script_hash + key_hash = drep.key_hash + + if drep_type == CardanoDRepType.KEY_HASH: + if script_hash or not key_hash or len(key_hash) != ADDRESS_KEY_HASH_SIZE: + raise error + elif drep_type == CardanoDRepType.SCRIPT_HASH: + if key_hash or not script_hash or len(script_hash) != SCRIPT_HASH_SIZE: + raise error + elif drep_type in ( + CardanoDRepType.ABSTAIN, + CardanoDRepType.NO_CONFIDENCE, + ): + if script_hash or key_hash: + raise error + else: + raise RuntimeError # should be unreachable + + def validate_pool_owner( owner: messages.CardanoPoolOwner, account_path_checker: AccountPathChecker ) -> None: @@ -237,6 +323,21 @@ def validate_pool_relay(pool_relay: messages.CardanoPoolRelayParameters) -> None raise RuntimeError # should be unreachable +def cborize_drep(drep: messages.CardanoDRep) -> tuple[int, bytes] | tuple[int]: + if drep.type == CardanoDRepType.KEY_HASH: + assert drep.key_hash is not None + return 0, drep.key_hash + elif drep.type == CardanoDRepType.SCRIPT_HASH: + assert drep.script_hash is not None + return 1, drep.script_hash + elif drep.type == CardanoDRepType.ABSTAIN: + return (2,) + elif drep.type == CardanoDRepType.NO_CONFIDENCE: + return (3,) + else: + raise RuntimeError # should be unreachable + + def cborize_pool_owner( keychain: seed.Keychain, pool_owner: messages.CardanoPoolOwner ) -> bytes: diff --git a/core/src/apps/cardano/helpers/bech32.py b/core/src/apps/cardano/helpers/bech32.py index b40d6067f99..6847764129b 100644 --- a/core/src/apps/cardano/helpers/bech32.py +++ b/core/src/apps/cardano/helpers/bech32.py @@ -15,6 +15,8 @@ HRP_REQUIRED_SIGNER_KEY_HASH = "req_signer_vkh" HRP_OUTPUT_DATUM_HASH = "datum" HRP_SCRIPT_DATA_HASH = "script_data" +HRP_DREP_KEY_HASH = "drep" +HRP_DREP_SCRIPT_HASH = "drep_script" def encode(hrp: str, data: bytes) -> str: diff --git a/core/src/apps/cardano/helpers/hash_builder_collection.py b/core/src/apps/cardano/helpers/hash_builder_collection.py index 430a7426bcf..22b6d238e15 100644 --- a/core/src/apps/cardano/helpers/hash_builder_collection.py +++ b/core/src/apps/cardano/helpers/hash_builder_collection.py @@ -90,6 +90,19 @@ def _header_bytes(self) -> bytes: return cbor.create_array_header(self.size) +class HashBuilderSet(HashBuilderList, Generic[T]): + def __init__(self, size: int, *, tagged: bool) -> None: + super().__init__(size) + self.tagged = tagged + + def _header_bytes(self) -> bytes: + return ( + cbor.create_tagged_set_header(self.size) + if self.tagged + else cbor.create_array_header(self.size) + ) + + class HashBuilderDict(HashBuilderCollection, Generic[K, V]): key_order_error: wire.ProcessError previous_encoded_key: bytes diff --git a/core/src/apps/cardano/layout.py b/core/src/apps/cardano/layout.py index 1651e0ee0aa..a13dfa62042 100644 --- a/core/src/apps/cardano/layout.py +++ b/core/src/apps/cardano/layout.py @@ -5,6 +5,7 @@ ButtonRequestType, CardanoAddressType, CardanoCertificateType, + CardanoDRepType, CardanoNativeScriptType, ) from trezor.strings import format_amount @@ -58,9 +59,12 @@ CERTIFICATE_TYPE_NAMES = { CardanoCertificateType.STAKE_REGISTRATION: TR.cardano__stake_registration, + CardanoCertificateType.STAKE_REGISTRATION_CONWAY: TR.cardano__stake_registration, CardanoCertificateType.STAKE_DEREGISTRATION: TR.cardano__stake_deregistration, + CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY: TR.cardano__stake_deregistration, CardanoCertificateType.STAKE_DELEGATION: TR.cardano__stake_delegation, CardanoCertificateType.STAKE_POOL_REGISTRATION: TR.cardano__stake_pool_registration, + CardanoCertificateType.VOTE_DELEGATION: TR.cardano__vote_delegation, } BRT_Other = ButtonRequestType.Other # global_import_cache @@ -552,7 +556,9 @@ async def confirm_tx( ) -async def confirm_certificate(certificate: messages.CardanoTxCertificate) -> None: +async def confirm_certificate( + certificate: messages.CardanoTxCertificate, network_id: int +) -> None: # stake pool registration requires custom confirmation logic not covered # in this call assert certificate.type != CardanoCertificateType.STAKE_POOL_REGISTRATION @@ -567,6 +573,18 @@ async def confirm_certificate(certificate: messages.CardanoTxCertificate) -> Non if certificate.type == CardanoCertificateType.STAKE_DELEGATION: assert certificate.pool is not None # validate_certificate props.append((TR.cardano__to_pool, format_stake_pool_id(certificate.pool))) + elif certificate.type in ( + CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + ): + assert certificate.deposit is not None # validate_certificate + props.append( + (TR.cardano__deposit, format_coin_amount(certificate.deposit, network_id)) + ) + + elif certificate.type == CardanoCertificateType.VOTE_DELEGATION: + assert certificate.drep is not None # validate_certificate + props.append(_format_drep(certificate.drep)) await confirm_properties( "confirm_certificate", @@ -768,6 +786,28 @@ def _format_stake_credential( raise ValueError +def _format_drep(drep: messages.CardanoDRep) -> tuple[str, str]: + if drep.type == CardanoDRepType.KEY_HASH: + assert drep.key_hash is not None # validate_drep + return ( + TR.cardano__delegating_to_key_hash, + bech32.encode(bech32.HRP_DREP_KEY_HASH, drep.key_hash), + ) + elif drep.type == CardanoDRepType.SCRIPT_HASH: + assert drep.script_hash is not None # validate_drep + return ( + TR.cardano__delegating_to_script, + bech32.encode(bech32.HRP_DREP_SCRIPT_HASH, drep.script_hash), + ) + elif drep.type == CardanoDRepType.ABSTAIN: + return (TR.cardano__delegating_to, TR.cardano__always_abstain) + elif drep.type == CardanoDRepType.NO_CONFIDENCE: + return (TR.cardano__delegating_to, TR.cardano__always_no_confidence) + else: + # should be unreachable unless there's a bug in validation + raise ValueError + + async def confirm_cvote_registration_delegation( public_key: str, weight: int, diff --git a/core/src/apps/cardano/sign_tx/signer.py b/core/src/apps/cardano/sign_tx/signer.py index 602bdc200da..7ef83a320a9 100644 --- a/core/src/apps/cardano/sign_tx/signer.py +++ b/core/src/apps/cardano/sign_tx/signer.py @@ -16,7 +16,11 @@ from .. import addresses, certificates, layout, seed from ..helpers import INPUT_PREV_HASH_SIZE, LOVELACE_MAX_SUPPLY from ..helpers.credential import Credential -from ..helpers.hash_builder_collection import HashBuilderDict, HashBuilderList +from ..helpers.hash_builder_collection import ( + HashBuilderDict, + HashBuilderList, + HashBuilderSet, +) from ..helpers.paths import SCHEMA_STAKING from ..helpers.utils import derive_public_key @@ -140,10 +144,13 @@ async def _processs_tx_init(self) -> None: msg = self.msg # local_cache_attribute add = self.tx_dict.add # local_cache_attribute HBL = HashBuilderList # local_cache_global + HBS = HashBuilderSet # local_cache_global - inputs_list: HashBuilderList[tuple[bytes, int]] = HBL(msg.inputs_count) - with add(_TX_BODY_KEY_INPUTS, inputs_list): - await self._process_inputs(inputs_list) + inputs_set: HashBuilderSet[tuple[bytes, int]] = HBS( + msg.inputs_count, tagged=self.msg.tag_cbor_sets + ) + with add(_TX_BODY_KEY_INPUTS, inputs_set): + await self._process_inputs(inputs_set) outputs_list: HashBuilderList = HBL(msg.outputs_count) with add(_TX_BODY_KEY_OUTPUTS, outputs_list): @@ -155,9 +162,11 @@ async def _processs_tx_init(self) -> None: add(_TX_BODY_KEY_TTL, msg.ttl) if msg.certificates_count > 0: - certificates_list: HashBuilderList = HBL(msg.certificates_count) - with add(_TX_BODY_KEY_CERTIFICATES, certificates_list): - await self._process_certificates(certificates_list) + certificates_set: HashBuilderSet = HBS( + msg.certificates_count, tagged=self.msg.tag_cbor_sets + ) + with add(_TX_BODY_KEY_CERTIFICATES, certificates_set): + await self._process_certificates(certificates_set) if msg.withdrawals_count > 0: withdrawals_dict: HashBuilderDict[bytes, int] = HashBuilderDict( @@ -184,18 +193,18 @@ async def _processs_tx_init(self) -> None: await self._process_script_data_hash() if msg.collateral_inputs_count > 0: - collateral_inputs_list: HashBuilderList[tuple[bytes, int]] = HBL( - msg.collateral_inputs_count + collateral_inputs_set: HashBuilderSet[tuple[bytes, int]] = HBS( + msg.collateral_inputs_count, tagged=self.msg.tag_cbor_sets ) - with add(_TX_BODY_KEY_COLLATERAL_INPUTS, collateral_inputs_list): - await self._process_collateral_inputs(collateral_inputs_list) + with add(_TX_BODY_KEY_COLLATERAL_INPUTS, collateral_inputs_set): + await self._process_collateral_inputs(collateral_inputs_set) if msg.required_signers_count > 0: - required_signers_list: HashBuilderList[bytes] = HBL( - msg.required_signers_count + required_signers_set: HashBuilderSet[bytes] = HBS( + msg.required_signers_count, tagged=self.msg.tag_cbor_sets ) - with add(_TX_BODY_KEY_REQUIRED_SIGNERS, required_signers_list): - await self._process_required_signers(required_signers_list) + with add(_TX_BODY_KEY_REQUIRED_SIGNERS, required_signers_set): + await self._process_required_signers(required_signers_set) if msg.include_network_id: add(_TX_BODY_KEY_NETWORK_ID, msg.network_id) @@ -207,11 +216,11 @@ async def _processs_tx_init(self) -> None: add(_TX_BODY_KEY_TOTAL_COLLATERAL, msg.total_collateral) if msg.reference_inputs_count > 0: - reference_inputs_list: HashBuilderList[tuple[bytes, int]] = HBL( - msg.reference_inputs_count + reference_inputs_set: HashBuilderSet[tuple[bytes, int]] = HBS( + msg.reference_inputs_count, tagged=self.msg.tag_cbor_sets ) - with add(_TX_BODY_KEY_REFERENCE_INPUTS, reference_inputs_list): - await self._process_reference_inputs(reference_inputs_list) + with add(_TX_BODY_KEY_REFERENCE_INPUTS, reference_inputs_set): + await self._process_reference_inputs(reference_inputs_set) def _validate_tx_init(self) -> None: from ..helpers.utils import validate_network_info @@ -658,7 +667,7 @@ async def _process_reference_script( # certificates - async def _process_certificates(self, certificates_list: HashBuilderList) -> None: + async def _process_certificates(self, certificates_set: HashBuilderSet) -> None: for _ in range(self.msg.certificates_count): certificate: messages.CardanoTxCertificate = await ctx_call( CardanoTxItemAck(), messages.CardanoTxCertificate @@ -673,18 +682,18 @@ async def _process_certificates(self, certificates_list: HashBuilderList) -> Non pool_items_list: HashBuilderList = HashBuilderList( _POOL_REGISTRATION_CERTIFICATE_ITEMS_COUNT ) - with certificates_list.append(pool_items_list): + with certificates_set.append(pool_items_list): for item in certificates.cborize_pool_registration_init( certificate ): pool_items_list.append(item) - pool_owners_list: HashBuilderList[bytes] = HashBuilderList( - pool_parameters.owners_count + pool_owners_set: HashBuilderSet[bytes] = HashBuilderSet( + pool_parameters.owners_count, tagged=self.msg.tag_cbor_sets ) - with pool_items_list.append(pool_owners_list): + with pool_items_list.append(pool_owners_set): await self._process_pool_owners( - pool_owners_list, pool_parameters.owners_count + pool_owners_set, pool_parameters.owners_count ) relays_list: HashBuilderList[cbor.CborSequence] = HashBuilderList( @@ -699,7 +708,7 @@ async def _process_certificates(self, certificates_list: HashBuilderList) -> Non certificates.cborize_pool_metadata(pool_parameters.metadata) ) else: - certificates_list.append( + certificates_set.append( certificates.cborize(self.keychain, certificate) ) @@ -728,12 +737,12 @@ async def _show_certificate( certificate.pool_parameters.metadata ) else: - await layout.confirm_certificate(certificate) + await layout.confirm_certificate(certificate, self.msg.network_id) # pool owners async def _process_pool_owners( - self, pool_owners_list: HashBuilderList[bytes], owners_count: int + self, pool_owners_set: HashBuilderSet[bytes], owners_count: int ) -> None: owners_as_path_count = 0 for _ in range(owners_count): @@ -742,7 +751,7 @@ async def _process_pool_owners( ) certificates.validate_pool_owner(owner, self.account_path_checker) await self._show_pool_owner(owner) - pool_owners_list.append( + pool_owners_set.append( certificates.cborize_pool_owner(self.keychain, owner) ) @@ -933,7 +942,7 @@ async def _show_collateral_input( # required signers async def _process_required_signers( - self, required_signers_list: HashBuilderList[bytes] + self, required_signers_set: HashBuilderSet[bytes] ) -> None: from ..helpers.utils import get_public_key_hash @@ -949,7 +958,7 @@ async def _process_required_signers( key_hash = required_signer.key_hash or get_public_key_hash( self.keychain, required_signer.key_path ) - required_signers_list.append(key_hash) + required_signers_set.append(key_hash) def _validate_required_signer( self, required_signer: messages.CardanoTxRequiredSigner diff --git a/core/src/apps/common/cbor.py b/core/src/apps/common/cbor.py index 7edaf9cac21..c3cb8c8ab72 100644 --- a/core/src/apps/common/cbor.py +++ b/core/src/apps/common/cbor.py @@ -43,7 +43,11 @@ _CBOR_TRUE = const(0x15) _CBOR_NULL = const(0x16) _CBOR_BREAK = const(0x1F) -_CBOR_RAW_TAG = const(0x18) + + +# See https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml +_CBOR_RAW_TAG = const(0x18) # Tag 24 +_CBOR_SET_TAG = const(0x102) # Tag 258 def _header(typ: int, l: int) -> bytes: @@ -302,6 +306,10 @@ def create_embedded_cbor_bytes_header(size: int) -> bytes: return _header(_CBOR_TAG, _CBOR_RAW_TAG) + _header(_CBOR_BYTE_STRING, size) +def create_tagged_set_header(size: int) -> bytes: + return _header(_CBOR_TAG, _CBOR_SET_TAG) + _header(_CBOR_ARRAY, size) + + def precedes(prev: bytes, curr: bytes) -> bool: """ Returns True if `prev` is smaller than `curr` with regards to diff --git a/core/src/trezor/enums/CardanoCertificateType.py b/core/src/trezor/enums/CardanoCertificateType.py index 4b7d2412024..bc4abf6f20b 100644 --- a/core/src/trezor/enums/CardanoCertificateType.py +++ b/core/src/trezor/enums/CardanoCertificateType.py @@ -6,3 +6,6 @@ STAKE_DEREGISTRATION = 1 STAKE_DELEGATION = 2 STAKE_POOL_REGISTRATION = 3 +STAKE_REGISTRATION_CONWAY = 7 +STAKE_DEREGISTRATION_CONWAY = 8 +VOTE_DELEGATION = 9 diff --git a/core/src/trezor/enums/CardanoDRepType.py b/core/src/trezor/enums/CardanoDRepType.py new file mode 100644 index 00000000000..bae3fbe218b --- /dev/null +++ b/core/src/trezor/enums/CardanoDRepType.py @@ -0,0 +1,8 @@ +# Automatically generated by pb2py +# fmt: off +# isort:skip_file + +KEY_HASH = 0 +SCRIPT_HASH = 1 +ABSTAIN = 2 +NO_CONFIDENCE = 3 diff --git a/core/src/trezor/enums/__init__.py b/core/src/trezor/enums/__init__.py index 3335f1b27d0..83e622fdd5d 100644 --- a/core/src/trezor/enums/__init__.py +++ b/core/src/trezor/enums/__init__.py @@ -388,6 +388,15 @@ class CardanoCertificateType(IntEnum): STAKE_DEREGISTRATION = 1 STAKE_DELEGATION = 2 STAKE_POOL_REGISTRATION = 3 + STAKE_REGISTRATION_CONWAY = 7 + STAKE_DEREGISTRATION_CONWAY = 8 + VOTE_DELEGATION = 9 + + class CardanoDRepType(IntEnum): + KEY_HASH = 0 + SCRIPT_HASH = 1 + ABSTAIN = 2 + NO_CONFIDENCE = 3 class CardanoPoolRelayType(IntEnum): SINGLE_HOST_IP = 0 diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py index 0335bb53daf..f7780620210 100644 --- a/core/src/trezor/messages.py +++ b/core/src/trezor/messages.py @@ -27,6 +27,7 @@ def __getattr__(name: str) -> Any: from trezor.enums import CardanoAddressType # noqa: F401 from trezor.enums import CardanoCVoteRegistrationFormat # noqa: F401 from trezor.enums import CardanoCertificateType # noqa: F401 + from trezor.enums import CardanoDRepType # noqa: F401 from trezor.enums import CardanoDerivationType # noqa: F401 from trezor.enums import CardanoNativeScriptHashDisplayFormat # noqa: F401 from trezor.enums import CardanoNativeScriptType # noqa: F401 @@ -1392,6 +1393,7 @@ class CardanoSignTxInit(protobuf.MessageType): total_collateral: "int | None" reference_inputs_count: "int" chunkify: "bool | None" + tag_cbor_sets: "bool" def __init__( self, @@ -1418,6 +1420,7 @@ def __init__( total_collateral: "int | None" = None, reference_inputs_count: "int | None" = None, chunkify: "bool | None" = None, + tag_cbor_sets: "bool | None" = None, ) -> None: pass @@ -1617,6 +1620,24 @@ def __init__( def is_type_of(cls, msg: Any) -> TypeGuard["CardanoPoolParametersType"]: return isinstance(msg, cls) + class CardanoDRep(protobuf.MessageType): + type: "CardanoDRepType" + key_hash: "bytes | None" + script_hash: "bytes | None" + + def __init__( + self, + *, + type: "CardanoDRepType", + key_hash: "bytes | None" = None, + script_hash: "bytes | None" = None, + ) -> None: + pass + + @classmethod + def is_type_of(cls, msg: Any) -> TypeGuard["CardanoDRep"]: + return isinstance(msg, cls) + class CardanoTxCertificate(protobuf.MessageType): type: "CardanoCertificateType" path: "list[int]" @@ -1624,6 +1645,8 @@ class CardanoTxCertificate(protobuf.MessageType): pool_parameters: "CardanoPoolParametersType | None" script_hash: "bytes | None" key_hash: "bytes | None" + deposit: "int | None" + drep: "CardanoDRep | None" def __init__( self, @@ -1634,6 +1657,8 @@ def __init__( pool_parameters: "CardanoPoolParametersType | None" = None, script_hash: "bytes | None" = None, key_hash: "bytes | None" = None, + deposit: "int | None" = None, + drep: "CardanoDRep | None" = None, ) -> None: pass diff --git a/core/tests/test_apps.cardano.certificate.py b/core/tests/test_apps.cardano.certificate.py index 6eb44ebdadd..f4dc1379f35 100644 --- a/core/tests/test_apps.cardano.certificate.py +++ b/core/tests/test_apps.cardano.certificate.py @@ -1,8 +1,8 @@ from common import * # isort:skip from trezor import wire -from trezor.enums import CardanoCertificateType -from trezor.messages import CardanoPoolParametersType, CardanoTxCertificate +from trezor.enums import CardanoCertificateType, CardanoDRepType +from trezor.messages import CardanoDRep, CardanoPoolParametersType, CardanoTxCertificate from apps.common.paths import HARDENED @@ -32,6 +32,25 @@ def test_validate_certificate(self): "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" ), ), + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + deposit=2000000, + ), + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + deposit=2000000, + ), + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + deposit=2000000, + ), CardanoTxCertificate( type=CardanoCertificateType.STAKE_DELEGATION, path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], @@ -73,6 +92,25 @@ def test_validate_certificate(self): "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" ), ), + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + deposit=2000000, + ), + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + deposit=2000000, + ), + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + deposit=2000000, + ), CardanoTxCertificate( type=CardanoCertificateType.STAKE_POOL_REGISTRATION, pool_parameters=CardanoPoolParametersType( @@ -92,6 +130,44 @@ def test_validate_certificate(self): metadata=None, ), ), + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.KEY_HASH, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.SCRIPT_HASH, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep(type=CardanoDRepType.ABSTAIN), + ), + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep(type=CardanoDRepType.NO_CONFIDENCE), + ), ] invalid_test_vectors = [ @@ -125,6 +201,12 @@ def test_validate_certificate(self): "f61c42cbf7c8c53af3f520508212ad3e72f674f957fe23ff0acb4973" ), ), + # STAKE_REGISTRATION deposit is set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + deposit=2000000, + ), # STAKE_REGISTRATION pool parameters are set CardanoTxCertificate( type=CardanoCertificateType.STAKE_REGISTRATION, @@ -145,6 +227,66 @@ def test_validate_certificate(self): relays_count=1, ), ), + # STAKE_REGISTRATION_CONWAY neither path or script_hash is set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + deposit=2000000, + ), + # STAKE_REGISTRATION_CONWAY both path and script_hash are set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + deposit=2000000, + ), + # STAKE_REGISTRATION_CONWAY both script_hash and key_hash are set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + deposit=2000000, + ), + # STAKE_REGISTRATION_CONWAY pool is set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + pool=unhexlify( + "f61c42cbf7c8c53af3f520508212ad3e72f674f957fe23ff0acb4973" + ), + deposit=2000000, + ), + # STAKE_REGISTRATION_CONWAY deposit not set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + ), + # STAKE_REGISTRATION_CONWAY pool parameters are set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + pool_parameters=CardanoPoolParametersType( + pool_id=unhexlify( + "f61c42cbf7c8c53af3f520508212ad3e72f674f957fe23ff0acb4973" + ), + vrf_key_hash=unhexlify( + "198890ad6c92e80fbdab554dda02da9fb49d001bbd96181f3e07f7a6ab0d0640" + ), + pledge=500000000, + cost=340000000, + margin_numerator=1, + margin_denominator=2, + reward_account="stake1uya87zwnmax0v6nnn8ptqkl6ydx4522kpsc3l3wmf3yswygwx45el", + owners_count=1, + relays_count=1, + ), + deposit=2000000, + ), # STAKE_DELEGATION neither path or script_hash is set CardanoTxCertificate( type=CardanoCertificateType.STAKE_DELEGATION, @@ -229,6 +371,12 @@ def test_validate_certificate(self): "f61c42cbf7c8c53af3f520508212ad3e72f674f957fe23ff0acb4973" ), ), + # STAKE_DEREGISTRATION deposit is set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + deposit=2000000, + ), # STAKE_DEREGISTRATION pool parameters are set CardanoTxCertificate( type=CardanoCertificateType.STAKE_DEREGISTRATION, @@ -249,6 +397,66 @@ def test_validate_certificate(self): relays_count=1, ), ), + # STAKE_DEREGISTRATION_CONWAY neither path or script_hash is set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + deposit=2000000, + ), + # STAKE_DEREGISTRATION_CONWAY both path and script_hash are set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + deposit=2000000, + ), + # STAKE_DEREGISTRATION_CONWAY both script_hash and key_hash are set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + deposit=2000000, + ), + # STAKE_DEREGISTRATION_CONWAY pool is set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + pool=unhexlify( + "f61c42cbf7c8c53af3f520508212ad3e72f674f957fe23ff0acb4973" + ), + deposit=2000000, + ), + # STAKE_DEREGISTRATION_CONWAY deposit not set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + ), + # STAKE_DEREGISTRATION pool parameters are set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + pool_parameters=CardanoPoolParametersType( + pool_id=unhexlify( + "f61c42cbf7c8c53af3f520508212ad3e72f674f957fe23ff0acb4973" + ), + vrf_key_hash=unhexlify( + "198890ad6c92e80fbdab554dda02da9fb49d001bbd96181f3e07f7a6ab0d0640" + ), + pledge=500000000, + cost=340000000, + margin_numerator=1, + margin_denominator=2, + reward_account="stake1uya87zwnmax0v6nnn8ptqkl6ydx4522kpsc3l3wmf3yswygwx45el", + owners_count=1, + relays_count=1, + ), + deposit=2000000, + ), # STAKE_POOL_REGISTRATION pool parameters are not set CardanoTxCertificate( type=CardanoCertificateType.STAKE_POOL_REGISTRATION, @@ -342,6 +550,171 @@ def test_validate_certificate(self): relays_count=1, ), ), + # VOTE_REGISTRATION missing drep + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + # VOTE_REGISTRATION missing key hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep(type=CardanoDRepType.KEY_HASH), + ), + # VOTE_REGISTRATION missing script hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep(type=CardanoDRepType.SCRIPT_HASH), + ), + # VOTE_REGISTRATION unexpected script hash set instead of key hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.KEY_HASH, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + # VOTE_REGISTRATION unexpected key hash set instead of script hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.SCRIPT_HASH, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + # VOTE_REGISTRATION key hash set but unexpected script hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.KEY_HASH, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + # VOTE_REGISTRATION script hash set but unexpected key hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.SCRIPT_HASH, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + # VOTE_REGISTRATION unexpected key hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.ABSTAIN, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + # VOTE_REGISTRATION unexpected key hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.NO_CONFIDENCE, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + # VOTE_REGISTRATION unexpected script hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.ABSTAIN, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + # VOTE_REGISTRATION unexpected script hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.NO_CONFIDENCE, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + # VOTE_REGISTRATION unexpected script hash and key hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.ABSTAIN, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + # VOTE_REGISTRATION unexpected script hash and key hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.NO_CONFIDENCE, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), ] for certificate in valid_test_vectors: diff --git a/core/tests/test_apps.common.cbor.py b/core/tests/test_apps.common.cbor.py index 07750d940ab..0de5777f75b 100644 --- a/core/tests/test_apps.common.cbor.py +++ b/core/tests/test_apps.common.cbor.py @@ -7,6 +7,7 @@ create_array_header, create_embedded_cbor_bytes_header, create_map_header, + create_tagged_set_header, decode, encode, encode_streamed, @@ -30,6 +31,22 @@ def test_create_array_header(self): with self.assertRaises(NotImplementedError): create_array_header(2**64) + def test_create_tagged_set_header(self): + test_vectors = [ + (0, 'd9010280'), + (23, 'd9010297'), + ((2 ** 8) - 1, 'd9010298ff'), + ((2 ** 16) - 1, 'd9010299ffff'), + ((2 ** 32) - 1, 'd901029affffffff'), + ((2 ** 64) - 1, 'd901029bffffffffffffffff'), + ] + for val, header_hex in test_vectors: + header = unhexlify(header_hex) + self.assertEqual(create_tagged_set_header(val), header) + + with self.assertRaises(NotImplementedError): + create_tagged_set_header(2 ** 64) + def test_create_map_header(self): test_vectors = [ (0, "a0"), diff --git a/core/translations/en.json b/core/translations/en.json index 51fae0ca8ee..d7d2a5b2605 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -113,6 +113,8 @@ "cardano__addr_pointer": "Pointer", "cardano__addr_reward": "Reward", "cardano__address_no_staking": "address - no staking rewards.", + "cardano__always_abstain": "Always Abstain", + "cardano__always_no_confidence": "Always No Confidence", "cardano__amount_burned_decimals_unknown": "Amount burned (decimals unknown):", "cardano__amount_minted_decimals_unknown": "Amount minted (decimals unknown):", "cardano__amount_sent_decimals_unknown": "Amount sent (decimals unknown):", @@ -140,6 +142,9 @@ "cardano__credential_mismatch": "Credential doesn't match payment credential.", "cardano__datum_hash": "Datum hash:", "cardano__delegating_to": "Delegating to:", + "cardano__delegating_to_key_hash": "Delegating to key hash:", + "cardano__delegating_to_script": "Delegating to script:", + "cardano__deposit": "Deposit:", "cardano__for_account_and_index_template": "for account {0} and index {1}:", "cardano__for_account_template": "for account {0}:", "cardano__for_key_hash": "for key hash:", @@ -209,6 +214,7 @@ "cardano__unusual_path": "Path is unusual.", "cardano__valid_since": "Valid since:", "cardano__verify_script": "Verify script", + "cardano__vote_delegation": "Vote delegation", "cardano__vote_key_registration": "Vote key registration (CIP-36)", "cardano__vote_public_key": "Vote public key:", "cardano__voting_purpose": "Voting purpose:", diff --git a/core/translations/order.json b/core/translations/order.json index 0b194149275..3a50bace48d 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -845,5 +845,11 @@ "843": "storage_msg__verifying_pin", "844": "storage_msg__wrong_pin", "845": "reset__create_x_of_y_multi_share_backup_template", - "846": "reset__title_shamir_backup" + "846": "reset__title_shamir_backup", + "847": "cardano__always_abstain", + "848": "cardano__always_no_confidence", + "849": "cardano__delegating_to_key_hash", + "850": "cardano__delegating_to_script", + "851": "cardano__deposit", + "852": "cardano__vote_delegation" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index a8856a3dbbe..6afc923916a 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "84629035a4b41f95a6d058c3a4a67220ff3ed4aea61bb72bd0c266b51708bd09", - "datetime": "2024-05-13T15:44:26.979619", - "commit": "82e62cf41c1e0134d2d2ed824c3ad74ead01f10e" + "merkle_root": "1f974d2401250eb1b9ca75b0b8067d583c2a1520f87697f8f68f5bf2d66b44c2", + "datetime": "2024-05-16T21:16:11.144158", + "commit": "3d74e30fa7f27695813040baffb620461d5e0677" }, "history": [ { diff --git a/python/.changelog.d/3496.added.1 b/python/.changelog.d/3496.added.1 new file mode 100644 index 00000000000..6e208d171fc --- /dev/null +++ b/python/.changelog.d/3496.added.1 @@ -0,0 +1 @@ +Cardano: Added support for Conway certificates diff --git a/python/.changelog.d/3496.added.2 b/python/.changelog.d/3496.added.2 new file mode 100644 index 00000000000..509c632add5 --- /dev/null +++ b/python/.changelog.d/3496.added.2 @@ -0,0 +1 @@ +Cardano: Added support for tagged sets in CBOR (tag 258) diff --git a/python/src/trezorlib/cardano.py b/python/src/trezorlib/cardano.py index 9e986996591..49d2c6463f8 100644 --- a/python/src/trezorlib/cardano.py +++ b/python/src/trezorlib/cardano.py @@ -420,6 +420,27 @@ def parse_certificate(certificate: dict) -> CertificateWithPoolOwnersAndRelays: ), None, ) + elif certificate_type in ( + messages.CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + messages.CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + ): + if "deposit" not in certificate: + raise CERTIFICATE_MISSING_FIELDS_ERROR + + path, script_hash, key_hash = _parse_credential( + certificate, CERTIFICATE_MISSING_FIELDS_ERROR + ) + + return ( + messages.CardanoTxCertificate( + type=certificate_type, + path=path, + script_hash=script_hash, + key_hash=key_hash, + deposit=int(certificate["deposit"]), + ), + None, + ) elif certificate_type == messages.CardanoCertificateType.STAKE_POOL_REGISTRATION: pool_parameters = certificate["pool_parameters"] @@ -465,6 +486,30 @@ def parse_certificate(certificate: dict) -> CertificateWithPoolOwnersAndRelays: ), (owners, relays), ) + if certificate_type == messages.CardanoCertificateType.VOTE_DELEGATION: + if "drep" not in certificate: + raise CERTIFICATE_MISSING_FIELDS_ERROR + + path, script_hash, key_hash = _parse_credential( + certificate, CERTIFICATE_MISSING_FIELDS_ERROR + ) + + return ( + messages.CardanoTxCertificate( + type=certificate_type, + path=path, + script_hash=script_hash, + key_hash=key_hash, + drep=messages.CardanoDRep( + type=messages.CardanoDRepType(certificate["drep"]["type"]), + key_hash=parse_optional_bytes(certificate["drep"].get("key_hash")), + script_hash=parse_optional_bytes( + certificate["drep"].get("script_hash") + ), + ), + ), + None, + ) else: raise ValueError("Unknown certificate type") @@ -686,6 +731,9 @@ def _get_witness_requests( in ( messages.CardanoCertificateType.STAKE_DEREGISTRATION, messages.CardanoCertificateType.STAKE_DELEGATION, + messages.CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + messages.CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + messages.CardanoCertificateType.VOTE_DELEGATION, ) and certificate.path ): @@ -853,6 +901,7 @@ def sign_tx( derivation_type: messages.CardanoDerivationType = messages.CardanoDerivationType.ICARUS, include_network_id: bool = False, chunkify: bool = False, + tag_cbor_sets: bool = False, ) -> Dict[str, Any]: UNEXPECTED_RESPONSE_ERROR = exceptions.TrezorException("Unexpected response") @@ -890,6 +939,7 @@ def sign_tx( derivation_type=derivation_type, include_network_id=include_network_id, chunkify=chunkify, + tag_cbor_sets=tag_cbor_sets, ) ) if not isinstance(response, messages.CardanoTxItemAck): diff --git a/python/src/trezorlib/cli/cardano.py b/python/src/trezorlib/cli/cardano.py index 91e3a540afb..23647ab8eaa 100644 --- a/python/src/trezorlib/cli/cardano.py +++ b/python/src/trezorlib/cli/cardano.py @@ -61,6 +61,7 @@ def cli() -> None: ) @click.option("-i", "--include-network-id", is_flag=True) @click.option("-C", "chunkify", is_flag=True) +@click.option("-T", "--tag-cbor-sets", is_flag=True) @with_client def sign_tx( client: "TrezorClient", @@ -72,6 +73,7 @@ def sign_tx( derivation_type: messages.CardanoDerivationType, include_network_id: bool, chunkify: bool, + tag_cbor_sets: bool, ) -> cardano.SignTxResponse: """Sign Cardano transaction.""" transaction = json.load(file) @@ -146,6 +148,7 @@ def sign_tx( derivation_type=derivation_type, include_network_id=include_network_id, chunkify=chunkify, + tag_cbor_sets=tag_cbor_sets, ) sign_tx_response["tx_hash"] = sign_tx_response["tx_hash"].hex() diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py index b5f52bce1fc..04aea96b166 100644 --- a/python/src/trezorlib/messages.py +++ b/python/src/trezorlib/messages.py @@ -410,6 +410,16 @@ class CardanoCertificateType(IntEnum): STAKE_DEREGISTRATION = 1 STAKE_DELEGATION = 2 STAKE_POOL_REGISTRATION = 3 + STAKE_REGISTRATION_CONWAY = 7 + STAKE_DEREGISTRATION_CONWAY = 8 + VOTE_DELEGATION = 9 + + +class CardanoDRepType(IntEnum): + KEY_HASH = 0 + SCRIPT_HASH = 1 + ABSTAIN = 2 + NO_CONFIDENCE = 3 class CardanoPoolRelayType(IntEnum): @@ -2378,6 +2388,7 @@ class CardanoSignTxInit(protobuf.MessageType): 20: protobuf.Field("total_collateral", "uint64", repeated=False, required=False, default=None), 21: protobuf.Field("reference_inputs_count", "uint32", repeated=False, required=False, default=0), 22: protobuf.Field("chunkify", "bool", repeated=False, required=False, default=None), + 23: protobuf.Field("tag_cbor_sets", "bool", repeated=False, required=False, default=False), } def __init__( @@ -2405,6 +2416,7 @@ def __init__( total_collateral: Optional["int"] = None, reference_inputs_count: Optional["int"] = 0, chunkify: Optional["bool"] = None, + tag_cbor_sets: Optional["bool"] = False, ) -> None: self.signing_mode = signing_mode self.protocol_magic = protocol_magic @@ -2428,6 +2440,7 @@ def __init__( self.total_collateral = total_collateral self.reference_inputs_count = reference_inputs_count self.chunkify = chunkify + self.tag_cbor_sets = tag_cbor_sets class CardanoTxInput(protobuf.MessageType): @@ -2648,6 +2661,26 @@ def __init__( self.metadata = metadata +class CardanoDRep(protobuf.MessageType): + MESSAGE_WIRE_TYPE = None + FIELDS = { + 1: protobuf.Field("type", "CardanoDRepType", repeated=False, required=True), + 2: protobuf.Field("key_hash", "bytes", repeated=False, required=False, default=None), + 3: protobuf.Field("script_hash", "bytes", repeated=False, required=False, default=None), + } + + def __init__( + self, + *, + type: "CardanoDRepType", + key_hash: Optional["bytes"] = None, + script_hash: Optional["bytes"] = None, + ) -> None: + self.type = type + self.key_hash = key_hash + self.script_hash = script_hash + + class CardanoTxCertificate(protobuf.MessageType): MESSAGE_WIRE_TYPE = 325 FIELDS = { @@ -2657,6 +2690,8 @@ class CardanoTxCertificate(protobuf.MessageType): 4: protobuf.Field("pool_parameters", "CardanoPoolParametersType", repeated=False, required=False, default=None), 5: protobuf.Field("script_hash", "bytes", repeated=False, required=False, default=None), 6: protobuf.Field("key_hash", "bytes", repeated=False, required=False, default=None), + 7: protobuf.Field("deposit", "uint64", repeated=False, required=False, default=None), + 8: protobuf.Field("drep", "CardanoDRep", repeated=False, required=False, default=None), } def __init__( @@ -2668,6 +2703,8 @@ def __init__( pool_parameters: Optional["CardanoPoolParametersType"] = None, script_hash: Optional["bytes"] = None, key_hash: Optional["bytes"] = None, + deposit: Optional["int"] = None, + drep: Optional["CardanoDRep"] = None, ) -> None: self.path: Sequence["int"] = path if path is not None else [] self.type = type @@ -2675,6 +2712,8 @@ def __init__( self.pool_parameters = pool_parameters self.script_hash = script_hash self.key_hash = key_hash + self.deposit = deposit + self.drep = drep class CardanoTxWithdrawal(protobuf.MessageType): diff --git a/rust/trezor-client/src/protos/generated/messages_cardano.rs b/rust/trezor-client/src/protos/generated/messages_cardano.rs index da2d0c7e51f..2443ce5f0b7 100644 --- a/rust/trezor-client/src/protos/generated/messages_cardano.rs +++ b/rust/trezor-client/src/protos/generated/messages_cardano.rs @@ -2289,6 +2289,8 @@ pub struct CardanoSignTxInit { pub reference_inputs_count: ::std::option::Option, // @@protoc_insertion_point(field:hw.trezor.messages.cardano.CardanoSignTxInit.chunkify) pub chunkify: ::std::option::Option, + // @@protoc_insertion_point(field:hw.trezor.messages.cardano.CardanoSignTxInit.tag_cbor_sets) + pub tag_cbor_sets: ::std::option::Option, // special fields // @@protoc_insertion_point(special_field:hw.trezor.messages.cardano.CardanoSignTxInit.special_fields) pub special_fields: ::protobuf::SpecialFields, @@ -2746,8 +2748,27 @@ impl CardanoSignTxInit { self.chunkify = ::std::option::Option::Some(v); } + // optional bool tag_cbor_sets = 23; + + pub fn tag_cbor_sets(&self) -> bool { + self.tag_cbor_sets.unwrap_or(false) + } + + pub fn clear_tag_cbor_sets(&mut self) { + self.tag_cbor_sets = ::std::option::Option::None; + } + + pub fn has_tag_cbor_sets(&self) -> bool { + self.tag_cbor_sets.is_some() + } + + // Param is passed by value, moved + pub fn set_tag_cbor_sets(&mut self, v: bool) { + self.tag_cbor_sets = ::std::option::Option::Some(v); + } + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(22); + let mut fields = ::std::vec::Vec::with_capacity(23); let mut oneofs = ::std::vec::Vec::with_capacity(0); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( "signing_mode", @@ -2859,6 +2880,11 @@ impl CardanoSignTxInit { |m: &CardanoSignTxInit| { &m.chunkify }, |m: &mut CardanoSignTxInit| { &mut m.chunkify }, )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "tag_cbor_sets", + |m: &CardanoSignTxInit| { &m.tag_cbor_sets }, + |m: &mut CardanoSignTxInit| { &mut m.tag_cbor_sets }, + )); ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( "CardanoSignTxInit", fields, @@ -2985,6 +3011,9 @@ impl ::protobuf::Message for CardanoSignTxInit { 176 => { self.chunkify = ::std::option::Option::Some(is.read_bool()?); }, + 184 => { + self.tag_cbor_sets = ::std::option::Option::Some(is.read_bool()?); + }, tag => { ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; }, @@ -3063,6 +3092,9 @@ impl ::protobuf::Message for CardanoSignTxInit { if let Some(v) = self.chunkify { my_size += 2 + 1; } + if let Some(v) = self.tag_cbor_sets { + my_size += 2 + 1; + } my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); self.special_fields.cached_size().set(my_size as u32); my_size @@ -3135,6 +3167,9 @@ impl ::protobuf::Message for CardanoSignTxInit { if let Some(v) = self.chunkify { os.write_bool(22, v)?; } + if let Some(v) = self.tag_cbor_sets { + os.write_bool(23, v)?; + } os.write_unknown_fields(self.special_fields.unknown_fields())?; ::std::result::Result::Ok(()) } @@ -3174,6 +3209,7 @@ impl ::protobuf::Message for CardanoSignTxInit { self.total_collateral = ::std::option::Option::None; self.reference_inputs_count = ::std::option::Option::None; self.chunkify = ::std::option::Option::None; + self.tag_cbor_sets = ::std::option::Option::None; self.special_fields.clear(); } @@ -3201,6 +3237,7 @@ impl ::protobuf::Message for CardanoSignTxInit { total_collateral: ::std::option::Option::None, reference_inputs_count: ::std::option::Option::None, chunkify: ::std::option::Option::None, + tag_cbor_sets: ::std::option::Option::None, special_fields: ::protobuf::SpecialFields::new(), }; &instance @@ -5895,6 +5932,261 @@ impl ::protobuf::reflect::ProtobufValue for CardanoPoolParametersType { type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; } +// @@protoc_insertion_point(message:hw.trezor.messages.cardano.CardanoDRep) +#[derive(PartialEq,Clone,Default,Debug)] +pub struct CardanoDRep { + // message fields + // @@protoc_insertion_point(field:hw.trezor.messages.cardano.CardanoDRep.type) + pub type_: ::std::option::Option<::protobuf::EnumOrUnknown>, + // @@protoc_insertion_point(field:hw.trezor.messages.cardano.CardanoDRep.key_hash) + pub key_hash: ::std::option::Option<::std::vec::Vec>, + // @@protoc_insertion_point(field:hw.trezor.messages.cardano.CardanoDRep.script_hash) + pub script_hash: ::std::option::Option<::std::vec::Vec>, + // special fields + // @@protoc_insertion_point(special_field:hw.trezor.messages.cardano.CardanoDRep.special_fields) + pub special_fields: ::protobuf::SpecialFields, +} + +impl<'a> ::std::default::Default for &'a CardanoDRep { + fn default() -> &'a CardanoDRep { + ::default_instance() + } +} + +impl CardanoDRep { + pub fn new() -> CardanoDRep { + ::std::default::Default::default() + } + + // required .hw.trezor.messages.cardano.CardanoDRepType type = 1; + + pub fn type_(&self) -> CardanoDRepType { + match self.type_ { + Some(e) => e.enum_value_or(CardanoDRepType::KEY_HASH), + None => CardanoDRepType::KEY_HASH, + } + } + + pub fn clear_type_(&mut self) { + self.type_ = ::std::option::Option::None; + } + + pub fn has_type(&self) -> bool { + self.type_.is_some() + } + + // Param is passed by value, moved + pub fn set_type(&mut self, v: CardanoDRepType) { + self.type_ = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v)); + } + + // optional bytes key_hash = 2; + + pub fn key_hash(&self) -> &[u8] { + match self.key_hash.as_ref() { + Some(v) => v, + None => &[], + } + } + + pub fn clear_key_hash(&mut self) { + self.key_hash = ::std::option::Option::None; + } + + pub fn has_key_hash(&self) -> bool { + self.key_hash.is_some() + } + + // Param is passed by value, moved + pub fn set_key_hash(&mut self, v: ::std::vec::Vec) { + self.key_hash = ::std::option::Option::Some(v); + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_key_hash(&mut self) -> &mut ::std::vec::Vec { + if self.key_hash.is_none() { + self.key_hash = ::std::option::Option::Some(::std::vec::Vec::new()); + } + self.key_hash.as_mut().unwrap() + } + + // Take field + pub fn take_key_hash(&mut self) -> ::std::vec::Vec { + self.key_hash.take().unwrap_or_else(|| ::std::vec::Vec::new()) + } + + // optional bytes script_hash = 3; + + pub fn script_hash(&self) -> &[u8] { + match self.script_hash.as_ref() { + Some(v) => v, + None => &[], + } + } + + pub fn clear_script_hash(&mut self) { + self.script_hash = ::std::option::Option::None; + } + + pub fn has_script_hash(&self) -> bool { + self.script_hash.is_some() + } + + // Param is passed by value, moved + pub fn set_script_hash(&mut self, v: ::std::vec::Vec) { + self.script_hash = ::std::option::Option::Some(v); + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_script_hash(&mut self) -> &mut ::std::vec::Vec { + if self.script_hash.is_none() { + self.script_hash = ::std::option::Option::Some(::std::vec::Vec::new()); + } + self.script_hash.as_mut().unwrap() + } + + // Take field + pub fn take_script_hash(&mut self) -> ::std::vec::Vec { + self.script_hash.take().unwrap_or_else(|| ::std::vec::Vec::new()) + } + + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { + let mut fields = ::std::vec::Vec::with_capacity(3); + let mut oneofs = ::std::vec::Vec::with_capacity(0); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "type", + |m: &CardanoDRep| { &m.type_ }, + |m: &mut CardanoDRep| { &mut m.type_ }, + )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "key_hash", + |m: &CardanoDRep| { &m.key_hash }, + |m: &mut CardanoDRep| { &mut m.key_hash }, + )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "script_hash", + |m: &CardanoDRep| { &m.script_hash }, + |m: &mut CardanoDRep| { &mut m.script_hash }, + )); + ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( + "CardanoDRep", + fields, + oneofs, + ) + } +} + +impl ::protobuf::Message for CardanoDRep { + const NAME: &'static str = "CardanoDRep"; + + fn is_initialized(&self) -> bool { + if self.type_.is_none() { + return false; + } + true + } + + fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> { + while let Some(tag) = is.read_raw_tag_or_eof()? { + match tag { + 8 => { + self.type_ = ::std::option::Option::Some(is.read_enum_or_unknown()?); + }, + 18 => { + self.key_hash = ::std::option::Option::Some(is.read_bytes()?); + }, + 26 => { + self.script_hash = ::std::option::Option::Some(is.read_bytes()?); + }, + tag => { + ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; + }, + }; + } + ::std::result::Result::Ok(()) + } + + // Compute sizes of nested messages + #[allow(unused_variables)] + fn compute_size(&self) -> u64 { + let mut my_size = 0; + if let Some(v) = self.type_ { + my_size += ::protobuf::rt::int32_size(1, v.value()); + } + if let Some(v) = self.key_hash.as_ref() { + my_size += ::protobuf::rt::bytes_size(2, &v); + } + if let Some(v) = self.script_hash.as_ref() { + my_size += ::protobuf::rt::bytes_size(3, &v); + } + my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); + self.special_fields.cached_size().set(my_size as u32); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> { + if let Some(v) = self.type_ { + os.write_enum(1, ::protobuf::EnumOrUnknown::value(&v))?; + } + if let Some(v) = self.key_hash.as_ref() { + os.write_bytes(2, v)?; + } + if let Some(v) = self.script_hash.as_ref() { + os.write_bytes(3, v)?; + } + os.write_unknown_fields(self.special_fields.unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn special_fields(&self) -> &::protobuf::SpecialFields { + &self.special_fields + } + + fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields { + &mut self.special_fields + } + + fn new() -> CardanoDRep { + CardanoDRep::new() + } + + fn clear(&mut self) { + self.type_ = ::std::option::Option::None; + self.key_hash = ::std::option::Option::None; + self.script_hash = ::std::option::Option::None; + self.special_fields.clear(); + } + + fn default_instance() -> &'static CardanoDRep { + static instance: CardanoDRep = CardanoDRep { + type_: ::std::option::Option::None, + key_hash: ::std::option::Option::None, + script_hash: ::std::option::Option::None, + special_fields: ::protobuf::SpecialFields::new(), + }; + &instance + } +} + +impl ::protobuf::MessageFull for CardanoDRep { + fn descriptor() -> ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new(); + descriptor.get(|| file_descriptor().message_by_package_relative_name("CardanoDRep").unwrap()).clone() + } +} + +impl ::std::fmt::Display for CardanoDRep { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } +} + +impl ::protobuf::reflect::ProtobufValue for CardanoDRep { + type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage; +} + // @@protoc_insertion_point(message:hw.trezor.messages.cardano.CardanoTxCertificate) #[derive(PartialEq,Clone,Default,Debug)] pub struct CardanoTxCertificate { @@ -5911,6 +6203,10 @@ pub struct CardanoTxCertificate { pub script_hash: ::std::option::Option<::std::vec::Vec>, // @@protoc_insertion_point(field:hw.trezor.messages.cardano.CardanoTxCertificate.key_hash) pub key_hash: ::std::option::Option<::std::vec::Vec>, + // @@protoc_insertion_point(field:hw.trezor.messages.cardano.CardanoTxCertificate.deposit) + pub deposit: ::std::option::Option, + // @@protoc_insertion_point(field:hw.trezor.messages.cardano.CardanoTxCertificate.drep) + pub drep: ::protobuf::MessageField, // special fields // @@protoc_insertion_point(special_field:hw.trezor.messages.cardano.CardanoTxCertificate.special_fields) pub special_fields: ::protobuf::SpecialFields, @@ -6057,8 +6353,27 @@ impl CardanoTxCertificate { self.key_hash.take().unwrap_or_else(|| ::std::vec::Vec::new()) } + // optional uint64 deposit = 7; + + pub fn deposit(&self) -> u64 { + self.deposit.unwrap_or(0) + } + + pub fn clear_deposit(&mut self) { + self.deposit = ::std::option::Option::None; + } + + pub fn has_deposit(&self) -> bool { + self.deposit.is_some() + } + + // Param is passed by value, moved + pub fn set_deposit(&mut self, v: u64) { + self.deposit = ::std::option::Option::Some(v); + } + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(6); + let mut fields = ::std::vec::Vec::with_capacity(8); let mut oneofs = ::std::vec::Vec::with_capacity(0); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( "type", @@ -6090,6 +6405,16 @@ impl CardanoTxCertificate { |m: &CardanoTxCertificate| { &m.key_hash }, |m: &mut CardanoTxCertificate| { &mut m.key_hash }, )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "deposit", + |m: &CardanoTxCertificate| { &m.deposit }, + |m: &mut CardanoTxCertificate| { &mut m.deposit }, + )); + fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, CardanoDRep>( + "drep", + |m: &CardanoTxCertificate| { &m.drep }, + |m: &mut CardanoTxCertificate| { &mut m.drep }, + )); ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( "CardanoTxCertificate", fields, @@ -6110,6 +6435,11 @@ impl ::protobuf::Message for CardanoTxCertificate { return false; } }; + for v in &self.drep { + if !v.is_initialized() { + return false; + } + }; true } @@ -6137,6 +6467,12 @@ impl ::protobuf::Message for CardanoTxCertificate { 50 => { self.key_hash = ::std::option::Option::Some(is.read_bytes()?); }, + 56 => { + self.deposit = ::std::option::Option::Some(is.read_uint64()?); + }, + 66 => { + ::protobuf::rt::read_singular_message_into_field(is, &mut self.drep)?; + }, tag => { ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; }, @@ -6168,6 +6504,13 @@ impl ::protobuf::Message for CardanoTxCertificate { if let Some(v) = self.key_hash.as_ref() { my_size += ::protobuf::rt::bytes_size(6, &v); } + if let Some(v) = self.deposit { + my_size += ::protobuf::rt::uint64_size(7, v); + } + if let Some(v) = self.drep.as_ref() { + let len = v.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len; + } my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); self.special_fields.cached_size().set(my_size as u32); my_size @@ -6192,6 +6535,12 @@ impl ::protobuf::Message for CardanoTxCertificate { if let Some(v) = self.key_hash.as_ref() { os.write_bytes(6, v)?; } + if let Some(v) = self.deposit { + os.write_uint64(7, v)?; + } + if let Some(v) = self.drep.as_ref() { + ::protobuf::rt::write_message_field_with_cached_size(8, v, os)?; + } os.write_unknown_fields(self.special_fields.unknown_fields())?; ::std::result::Result::Ok(()) } @@ -6215,6 +6564,8 @@ impl ::protobuf::Message for CardanoTxCertificate { self.pool_parameters.clear(); self.script_hash = ::std::option::Option::None; self.key_hash = ::std::option::Option::None; + self.deposit = ::std::option::Option::None; + self.drep.clear(); self.special_fields.clear(); } @@ -6226,6 +6577,8 @@ impl ::protobuf::Message for CardanoTxCertificate { pool_parameters: ::protobuf::MessageField::none(), script_hash: ::std::option::Option::None, key_hash: ::std::option::Option::None, + deposit: ::std::option::Option::None, + drep: ::protobuf::MessageField::none(), special_fields: ::protobuf::SpecialFields::new(), }; &instance @@ -9601,6 +9954,12 @@ pub enum CardanoCertificateType { STAKE_DELEGATION = 2, // @@protoc_insertion_point(enum_value:hw.trezor.messages.cardano.CardanoCertificateType.STAKE_POOL_REGISTRATION) STAKE_POOL_REGISTRATION = 3, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.cardano.CardanoCertificateType.STAKE_REGISTRATION_CONWAY) + STAKE_REGISTRATION_CONWAY = 7, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.cardano.CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY) + STAKE_DEREGISTRATION_CONWAY = 8, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.cardano.CardanoCertificateType.VOTE_DELEGATION) + VOTE_DELEGATION = 9, } impl ::protobuf::Enum for CardanoCertificateType { @@ -9616,6 +9975,9 @@ impl ::protobuf::Enum for CardanoCertificateType { 1 => ::std::option::Option::Some(CardanoCertificateType::STAKE_DEREGISTRATION), 2 => ::std::option::Option::Some(CardanoCertificateType::STAKE_DELEGATION), 3 => ::std::option::Option::Some(CardanoCertificateType::STAKE_POOL_REGISTRATION), + 7 => ::std::option::Option::Some(CardanoCertificateType::STAKE_REGISTRATION_CONWAY), + 8 => ::std::option::Option::Some(CardanoCertificateType::STAKE_DEREGISTRATION_CONWAY), + 9 => ::std::option::Option::Some(CardanoCertificateType::VOTE_DELEGATION), _ => ::std::option::Option::None } } @@ -9626,6 +9988,9 @@ impl ::protobuf::Enum for CardanoCertificateType { "STAKE_DEREGISTRATION" => ::std::option::Option::Some(CardanoCertificateType::STAKE_DEREGISTRATION), "STAKE_DELEGATION" => ::std::option::Option::Some(CardanoCertificateType::STAKE_DELEGATION), "STAKE_POOL_REGISTRATION" => ::std::option::Option::Some(CardanoCertificateType::STAKE_POOL_REGISTRATION), + "STAKE_REGISTRATION_CONWAY" => ::std::option::Option::Some(CardanoCertificateType::STAKE_REGISTRATION_CONWAY), + "STAKE_DEREGISTRATION_CONWAY" => ::std::option::Option::Some(CardanoCertificateType::STAKE_DEREGISTRATION_CONWAY), + "VOTE_DELEGATION" => ::std::option::Option::Some(CardanoCertificateType::VOTE_DELEGATION), _ => ::std::option::Option::None } } @@ -9635,6 +10000,9 @@ impl ::protobuf::Enum for CardanoCertificateType { CardanoCertificateType::STAKE_DEREGISTRATION, CardanoCertificateType::STAKE_DELEGATION, CardanoCertificateType::STAKE_POOL_REGISTRATION, + CardanoCertificateType::STAKE_REGISTRATION_CONWAY, + CardanoCertificateType::STAKE_DEREGISTRATION_CONWAY, + CardanoCertificateType::VOTE_DELEGATION, ]; } @@ -9645,7 +10013,15 @@ impl ::protobuf::EnumFull for CardanoCertificateType { } fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor { - let index = *self as usize; + let index = match self { + CardanoCertificateType::STAKE_REGISTRATION => 0, + CardanoCertificateType::STAKE_DEREGISTRATION => 1, + CardanoCertificateType::STAKE_DELEGATION => 2, + CardanoCertificateType::STAKE_POOL_REGISTRATION => 3, + CardanoCertificateType::STAKE_REGISTRATION_CONWAY => 4, + CardanoCertificateType::STAKE_DEREGISTRATION_CONWAY => 5, + CardanoCertificateType::VOTE_DELEGATION => 6, + }; Self::enum_descriptor().value_by_index(index) } } @@ -9662,6 +10038,78 @@ impl CardanoCertificateType { } } +#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)] +// @@protoc_insertion_point(enum:hw.trezor.messages.cardano.CardanoDRepType) +pub enum CardanoDRepType { + // @@protoc_insertion_point(enum_value:hw.trezor.messages.cardano.CardanoDRepType.KEY_HASH) + KEY_HASH = 0, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.cardano.CardanoDRepType.SCRIPT_HASH) + SCRIPT_HASH = 1, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.cardano.CardanoDRepType.ABSTAIN) + ABSTAIN = 2, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.cardano.CardanoDRepType.NO_CONFIDENCE) + NO_CONFIDENCE = 3, +} + +impl ::protobuf::Enum for CardanoDRepType { + const NAME: &'static str = "CardanoDRepType"; + + fn value(&self) -> i32 { + *self as i32 + } + + fn from_i32(value: i32) -> ::std::option::Option { + match value { + 0 => ::std::option::Option::Some(CardanoDRepType::KEY_HASH), + 1 => ::std::option::Option::Some(CardanoDRepType::SCRIPT_HASH), + 2 => ::std::option::Option::Some(CardanoDRepType::ABSTAIN), + 3 => ::std::option::Option::Some(CardanoDRepType::NO_CONFIDENCE), + _ => ::std::option::Option::None + } + } + + fn from_str(str: &str) -> ::std::option::Option { + match str { + "KEY_HASH" => ::std::option::Option::Some(CardanoDRepType::KEY_HASH), + "SCRIPT_HASH" => ::std::option::Option::Some(CardanoDRepType::SCRIPT_HASH), + "ABSTAIN" => ::std::option::Option::Some(CardanoDRepType::ABSTAIN), + "NO_CONFIDENCE" => ::std::option::Option::Some(CardanoDRepType::NO_CONFIDENCE), + _ => ::std::option::Option::None + } + } + + const VALUES: &'static [CardanoDRepType] = &[ + CardanoDRepType::KEY_HASH, + CardanoDRepType::SCRIPT_HASH, + CardanoDRepType::ABSTAIN, + CardanoDRepType::NO_CONFIDENCE, + ]; +} + +impl ::protobuf::EnumFull for CardanoDRepType { + fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor { + static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new(); + descriptor.get(|| file_descriptor().enum_by_package_relative_name("CardanoDRepType").unwrap()).clone() + } + + fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor { + let index = *self as usize; + Self::enum_descriptor().value_by_index(index) + } +} + +impl ::std::default::Default for CardanoDRepType { + fn default() -> Self { + CardanoDRepType::KEY_HASH + } +} + +impl CardanoDRepType { + fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData { + ::protobuf::reflect::GeneratedEnumDescriptorData::new::("CardanoDRepType") + } +} + #[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)] // @@protoc_insertion_point(enum:hw.trezor.messages.cardano.CardanoPoolRelayType) pub enum CardanoPoolRelayType { @@ -10029,7 +10477,7 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x12Z\n\x0fderivation_type\x18\x03\x20\x02(\x0e21.hw.trezor.messages.car\ dano.CardanoDerivationTypeR\x0ederivationType\"a\n\x10CardanoPublicKey\ \x12\x12\n\x04xpub\x18\x01\x20\x02(\tR\x04xpub\x129\n\x04node\x18\x02\ - \x20\x02(\x0b2%.hw.trezor.messages.common.HDNodeTypeR\x04node\"\xb3\x08\ + \x20\x02(\x0b2%.hw.trezor.messages.common.HDNodeTypeR\x04node\"\xde\x08\ \n\x11CardanoSignTxInit\x12S\n\x0csigning_mode\x18\x01\x20\x02(\x0e20.hw\ .trezor.messages.cardano.CardanoTxSigningModeR\x0bsigningMode\x12%\n\x0e\ protocol_magic\x18\x02\x20\x02(\rR\rprotocolMagic\x12\x1d\n\nnetwork_id\ @@ -10052,115 +10500,125 @@ static file_descriptor_proto_data: &'static [u8] = b"\ turn\x18\x13\x20\x01(\x08:\x05falseR\x13hasCollateralReturn\x12)\n\x10to\ tal_collateral\x18\x14\x20\x01(\x04R\x0ftotalCollateral\x127\n\x16refere\ nce_inputs_count\x18\x15\x20\x01(\r:\x010R\x14referenceInputsCount\x12\ - \x1a\n\x08chunkify\x18\x16\x20\x01(\x08R\x08chunkify\"L\n\x0eCardanoTxIn\ - put\x12\x1b\n\tprev_hash\x18\x01\x20\x02(\x0cR\x08prevHash\x12\x1d\n\npr\ - ev_index\x18\x02\x20\x02(\rR\tprevIndex\"\xc5\x03\n\x0fCardanoTxOutput\ - \x12\x18\n\x07address\x18\x01\x20\x01(\tR\x07address\x12g\n\x12address_p\ - arameters\x18\x02\x20\x01(\x0b28.hw.trezor.messages.cardano.CardanoAddre\ - ssParametersTypeR\x11addressParameters\x12\x16\n\x06amount\x18\x03\x20\ - \x02(\x04R\x06amount\x12,\n\x12asset_groups_count\x18\x04\x20\x02(\rR\ - \x10assetGroupsCount\x12\x1d\n\ndatum_hash\x18\x05\x20\x01(\x0cR\tdatumH\ - ash\x12d\n\x06format\x18\x06\x20\x01(\x0e2>.hw.trezor.messages.cardano.C\ - ardanoTxOutputSerializationFormat:\x0cARRAY_LEGACYR\x06format\x12-\n\x11\ - inline_datum_size\x18\x07\x20\x01(\r:\x010R\x0finlineDatumSize\x125\n\ - \x15reference_script_size\x18\x08\x20\x01(\r:\x010R\x13referenceScriptSi\ - ze\"S\n\x11CardanoAssetGroup\x12\x1b\n\tpolicy_id\x18\x01\x20\x02(\x0cR\ - \x08policyId\x12!\n\x0ctokens_count\x18\x02\x20\x02(\rR\x0btokensCount\"\ - q\n\x0cCardanoToken\x12(\n\x10asset_name_bytes\x18\x01\x20\x02(\x0cR\x0e\ - assetNameBytes\x12\x16\n\x06amount\x18\x02\x20\x01(\x04R\x06amount\x12\ - \x1f\n\x0bmint_amount\x18\x03\x20\x01(\x12R\nmintAmount\"/\n\x19CardanoT\ - xInlineDatumChunk\x12\x12\n\x04data\x18\x01\x20\x02(\x0cR\x04data\"3\n\ - \x1dCardanoTxReferenceScriptChunk\x12\x12\n\x04data\x18\x01\x20\x02(\x0c\ - R\x04data\"f\n\x10CardanoPoolOwner\x12(\n\x10staking_key_path\x18\x01\ - \x20\x03(\rR\x0estakingKeyPath\x12(\n\x10staking_key_hash\x18\x02\x20\ - \x01(\x0cR\x0estakingKeyHash\"\xd9\x01\n\x1aCardanoPoolRelayParameters\ - \x12D\n\x04type\x18\x01\x20\x02(\x0e20.hw.trezor.messages.cardano.Cardan\ - oPoolRelayTypeR\x04type\x12!\n\x0cipv4_address\x18\x02\x20\x01(\x0cR\x0b\ - ipv4Address\x12!\n\x0cipv6_address\x18\x03\x20\x01(\x0cR\x0bipv6Address\ - \x12\x1b\n\thost_name\x18\x04\x20\x01(\tR\x08hostName\x12\x12\n\x04port\ - \x18\x05\x20\x01(\rR\x04port\"?\n\x17CardanoPoolMetadataType\x12\x10\n\ - \x03url\x18\x01\x20\x02(\tR\x03url\x12\x12\n\x04hash\x18\x02\x20\x02(\ - \x0cR\x04hash\"\x9a\x03\n\x19CardanoPoolParametersType\x12\x17\n\x07pool\ - _id\x18\x01\x20\x02(\x0cR\x06poolId\x12\x20\n\x0cvrf_key_hash\x18\x02\ - \x20\x02(\x0cR\nvrfKeyHash\x12\x16\n\x06pledge\x18\x03\x20\x02(\x04R\x06\ - pledge\x12\x12\n\x04cost\x18\x04\x20\x02(\x04R\x04cost\x12)\n\x10margin_\ - numerator\x18\x05\x20\x02(\x04R\x0fmarginNumerator\x12-\n\x12margin_deno\ - minator\x18\x06\x20\x02(\x04R\x11marginDenominator\x12%\n\x0ereward_acco\ - unt\x18\x07\x20\x02(\tR\rrewardAccount\x12O\n\x08metadata\x18\n\x20\x01(\ - \x0b23.hw.trezor.messages.cardano.CardanoPoolMetadataTypeR\x08metadata\ - \x12!\n\x0cowners_count\x18\x0b\x20\x02(\rR\x0bownersCount\x12!\n\x0crel\ - ays_count\x18\x0c\x20\x02(\rR\x0brelaysCount\"\xa2\x02\n\x14CardanoTxCer\ - tificate\x12F\n\x04type\x18\x01\x20\x02(\x0e22.hw.trezor.messages.cardan\ - o.CardanoCertificateTypeR\x04type\x12\x12\n\x04path\x18\x02\x20\x03(\rR\ + \x1a\n\x08chunkify\x18\x16\x20\x01(\x08R\x08chunkify\x12)\n\rtag_cbor_se\ + ts\x18\x17\x20\x01(\x08:\x05falseR\x0btagCborSets\"L\n\x0eCardanoTxInput\ + \x12\x1b\n\tprev_hash\x18\x01\x20\x02(\x0cR\x08prevHash\x12\x1d\n\nprev_\ + index\x18\x02\x20\x02(\rR\tprevIndex\"\xc5\x03\n\x0fCardanoTxOutput\x12\ + \x18\n\x07address\x18\x01\x20\x01(\tR\x07address\x12g\n\x12address_param\ + eters\x18\x02\x20\x01(\x0b28.hw.trezor.messages.cardano.CardanoAddressPa\ + rametersTypeR\x11addressParameters\x12\x16\n\x06amount\x18\x03\x20\x02(\ + \x04R\x06amount\x12,\n\x12asset_groups_count\x18\x04\x20\x02(\rR\x10asse\ + tGroupsCount\x12\x1d\n\ndatum_hash\x18\x05\x20\x01(\x0cR\tdatumHash\x12d\ + \n\x06format\x18\x06\x20\x01(\x0e2>.hw.trezor.messages.cardano.CardanoTx\ + OutputSerializationFormat:\x0cARRAY_LEGACYR\x06format\x12-\n\x11inline_d\ + atum_size\x18\x07\x20\x01(\r:\x010R\x0finlineDatumSize\x125\n\x15referen\ + ce_script_size\x18\x08\x20\x01(\r:\x010R\x13referenceScriptSize\"S\n\x11\ + CardanoAssetGroup\x12\x1b\n\tpolicy_id\x18\x01\x20\x02(\x0cR\x08policyId\ + \x12!\n\x0ctokens_count\x18\x02\x20\x02(\rR\x0btokensCount\"q\n\x0cCarda\ + noToken\x12(\n\x10asset_name_bytes\x18\x01\x20\x02(\x0cR\x0eassetNameByt\ + es\x12\x16\n\x06amount\x18\x02\x20\x01(\x04R\x06amount\x12\x1f\n\x0bmint\ + _amount\x18\x03\x20\x01(\x12R\nmintAmount\"/\n\x19CardanoTxInlineDatumCh\ + unk\x12\x12\n\x04data\x18\x01\x20\x02(\x0cR\x04data\"3\n\x1dCardanoTxRef\ + erenceScriptChunk\x12\x12\n\x04data\x18\x01\x20\x02(\x0cR\x04data\"f\n\ + \x10CardanoPoolOwner\x12(\n\x10staking_key_path\x18\x01\x20\x03(\rR\x0es\ + takingKeyPath\x12(\n\x10staking_key_hash\x18\x02\x20\x01(\x0cR\x0estakin\ + gKeyHash\"\xd9\x01\n\x1aCardanoPoolRelayParameters\x12D\n\x04type\x18\ + \x01\x20\x02(\x0e20.hw.trezor.messages.cardano.CardanoPoolRelayTypeR\x04\ + type\x12!\n\x0cipv4_address\x18\x02\x20\x01(\x0cR\x0bipv4Address\x12!\n\ + \x0cipv6_address\x18\x03\x20\x01(\x0cR\x0bipv6Address\x12\x1b\n\thost_na\ + me\x18\x04\x20\x01(\tR\x08hostName\x12\x12\n\x04port\x18\x05\x20\x01(\rR\ + \x04port\"?\n\x17CardanoPoolMetadataType\x12\x10\n\x03url\x18\x01\x20\ + \x02(\tR\x03url\x12\x12\n\x04hash\x18\x02\x20\x02(\x0cR\x04hash\"\x9a\ + \x03\n\x19CardanoPoolParametersType\x12\x17\n\x07pool_id\x18\x01\x20\x02\ + (\x0cR\x06poolId\x12\x20\n\x0cvrf_key_hash\x18\x02\x20\x02(\x0cR\nvrfKey\ + Hash\x12\x16\n\x06pledge\x18\x03\x20\x02(\x04R\x06pledge\x12\x12\n\x04co\ + st\x18\x04\x20\x02(\x04R\x04cost\x12)\n\x10margin_numerator\x18\x05\x20\ + \x02(\x04R\x0fmarginNumerator\x12-\n\x12margin_denominator\x18\x06\x20\ + \x02(\x04R\x11marginDenominator\x12%\n\x0ereward_account\x18\x07\x20\x02\ + (\tR\rrewardAccount\x12O\n\x08metadata\x18\n\x20\x01(\x0b23.hw.trezor.me\ + ssages.cardano.CardanoPoolMetadataTypeR\x08metadata\x12!\n\x0cowners_cou\ + nt\x18\x0b\x20\x02(\rR\x0bownersCount\x12!\n\x0crelays_count\x18\x0c\x20\ + \x02(\rR\x0brelaysCount\"\x8a\x01\n\x0bCardanoDRep\x12?\n\x04type\x18\ + \x01\x20\x02(\x0e2+.hw.trezor.messages.cardano.CardanoDRepTypeR\x04type\ + \x12\x19\n\x08key_hash\x18\x02\x20\x01(\x0cR\x07keyHash\x12\x1f\n\x0bscr\ + ipt_hash\x18\x03\x20\x01(\x0cR\nscriptHash\"\xf9\x02\n\x14CardanoTxCerti\ + ficate\x12F\n\x04type\x18\x01\x20\x02(\x0e22.hw.trezor.messages.cardano.\ + CardanoCertificateTypeR\x04type\x12\x12\n\x04path\x18\x02\x20\x03(\rR\ \x04path\x12\x12\n\x04pool\x18\x03\x20\x01(\x0cR\x04pool\x12^\n\x0fpool_\ parameters\x18\x04\x20\x01(\x0b25.hw.trezor.messages.cardano.CardanoPool\ ParametersTypeR\x0epoolParameters\x12\x1f\n\x0bscript_hash\x18\x05\x20\ \x01(\x0cR\nscriptHash\x12\x19\n\x08key_hash\x18\x06\x20\x01(\x0cR\x07ke\ - yHash\"}\n\x13CardanoTxWithdrawal\x12\x12\n\x04path\x18\x01\x20\x03(\rR\ - \x04path\x12\x16\n\x06amount\x18\x02\x20\x02(\x04R\x06amount\x12\x1f\n\ - \x0bscript_hash\x18\x03\x20\x01(\x0cR\nscriptHash\x12\x19\n\x08key_hash\ - \x18\x04\x20\x01(\x0cR\x07keyHash\"d\n\"CardanoCVoteRegistrationDelegati\ - on\x12&\n\x0fvote_public_key\x18\x01\x20\x02(\x0cR\rvotePublicKey\x12\ - \x16\n\x06weight\x18\x02\x20\x02(\rR\x06weight\"\x8e\x04\n&CardanoCVoteR\ - egistrationParametersType\x12&\n\x0fvote_public_key\x18\x01\x20\x01(\x0c\ - R\rvotePublicKey\x12!\n\x0cstaking_path\x18\x02\x20\x03(\rR\x0bstakingPa\ - th\x12v\n\x1apayment_address_parameters\x18\x03\x20\x01(\x0b28.hw.trezor\ - .messages.cardano.CardanoAddressParametersTypeR\x18paymentAddressParamet\ - ers\x12\x14\n\x05nonce\x18\x04\x20\x02(\x04R\x05nonce\x12Y\n\x06format\ - \x18\x05\x20\x01(\x0e2:.hw.trezor.messages.cardano.CardanoCVoteRegistrat\ - ionFormat:\x05CIP15R\x06format\x12`\n\x0bdelegations\x18\x06\x20\x03(\ - \x0b2>.hw.trezor.messages.cardano.CardanoCVoteRegistrationDelegationR\ - \x0bdelegations\x12%\n\x0evoting_purpose\x18\x07\x20\x01(\x04R\rvotingPu\ - rpose\x12'\n\x0fpayment_address\x18\x08\x20\x01(\tR\x0epaymentAddress\"\ - \xb5\x01\n\x16CardanoTxAuxiliaryData\x12\x86\x01\n\x1dcvote_registration\ - _parameters\x18\x01\x20\x01(\x0b2B.hw.trezor.messages.cardano.CardanoCVo\ - teRegistrationParametersTypeR\x1bcvoteRegistrationParameters\x12\x12\n\ - \x04hash\x18\x02\x20\x01(\x0cR\x04hash\"=\n\rCardanoTxMint\x12,\n\x12ass\ - et_groups_count\x18\x01\x20\x02(\rR\x10assetGroupsCount\"V\n\x18CardanoT\ - xCollateralInput\x12\x1b\n\tprev_hash\x18\x01\x20\x02(\x0cR\x08prevHash\ - \x12\x1d\n\nprev_index\x18\x02\x20\x02(\rR\tprevIndex\"O\n\x17CardanoTxR\ - equiredSigner\x12\x19\n\x08key_hash\x18\x01\x20\x01(\x0cR\x07keyHash\x12\ - \x19\n\x08key_path\x18\x02\x20\x03(\rR\x07keyPath\"U\n\x17CardanoTxRefer\ - enceInput\x12\x1b\n\tprev_hash\x18\x01\x20\x02(\x0cR\x08prevHash\x12\x1d\ - \n\nprev_index\x18\x02\x20\x02(\rR\tprevIndex\"\x12\n\x10CardanoTxItemAc\ - k\"\xea\x01\n\x20CardanoTxAuxiliaryDataSupplement\x12T\n\x04type\x18\x01\ - \x20\x02(\x0e2@.hw.trezor.messages.cardano.CardanoTxAuxiliaryDataSupplem\ - entTypeR\x04type\x12.\n\x13auxiliary_data_hash\x18\x02\x20\x01(\x0cR\x11\ - auxiliaryDataHash\x12@\n\x1ccvote_registration_signature\x18\x03\x20\x01\ - (\x0cR\x1acvoteRegistrationSignature\"-\n\x17CardanoTxWitnessRequest\x12\ - \x12\n\x04path\x18\x01\x20\x03(\rR\x04path\"\xb6\x01\n\x18CardanoTxWitne\ - ssResponse\x12D\n\x04type\x18\x01\x20\x02(\x0e20.hw.trezor.messages.card\ - ano.CardanoTxWitnessTypeR\x04type\x12\x17\n\x07pub_key\x18\x02\x20\x02(\ - \x0cR\x06pubKey\x12\x1c\n\tsignature\x18\x03\x20\x02(\x0cR\tsignature\ - \x12\x1d\n\nchain_code\x18\x04\x20\x01(\x0cR\tchainCode\"\x12\n\x10Carda\ - noTxHostAck\",\n\x11CardanoTxBodyHash\x12\x17\n\x07tx_hash\x18\x01\x20\ - \x02(\x0cR\x06txHash\"\x17\n\x15CardanoSignTxFinished*B\n\x15CardanoDeri\ - vationType\x12\n\n\x06LEDGER\x10\0\x12\n\n\x06ICARUS\x10\x01\x12\x11\n\r\ - ICARUS_TREZOR\x10\x02*\xd2\x01\n\x12CardanoAddressType\x12\x08\n\x04BASE\ - \x10\0\x12\x13\n\x0fBASE_SCRIPT_KEY\x10\x01\x12\x13\n\x0fBASE_KEY_SCRIPT\ - \x10\x02\x12\x16\n\x12BASE_SCRIPT_SCRIPT\x10\x03\x12\x0b\n\x07POINTER\ - \x10\x04\x12\x12\n\x0ePOINTER_SCRIPT\x10\x05\x12\x0e\n\nENTERPRISE\x10\ - \x06\x12\x15\n\x11ENTERPRISE_SCRIPT\x10\x07\x12\t\n\x05BYRON\x10\x08\x12\ - \n\n\x06REWARD\x10\x0e\x12\x11\n\rREWARD_SCRIPT\x10\x0f*o\n\x17CardanoNa\ - tiveScriptType\x12\x0b\n\x07PUB_KEY\x10\0\x12\x07\n\x03ALL\x10\x01\x12\ - \x07\n\x03ANY\x10\x02\x12\n\n\x06N_OF_K\x10\x03\x12\x12\n\x0eINVALID_BEF\ - ORE\x10\x04\x12\x15\n\x11INVALID_HEREAFTER\x10\x05*K\n$CardanoNativeScri\ - ptHashDisplayFormat\x12\x08\n\x04HIDE\x10\0\x12\n\n\x06BECH32\x10\x01\ - \x12\r\n\tPOLICY_ID\x10\x02*G\n\"CardanoTxOutputSerializationFormat\x12\ - \x10\n\x0cARRAY_LEGACY\x10\0\x12\x0f\n\x0bMAP_BABBAGE\x10\x01*}\n\x16Car\ - danoCertificateType\x12\x16\n\x12STAKE_REGISTRATION\x10\0\x12\x18\n\x14S\ - TAKE_DEREGISTRATION\x10\x01\x12\x14\n\x10STAKE_DELEGATION\x10\x02\x12\ - \x1b\n\x17STAKE_POOL_REGISTRATION\x10\x03*X\n\x14CardanoPoolRelayType\ - \x12\x12\n\x0eSINGLE_HOST_IP\x10\0\x12\x14\n\x10SINGLE_HOST_NAME\x10\x01\ - \x12\x16\n\x12MULTIPLE_HOST_NAME\x10\x02*R\n$CardanoTxAuxiliaryDataSuppl\ - ementType\x12\x08\n\x04NONE\x10\0\x12\x20\n\x1cCVOTE_REGISTRATION_SIGNAT\ - URE\x10\x01*6\n\x1eCardanoCVoteRegistrationFormat\x12\t\n\x05CIP15\x10\0\ - \x12\t\n\x05CIP36\x10\x01*\x82\x01\n\x14CardanoTxSigningMode\x12\x18\n\ - \x14ORDINARY_TRANSACTION\x10\0\x12\x1e\n\x1aPOOL_REGISTRATION_AS_OWNER\ - \x10\x01\x12\x18\n\x14MULTISIG_TRANSACTION\x10\x02\x12\x16\n\x12PLUTUS_T\ - RANSACTION\x10\x03*>\n\x14CardanoTxWitnessType\x12\x11\n\rBYRON_WITNESS\ - \x10\0\x12\x13\n\x0fSHELLEY_WITNESS\x10\x01B;\n#com.satoshilabs.trezor.l\ - ib.protobufB\x14TrezorMessageCardano\ + yHash\x12\x18\n\x07deposit\x18\x07\x20\x01(\x04R\x07deposit\x12;\n\x04dr\ + ep\x18\x08\x20\x01(\x0b2'.hw.trezor.messages.cardano.CardanoDRepR\x04dre\ + p\"}\n\x13CardanoTxWithdrawal\x12\x12\n\x04path\x18\x01\x20\x03(\rR\x04p\ + ath\x12\x16\n\x06amount\x18\x02\x20\x02(\x04R\x06amount\x12\x1f\n\x0bscr\ + ipt_hash\x18\x03\x20\x01(\x0cR\nscriptHash\x12\x19\n\x08key_hash\x18\x04\ + \x20\x01(\x0cR\x07keyHash\"d\n\"CardanoCVoteRegistrationDelegation\x12&\ + \n\x0fvote_public_key\x18\x01\x20\x02(\x0cR\rvotePublicKey\x12\x16\n\x06\ + weight\x18\x02\x20\x02(\rR\x06weight\"\x8e\x04\n&CardanoCVoteRegistratio\ + nParametersType\x12&\n\x0fvote_public_key\x18\x01\x20\x01(\x0cR\rvotePub\ + licKey\x12!\n\x0cstaking_path\x18\x02\x20\x03(\rR\x0bstakingPath\x12v\n\ + \x1apayment_address_parameters\x18\x03\x20\x01(\x0b28.hw.trezor.messages\ + .cardano.CardanoAddressParametersTypeR\x18paymentAddressParameters\x12\ + \x14\n\x05nonce\x18\x04\x20\x02(\x04R\x05nonce\x12Y\n\x06format\x18\x05\ + \x20\x01(\x0e2:.hw.trezor.messages.cardano.CardanoCVoteRegistrationForma\ + t:\x05CIP15R\x06format\x12`\n\x0bdelegations\x18\x06\x20\x03(\x0b2>.hw.t\ + rezor.messages.cardano.CardanoCVoteRegistrationDelegationR\x0bdelegation\ + s\x12%\n\x0evoting_purpose\x18\x07\x20\x01(\x04R\rvotingPurpose\x12'\n\ + \x0fpayment_address\x18\x08\x20\x01(\tR\x0epaymentAddress\"\xb5\x01\n\ + \x16CardanoTxAuxiliaryData\x12\x86\x01\n\x1dcvote_registration_parameter\ + s\x18\x01\x20\x01(\x0b2B.hw.trezor.messages.cardano.CardanoCVoteRegistra\ + tionParametersTypeR\x1bcvoteRegistrationParameters\x12\x12\n\x04hash\x18\ + \x02\x20\x01(\x0cR\x04hash\"=\n\rCardanoTxMint\x12,\n\x12asset_groups_co\ + unt\x18\x01\x20\x02(\rR\x10assetGroupsCount\"V\n\x18CardanoTxCollateralI\ + nput\x12\x1b\n\tprev_hash\x18\x01\x20\x02(\x0cR\x08prevHash\x12\x1d\n\np\ + rev_index\x18\x02\x20\x02(\rR\tprevIndex\"O\n\x17CardanoTxRequiredSigner\ + \x12\x19\n\x08key_hash\x18\x01\x20\x01(\x0cR\x07keyHash\x12\x19\n\x08key\ + _path\x18\x02\x20\x03(\rR\x07keyPath\"U\n\x17CardanoTxReferenceInput\x12\ + \x1b\n\tprev_hash\x18\x01\x20\x02(\x0cR\x08prevHash\x12\x1d\n\nprev_inde\ + x\x18\x02\x20\x02(\rR\tprevIndex\"\x12\n\x10CardanoTxItemAck\"\xea\x01\n\ + \x20CardanoTxAuxiliaryDataSupplement\x12T\n\x04type\x18\x01\x20\x02(\x0e\ + 2@.hw.trezor.messages.cardano.CardanoTxAuxiliaryDataSupplementTypeR\x04t\ + ype\x12.\n\x13auxiliary_data_hash\x18\x02\x20\x01(\x0cR\x11auxiliaryData\ + Hash\x12@\n\x1ccvote_registration_signature\x18\x03\x20\x01(\x0cR\x1acvo\ + teRegistrationSignature\"-\n\x17CardanoTxWitnessRequest\x12\x12\n\x04pat\ + h\x18\x01\x20\x03(\rR\x04path\"\xb6\x01\n\x18CardanoTxWitnessResponse\ + \x12D\n\x04type\x18\x01\x20\x02(\x0e20.hw.trezor.messages.cardano.Cardan\ + oTxWitnessTypeR\x04type\x12\x17\n\x07pub_key\x18\x02\x20\x02(\x0cR\x06pu\ + bKey\x12\x1c\n\tsignature\x18\x03\x20\x02(\x0cR\tsignature\x12\x1d\n\nch\ + ain_code\x18\x04\x20\x01(\x0cR\tchainCode\"\x12\n\x10CardanoTxHostAck\",\ + \n\x11CardanoTxBodyHash\x12\x17\n\x07tx_hash\x18\x01\x20\x02(\x0cR\x06tx\ + Hash\"\x17\n\x15CardanoSignTxFinished*B\n\x15CardanoDerivationType\x12\n\ + \n\x06LEDGER\x10\0\x12\n\n\x06ICARUS\x10\x01\x12\x11\n\rICARUS_TREZOR\ + \x10\x02*\xd2\x01\n\x12CardanoAddressType\x12\x08\n\x04BASE\x10\0\x12\ + \x13\n\x0fBASE_SCRIPT_KEY\x10\x01\x12\x13\n\x0fBASE_KEY_SCRIPT\x10\x02\ + \x12\x16\n\x12BASE_SCRIPT_SCRIPT\x10\x03\x12\x0b\n\x07POINTER\x10\x04\ + \x12\x12\n\x0ePOINTER_SCRIPT\x10\x05\x12\x0e\n\nENTERPRISE\x10\x06\x12\ + \x15\n\x11ENTERPRISE_SCRIPT\x10\x07\x12\t\n\x05BYRON\x10\x08\x12\n\n\x06\ + REWARD\x10\x0e\x12\x11\n\rREWARD_SCRIPT\x10\x0f*o\n\x17CardanoNativeScri\ + ptType\x12\x0b\n\x07PUB_KEY\x10\0\x12\x07\n\x03ALL\x10\x01\x12\x07\n\x03\ + ANY\x10\x02\x12\n\n\x06N_OF_K\x10\x03\x12\x12\n\x0eINVALID_BEFORE\x10\ + \x04\x12\x15\n\x11INVALID_HEREAFTER\x10\x05*K\n$CardanoNativeScriptHashD\ + isplayFormat\x12\x08\n\x04HIDE\x10\0\x12\n\n\x06BECH32\x10\x01\x12\r\n\t\ + POLICY_ID\x10\x02*G\n\"CardanoTxOutputSerializationFormat\x12\x10\n\x0cA\ + RRAY_LEGACY\x10\0\x12\x0f\n\x0bMAP_BABBAGE\x10\x01*\xd2\x01\n\x16Cardano\ + CertificateType\x12\x16\n\x12STAKE_REGISTRATION\x10\0\x12\x18\n\x14STAKE\ + _DEREGISTRATION\x10\x01\x12\x14\n\x10STAKE_DELEGATION\x10\x02\x12\x1b\n\ + \x17STAKE_POOL_REGISTRATION\x10\x03\x12\x1d\n\x19STAKE_REGISTRATION_CONW\ + AY\x10\x07\x12\x1f\n\x1bSTAKE_DEREGISTRATION_CONWAY\x10\x08\x12\x13\n\ + \x0fVOTE_DELEGATION\x10\t*P\n\x0fCardanoDRepType\x12\x0c\n\x08KEY_HASH\ + \x10\0\x12\x0f\n\x0bSCRIPT_HASH\x10\x01\x12\x0b\n\x07ABSTAIN\x10\x02\x12\ + \x11\n\rNO_CONFIDENCE\x10\x03*X\n\x14CardanoPoolRelayType\x12\x12\n\x0eS\ + INGLE_HOST_IP\x10\0\x12\x14\n\x10SINGLE_HOST_NAME\x10\x01\x12\x16\n\x12M\ + ULTIPLE_HOST_NAME\x10\x02*R\n$CardanoTxAuxiliaryDataSupplementType\x12\ + \x08\n\x04NONE\x10\0\x12\x20\n\x1cCVOTE_REGISTRATION_SIGNATURE\x10\x01*6\ + \n\x1eCardanoCVoteRegistrationFormat\x12\t\n\x05CIP15\x10\0\x12\t\n\x05C\ + IP36\x10\x01*\x82\x01\n\x14CardanoTxSigningMode\x12\x18\n\x14ORDINARY_TR\ + ANSACTION\x10\0\x12\x1e\n\x1aPOOL_REGISTRATION_AS_OWNER\x10\x01\x12\x18\ + \n\x14MULTISIG_TRANSACTION\x10\x02\x12\x16\n\x12PLUTUS_TRANSACTION\x10\ + \x03*>\n\x14CardanoTxWitnessType\x12\x11\n\rBYRON_WITNESS\x10\0\x12\x13\ + \n\x0fSHELLEY_WITNESS\x10\x01B;\n#com.satoshilabs.trezor.lib.protobufB\ + \x14TrezorMessageCardano\ "; /// `FileDescriptorProto` object which was a source for this generated file @@ -10179,7 +10637,7 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { let generated_file_descriptor = generated_file_descriptor_lazy.get(|| { let mut deps = ::std::vec::Vec::with_capacity(1); deps.push(super::messages_common::file_descriptor().clone()); - let mut messages = ::std::vec::Vec::with_capacity(36); + let mut messages = ::std::vec::Vec::with_capacity(37); messages.push(CardanoBlockchainPointerType::generated_message_descriptor_data()); messages.push(CardanoNativeScript::generated_message_descriptor_data()); messages.push(CardanoGetNativeScriptHash::generated_message_descriptor_data()); @@ -10200,6 +10658,7 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { messages.push(CardanoPoolRelayParameters::generated_message_descriptor_data()); messages.push(CardanoPoolMetadataType::generated_message_descriptor_data()); messages.push(CardanoPoolParametersType::generated_message_descriptor_data()); + messages.push(CardanoDRep::generated_message_descriptor_data()); messages.push(CardanoTxCertificate::generated_message_descriptor_data()); messages.push(CardanoTxWithdrawal::generated_message_descriptor_data()); messages.push(CardanoCVoteRegistrationDelegation::generated_message_descriptor_data()); @@ -10216,13 +10675,14 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { messages.push(CardanoTxHostAck::generated_message_descriptor_data()); messages.push(CardanoTxBodyHash::generated_message_descriptor_data()); messages.push(CardanoSignTxFinished::generated_message_descriptor_data()); - let mut enums = ::std::vec::Vec::with_capacity(11); + let mut enums = ::std::vec::Vec::with_capacity(12); enums.push(CardanoDerivationType::generated_enum_descriptor_data()); enums.push(CardanoAddressType::generated_enum_descriptor_data()); enums.push(CardanoNativeScriptType::generated_enum_descriptor_data()); enums.push(CardanoNativeScriptHashDisplayFormat::generated_enum_descriptor_data()); enums.push(CardanoTxOutputSerializationFormat::generated_enum_descriptor_data()); enums.push(CardanoCertificateType::generated_enum_descriptor_data()); + enums.push(CardanoDRepType::generated_enum_descriptor_data()); enums.push(CardanoPoolRelayType::generated_enum_descriptor_data()); enums.push(CardanoTxAuxiliaryDataSupplementType::generated_enum_descriptor_data()); enums.push(CardanoCVoteRegistrationFormat::generated_enum_descriptor_data()); diff --git a/tests/device_tests/cardano/test_sign_tx.py b/tests/device_tests/cardano/test_sign_tx.py index 4d72d0fc7fa..2f54787dc11 100644 --- a/tests/device_tests/cardano/test_sign_tx.py +++ b/tests/device_tests/cardano/test_sign_tx.py @@ -139,6 +139,7 @@ def call_sign_tx(client: Client, parameters, input_flow=None, chunkify: bool = F additional_witness_requests=additional_witness_requests, include_network_id=parameters["include_network_id"], chunkify=chunkify, + tag_cbor_sets=parameters["tag_cbor_sets"], ) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index b169beb839c..c6a1fd09484 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -4329,6 +4329,7 @@ "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "003060a5f25b31b42ea1aafc3f8c8eb511a564ee1e645dd01048fe7586d226ef", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "0ac6dabb1fcb6888db49464d4fdaa15d6231341ac4957352bdacb941f70f8512", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "1b192388b76c8da26faa1318376b08f11c47029792adaa7cf3601fc15a6a8d6e", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "f8589db625d88f5270c08d842b18ca9ab924da92dc634f95f733b66059f7d3ee", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "488cf1a6b968b5b77a7c2cee0ac407b5f05e05af6858c678c0d56c0def0780ea", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "475f1731c788eb6a55a2383ec8c4fbb23b44d182c7672ff06814bcb3c8403078", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "0877fef8cc21b0e3201857118f2c21abcfea34c918531dcdbd91c1e4ba1708f7", @@ -4358,6 +4359,10 @@ "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "bc34bd53f2f1dae3c391e5a5a12866c0cae82129c78bf084bce68418aafacae6", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "0b84064d8397c8331112024747ac07c1ee98ce4f6611427e66c890be0cd4762c", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "e72dab3ff56d1f8669b23eaa591c642e9383b26acf32a0f98353dbc76e6921a7", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "b1fa0c12a653e42a5bf09bd86f13605704cd1bfe25eb86b9849e316f96ccea5f", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "fa52a33cd2201fc5f9f21973cd54f3a4591ff6bb280c4c5e6a886a6025fa73db", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "0bd7b51b49f660893e8778f47a987c9810771c5a945d5e924a5e240749f41e9b", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "6b4e60be5469a834cb90e7c9cdbf7734728c4f693a4912c30052ccea631569a4", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "02c9e2f58df10d287f445451bc604d7e7f9e3aee4d4a71600bc1c9c8f71565f6", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "4d1765a5884c859931f9f9563ef18c96dea375ec9e9f35b57ef90e310a4854f9", @@ -4367,6 +4372,9 @@ "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "bffb18ac0999fbb15efbcd92c092f64a8e511789749ade41625e1f65edc37061", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9faa1cfdec3253eabf3657e2038920e5e0af05087edd6fdb67dc380f6310275c", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "eb9cfcd19b673900eb5324eae0a8ca49de353466f47ba5b78c46002c0a2f2fee", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "4a43a109ecfd7d300a07b271a01f09d7b7da5a3efa75c8d5a4c8b704a41493cc", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "d611c4247d38c0e9a1fac28c0eeee9cff1ae3ce2addee508e021b6fe9627288c", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "d611c4247d38c0e9a1fac28c0eeee9cff1ae3ce2addee508e021b6fe9627288c", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "e49a1b40da9c56628024752c7e5fea310c1de65e60e6bbd6c9c0d8a8e571f983", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "ad29f1f6a1c16d7ad0570c19e835136b123edd2b3852903f6abccb1c8ef947d5", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "ad29f1f6a1c16d7ad0570c19e835136b123edd2b3852903f6abccb1c8ef947d5", @@ -8742,6 +8750,7 @@ "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "43920e045bdbd0cc19970c6339c946e7ca5ce451cd7a832c47ede83ff13e5155", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "24d52a244d77254c5c4558beeeb710c4d2fccb216cc40c85be2a91e3894c0c3f", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "c203f035a61bf7832ef1549e1f5483d89c9f3838a41cddb9f318ee817e36cfd4", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "8d496f51e2d8d69074375dd76e0f90d7477373cb5d13affc38e3bde5dc300ad5", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "60fcc0e1bce9bd0d9677a1bf90d4372b619f60cd5674daa07fb00c75e6b7d342", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "4ea136c7bbb94163065617d131153fc6c6e58a600d7b469464c867c3695a17db", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "d2ef0a4f0899560b048c83b713f5fbc189b0fc24db470821c5b6389194bd233f", @@ -8771,6 +8780,10 @@ "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "53656cb3eecd84e1f9041eb8477306db31eb21aa3c4ba8c30cc8124a45a0ff8b", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "01af3ce2ac5ce642410a9dfac7e1360dc8c51ca73677915e95cb2d9998c674c8", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "fcc0172fece8a3d30ce3f76fe564e4cfa560db0785babd2e6228f445fd070bfd", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "1a5d11217da86a13481168c2e92cfb4fef166b85e3258d0f2b38a70c6487984b", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "7b5f77b7b371b7e2a2c057362b05a38d153a7d0aaf9cb9a631bd1d7adedd670f", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "8d4064e131e72967ce48b12767a3acbbfdeda21c9786fa493d5e63e07d478afd", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "45ee577b70c312633a00732f720f98474ce1361e1d85c672e91886dc5239ff61", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "371d13a75eebd3578bdbf89af63325dc432853cfebe4585edfdd21d32698d596", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "3d2a1e54ce93f505a8671ab232772b7a696bad88cde38159f528b0c0e43c2698", @@ -8780,6 +8793,9 @@ "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "961dc7581378dc4a35d10cd27a51d7ee7892443ca892e801ed3f4e16e3272d0c", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9deb71c5bed9352a429568ee4be0c5454522786873d71ee12d6fa08d34b9916c", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "efa7fb9b031385ce06ff26df22187790b1d694503098dcd203ee88c0903d4ace", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "4bf1ecc8f36058dba0a82c5268e54e9a389bee07cbb4f8f7caef81403ae4adb0", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "0a6d5a8865a385844221db73d28823dae0f8910bf01ea5fecc4b65f2dd9b65b1", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "0a6d5a8865a385844221db73d28823dae0f8910bf01ea5fecc4b65f2dd9b65b1", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "ca8c279751c123558fd05fe350e16a57d7a1d91e8e6a91d367d579a282eda994", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "5f57158b905bbed6c59ebd0c24255a122f77b3789d6aa5d26cb48c1400b70129", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "5f57158b905bbed6c59ebd0c24255a122f77b3789d6aa5d26cb48c1400b70129", @@ -10199,6 +10215,7 @@ "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "e2ebed2c337a7fe0aab1c350510b172d635314fd0bbec52e7c168ae38d9431c0", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "a4f4d0581f7ac773ea3a3d9e31760d3977d314f7a9921344be1d44c79a8c299b", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "12c3e6bafb34b2480169a243082496b65fdfc5c1e44f32cb3dcf65aa05152e3f", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "05846b84e694732a18247c47f4b039e2cbda01752d0cce06cb91ef0f199412f1", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "a9f2cb26fa79b92849df8707a9bb2503c835bf48bb5a8f3cd5ba947ed0014f30", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "eab47e2f22a59b5587507c4ad7934fa701dd1f60b429b3a9ee55a5d2daaecbfc", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "780cdf960ce08061c9e224b598ad0d6228d00dfcc4d814bcf1eb25ed95aa557f", @@ -10228,6 +10245,10 @@ "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "403883195f0bba908a2a8e5f36598a3a7a748de46226186667e88946e7ea28a9", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "a7eebb90c9e1e952ae42b721140d1f0d4cebfa831366a2b9668de1dbe8ef699e", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "6c29a9e0b33f14d8549d9635e38c8ff13b1cf4bae7bd36319d28bf0f28790954", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "12e4199c992ed2a334403814367b872be55986c98b5a9a94187376f3b9530e3c", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "62bb28cf7b173cd652fc4bbedcfeb8172e2735294d088e1841ae7bf9973eeda4", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "e945588bcc167e340f87e5752b24c7c38af390135c0c640529fcd8c7d88b0860", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "fc862a70389bb4dc49628f34a5633327b47d2e8206c0c0a5ba506fe21606c6d5", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "6a3dedfefa16c32ce6a1fe470d271645ba08e4e4ad8552857095fcfa5183283b", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "1592544e84850950f1fe7ae4b073c682c63130d35ad6ed5bb879b4e972407ab3", @@ -10237,6 +10258,9 @@ "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "066507d14abd8f7b6cbffab1b6c3d0c60716887e47b4a1b2115b9a26c44ed08b", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9f985619d4e544dc52b4af43a52fcc259b01235f44ddb1882731b993284a64b5", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "b6fe22230ff6ee382ddbe8aeb2489c566db47b18082b46377f33e7d0aeaa8512", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "074e4b5735bdc9740dc6df06e74a45231a89ad76f5bd6f365b302c8b6109a409", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "b70f5df174f2e10ae8f885ae5b2775f1cda8676ecb4d1151c09b4f4acc35250e", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "b70f5df174f2e10ae8f885ae5b2775f1cda8676ecb4d1151c09b4f4acc35250e", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "63b341a969ee8579b716adc52b15c31c7fb200790a080eb6d8ed304a688ab417", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "1e62b3449cfc1343dfd55a866b4e0956690b1b18e4146ecec0b986cf7f6abf66", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "1e62b3449cfc1343dfd55a866b4e0956690b1b18e4146ecec0b986cf7f6abf66", @@ -11656,6 +11680,7 @@ "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "42eed639788adda40cb3b5134b97f02974db0fdc27b87a686d7855b5feaa80fc", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d3bab830b543745d67656d0913f62f073e315293dffe54382024e4c9fda96b71", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "641709e3e10fa91ce21803ba5a52cfc434cdd3578bcd962164bcb99d3a43d6da", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "ca9b3f3653f972ac233c9e8c44d50b5a32397f1418d64dece3c1dd60b85930ce", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "178e9ba04a5ccbce4326a33bd11fe80b2c8d9e2d16287829a8c48ef8570def7e", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "dbc002eddbb6d4a5f71eb0ca8da65903837b2da73201ec1714e3124ed2c3e064", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "dcc12f084e836ace643b6f503e60b003c88c419d27f483a11737a9e9c6250d17", @@ -11685,6 +11710,10 @@ "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "033d136f251737d3c3bd3e43d7aeed40e5c2af92266a99c17ce0ca45e23c3505", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "203e1cfccd5f40c0ca3eba2ab8812f37b72562a0ea8ca47085213c34e15ea8a7", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "4312df9c0b61cbf8e29efae866efdb58df2a339adeffde75ea72e01259a4b4bb", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "b501c4b73b1a745c96b8c9706f28ec0bb06d5235e5739af83fa777aa2d0c7d41", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "6e4e1a5639f4f1c87505dc88a390e38c15f421ea962dc370f2df8aee075e7385", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "ca56afd69ea46ac474132a124c7dd8e11857275f728c9a858f38bea64c9b9e4a", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "0b1e114acd865c585518eb4f2c1c919c4b1e083a978344181d75543380d5e366", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "137fff528553be9c8c12b08865441f954d7423b96b5fe5b5850cf3fbb86e2aa8", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "28ed27584c289daba9ebcb0b5cfa37434fa7482877b87dd5b17e971bb0c22db5", @@ -11694,6 +11723,9 @@ "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "326faa34ad4e0e092a8a446d3603b06963852e0c3baefa7fdd20d3a1c78fa1aa", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "1c83aa4ac945a5e425d585a041594324c8b11d28d34a86dc51d9a77ce9a35a51", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "bd44276fddeaf4511fb7241a65fad11012088c168d26ebe314fc1e0c204edf1a", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "50436db43e95d93e7f6ea7dc0e7ca0e80dd15cfbe048db642c69397d06b1e115", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "70f4751132b94bc1924d178b613556b8106d6627dcdf51bf8a4785f6bc6dfadc", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "70f4751132b94bc1924d178b613556b8106d6627dcdf51bf8a4785f6bc6dfadc", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "dde4b7c2ea73199f674943b01e3cc9e1acec55f7a9ca28ab8c859ca91640a772", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "2059376cc7831247e94634244bb7569cbff6eb5eafc8474875a6073f695857e7", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "2059376cc7831247e94634244bb7569cbff6eb5eafc8474875a6073f695857e7", @@ -13131,6 +13163,7 @@ "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a910885ed3480eaca4a2fe013acd6d9f3d1bbe6ea3a9622e7f02f4b2bf9879e5", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "77199b22cd5981363016b0ce404e42f660833b133cdc62b50b036fcbf5f43777", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "d223c3e651e70fe78ec3e5b6b6d3c3fdd06fdd4cfbe761a1b578f270888015dd", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "e1bb7a9ceb6fdb4193c74185cf3544f7cba084a67e083619657624689cfdb907", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "5278b236aaa976482d2f5193209457abcdd51a0d472eb0896fa9665d7f2a9461", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "14bec6205be447427374351dd75836fa82a0183f820928b9c48bacb474ce9305", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "9e304a0c5000f07bc255d5d652081ada9804920ad5b2ca6445c4a6740a0ab348", @@ -13160,6 +13193,10 @@ "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "2b2b3c3f9a4a0e63a76d67c8cbd62a8f32065a5c278aa95ffa8eae5b57d17153", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "8e93eb79301023ff6d10bf842c16f684306c20af7a0dd426ae72f0f3dff06393", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "ca34e89ccd20410e1301f864c9371c9be3e63991cf9c299c441c83eb312498b9", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "489a7376b93d1caa83c889788a762f46c1f6ec4577d0e2753013f1162b9e8d2c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "321d00f3476599733b43b066c9ac38a3549400777bd5ef1555519d662fcd64e0", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "7c0a59c98455d2f16e2f028a7636d76aad371036f6b8e5b0b5164c796296144c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "f8ca850fd8238d0797c56927710654a48b187ae0d630434fbcf437e51293927f", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "7acac1fb4aea9ae638e70890863da73e371152253a22976a2b17ef88a274df0d", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "e7b6abc9b166d7d586abe7f59a17d099fab1d55b5a2b916a8e1ad30e38cccbc1", @@ -13169,6 +13206,9 @@ "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "bf84aedb1f4a63bde4bd13c45ed4645696563362c9b84a1fc8da535f1c02315f", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "d91a813a0768d73f1d52029e99ed75987bc0cf744f1da3700f789f6202917666", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "d0f7e6639d7d13d04596ca456f4b6df3937a3c9816f52ed78d27122b4488e54b", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "ffda6edfaa7af5e2de9095b4498ac493dfc1fdc02f1fd79c0d73cb3a2c22bfb4", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "8f011ac4b19ff488fdcfdc0fca2973db803143724d0e481184d8e2af5c75e914", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "8f011ac4b19ff488fdcfdc0fca2973db803143724d0e481184d8e2af5c75e914", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "ea63a77b0b42d0491b6dfc49f78ca520abe3456a24c7161de3f32ccce06714fd", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "910589795159358dff80d742450378b54b02f6b40ac06749a41598377dbf30fc", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "910589795159358dff80d742450378b54b02f6b40ac06749a41598377dbf30fc", @@ -14588,6 +14628,7 @@ "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a7a6a539ac1a60d5d76464eb9dc814b5d4b97d7f3210fa550fb850ae7e7dcff5", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "095d29bff240700a7e6e26bb8bac4d168a7106af1b0f0d6b01ab981bd4365980", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "94c82af1cf2a0d1a964ab07ef5103e2e43e961495d302479cac15d98a89e7ba8", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "9ec8932f47e344d1e9ee1b18c9fd0cfa668fa0f49735bb9e8d0a7f7a821ab76d", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "bfe7a99ed9fad6a84be970a9329c02ad021e0438206fa0f5bbb9b349996e7a19", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "9e737a9e4063f5c28462df1843d2cefc7194e8ed81a5d6400e9d90792e2cff3c", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "626b1964bd7dbdde2c4f73cb597462340909de35d1abe538aaf4f7140345da0c", @@ -14617,6 +14658,10 @@ "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "fa7716bc8a1a9d876d072a783e5509e77e39f079d185e66460c3704d34af833c", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "afeb5467364ead60fdb24fba2851148ae3a56404cf6b8ee9b65c846e2a7ae393", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "bc11f996c3df62edc0b4c890f8bc84f0255a7dabf43cf60f4261b620eedc02e4", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "1cab6523a7a5b46631b08034b8b260910c808b0cbe73206657a4c8fade1f3973", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "b5afcc4f7275aa41f2b59615f242eb5128102b9a4f2b17c272162d7b3a9df850", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "adf4203b973746c9cc0abd83d067df69b5cda20f9bbb58fedccc6c81727de659", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "844c73b7715c7dd0fe2f4d54e380c3abdc9ac0ecd1f84d101a027afa449c6307", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "550d903912e285c4975e23cda2d18e889dc5740bebcf9887aded69dda8c5d680", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "57d2f1b030473165a1e5fdd96cabed3261e9b33c22ba03be66929648e8c88c18", @@ -14626,6 +14671,9 @@ "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "d67317da8d8529f32f492c15a36a6f56ae3f224de46d957cfffb686cfd3843bb", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "dedd91139f4c90adcbb218c9cbc469a0c3a58b2d1d1a20c149d470d9572f9914", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "3b25f3a58e621fff908387ac16386cb852e14971cda033da7b65c101a0ab0325", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "d22f5fc713c8928e8a86e4282624535c2fe722ae82207355f6ca8d81b8353c05", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "7f26d54562c8f3ec46d260fffbff0c6ecf612afa2edfc20342a66e96bd0d96ec", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "7f26d54562c8f3ec46d260fffbff0c6ecf612afa2edfc20342a66e96bd0d96ec", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c14cf088eccbabcaa50cf49ba0653bafbf1e01228bf87883b573ae72df926fb9", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "b83d6c2ec98d1b71547039dfa8f82758e1cfbd8b61d7d14db48d6fa5755de1b1", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "b83d6c2ec98d1b71547039dfa8f82758e1cfbd8b61d7d14db48d6fa5755de1b1", @@ -16296,6 +16344,7 @@ "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "43920e045bdbd0cc19970c6339c946e7ca5ce451cd7a832c47ede83ff13e5155", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "24d52a244d77254c5c4558beeeb710c4d2fccb216cc40c85be2a91e3894c0c3f", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "c203f035a61bf7832ef1549e1f5483d89c9f3838a41cddb9f318ee817e36cfd4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "8d496f51e2d8d69074375dd76e0f90d7477373cb5d13affc38e3bde5dc300ad5", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "60fcc0e1bce9bd0d9677a1bf90d4372b619f60cd5674daa07fb00c75e6b7d342", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "4ea136c7bbb94163065617d131153fc6c6e58a600d7b469464c867c3695a17db", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "d2ef0a4f0899560b048c83b713f5fbc189b0fc24db470821c5b6389194bd233f", @@ -16325,6 +16374,10 @@ "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "53656cb3eecd84e1f9041eb8477306db31eb21aa3c4ba8c30cc8124a45a0ff8b", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "01af3ce2ac5ce642410a9dfac7e1360dc8c51ca73677915e95cb2d9998c674c8", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "fcc0172fece8a3d30ce3f76fe564e4cfa560db0785babd2e6228f445fd070bfd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "1a5d11217da86a13481168c2e92cfb4fef166b85e3258d0f2b38a70c6487984b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "7b5f77b7b371b7e2a2c057362b05a38d153a7d0aaf9cb9a631bd1d7adedd670f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "8d4064e131e72967ce48b12767a3acbbfdeda21c9786fa493d5e63e07d478afd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "45ee577b70c312633a00732f720f98474ce1361e1d85c672e91886dc5239ff61", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "371d13a75eebd3578bdbf89af63325dc432853cfebe4585edfdd21d32698d596", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "3d2a1e54ce93f505a8671ab232772b7a696bad88cde38159f528b0c0e43c2698", @@ -16334,6 +16387,9 @@ "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "961dc7581378dc4a35d10cd27a51d7ee7892443ca892e801ed3f4e16e3272d0c", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9deb71c5bed9352a429568ee4be0c5454522786873d71ee12d6fa08d34b9916c", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "efa7fb9b031385ce06ff26df22187790b1d694503098dcd203ee88c0903d4ace", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "4bf1ecc8f36058dba0a82c5268e54e9a389bee07cbb4f8f7caef81403ae4adb0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "0a6d5a8865a385844221db73d28823dae0f8910bf01ea5fecc4b65f2dd9b65b1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "0a6d5a8865a385844221db73d28823dae0f8910bf01ea5fecc4b65f2dd9b65b1", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "ca8c279751c123558fd05fe350e16a57d7a1d91e8e6a91d367d579a282eda994", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "5f57158b905bbed6c59ebd0c24255a122f77b3789d6aa5d26cb48c1400b70129", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "5f57158b905bbed6c59ebd0c24255a122f77b3789d6aa5d26cb48c1400b70129", @@ -17711,6 +17767,7 @@ "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "e2ebed2c337a7fe0aab1c350510b172d635314fd0bbec52e7c168ae38d9431c0", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "a4f4d0581f7ac773ea3a3d9e31760d3977d314f7a9921344be1d44c79a8c299b", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "12c3e6bafb34b2480169a243082496b65fdfc5c1e44f32cb3dcf65aa05152e3f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "05846b84e694732a18247c47f4b039e2cbda01752d0cce06cb91ef0f199412f1", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "a9f2cb26fa79b92849df8707a9bb2503c835bf48bb5a8f3cd5ba947ed0014f30", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "eab47e2f22a59b5587507c4ad7934fa701dd1f60b429b3a9ee55a5d2daaecbfc", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "780cdf960ce08061c9e224b598ad0d6228d00dfcc4d814bcf1eb25ed95aa557f", @@ -17740,6 +17797,10 @@ "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "403883195f0bba908a2a8e5f36598a3a7a748de46226186667e88946e7ea28a9", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "a7eebb90c9e1e952ae42b721140d1f0d4cebfa831366a2b9668de1dbe8ef699e", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "6c29a9e0b33f14d8549d9635e38c8ff13b1cf4bae7bd36319d28bf0f28790954", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "12e4199c992ed2a334403814367b872be55986c98b5a9a94187376f3b9530e3c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "62bb28cf7b173cd652fc4bbedcfeb8172e2735294d088e1841ae7bf9973eeda4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "e945588bcc167e340f87e5752b24c7c38af390135c0c640529fcd8c7d88b0860", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "fc862a70389bb4dc49628f34a5633327b47d2e8206c0c0a5ba506fe21606c6d5", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "6a3dedfefa16c32ce6a1fe470d271645ba08e4e4ad8552857095fcfa5183283b", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "1592544e84850950f1fe7ae4b073c682c63130d35ad6ed5bb879b4e972407ab3", @@ -17749,6 +17810,9 @@ "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "066507d14abd8f7b6cbffab1b6c3d0c60716887e47b4a1b2115b9a26c44ed08b", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9f985619d4e544dc52b4af43a52fcc259b01235f44ddb1882731b993284a64b5", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "b6fe22230ff6ee382ddbe8aeb2489c566db47b18082b46377f33e7d0aeaa8512", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "074e4b5735bdc9740dc6df06e74a45231a89ad76f5bd6f365b302c8b6109a409", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "b70f5df174f2e10ae8f885ae5b2775f1cda8676ecb4d1151c09b4f4acc35250e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "b70f5df174f2e10ae8f885ae5b2775f1cda8676ecb4d1151c09b4f4acc35250e", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "63b341a969ee8579b716adc52b15c31c7fb200790a080eb6d8ed304a688ab417", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "1e62b3449cfc1343dfd55a866b4e0956690b1b18e4146ecec0b986cf7f6abf66", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "1e62b3449cfc1343dfd55a866b4e0956690b1b18e4146ecec0b986cf7f6abf66", @@ -19126,6 +19190,7 @@ "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "42eed639788adda40cb3b5134b97f02974db0fdc27b87a686d7855b5feaa80fc", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d3bab830b543745d67656d0913f62f073e315293dffe54382024e4c9fda96b71", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "641709e3e10fa91ce21803ba5a52cfc434cdd3578bcd962164bcb99d3a43d6da", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "ca9b3f3653f972ac233c9e8c44d50b5a32397f1418d64dece3c1dd60b85930ce", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "178e9ba04a5ccbce4326a33bd11fe80b2c8d9e2d16287829a8c48ef8570def7e", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "dbc002eddbb6d4a5f71eb0ca8da65903837b2da73201ec1714e3124ed2c3e064", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "dcc12f084e836ace643b6f503e60b003c88c419d27f483a11737a9e9c6250d17", @@ -19155,6 +19220,10 @@ "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "033d136f251737d3c3bd3e43d7aeed40e5c2af92266a99c17ce0ca45e23c3505", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "203e1cfccd5f40c0ca3eba2ab8812f37b72562a0ea8ca47085213c34e15ea8a7", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "4312df9c0b61cbf8e29efae866efdb58df2a339adeffde75ea72e01259a4b4bb", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "b501c4b73b1a745c96b8c9706f28ec0bb06d5235e5739af83fa777aa2d0c7d41", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "6e4e1a5639f4f1c87505dc88a390e38c15f421ea962dc370f2df8aee075e7385", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "ca56afd69ea46ac474132a124c7dd8e11857275f728c9a858f38bea64c9b9e4a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "0b1e114acd865c585518eb4f2c1c919c4b1e083a978344181d75543380d5e366", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "137fff528553be9c8c12b08865441f954d7423b96b5fe5b5850cf3fbb86e2aa8", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "28ed27584c289daba9ebcb0b5cfa37434fa7482877b87dd5b17e971bb0c22db5", @@ -19164,6 +19233,9 @@ "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "326faa34ad4e0e092a8a446d3603b06963852e0c3baefa7fdd20d3a1c78fa1aa", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "1c83aa4ac945a5e425d585a041594324c8b11d28d34a86dc51d9a77ce9a35a51", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "bd44276fddeaf4511fb7241a65fad11012088c168d26ebe314fc1e0c204edf1a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "50436db43e95d93e7f6ea7dc0e7ca0e80dd15cfbe048db642c69397d06b1e115", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "70f4751132b94bc1924d178b613556b8106d6627dcdf51bf8a4785f6bc6dfadc", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "70f4751132b94bc1924d178b613556b8106d6627dcdf51bf8a4785f6bc6dfadc", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "dde4b7c2ea73199f674943b01e3cc9e1acec55f7a9ca28ab8c859ca91640a772", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "2059376cc7831247e94634244bb7569cbff6eb5eafc8474875a6073f695857e7", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "2059376cc7831247e94634244bb7569cbff6eb5eafc8474875a6073f695857e7", @@ -20541,6 +20613,7 @@ "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a910885ed3480eaca4a2fe013acd6d9f3d1bbe6ea3a9622e7f02f4b2bf9879e5", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "77199b22cd5981363016b0ce404e42f660833b133cdc62b50b036fcbf5f43777", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "d223c3e651e70fe78ec3e5b6b6d3c3fdd06fdd4cfbe761a1b578f270888015dd", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "e1bb7a9ceb6fdb4193c74185cf3544f7cba084a67e083619657624689cfdb907", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "5278b236aaa976482d2f5193209457abcdd51a0d472eb0896fa9665d7f2a9461", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "14bec6205be447427374351dd75836fa82a0183f820928b9c48bacb474ce9305", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "9e304a0c5000f07bc255d5d652081ada9804920ad5b2ca6445c4a6740a0ab348", @@ -20570,6 +20643,10 @@ "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "2b2b3c3f9a4a0e63a76d67c8cbd62a8f32065a5c278aa95ffa8eae5b57d17153", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "8e93eb79301023ff6d10bf842c16f684306c20af7a0dd426ae72f0f3dff06393", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "ca34e89ccd20410e1301f864c9371c9be3e63991cf9c299c441c83eb312498b9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "489a7376b93d1caa83c889788a762f46c1f6ec4577d0e2753013f1162b9e8d2c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "321d00f3476599733b43b066c9ac38a3549400777bd5ef1555519d662fcd64e0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "7c0a59c98455d2f16e2f028a7636d76aad371036f6b8e5b0b5164c796296144c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "f8ca850fd8238d0797c56927710654a48b187ae0d630434fbcf437e51293927f", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "7acac1fb4aea9ae638e70890863da73e371152253a22976a2b17ef88a274df0d", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "e7b6abc9b166d7d586abe7f59a17d099fab1d55b5a2b916a8e1ad30e38cccbc1", @@ -20579,6 +20656,9 @@ "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "bf84aedb1f4a63bde4bd13c45ed4645696563362c9b84a1fc8da535f1c02315f", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "d91a813a0768d73f1d52029e99ed75987bc0cf744f1da3700f789f6202917666", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "d0f7e6639d7d13d04596ca456f4b6df3937a3c9816f52ed78d27122b4488e54b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "ffda6edfaa7af5e2de9095b4498ac493dfc1fdc02f1fd79c0d73cb3a2c22bfb4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "8f011ac4b19ff488fdcfdc0fca2973db803143724d0e481184d8e2af5c75e914", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "8f011ac4b19ff488fdcfdc0fca2973db803143724d0e481184d8e2af5c75e914", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "ea63a77b0b42d0491b6dfc49f78ca520abe3456a24c7161de3f32ccce06714fd", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "910589795159358dff80d742450378b54b02f6b40ac06749a41598377dbf30fc", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "910589795159358dff80d742450378b54b02f6b40ac06749a41598377dbf30fc", @@ -21956,6 +22036,7 @@ "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a7a6a539ac1a60d5d76464eb9dc814b5d4b97d7f3210fa550fb850ae7e7dcff5", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "095d29bff240700a7e6e26bb8bac4d168a7106af1b0f0d6b01ab981bd4365980", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "94c82af1cf2a0d1a964ab07ef5103e2e43e961495d302479cac15d98a89e7ba8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "9ec8932f47e344d1e9ee1b18c9fd0cfa668fa0f49735bb9e8d0a7f7a821ab76d", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "bfe7a99ed9fad6a84be970a9329c02ad021e0438206fa0f5bbb9b349996e7a19", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "9e737a9e4063f5c28462df1843d2cefc7194e8ed81a5d6400e9d90792e2cff3c", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "626b1964bd7dbdde2c4f73cb597462340909de35d1abe538aaf4f7140345da0c", @@ -21985,6 +22066,10 @@ "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "fa7716bc8a1a9d876d072a783e5509e77e39f079d185e66460c3704d34af833c", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "afeb5467364ead60fdb24fba2851148ae3a56404cf6b8ee9b65c846e2a7ae393", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "bc11f996c3df62edc0b4c890f8bc84f0255a7dabf43cf60f4261b620eedc02e4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "1cab6523a7a5b46631b08034b8b260910c808b0cbe73206657a4c8fade1f3973", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "b5afcc4f7275aa41f2b59615f242eb5128102b9a4f2b17c272162d7b3a9df850", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "adf4203b973746c9cc0abd83d067df69b5cda20f9bbb58fedccc6c81727de659", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "844c73b7715c7dd0fe2f4d54e380c3abdc9ac0ecd1f84d101a027afa449c6307", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "550d903912e285c4975e23cda2d18e889dc5740bebcf9887aded69dda8c5d680", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "57d2f1b030473165a1e5fdd96cabed3261e9b33c22ba03be66929648e8c88c18", @@ -21994,6 +22079,9 @@ "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "d67317da8d8529f32f492c15a36a6f56ae3f224de46d957cfffb686cfd3843bb", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "dedd91139f4c90adcbb218c9cbc469a0c3a58b2d1d1a20c149d470d9572f9914", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "3b25f3a58e621fff908387ac16386cb852e14971cda033da7b65c101a0ab0325", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "d22f5fc713c8928e8a86e4282624535c2fe722ae82207355f6ca8d81b8353c05", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "7f26d54562c8f3ec46d260fffbff0c6ecf612afa2edfc20342a66e96bd0d96ec", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "7f26d54562c8f3ec46d260fffbff0c6ecf612afa2edfc20342a66e96bd0d96ec", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c14cf088eccbabcaa50cf49ba0653bafbf1e01228bf87883b573ae72df926fb9", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "b83d6c2ec98d1b71547039dfa8f82758e1cfbd8b61d7d14db48d6fa5755de1b1", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "b83d6c2ec98d1b71547039dfa8f82758e1cfbd8b61d7d14db48d6fa5755de1b1",