diff --git a/Makefile b/Makefile index 462c130..4e11752 100644 --- a/Makefile +++ b/Makefile @@ -32,7 +32,7 @@ APP_LOAD_PARAMS += $(COMMON_LOAD_PARAMS) APPNAME = "TON" APPVERSION_M = 2 -APPVERSION_N = 0 +APPVERSION_N = 1 APPVERSION_P = 0 APPVERSION = "$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)" diff --git a/doc/COMMANDS.md b/doc/COMMANDS.md index fb15732..26b9fdf 100644 --- a/doc/COMMANDS.md +++ b/doc/COMMANDS.md @@ -10,6 +10,7 @@ | `SIGN_TX` | 0x06 | Sign transaction given BIP32 path and raw transaction | | `GET_ADDRESS_PROOF` | 0x08 | Sign an address proof in TON Connect 2 compliant format given BIP32 path and proof parameters | | `SIGN_DATA` | 0x09 | Sign custom data in TON Connect 2 compliant format | +| `GET_APP_SETTINGS` | 0x0A | Get app settings | ## GET_VERSION @@ -129,6 +130,26 @@ Then an arbitrary number of chunks with serialized custom data (see [CUSTOM_DATA | --- | --- | --- | | 98 | 0x9000 | `len(signature) (1)` \|\|
`signature (64)` \|\|
`len(hash) (1)` \|\|
`hash (32)` \|\|| +## GET_APP_SETTINGS + +### Command + +| CLA | INS | P1 | P2 | Lc | CData | +| --- | --- | --- | --- | --- | --- | +| 0xE0 | 0x0A | 0x00 | 0x00 | 0x00 | - | + +### Response + +True/false settings are sent as bitfields, currently all settings fit in one byte, future versions may add additional flags to that byte or add new bytes. + +In the current version, `flags` has: +- bit `0x01` set if blind signing is enabled +- bit `0x02` set if expert mode is enabled + +| Response length (bytes) | SW | RData | +| --- | --- | --- | +| 1 | 0x9000 | `flags (1)` | + ## Status Words | SW | SW name | Description | @@ -149,4 +170,5 @@ Then an arbitrary number of chunks with serialized custom data (see [CUSTOM_DATA | 0xB008 | `SW_SIGNATURE_FAIL` | Signature of raw transaction failed | | 0xB00B | `SW_REQUEST_TOO_LONG` | The request is too long | | 0xB0BD | `SW_BAD_BIP32_PATH` | The bip32 derivation path is invalid | +| 0xBD00 | `SW_BLIND_SIGNING_DISABLED` | A blind transaction was requested, but blind signing is disabled | | 0x9000 | `OK` | Success | diff --git a/doc/CUSTOM_DATA.md b/doc/CUSTOM_DATA.md index 4f786f0..7aa5816 100644 --- a/doc/CUSTOM_DATA.md +++ b/doc/CUSTOM_DATA.md @@ -30,7 +30,7 @@ text#_ {n:#} data:(SnakeData ~n) = Text; Ledger request format: | Value | Length or type | Description | | --- | --- | --- | -| `message` | 0-250 | ASCII-only message | +| `message` | 0-120 | ASCII-only message | ## App data (0x54b58535) diff --git a/doc/MESSAGES.md b/doc/MESSAGES.md index 9b308c1..e4813ff 100644 --- a/doc/MESSAGES.md +++ b/doc/MESSAGES.md @@ -6,6 +6,15 @@ This list contains a number of messages that ledger could assemble and display c | --- | --- | --- | | 0x00 | Message with comment | Typical transaction with a comment | | 0x01 | Jetton transfer | [TEP-74 transfer message](https://github.com/ton-blockchain/TEPs/blob/master/text/0074-jettons-standard.md#1-transfer) | +| 0x02 | NFT transfer | [TEP-62 transfer message](https://github.com/ton-blockchain/TEPs/blob/master/text/0062-nft-standard.md#1-transfer) | +| 0x03 | Jetton burn | [TEP-74 burn message](https://github.com/ton-blockchain/TEPs/blob/master/text/0074-jettons-standard.md#2-burn) | +| 0x04 | Add whitelist | [Vesting add whitelist message](https://github.com/ton-blockchain/vesting-contract?tab=readme-ov-file#whitelist) | +| 0x05 | Single Nominator withdraw | [Single nominator withdraw message](https://github.com/orbs-network/single-nominator/tree/main?tab=readme-ov-file#1-withdraw) | +| 0x06 | Single Nominator change validator address | [Single nominator change validator message](https://github.com/orbs-network/single-nominator/tree/main?tab=readme-ov-file#2-change-validator) | +| 0x07 | Tonstakers deposit | [Tonstakers deposit message](https://github.com/ton-blockchain/liquid-staking-contract/blob/be2ee6d1e746bd2bb0f13f7b21537fb30ef0bc3b/contracts/interaction.tlb#L52) | +| 0x08 | Jetton DAO vote for proposal | [Jetton DAO vote for proposal message](https://github.com/EmelyanenkoK/jetton_dao/blob/02fed5d124effd57ea50be77044b209ad800a621/contracts/voting.tlb#L61) | +| 0x09 | Change DNS record | [Change DNS record message](https://github.com/ton-blockchain/dns-contract/blob/d08131031fb659d2826cccc417ddd9b98476f814/func/nft-item.fc#L204) | +| 0x0A | Token bridge pay for swap | [Token bridge pay for swap message](https://github.com/ton-blockchain/token-bridge-func/blob/3346a901e3e8e1a1e020fac564c845db3220c238/src/func/jetton-bridge/op-codes.fc#L20) | # 0x00: Message with comment @@ -46,3 +55,189 @@ transfer#0f8a7ea5 query_id:uint64 amount:(VarUInteger 16) destination:MsgAddress | `forward_amount` | `varuint` | Amount of TON to forward to the receiver | | `has_forward_payload` | 1 | Whether `forward_payload` is present | | `forward_payload` | 0 or `cell_ref` | `forward_payload` for the message | + +# 0x02: NFT transfer + +### TL-B +``` +transfer#5fcc3d14 query_id:uint64 new_owner:MsgAddress response_destination:MsgAddress custom_payload:(Maybe ^Cell) forward_amount:(VarUInteger 16) forward_payload:(Either Cell ^Cell) = InternalMsgBody; +``` + +### Hints +| Value | Length or type | Description | +| --- | --- | --- | +| `has_query_id` | 1 | Whether `query_id` is present | +| `query_id` | 0 or 8 | `query_id` for the message, 0 will be used if `!has_query_id` | +| `new_owner` | `address` | Whom to transfer jettons to | +| `response_destination` | `address` | Whom to transfer the excess of TON to | +| `has_custom_payload` | 1 | Whether `custom_payload` is present | +| `custom_payload` | 0 or `cell_ref` | `custom_payload` for the message | +| `forward_amount` | `varuint` | Amount of TON to forward to the receiver | +| `has_forward_payload` | 1 | Whether `forward_payload` is present | +| `forward_payload` | 0 or `cell_ref` | `forward_payload` for the message | + +# 0x03: Jetton burn + +### TL-B +``` +burn#595f07bc query_id:uint64 amount:(VarUInteger 16) + response_destination:MsgAddress custom_payload:(Maybe ^Cell) + = InternalMsgBody; +``` + +### Hints +| Value | Length or type | Description | +| --- | --- | --- | +| `has_query_id` | 1 | Whether `query_id` is present | +| `query_id` | 0 or 8 | `query_id` for the message, 0 will be used if `!has_query_id` | +| `amount` | `varuint` | Jetton amount | +| `response_destination` | `address` | Whom to transfer the excess of TON to | +| `custom_payload_type` | 1 | 0 - none, 1 - `cell_ref`, 2 - `cell_inline` | +| `custom_payload` | 0 or `cell_ref` or `cell_inline` | `custom_payload` for the message | + +# 0x04: Add whitelist + +### TL-B +``` +add_whitelist#7258a69b query_id:uint64 address:MsgAddress = InternalMsgBody; +``` + +### Hints +| Value | Length or type | Description | +| --- | --- | --- | +| `has_query_id` | 1 | Whether `query_id` is present | +| `query_id` | 0 or 8 | `query_id` for the message, 0 will be used if `!has_query_id` | +| `address` | `address` | Whom to add to the whitelist | + +# 0x05: Single Nominator withdraw + +### TL-B +``` +withdraw#1000 query_id:uint64 amount:Coins = InternalMsgBody; +``` + +### Hints +| Value | Length or type | Description | +| --- | --- | --- | +| `has_query_id` | 1 | Whether `query_id` is present | +| `query_id` | 0 or 8 | `query_id` for the message, 0 will be used if `!has_query_id` | +| `amount` | `varuint` | Amount to withdraw | + +# 0x06: Single Nominator change validator address + +### TL-B +``` +change_validator_adddress#1001 query_id:uint64 new_validator_address:MsgAddress = InternalMsgBody; +``` + +### Hints +| Value | Length or type | Description | +| --- | --- | --- | +| `has_query_id` | 1 | Whether `query_id` is present | +| `query_id` | 0 or 8 | `query_id` for the message, 0 will be used if `!has_query_id` | +| `address` | `address` | New validator address | + +# 0x07: Tonstakers deposit + +### TL-B +``` +deposit#47d54391 query_id:uint64 app_id:uint64 = InternalMsgBody; +``` +or +``` +deposit#47d54391 query_id:uint64 = InternalMsgBody; +``` + +### Hints +| Value | Length or type | Description | +| --- | --- | --- | +| `has_query_id` | 1 | Whether `query_id` is present | +| `query_id` | 0 or 8 | `query_id` for the message, 0 will be used if `!has_query_id` | +| `has_app_id` | 1 | Whether `app_id` is present | +| `app_id` | 0 or 8 | `app_id` for the message, will not be stored if `!has_app_id` | + +# 0x08: Jetton DAO vote for proposal + +### TL-B +``` +vote#69fb306c query_id:uint64 voting_address:MsgAddressInt expiration_date:uint48 vote:Bool need_confirmation:Bool = InternalMsgBody; +``` + +### Hints +| Value | Length or type | Description | +| --- | --- | --- | +| `has_query_id` | 1 | Whether `query_id` is present | +| `query_id` | 0 or 8 | `query_id` for the message, 0 will be used if `!has_query_id` | +| `voting_address` | `address` | Voting address | +| `expiration_date` | 6 | Expiration timestamp | +| `vote` | 1 | Vote flag | +| `need_confirmation` | 1 | Need confirmation flag | + +# 0x09: Change DNS record + +### TL-B +``` +change_dns_record#4eb1f0f9 query_id:uint64 key:uint256 = InternalMsgBody; +``` +or +``` +change_dns_record#4eb1f0f9 query_id:uint64 key:uint256 value:^Cell = InternalMsgBody; +``` + +### Hints +| Value | Length or type | Description | +| --- | --- | --- | +| `has_query_id` | 1 | Whether `query_id` is present | +| `query_id` | 0 or 8 | `query_id` for the message, 0 will be used if `!has_query_id` | +| `has_value` | 1 | Whether to set the value. If 0, the record will be deleted | +| `record_type` | 1 | Record type (see below for available types) | +| `record_data` | ? | Continued record data, depends on record type (see below for types) | + +### Record types + +#### 0x00: Wallet + +`key` is `sha256("wallet")` (will be set by the device automatically). +`record_data` layout (if `has_value`): +| Value | Length or type | Description | +| --- | --- | --- | +| `address` | `address` | Wallet address | +| `has_capabilities` | 1 | Whether capabilities should be stored | +| `is_wallet` | 0 or 1 | Whether to store the `is_wallet` capability. Only present if `has_capabilities` | + +If `!has_value`, then `record_data` is empty (0 bytes long) + +##### TL-B +``` +cap_is_wallet#2177 = SmcCapability; + +cap_list_nil$0 = SmcCapList; +cap_list_next$1 head:SmcCapability tail:SmcCapList = SmcCapList; + +dns_smc_address#9fd3 smc_addr:MsgAddressInt flags:(## 8) { flags <= 1 } + cap_list:flags . 0?SmcCapList = DNSRecord; +``` + +#### 0x01: Unknown + +Used for unknown keys. Key will be converted to base64 and displayed, value cell's hash will be converted to base64 and displayed. The key will not be hashed again. + +`record_data` layout: +| Value | Length or type | Description | +| --- | --- | --- | +| `key` | 32 | Record key | +| `value` | 0 or `cell_ref` | Value cell. Only present if `has_value` | + +# 0x0A: Token bridge pay for swap + +### TL-B +``` +pay_swap#8 query_id:uint64 swap_id:uint256 = InternalMsgBody; +``` + +### Hints +| Value | Length or type | Description | +| --- | --- | --- | +| `has_query_id` | 1 | Whether `query_id` is present | +| `query_id` | 0 or 8 | `query_id` for the message, 0 will be used if `!has_query_id` | +| `swap_id` | 32 | The swap ID | diff --git a/doc/TRANSACTION.md b/doc/TRANSACTION.md index f2d9ce9..773dfb1 100644 --- a/doc/TRANSACTION.md +++ b/doc/TRANSACTION.md @@ -18,13 +18,19 @@ Address is serialized by appending a single byte of chain - 0x00 or 0xff and the ## Cells -`Cell` is a fundamental data type used in TON, and everything is stored using it. A Cell can store up to 1023 bits, and up to 4 references to other cells (which themselves can store 4 more references each and so on). When hashing a Cell for signing, in order to reference another cell, only two of its properties need to be known - its depth and its hash. We define a format to serialize cell references in requests: 2 bytes for the max depth, and 32 bytes for the hash, 34 in total. We shall name this format `cell_ref`. +`Cell` is a fundamental data type used in TON, and everything is stored using it. A Cell can store up to 1023 bits, and up to 4 references to other cells (which themselves can store 4 more references each and so on). + +When hashing a Cell for signing, in order to reference another cell, only two of its properties need to be known - its depth and its hash. We define a format to serialize cell references in requests: 2 bytes for the max depth, and 32 bytes for the hash, 34 in total. We shall name this format `cell_ref`. + +We shall also have another format for cells - 1 byte for length in bytes (n) and this many bytes as its contents, so n+1 bytes total. Such format may be used to display the stored data in hex, which is useful in a few situations. The cell will be hashed on the device. A non-integer amount of bytes cannot be stored that way. This type shall be named `cell_inline`. Cells of this type will be displayed as their data in hex. Currently, `cell_inline` has a limitation of max 32 bytes as data. ## Transaction request structure | Field | Size (bytes) or type | Description | | --- | :---: | --- | -| `tag` | 1 | 0x00. Reserved for future. | +| `tag` | 1 | 0x00 for app versions <2.1.0, 0x00 or 0x01 for app versions >=2.1.0. Higher values enable more features | +| `subwallet_id` | 0 or 4 | Subwallet id. Only present when `tag == 0x01` | +| `include_wallet_op` | 0 or 1 | Whether to include the 8-bit wallet op (0x01 to include, 0x00 to not include). Only present when `tag == 0x01` | | `seqno` | 4 | A sequence number used to prevent message replay | | `timeout` | 4 | Message timeout | | `value` | `varuint` | The amount in nanotons to send to the destination address encoded as described above | @@ -46,7 +52,7 @@ Note that `payload` may be passed without `hints`, but `hints` cannot be passed | `has_payload` | `has_hints` | Transaction type | | --- | --- | --- | | ✗ | ✗ | A simple transfer without any payload | -| ✓ | ✗ | An invalid request, an error will be thrown | +| ✓ | ✗ | Blind transaction signing, Ledger will display a warning and the payload hash but none of the message fields other than recipient and amount of TON transferred | | ✓ | ✓ | A transaction of some known types, see [MESSAGES.md](./MESSAGES.md) to learn about known types. Ledger will display all important fields | | ✗ | ✓ | An invalid request, an error will be thrown | diff --git a/ledger_app.toml b/ledger_app.toml index 8f4c403..46b8938 100644 --- a/ledger_app.toml +++ b/ledger_app.toml @@ -1,4 +1,11 @@ [app] build_directory = "./" sdk = "C" -devices = ["nanos", "nanox", "nanos+"] +devices = ["nanos", "nanox", "nanos+", "stax"] + +[use_cases] +debug = "DEBUG=1" + +[tests] +unit_directory = "./unit-tests/" +pytest_directory = "./tests/" diff --git a/src/apdu/dispatcher.c b/src/apdu/dispatcher.c index b3ff6e4..80b9737 100644 --- a/src/apdu/dispatcher.c +++ b/src/apdu/dispatcher.c @@ -32,6 +32,7 @@ #include "../handler/get_public_key.h" #include "../handler/sign_tx.h" #include "../handler/sign_data.h" +#include "../handler/get_app_settings.h" int apdu_dispatcher(const command_t *cmd) { if (cmd->cla != CLA) { @@ -132,6 +133,12 @@ int apdu_dispatcher(const command_t *cmd) { buf.offset = 0; return handler_sign_data(&buf, (bool) (cmd->p2 & P2_FIRST), (bool) (cmd->p2 & P2_MORE)); + case GET_APP_SETTINGS: + if (cmd->p1 != P1_NONE || cmd->p2 != P2_NONE) { + return io_send_sw(SW_WRONG_P1P2); + } + + return handler_get_app_settings(); default: return io_send_sw(SW_INS_NOT_SUPPORTED); } diff --git a/src/common/bits.c b/src/common/bits.c index 5ae985c..7c77e3e 100644 --- a/src/common/bits.c +++ b/src/common/bits.c @@ -58,7 +58,7 @@ void BitString_storeCoinsBuf(BitString_t* self, uint8_t* v, uint8_t len) { BitString_storeBuffer(self, v, len); } -void BitString_storeBuffer(BitString_t* self, uint8_t* v, uint8_t length) { +void BitString_storeBuffer(BitString_t* self, const uint8_t* v, uint8_t length) { for (int i = 0; i < length; i++) { BitString_storeUint(self, v[i], 8); } diff --git a/src/common/bits.h b/src/common/bits.h index c25f6c1..2300250 100644 --- a/src/common/bits.h +++ b/src/common/bits.h @@ -11,7 +11,7 @@ void BitString_storeBit(BitString_t* self, int8_t v); void BitString_storeUint(BitString_t* self, uint64_t v, uint8_t bits); void BitString_storeCoins(BitString_t* self, uint64_t v); void BitString_storeCoinsBuf(BitString_t* self, uint8_t* v, uint8_t len); -void BitString_storeBuffer(BitString_t* self, uint8_t* v, uint8_t length); +void BitString_storeBuffer(BitString_t* self, const uint8_t* v, uint8_t length); void BitString_storeAddress(BitString_t* self, uint8_t chain, uint8_t* hash); void BitString_storeAddressNull(BitString_t* self); void BitString_finalize(BitString_t* self); diff --git a/src/common/buffer.c b/src/common/buffer.c index bdb33d5..69ce7b1 100644 --- a/src/common/buffer.c +++ b/src/common/buffer.c @@ -134,6 +134,21 @@ bool buffer_read_u64(buffer_t *buffer, uint64_t *value, endianness_t endianness) return true; } +bool buffer_read_u48(buffer_t *buffer, uint64_t *value, endianness_t endianness) { + if (!buffer_can_read(buffer, 6)) { + *value = 0; + + return false; + } + + *value = ((endianness == BE) ? read_u48_be(buffer->ptr, buffer->offset) + : read_u48_le(buffer->ptr, buffer->offset)); + + buffer_seek_cur(buffer, 6); + + return true; +} + bool buffer_read_bip32_path(buffer_t *buffer, uint32_t *out, size_t out_len) { if (!bip32_path_read(buffer->ptr + buffer->offset, buffer_remaining(buffer), out, out_len)) { return false; diff --git a/src/common/buffer.h b/src/common/buffer.h index c74a7fc..e5574f1 100644 --- a/src/common/buffer.h +++ b/src/common/buffer.h @@ -131,6 +131,21 @@ bool buffer_read_u16(buffer_t *buffer, uint16_t *value, endianness_t endianness) */ bool buffer_read_u32(buffer_t *buffer, uint32_t *value, endianness_t endianness); +/** + * Read 6 bytes from buffer into uint64_t. + * + * @param[in,out] buffer + * Pointer to input buffer struct. + * @param[out] value + * Pointer to 64-bit unsigned integer read from buffer. + * @param[in] endianness + * Either BE (Big Endian) or LE (Little Endian). + * + * @return true if success, false otherwise. + * + */ +bool buffer_read_u48(buffer_t *buffer, uint64_t *value, endianness_t endianness); + /** * Read 8 bytes from buffer into uint64_t. * diff --git a/src/common/format.c b/src/common/format.c new file mode 100644 index 0000000..b9884dc --- /dev/null +++ b/src/common/format.c @@ -0,0 +1,73 @@ +/***************************************************************************** + * (c) 2020 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include +#include + +#include "format.h" + +int format_hex(const uint8_t *in, size_t in_len, char *out, size_t out_len) { + if (out_len < 2 * in_len + 1) { + return -1; + } + + const char hex[] = "0123456789ABCDEF"; + size_t i = 0; + int written = 0; + + while (i < in_len && (i * 2 + (2 + 1)) <= out_len) { + uint8_t high_nibble = (in[i] & 0xF0) >> 4; + *out = hex[high_nibble]; + out++; + + uint8_t low_nibble = in[i] & 0x0F; + *out = hex[low_nibble]; + out++; + + i++; + written += 2; + } + + *out = '\0'; + + return written + 1; +} + +void format_u64(uint64_t in, char *out, size_t out_len) { + int len = 0; + if (in == 0) { + len = 1; + } else { + uint64_t x = in; + while (x > 0) { + len++; + x /= 10; + } + } + + if (out_len < (size_t) len + 1) { + if (out_len > 0) { + out[0] = '\0'; + } + return; + } + + out[len--] = '\0'; + for (; len >= 0; len--) { + out[len] = '0' + ((char) (in % 10)); + in /= 10; + } +} diff --git a/src/common/format.h b/src/common/format.h new file mode 100644 index 0000000..4122b48 --- /dev/null +++ b/src/common/format.h @@ -0,0 +1,23 @@ +#pragma once + +#include +#include + +/** + * Format byte buffer to uppercase hexadecimal string. + * + * @param[in] in + * Pointer to input byte buffer. + * @param[in] in_len + * Length of input byte buffer. + * @param[out] out + * Pointer to output string. + * @param[in] out_len + * Length of output string. + * + * @return number of bytes written if success, -1 otherwise. + * + */ +int format_hex(const uint8_t *in, size_t in_len, char *out, size_t out_len); + +void format_u64(uint64_t in, char *out, size_t out_len); diff --git a/src/common/hints.c b/src/common/hints.c index 3de0962..135ae34 100644 --- a/src/common/hints.c +++ b/src/common/hints.c @@ -2,6 +2,7 @@ #include #include #include +#include #include "hints.h" @@ -9,8 +10,9 @@ #include "base64.h" #include "format_bigint.h" #include "format_address.h" +#include "format.h" -void add_hint_text(HintHolder_t* hints, const char* title, char* text, size_t text_len) { +void add_hint_text(HintHolder_t* hints, const char* title, const char* text, size_t text_len) { // Configure hints->hints[hints->hints_count].title = title; hints->hints[hints->hints_count].kind = SummaryItemString; @@ -31,6 +33,19 @@ void add_hint_hash(HintHolder_t* hints, const char* title, uint8_t* data) { hints->hints_count++; } +void add_hint_hex(HintHolder_t* hints, const char* title, uint8_t* data, uint8_t data_len) { + // Configure + hints->hints[hints->hints_count].title = title; + hints->hints[hints->hints_count].kind = SummaryHex; + memmove(hints->hints[hints->hints_count].hex.data, + data, + data_len > HASH_LEN ? HASH_LEN : data_len); + hints->hints[hints->hints_count].hex.len = data_len; + + // Next + hints->hints_count++; +} + void add_hint_amount(HintHolder_t* hints, const char* title, const char* ticker, @@ -62,6 +77,24 @@ void add_hint_address(HintHolder_t* hints, const char* title, address_t address, hints->hints_count++; } +void add_hint_number(HintHolder_t* hints, const char* title, uint64_t number) { + hints->hints[hints->hints_count].title = title; + hints->hints[hints->hints_count].kind = SummaryNumber; + hints->hints[hints->hints_count].number = number; + + // Next + hints->hints_count++; +} + +void add_hint_bool(HintHolder_t* hints, const char* title, bool value) { + hints->hints[hints->hints_count].title = title; + hints->hints[hints->hints_count].kind = SummaryBool; + hints->hints[hints->hints_count].bool_value = value; + + // Next + hints->hints_count++; +} + int print_string(const char* in, char* out, size_t out_length) { strncpy(out, in, out_length); int rc = (out[--out_length] != '\0'); @@ -125,6 +158,16 @@ void print_hint(HintHolder_t* hints, sizeof(address)); memset(body, 0, body_len); base64_encode(address, sizeof(address), body, body_len); + } else if (hint.kind == SummaryNumber) { + format_u64(hint.number, body, body_len); + } else if (hint.kind == SummaryBool) { + snprintf(body, body_len, hint.bool_value ? "Yes" : "No"); + } else if (hint.kind == SummaryHex) { + if (body_len >= 3 + 2 * hint.hex.len) { + body[0] = '0'; + body[1] = 'x'; + format_hex(hint.hex.data, hint.hex.len, &body[2], body_len - 2); + } } else { print_string("", body, body_len); } diff --git a/src/common/hints.h b/src/common/hints.h index 37e7dcd..b0fa512 100644 --- a/src/common/hints.h +++ b/src/common/hints.h @@ -12,11 +12,14 @@ enum HintKind { SummaryItemAmount, SummaryItemString, SummaryAddress, - SummaryHash + SummaryHash, + SummaryNumber, + SummaryBool, + SummaryHex, }; typedef struct { - char* string; + const char* string; size_t length; } SizedString_t; @@ -32,15 +35,22 @@ typedef struct { bool bounceable; } HintAddress_t; +typedef struct { + uint8_t len; + uint8_t data[HASH_LEN]; +} HintHex_t; + typedef struct { const char* title; enum HintKind kind; union { Amount_t amount; - uint64_t u64; + uint64_t number; SizedString_t string; uint8_t hash[HASH_LEN]; HintAddress_t address; + bool bool_value; + HintHex_t hex; }; } Hint_t; @@ -49,7 +59,7 @@ typedef struct { uint8_t hints_count; } HintHolder_t; -void add_hint_text(HintHolder_t* hints, const char* title, char* text, size_t text_len); +void add_hint_text(HintHolder_t* hints, const char* title, const char* text, size_t text_len); void add_hint_hash(HintHolder_t* hints, const char* title, uint8_t* data); void add_hint_amount(HintHolder_t* hints, const char* title, @@ -58,6 +68,9 @@ void add_hint_amount(HintHolder_t* hints, uint8_t value_len, uint8_t decimals); void add_hint_address(HintHolder_t* hints, const char* title, address_t address, bool bounceable); +void add_hint_number(HintHolder_t* hints, const char* title, uint64_t number); +void add_hint_bool(HintHolder_t* hints, const char* title, bool value); +void add_hint_hex(HintHolder_t* hints, const char* title, uint8_t* data, uint8_t data_len); void print_hint(HintHolder_t* hints, uint16_t index, diff --git a/src/common/read.c b/src/common/read.c index c8ee851..877634e 100644 --- a/src/common/read.c +++ b/src/common/read.c @@ -29,6 +29,15 @@ uint32_t read_u32_be(const uint8_t *ptr, size_t offset) { (uint32_t) ptr[offset + 3] << 0; } +uint64_t read_u48_be(const uint8_t *ptr, size_t offset) { + return (uint64_t) ptr[offset + 0] << 40 | // + (uint64_t) ptr[offset + 1] << 32 | // + (uint64_t) ptr[offset + 2] << 24 | // + (uint64_t) ptr[offset + 3] << 16 | // + (uint64_t) ptr[offset + 4] << 8 | // + (uint64_t) ptr[offset + 5] << 0; +} + uint64_t read_u64_be(const uint8_t *ptr, size_t offset) { return (uint64_t) ptr[offset + 0] << 56 | // (uint64_t) ptr[offset + 1] << 48 | // @@ -52,6 +61,15 @@ uint32_t read_u32_le(const uint8_t *ptr, size_t offset) { (uint32_t) ptr[offset + 3] << 24; } +uint64_t read_u48_le(const uint8_t *ptr, size_t offset) { + return (uint64_t) ptr[offset + 0] << 0 | // + (uint64_t) ptr[offset + 1] << 8 | // + (uint64_t) ptr[offset + 2] << 16 | // + (uint64_t) ptr[offset + 3] << 24 | // + (uint64_t) ptr[offset + 4] << 32 | // + (uint64_t) ptr[offset + 5] << 40; +} + uint64_t read_u64_le(const uint8_t *ptr, size_t offset) { return (uint64_t) ptr[offset + 0] << 0 | // (uint64_t) ptr[offset + 1] << 8 | // diff --git a/src/common/read.h b/src/common/read.h index 61cfa8c..355fbb8 100644 --- a/src/common/read.h +++ b/src/common/read.h @@ -29,6 +29,19 @@ uint16_t read_u16_be(const uint8_t *ptr, size_t offset); */ uint32_t read_u32_be(const uint8_t *ptr, size_t offset); +/** + * Read 6 bytes as Big Endian from byte buffer. + * + * @param[in] ptr + * Pointer to byte buffer. + * @param[in] offset + * Offset in the byte buffer. + * + * @return 8 bytes value read from buffer. + * + */ +uint64_t read_u48_be(const uint8_t *ptr, size_t offset); + /** * Read 8 bytes as Big Endian from byte buffer. * @@ -68,6 +81,19 @@ uint16_t read_u16_le(const uint8_t *ptr, size_t offset); */ uint32_t read_u32_le(const uint8_t *ptr, size_t offset); +/** + * Read 6 bytes as Little Endian from byte buffer. + * + * @param[in] ptr + * Pointer to byte buffer. + * @param[in] offset + * Offset in the byte buffer. + * + * @return 8 bytes value read from buffer. + * + */ +uint64_t read_u48_le(const uint8_t *ptr, size_t offset); + /** * Read 8 bytes as Little Endian from byte buffer. * diff --git a/src/constants.h b/src/constants.h index f3a3006..ec0ca6e 100644 --- a/src/constants.h +++ b/src/constants.h @@ -84,3 +84,13 @@ * Length of address in user-friendly form before base64 encoding (bytes). */ #define ADDRESS_LEN 36 + +/** + * Default subwallet id, which will not be displayed. + */ +#define DEFAULT_SUBWALLET_ID 698983191 + +/** + * Max length for cell_inline types + */ +#define MAX_CELL_INLINE_LEN 32 diff --git a/src/handler/get_app_settings.c b/src/handler/get_app_settings.c new file mode 100644 index 0000000..b005af1 --- /dev/null +++ b/src/handler/get_app_settings.c @@ -0,0 +1,40 @@ +/***************************************************************************** + * Ledger App Boilerplate. + * (c) 2020 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include // uint*_t + +#include "get_app_settings.h" +#include "../globals.h" +#include "../io.h" +#include "../sw.h" +#include "common/buffer.h" + +int handler_get_app_settings() { + uint8_t flags = 0x00; + + if (N_storage.blind_signing_enabled) { + flags |= 0x01; + } + + if (N_storage.expert_mode) { + flags |= 0x02; + } + + buffer_t rdata = {.ptr = (uint8_t *) &flags, .size = sizeof(flags), .offset = 0}; + + return io_send_response(&rdata, SW_OK); +} diff --git a/src/handler/get_app_settings.h b/src/handler/get_app_settings.h new file mode 100644 index 0000000..450e90c --- /dev/null +++ b/src/handler/get_app_settings.h @@ -0,0 +1,11 @@ +#pragma once + +#include "os.h" + +/** + * Handler for GET_APP_SETTINGS command. Send APDU response with app settings. + * + * @return zero or positive integer if success, negative integer otherwise. + * + */ +int handler_get_app_settings(void); diff --git a/src/handler/sign_tx.c b/src/handler/sign_tx.c index 287bbd9..9a6d514 100644 --- a/src/handler/sign_tx.c +++ b/src/handler/sign_tx.c @@ -84,6 +84,11 @@ int handler_sign_tx(buffer_t *cdata, bool first, bool more) { return io_send_sw(SW_TX_PARSING_FAIL); } + if (G_context.tx_info.transaction.is_blind && !N_storage.blind_signing_enabled) { + ui_blind_signing_error(); + return io_send_sw(SW_BLIND_SIGNING_DISABLED); + } + // Hash if (!hash_tx(&G_context.tx_info)) { return io_send_sw(SW_TX_PARSING_FAIL); diff --git a/src/main.c b/src/main.c index 4f51e58..5ddc41b 100644 --- a/src/main.c +++ b/src/main.c @@ -42,6 +42,7 @@ void nv_init() { if (!N_storage.initialized) { internalStorage_t storage; storage.initialized = true; + storage.blind_signing_enabled = false; storage.expert_mode = false; nvm_write((void *) &N_storage, (void *) &storage, sizeof(internalStorage_t)); } diff --git a/src/sign_data/sign_data_deserialize.c b/src/sign_data/sign_data_deserialize.c index 6bbd9cc..f02462a 100644 --- a/src/sign_data/sign_data_deserialize.c +++ b/src/sign_data/sign_data_deserialize.c @@ -13,7 +13,7 @@ #define PLAINTEXT_REQUEST 0x754bf91b #define APP_DATA_REQUEST 0x54b58535 -#define MAX_PLAINTEXT_LENGTH 188 +#define MAX_PLAINTEXT_LENGTH 120 #define MAX_APP_DATA_DOMAIN_LENGTH 126 // max allowed domain len as per TON DNS spec #define SAFE(RES) \ diff --git a/src/sw.h b/src/sw.h index 9d67ae1..de226a3 100644 --- a/src/sw.h +++ b/src/sw.h @@ -68,3 +68,7 @@ * Status word for bad bip32 path. */ #define SW_BAD_BIP32_PATH 0xB0BD +/** + * Status word for a blind signing request when blind signing is disabled. + */ +#define SW_BLIND_SIGNING_DISABLED 0xBD00 diff --git a/src/transaction/deserialize.c b/src/transaction/deserialize.c index 5ac10bd..18f7c09 100644 --- a/src/transaction/deserialize.c +++ b/src/transaction/deserialize.c @@ -36,10 +36,20 @@ parser_status_e transaction_deserialize(buffer_t *buf, transaction_t *tx) { // tag SAFE(buffer_read_u8(buf, &tx->tag), TAG_PARSING_ERROR); - if (tx->tag != 0x00) { // Only 0x00 is supported now + if (tx->tag >= 0x02) { // Only 0x00 and 0x01 are supported now return TAG_PARSING_ERROR; } + tx->hints.hints_count = 0; + + if (tx->tag == 0x01) { + SAFE(buffer_read_u32(buf, &tx->subwallet_id, BE), GENERAL_ERROR); + SAFE(buffer_read_bool(buf, &tx->include_wallet_op), GENERAL_ERROR); + } else { + tx->subwallet_id = DEFAULT_SUBWALLET_ID; + tx->include_wallet_op = true; + } + // Basic Transaction parameters SAFE(buffer_read_u32(buf, &tx->seqno, BE), SEQ_PARSING_ERROR); SAFE(buffer_read_u32(buf, &tx->timeout, BE), TIMEOUT_PARSING_ERROR); @@ -75,5 +85,9 @@ parser_status_e transaction_deserialize(buffer_t *buf, transaction_t *tx) { // Process hints SAFE(process_hints(tx), HINTS_PARSING_ERROR); + if (tx->subwallet_id != DEFAULT_SUBWALLET_ID) { + add_hint_number(&tx->hints, "Subwallet ID", (uint64_t) tx->subwallet_id); + } + return (buf->offset == buf->size) ? PARSING_OK : WRONG_LENGTH_ERROR; } diff --git a/src/transaction/hash.c b/src/transaction/hash.c index e542a5f..aeca1cf 100644 --- a/src/transaction/hash.c +++ b/src/transaction/hash.c @@ -94,10 +94,12 @@ bool hash_tx(transaction_ctx_t *ctx) { struct CellRef_t orderRef; BitString_init(&bits); - BitString_storeUint(&bits, 698983191, 32); // Wallet ID - BitString_storeUint(&bits, ctx->transaction.timeout, 32); // Timeout - BitString_storeUint(&bits, ctx->transaction.seqno, 32); // Seqno - BitString_storeUint(&bits, 0, 8); // Simple order + BitString_storeUint(&bits, ctx->transaction.subwallet_id, 32); // Wallet ID + BitString_storeUint(&bits, ctx->transaction.timeout, 32); // Timeout + BitString_storeUint(&bits, ctx->transaction.seqno, 32); // Seqno + if (ctx->transaction.include_wallet_op) { + BitString_storeUint(&bits, 0, 8); // Simple order + } BitString_storeUint(&bits, ctx->transaction.send_mode, 8); // Send Mode struct CellRef_t orderRefs[1] = {internalMessageRef}; if (!hash_Cell(&bits, orderRefs, 1, &orderRef)) { diff --git a/src/transaction/transaction_hints.c b/src/transaction/transaction_hints.c index 9a39374..31fea5c 100644 --- a/src/transaction/transaction_hints.c +++ b/src/transaction/transaction_hints.c @@ -25,6 +25,10 @@ return false; \ } +static const uint8_t dns_key_wallet[32] = { + 0xe8, 0xd4, 0x40, 0x50, 0x87, 0x3d, 0xba, 0x86, 0x5a, 0xa7, 0xc1, 0x70, 0xab, 0x4c, 0xce, 0x64, + 0xd9, 0x08, 0x39, 0xa3, 0x4d, 0xcf, 0xd6, 0xcf, 0x71, 0xd1, 0x4e, 0x02, 0x05, 0x44, 0x3b, 0x1b}; + bool process_hints(transaction_t* tx) { // Default title snprintf(tx->title, sizeof(tx->title), "Transaction"); @@ -34,18 +38,21 @@ bool process_hints(transaction_t* tx) { // No payload if (!tx->has_payload) { snprintf(tx->title, sizeof(tx->title), "Transfer"); + tx->is_blind = false; return true; } // No hints if (!tx->has_hints) { - return false; + tx->is_blind = true; + return true; } // Default state + tx->is_blind = true; CellRef_t cell; BitString_t bits; + bool hasCell = false; bool tmp = false; - tx->hints.hints_count = 0; buffer_t buf = {.ptr = tx->hints_data, .size = tx->hints_len, .offset = 0}; // @@ -68,6 +75,7 @@ bool process_hints(transaction_t* tx) { BitString_storeUint(&bits, 0, 32); BitString_storeBuffer(&bits, tx->hints_data, tx->hints_len); SAFE(hash_Cell(&bits, NULL, 0, &cell)); + hasCell = true; // Change title of operation snprintf(tx->title, sizeof(tx->title), "Transfer"); @@ -76,7 +84,8 @@ bool process_hints(transaction_t* tx) { add_hint_text(&tx->hints, "Comment", (char*) tx->hints_data, tx->hints_len); } - if (tx->hints_type == TRANSACTION_TRANSFER_JETTON) { + if (tx->hints_type == TRANSACTION_TRANSFER_JETTON || + tx->hints_type == TRANSACTION_TRANSFER_NFT) { int ref_count = 0; CellRef_t refs[2] = {0}; @@ -169,15 +178,400 @@ bool process_hints(transaction_t* tx) { // Build cell SAFE(hash_Cell(&bits, refs, ref_count, &cell)); + hasCell = true; // Operation - snprintf(tx->title, sizeof(tx->title), "Transfer jetton"); - snprintf(tx->action, sizeof(tx->action), "transfer jetton"); + snprintf( + tx->title, + sizeof(tx->title), + tx->hints_type == TRANSACTION_TRANSFER_JETTON ? "Transfer jetton" : "Transfer NFT"); + snprintf( + tx->action, + sizeof(tx->action), + tx->hints_type == TRANSACTION_TRANSFER_JETTON ? "transfer jetton" : "transfer NFT"); + snprintf(tx->recipient, + sizeof(tx->recipient), + tx->hints_type == TRANSACTION_TRANSFER_JETTON ? "Jetton wallet" : "NFT Address"); + } + + if (tx->hints_type == TRANSACTION_BURN_JETTON) { + int ref_count = 0; + CellRef_t refs[1] = {0}; + + BitString_init(&bits); + BitString_storeUint(&bits, 0x595f07bc, 32); + + SAFE(buffer_read_bool(&buf, &tmp)); + if (tmp) { + uint64_t query_id; + SAFE(buffer_read_u64(&buf, &query_id, BE)); + BitString_storeUint(&bits, query_id, 64); + } else { + BitString_storeUint(&bits, 0, 64); + } + + uint8_t amount_size; + uint8_t amount_buf[MAX_VALUE_BYTES_LEN]; + SAFE(buffer_read_varuint(&buf, &amount_size, amount_buf, MAX_VALUE_BYTES_LEN)); + BitString_storeCoinsBuf(&bits, amount_buf, amount_size); + + add_hint_amount(&tx->hints, "Jetton units", "", amount_buf, amount_size, 0); + + address_t response; + SAFE(buffer_read_address(&buf, &response)); + BitString_storeAddress(&bits, response.chain, response.hash); + + if (N_storage.expert_mode) { + add_hint_address(&tx->hints, "Send excess to", response, false); + } + + // custom payload + uint8_t type; + SAFE(buffer_read_u8(&buf, &type)); + if (type == 0x00) { + BitString_storeBit(&bits, 0); + } else if (type == 0x01) { + SAFE(buffer_read_cell_ref(&buf, &refs[ref_count])); + + if (N_storage.expert_mode) { + add_hint_hash(&tx->hints, "Custom payload", refs[ref_count].hash); + } + + BitString_storeBit(&bits, 1); + ref_count++; + } else if (type == 0x02) { + uint8_t len; + SAFE(buffer_read_u8(&buf, &len)); + + if (len > MAX_CELL_INLINE_LEN) { + return false; + } + + uint8_t data[MAX_CELL_INLINE_LEN]; + SAFE(buffer_read_buffer(&buf, data, len)); + + add_hint_hex(&tx->hints, "Custom payload", data, len); + + BitString_t inner_bits; + BitString_init(&inner_bits); + BitString_storeBuffer(&inner_bits, data, len); + + hash_Cell(&inner_bits, NULL, 0, &refs[ref_count]); + ref_count++; + + BitString_storeBit(&bits, 1); + } else { + return false; + } + + CHECK_END(); + + // Build cell + SAFE(hash_Cell(&bits, refs, ref_count, &cell)); + hasCell = true; + + // Operation + snprintf(tx->title, sizeof(tx->title), "Burn jetton"); + snprintf(tx->action, sizeof(tx->action), "burn jetton"); snprintf(tx->recipient, sizeof(tx->recipient), "Jetton wallet"); } - if (memcmp(cell.hash, tx->payload.hash, HASH_LEN) != 0) { - return false; + if (tx->hints_type == TRANSACTION_ADD_WHITELIST || + tx->hints_type == TRANSACTION_SINGLE_NOMINATOR_CHANGE_VALIDATOR) { + BitString_init(&bits); + BitString_storeUint(&bits, + tx->hints_type == TRANSACTION_ADD_WHITELIST ? 0x7258a69b : 0x1001, + 32); + + SAFE(buffer_read_bool(&buf, &tmp)); + if (tmp) { + uint64_t query_id; + SAFE(buffer_read_u64(&buf, &query_id, BE)); + BitString_storeUint(&bits, query_id, 64); + } else { + BitString_storeUint(&bits, 0, 64); + } + + address_t addr; + SAFE(buffer_read_address(&buf, &addr)); + BitString_storeAddress(&bits, addr.chain, addr.hash); + + add_hint_address( + &tx->hints, + tx->hints_type == TRANSACTION_ADD_WHITELIST ? "New whitelist" : "New validator", + addr, + false); + + CHECK_END(); + + // Build cell + SAFE(hash_Cell(&bits, NULL, 0, &cell)); + hasCell = true; + + // Operation + snprintf(tx->title, + sizeof(tx->title), + tx->hints_type == TRANSACTION_ADD_WHITELIST ? "Add whitelist" : "Edit validator"); + snprintf( + tx->action, + sizeof(tx->action), + tx->hints_type == TRANSACTION_ADD_WHITELIST ? "add whitelist" : "change validator"); + snprintf( + tx->recipient, + sizeof(tx->recipient), + tx->hints_type == TRANSACTION_ADD_WHITELIST ? "Vesting wallet" : "Single Nominator"); + } + + if (tx->hints_type == TRANSACTION_SINGLE_NOMINATOR_WITHDRAW) { + BitString_init(&bits); + BitString_storeUint(&bits, 0x1000, 32); + + SAFE(buffer_read_bool(&buf, &tmp)); + if (tmp) { + uint64_t query_id; + SAFE(buffer_read_u64(&buf, &query_id, BE)); + BitString_storeUint(&bits, query_id, 64); + } else { + BitString_storeUint(&bits, 0, 64); + } + + uint8_t amount_size; + uint8_t amount_buf[MAX_VALUE_BYTES_LEN]; + SAFE(buffer_read_varuint(&buf, &amount_size, amount_buf, MAX_VALUE_BYTES_LEN)); + BitString_storeCoinsBuf(&bits, amount_buf, amount_size); + + add_hint_amount(&tx->hints, + "Withdraw amount", + "TON", + amount_buf, + amount_size, + EXPONENT_SMALLEST_UNIT); + + CHECK_END(); + + // Build cell + SAFE(hash_Cell(&bits, NULL, 0, &cell)); + hasCell = true; + + // Operation + snprintf(tx->title, sizeof(tx->title), "Withdraw stake"); + snprintf(tx->action, sizeof(tx->action), "withdraw from nominator"); + snprintf(tx->recipient, sizeof(tx->recipient), "Single Nominator"); + } + + if (tx->hints_type == TRANSACTION_TONSTAKERS_DEPOSIT) { + BitString_init(&bits); + BitString_storeUint(&bits, 0x47d54391, 32); + + SAFE(buffer_read_bool(&buf, &tmp)); + if (tmp) { + uint64_t query_id; + SAFE(buffer_read_u64(&buf, &query_id, BE)); + BitString_storeUint(&bits, query_id, 64); + } else { + BitString_storeUint(&bits, 0, 64); + } + + SAFE(buffer_read_bool(&buf, &tmp)); + if (tmp) { + uint64_t app_id; + SAFE(buffer_read_u64(&buf, &app_id, BE)); + BitString_storeUint(&bits, app_id, 64); + } + + CHECK_END(); + + // Build cell + SAFE(hash_Cell(&bits, NULL, 0, &cell)); + hasCell = true; + + // Operation + snprintf(tx->title, sizeof(tx->title), "Deposit stake"); + snprintf(tx->action, sizeof(tx->action), "deposit stake"); + snprintf(tx->recipient, sizeof(tx->recipient), "Pool"); + } + + if (tx->hints_type == TRANSACTION_JETTON_DAO_VOTE) { + BitString_init(&bits); + BitString_storeUint(&bits, 0x69fb306c, 32); + + SAFE(buffer_read_bool(&buf, &tmp)); + if (tmp) { + uint64_t query_id; + SAFE(buffer_read_u64(&buf, &query_id, BE)); + BitString_storeUint(&bits, query_id, 64); + } else { + BitString_storeUint(&bits, 0, 64); + } + + address_t voting_address; + SAFE(buffer_read_address(&buf, &voting_address)); + BitString_storeAddress(&bits, voting_address.chain, voting_address.hash); + + add_hint_address(&tx->hints, "Voting address", voting_address, true); + + uint64_t expiration_date; + SAFE(buffer_read_u48(&buf, &expiration_date, BE)); + BitString_storeUint(&bits, expiration_date, 48); + + add_hint_number(&tx->hints, "Expiration time", expiration_date); + + // vote + SAFE(buffer_read_bool(&buf, &tmp)); + BitString_storeBit(&bits, tmp); + + add_hint_bool(&tx->hints, "Vote", tmp); + + // need_confirmation + SAFE(buffer_read_bool(&buf, &tmp)); + BitString_storeBit(&bits, tmp); + + CHECK_END(); + + // Build cell + SAFE(hash_Cell(&bits, NULL, 0, &cell)); + hasCell = true; + + // Operation + snprintf(tx->title, sizeof(tx->title), "Vote proposal"); + snprintf(tx->action, sizeof(tx->action), "vote for proposal"); + snprintf(tx->recipient, sizeof(tx->recipient), "Jetton wallet"); + } + + if (tx->hints_type == TRANSACTION_CHANGE_DNS_RECORD) { + int ref_count = 0; + CellRef_t refs[1] = {0}; + + BitString_init(&bits); + BitString_storeUint(&bits, 0x4eb1f0f9, 32); + + SAFE(buffer_read_bool(&buf, &tmp)); + if (tmp) { + uint64_t query_id; + SAFE(buffer_read_u64(&buf, &query_id, BE)); + BitString_storeUint(&bits, query_id, 64); + } else { + BitString_storeUint(&bits, 0, 64); + } + + bool has_value; + SAFE(buffer_read_bool(&buf, &has_value)); + + uint8_t type; + SAFE(buffer_read_u8(&buf, &type)); + + if (type == 0x00) { // wallet + add_hint_text(&tx->hints, "Type", "Wallet", 6); + + BitString_storeBuffer(&bits, dns_key_wallet, sizeof(dns_key_wallet)); + + if (has_value) { + address_t address; + SAFE(buffer_read_address(&buf, &address)); + + bool has_capabilities; + SAFE(buffer_read_bool(&buf, &has_capabilities)); + + bool is_wallet = false; + if (has_capabilities) { + SAFE(buffer_read_bool(&buf, &is_wallet)); + } + + add_hint_address(&tx->hints, "Wallet address", address, !is_wallet); + + BitString_t inner_bits; + BitString_init(&inner_bits); + + BitString_storeUint(&inner_bits, 0x9fd3, 16); + + BitString_storeAddress(&inner_bits, address.chain, address.hash); + + BitString_storeUint(&inner_bits, has_capabilities ? 0x01 : 0x00, 8); + + if (has_capabilities) { + if (is_wallet) { + BitString_storeBit(&inner_bits, 1); + BitString_storeUint(&inner_bits, 0x2177, 16); + } + + BitString_storeBit(&inner_bits, 0); + } + + hash_Cell(&inner_bits, NULL, 0, &refs[ref_count++]); + } + } else if (type == 0x01) { // unknown key + add_hint_text(&tx->hints, "Type", "Unknown", 7); + + uint8_t key[32]; + SAFE(buffer_read_buffer(&buf, key, sizeof(key))); + + BitString_storeBuffer(&bits, key, sizeof(key)); + + add_hint_hash(&tx->hints, "Key", key); + + if (has_value) { + SAFE(buffer_read_cell_ref(&buf, &refs[ref_count++])); + + add_hint_hash(&tx->hints, "Value", refs[ref_count - 1].hash); + } + } else { + return false; + } + + if (!has_value) { + add_hint_bool(&tx->hints, "Delete value", true); + } + + CHECK_END(); + + // Build cell + SAFE(hash_Cell(&bits, refs, ref_count, &cell)); + hasCell = true; + + // Operation + snprintf(tx->title, sizeof(tx->title), "Change DNS"); + snprintf(tx->action, sizeof(tx->action), "change DNS record"); + snprintf(tx->recipient, sizeof(tx->recipient), "DNS resolver"); + } + + if (tx->hints_type == TRANSACTION_TOKEN_BRIDGE_PAY_SWAP) { + BitString_init(&bits); + BitString_storeUint(&bits, 0x8, 32); + + SAFE(buffer_read_bool(&buf, &tmp)); + if (tmp) { + uint64_t query_id; + SAFE(buffer_read_u64(&buf, &query_id, BE)); + BitString_storeUint(&bits, query_id, 64); + } else { + BitString_storeUint(&bits, 0, 64); + } + + uint8_t swap_id[32]; + SAFE(buffer_read_buffer(&buf, swap_id, sizeof(swap_id))); + + BitString_storeBuffer(&bits, swap_id, sizeof(swap_id)); + + add_hint_hash(&tx->hints, "Transfer ID", swap_id); + + CHECK_END(); + + // Build cell + SAFE(hash_Cell(&bits, NULL, 0, &cell)); + hasCell = true; + + // Operation + snprintf(tx->title, sizeof(tx->title), "Bridge tokens"); + snprintf(tx->action, sizeof(tx->action), "bridge tokens"); + snprintf(tx->recipient, sizeof(tx->recipient), "Bridge"); + } + + // Check hash + if (hasCell) { + if (memcmp(cell.hash, tx->payload.hash, HASH_LEN) != 0) { + return false; + } + tx->is_blind = false; } return true; diff --git a/src/transaction/transaction_hints.h b/src/transaction/transaction_hints.h index 64735a5..6bba622 100644 --- a/src/transaction/transaction_hints.h +++ b/src/transaction/transaction_hints.h @@ -7,6 +7,15 @@ typedef enum { TRANSACTION_COMMENT = 0, TRANSACTION_TRANSFER_JETTON = 1, + TRANSACTION_TRANSFER_NFT = 2, + TRANSACTION_BURN_JETTON = 3, + TRANSACTION_ADD_WHITELIST = 4, + TRANSACTION_SINGLE_NOMINATOR_WITHDRAW = 5, + TRANSACTION_SINGLE_NOMINATOR_CHANGE_VALIDATOR = 6, + TRANSACTION_TONSTAKERS_DEPOSIT = 7, + TRANSACTION_JETTON_DAO_VOTE = 8, + TRANSACTION_CHANGE_DNS_RECORD = 9, + TRANSACTION_TOKEN_BRIDGE_PAY_SWAP = 10, } transaction_hint_type_e; bool process_hints(transaction_t* tx); diff --git a/src/transaction/types.h b/src/transaction/types.h index cfa6462..a4cbbb8 100644 --- a/src/transaction/types.h +++ b/src/transaction/types.h @@ -23,10 +23,13 @@ typedef enum { PAYLOAD_PARSING_ERROR = -9, STATE_INIT_PARSING_ERROR = -10, HINTS_PARSING_ERROR = -11, + GENERAL_ERROR = -12, } parser_status_e; typedef struct { - uint8_t tag; // tag (1 byte) + uint8_t tag; // tag (1 byte) + uint32_t subwallet_id; + bool include_wallet_op; uint32_t seqno; // seqno (4 bytes) uint32_t timeout; // timeout (4 bytes) uint8_t value_buf[MAX_VALUE_BYTES_LEN]; // big endian transaction value @@ -42,6 +45,7 @@ typedef struct { uint32_t hints_type; // hints type if exists uint16_t hints_len; // hints len if exists uint8_t* hints_data; // hints data if exists + bool is_blind; // does transaction require blind signing HintHolder_t hints; char title[32]; char action[32]; diff --git a/src/types.h b/src/types.h index 9821141..f99f012 100644 --- a/src/types.h +++ b/src/types.h @@ -27,6 +27,7 @@ typedef enum { SIGN_TX = 0x06, /// sign transaction with BIP32 path GET_ADDRESS_PROOF = 0x08, /// get an address proof in TON Connect format SIGN_DATA = 0x09, /// sign data in TON Connect format + GET_APP_SETTINGS = 0x0a, /// get app settings } command_e; /** @@ -120,4 +121,5 @@ typedef struct { typedef struct { bool initialized; bool expert_mode; + bool blind_signing_enabled; } internalStorage_t; diff --git a/src/ui/display.h b/src/ui/display.h index 3f3e884..8b00023 100644 --- a/src/ui/display.h +++ b/src/ui/display.h @@ -48,3 +48,8 @@ int ui_display_proof(uint8_t flags); * */ int ui_display_sign_data(void); + +/** + * Display an error when blind signing was requested but is disabled. + */ +void ui_blind_signing_error(void); diff --git a/src/ui/display_bagl.c b/src/ui/display_bagl.c index 6188665..4c1ea5d 100644 --- a/src/ui/display_bagl.c +++ b/src/ui/display_bagl.c @@ -173,6 +173,14 @@ UX_STEP_NOCB(ux_display_review_step, "Review", g_operation, }); +// Blind signing warning +UX_STEP_NOCB(ux_display_blind_signing_warning_step, + pbb, + { + &C_icon_warning, + "Blind", + "Signing", + }); // Step with title/text for amount UX_STEP_NOCB(ux_display_amount_step, bnnn_paging, @@ -226,14 +234,18 @@ int ui_display_transaction() { // Configure Flow int step = 0; ux_approval_flow[step++] = &ux_display_review_step; + if (G_context.tx_info.transaction.is_blind) { + ux_approval_flow[step++] = &ux_display_blind_signing_warning_step; + } ux_approval_flow[step++] = &ux_display_address_step; ux_approval_flow[step++] = &ux_display_amount_step; - if (G_context.tx_info.transaction.has_payload) { - g_hint_holder = &G_context.tx_info.transaction.hints; - g_hint_offset = -3; - for (uint16_t i = 0; i < G_context.tx_info.transaction.hints.hints_count; i++) { - ux_approval_flow[step++] = &ux_display_hint_step; - } + if (G_context.tx_info.transaction.has_payload && G_context.tx_info.transaction.is_blind) { + ux_approval_flow[step++] = &ux_display_payload_step; + } + g_hint_holder = &G_context.tx_info.transaction.hints; + g_hint_offset = -step; + for (uint16_t i = 0; i < G_context.tx_info.transaction.hints.hints_count; i++) { + ux_approval_flow[step++] = &ux_display_hint_step; } ux_approval_flow[step++] = &ux_display_approve_step; ux_approval_flow[step++] = &ux_display_reject_step; @@ -280,4 +292,29 @@ int ui_display_sign_data() { return 0; } +#ifdef TARGET_NANOS +UX_STEP_CB(ux_warning_contract_data_step, + bnnn_paging, + ui_menu_main(), + { + "Error", + "Blind signing must be enabled in Settings", + }); +#else +UX_STEP_CB(ux_warning_contract_data_step, + pnn, + ui_menu_main(), + { + &C_icon_crossmark, + "Blind signing must be", + "enabled in Settings", + }); +#endif + +UX_FLOW(ux_warning_contract_data_flow, &ux_warning_contract_data_step); + +void ui_blind_signing_error() { + ux_flow_init(0, ux_warning_contract_data_flow, NULL); +} + #endif diff --git a/src/ui/display_transaction_nbgl.c b/src/ui/display_transaction_nbgl.c index 8d92e7f..396d617 100644 --- a/src/ui/display_transaction_nbgl.c +++ b/src/ui/display_transaction_nbgl.c @@ -77,6 +77,12 @@ static void start_regular_review(void) { pairs[pairIndex].value = g_address; pairIndex++; + if (G_context.tx_info.transaction.has_payload && G_context.tx_info.transaction.is_blind) { + pairs[pairIndex].item = "Payload"; + pairs[pairIndex].value = g_payload; + pairIndex++; + } + print_hints(&G_context.tx_info.transaction.hints, &pairs[pairIndex]); pairList.pairs = pairs; @@ -95,6 +101,21 @@ static void start_regular_review(void) { nbgl_useCaseStaticReview(&pairList, &infoLongPress, "Reject transaction", on_review_choice); } +static void show_blind_warning_if_needed(void) { + if (G_context.tx_info.transaction.is_blind) { + nbgl_useCaseReviewStart( + &C_round_warning_64px, + "Blind Signing", + "This transaction cannot be\nsecurely interpreted by Ledger\nStax. It might put " + "your assets\nat risk.", + "Reject transaction", + start_regular_review, + ask_rejection_confirmation); + } else { + start_regular_review(); + } +} + // Public function to start the transaction review // - Check if the app is in the right state for transaction review // - Format the amount and address strings in g_amount and g_address buffers @@ -128,10 +149,27 @@ int ui_display_transaction() { g_transaction_title, NULL, "Reject transaction", - start_regular_review, + show_blind_warning_if_needed, ask_rejection_confirmation); return 0; } +static void ui_blind_signing_error_choice(bool confirm) { + if (confirm) { + ui_menu_main(); + } else { + ui_menu_settings(); + } +} + +void ui_blind_signing_error() { + nbgl_useCaseChoice(&C_warning64px, + "This message cannot\nbe clear-signed", + "Enable blind-signing in\nthe settings to sign\nthis transaction.", + "Exit", + "Go to settings", + ui_blind_signing_error_choice); +} + #endif diff --git a/src/ui/menu_bagl.c b/src/ui/menu_bagl.c index 4808e34..cf9ffda 100644 --- a/src/ui/menu_bagl.c +++ b/src/ui/menu_bagl.c @@ -36,6 +36,27 @@ static const char* no_yes_data_getter(unsigned int idx) { return NULL; } +////////////////////////////////////////////////////////////////////////////////////// +// Allow blind signing submenu + +static void allow_blind_sign_data_change(bool value) { + nvm_write((void*) &N_storage.blind_signing_enabled, (void*) &value, sizeof(value)); +} + +static void allow_blind_sign_data_selector(unsigned int idx) { + switch (idx) { + case 0: + allow_blind_sign_data_change(false); + break; + case 1: + allow_blind_sign_data_change(true); + break; + default: + break; + } + ux_menulist_init_select(0, settings_submenu_getter, settings_submenu_selector, 0); +} + ////////////////////////////////////////////////////////////////////////////////////// // Expert mode submenu @@ -54,10 +75,11 @@ static void expert_mode_data_selector(unsigned int idx) { default: break; } - ux_menulist_init_select(0, settings_submenu_getter, settings_submenu_selector, 0); + ux_menulist_init_select(0, settings_submenu_getter, settings_submenu_selector, 1); } static const char* const settings_submenu_getter_values[] = { + "Allow blind sign", "Expert mode", "Back", }; @@ -72,6 +94,12 @@ static const char* settings_submenu_getter(unsigned int idx) { static void settings_submenu_selector(unsigned int idx) { switch (idx) { case 0: + ux_menulist_init_select(0, + no_yes_data_getter, + allow_blind_sign_data_selector, + N_storage.blind_signing_enabled); + break; + case 1: ux_menulist_init_select(0, no_yes_data_getter, expert_mode_data_selector, diff --git a/src/ui/menu_nbgl.c b/src/ui/menu_nbgl.c index 0ff7125..6bde3a6 100644 --- a/src/ui/menu_nbgl.c +++ b/src/ui/menu_nbgl.c @@ -39,7 +39,8 @@ static const char *const INFO_TYPES[] = {"Version", "Developer"}; static const char *const INFO_CONTENTS[] = {APPVERSION, "TonTech"}; enum { - EXPERT_MODE_TOKEN = FIRST_USER_TOKEN, + BLIND_SIGNING_TOKEN = FIRST_USER_TOKEN, + EXPERT_MODE_TOKEN, }; static nbgl_layoutSwitch_t switches[2]; @@ -55,6 +56,12 @@ static bool nav_callback(uint8_t page, nbgl_pageContent_t *content) { } case 1: { int sw = 0; + switches[sw++] = (nbgl_layoutSwitch_t){ + .initState = N_storage.blind_signing_enabled ? ON_STATE : OFF_STATE, + .text = "Blind signing", + .subText = "Enable transaction blind\nsigning", + .token = BLIND_SIGNING_TOKEN, + .tuneId = TUNE_TAP_CASUAL}; switches[sw++] = (nbgl_layoutSwitch_t){ .initState = N_storage.expert_mode ? ON_STATE : OFF_STATE, .text = "Expert mode", @@ -78,6 +85,10 @@ static void controls_callback(int token, uint8_t index) { (void) index; bool value; switch (token) { + case BLIND_SIGNING_TOKEN: + value = N_storage.blind_signing_enabled ? false : true; + nvm_write((void *) &N_storage.blind_signing_enabled, (void *) &value, sizeof(bool)); + break; case EXPERT_MODE_TOKEN: value = N_storage.expert_mode ? false : true; nvm_write((void *) &N_storage.expert_mode, (void *) &value, sizeof(bool)); diff --git a/tests/application_client/ton_command_sender.py b/tests/application_client/ton_command_sender.py index cfede04..0c900b6 100644 --- a/tests/application_client/ton_command_sender.py +++ b/tests/application_client/ton_command_sender.py @@ -33,6 +33,7 @@ class InsType(IntEnum): SIGN_TX = 0x06 GET_ADDRESS_PROOF = 0x08 SIGN_DATA = 0x09 + GET_APP_SETTINGS = 0x0A class Errors(IntEnum): SW_DENY = 0x6985 @@ -51,6 +52,7 @@ class Errors(IntEnum): SW_SIGNATURE_FAIL = 0xB008 SW_REQUEST_TOO_LONG = 0xB00B SW_BAD_BIP32_PATH = 0XB0BD + SW_BLIND_SIGNING_DISABLED = 0xBD00 class AddressDisplayFlags(IntFlag): NONE = 0 @@ -95,6 +97,14 @@ def get_public_key(self, path: str) -> RAPDU: data=pack_derivation_path(path)) + def get_app_settings(self) -> RAPDU: + return self.backend.exchange(cla=CLA, + ins=InsType.GET_APP_SETTINGS, + p1=P1.P1_NONE, + p2=P2.P2_NONE, + data=b"") + + @contextmanager def get_public_key_with_confirmation(self, path: str, diff --git a/tests/application_client/ton_transaction.py b/tests/application_client/ton_transaction.py index 6e7e687..f72f87d 100644 --- a/tests/application_client/ton_transaction.py +++ b/tests/application_client/ton_transaction.py @@ -57,6 +57,15 @@ def is_string_ascii_printable(s: str) -> bool: class PayloadID(IntEnum): COMMENT = 0 JETTON_TRANSFER = 1 + NFT_TRANSFER = 2 + JETTON_BURN = 3 + ADD_WHITELIST = 4 + SINGLE_NOMINATOR_WITHDRAW = 5 + SINGLE_NOMINATOR_CHANGE_VALIDATOR = 6 + TONSTAKERS_DEPOSIT = 7 + JETTON_DAO_VOTE = 8 + CHANGE_DNS_RECORD = 9 + TOKEN_BRIDGE_PAY_SWAP = 10 class CommentPayload(Payload): @@ -137,6 +146,431 @@ def to_message_body_cell(self) -> Cell: ) +class CustomUnsafePayload(Payload): + def __init__(self, cell: Cell) -> None: + self.cell: Cell = cell + + def to_request_bytes(self) -> Optional[bytes]: + return None + + def to_message_body_cell(self) -> Cell: + return self.cell + + +class NFTTransferPayload(Payload): + def __init__(self, + to: Address, + response_destination: Optional[Address] = None, + query_id: Optional[int] = None, + custom_payload: Optional[Cell] = None, + forward_amount: int = 0, + forward_payload: Optional[Cell] = None) -> None: + self.query_id: int = query_id if query_id is not None else 0 + self.new_owner: Address = to + self.response_destionation: Address = ( + response_destination if response_destination is not None else to + ) + self.custom_payload: Optional[Cell] = custom_payload + self.forward_amount: int = forward_amount + self.forward_payload: Optional[Cell] = forward_payload + + def to_request_bytes(self) -> bytes: + main_body = b"".join([ + (b"".join([ + bytes([1]), + self.query_id.to_bytes(8, byteorder="big") + ]) if self.query_id != 0 else bytes([0])), + write_address(self.new_owner), + write_address(self.response_destionation), + (b"".join([ + bytes([1]), + write_cell(self.custom_payload) + ]) if self.custom_payload is not None else bytes([0])), + write_varuint(self.forward_amount), + (b"".join([ + bytes([1]), + write_cell(self.forward_payload) + ]) if self.forward_payload is not None else bytes([0])) + ]) + return b"".join([ + (PayloadID.NFT_TRANSFER).to_bytes(4, byteorder="big"), + len(main_body).to_bytes(2, byteorder="big"), + main_body + ]) + + def to_message_body_cell(self) -> Cell: + return ( + begin_cell() + .store_uint(0x5fcc3d14, 32) + .store_uint(self.query_id, 64) + .store_address(self.new_owner) + .store_address(self.response_destionation) + .store_maybe_ref(self.custom_payload) + .store_coins(self.forward_amount) + .store_maybe_ref(self.forward_payload) + .end_cell() + ) + + +class JettonBurnPayload(Payload): + def __init__(self, + amount: int, + response_destination: Address, + query_id: Optional[int] = None, + custom_payload: Optional[Cell | bytes] = None) -> None: + self.query_id: int = query_id if query_id is not None else 0 + self.amount: int = amount + self.response_destionation: Address = response_destination + self.custom_payload: Optional[Cell | bytes] = custom_payload + + def to_request_bytes(self) -> bytes: + main_body = b"".join([ + (b"".join([ + bytes([1]), + self.query_id.to_bytes(8, byteorder="big") + ]) if self.query_id != 0 else bytes([0])), + write_varuint(self.amount), + write_address(self.response_destionation), + ((b"".join([ + bytes([2]), + bytes([len(self.custom_payload)]), + self.custom_payload + ]) if isinstance(self.custom_payload, bytes) else b"".join([ + bytes([1]), + write_cell(self.custom_payload) + ])) if self.custom_payload is not None else bytes([0])) + ]) + return b"".join([ + (PayloadID.JETTON_BURN).to_bytes(4, byteorder="big"), + len(main_body).to_bytes(2, byteorder="big"), + main_body + ]) + + def to_message_body_cell(self) -> Cell: + cp = self.custom_payload + if isinstance(self.custom_payload, bytes): + cp = begin_cell().store_bytes(self.custom_payload).end_cell() + + return ( + begin_cell() + .store_uint(0x595f07bc, 32) + .store_uint(self.query_id, 64) + .store_coins(self.amount) + .store_address(self.response_destionation) + .store_maybe_ref(cp) + .end_cell() + ) + + +class AddWhitelistPayload(Payload): + def __init__(self, + address: Address, + query_id: Optional[int] = None) -> None: + self.query_id: int = query_id if query_id is not None else 0 + self.address: Address = address + + def to_request_bytes(self) -> bytes: + main_body = b"".join([ + (b"".join([ + bytes([1]), + self.query_id.to_bytes(8, byteorder="big") + ]) if self.query_id != 0 else bytes([0])), + write_address(self.address) + ]) + return b"".join([ + (PayloadID.ADD_WHITELIST).to_bytes(4, byteorder="big"), + len(main_body).to_bytes(2, byteorder="big"), + main_body + ]) + + def to_message_body_cell(self) -> Cell: + return ( + begin_cell() + .store_uint(0x7258a69b, 32) + .store_uint(self.query_id, 64) + .store_address(self.address) + .end_cell() + ) + + +class SingleNominatorWithdrawPayload(Payload): + def __init__(self, + amount: int, + query_id: Optional[int] = None) -> None: + self.query_id: int = query_id if query_id is not None else 0 + self.amount: int = amount + + def to_request_bytes(self) -> bytes: + main_body = b"".join([ + (b"".join([ + bytes([1]), + self.query_id.to_bytes(8, byteorder="big") + ]) if self.query_id != 0 else bytes([0])), + write_varuint(self.amount) + ]) + return b"".join([ + (PayloadID.SINGLE_NOMINATOR_WITHDRAW).to_bytes(4, byteorder="big"), + len(main_body).to_bytes(2, byteorder="big"), + main_body + ]) + + def to_message_body_cell(self) -> Cell: + return ( + begin_cell() + .store_uint(0x1000, 32) + .store_uint(self.query_id, 64) + .store_coins(self.amount) + .end_cell() + ) + + +class ChangeValidatorPayload(Payload): + def __init__(self, + address: Address, + query_id: Optional[int] = None) -> None: + self.query_id: int = query_id if query_id is not None else 0 + self.address: Address = address + + def to_request_bytes(self) -> bytes: + main_body = b"".join([ + (b"".join([ + bytes([1]), + self.query_id.to_bytes(8, byteorder="big") + ]) if self.query_id != 0 else bytes([0])), + write_address(self.address) + ]) + return b"".join([ + (PayloadID.SINGLE_NOMINATOR_CHANGE_VALIDATOR).to_bytes(4, byteorder="big"), + len(main_body).to_bytes(2, byteorder="big"), + main_body + ]) + + def to_message_body_cell(self) -> Cell: + return ( + begin_cell() + .store_uint(0x1001, 32) + .store_uint(self.query_id, 64) + .store_address(self.address) + .end_cell() + ) + + +class TonstakersDepositPayload(Payload): + def __init__(self, + app_id: Optional[int] = None, + query_id: Optional[int] = None) -> None: + self.query_id: int = query_id if query_id is not None else 0 + self.app_id: Optional[int] = app_id + + def to_request_bytes(self) -> bytes: + main_body = b"".join([ + (b"".join([ + bytes([1]), + self.query_id.to_bytes(8, byteorder="big") + ]) if self.query_id != 0 else bytes([0])), + (b"".join([ + bytes([1]), + self.app_id.to_bytes(8, byteorder="big") + ]) if self.app_id is not None else bytes([0])) + ]) + return b"".join([ + (PayloadID.TONSTAKERS_DEPOSIT).to_bytes(4, byteorder="big"), + len(main_body).to_bytes(2, byteorder="big"), + main_body + ]) + + def to_message_body_cell(self) -> Cell: + b = ( + begin_cell() + .store_uint(0x47d54391, 32) + .store_uint(self.query_id, 64) + ) + + if self.app_id is not None: + b = b.store_uint(self.app_id, 64) + + return b.end_cell() + + +class JettonDAOVotePayload(Payload): + def __init__(self, + voting_address: Address, + expiration_date: int, + vote: bool, + need_confirmation: bool, + query_id: Optional[int] = None) -> None: + self.query_id: int = query_id if query_id is not None else 0 + self.voting_address: Address = voting_address + self.expiration_date: int = expiration_date + self.vote: bool = vote + self.need_confirmation: bool = need_confirmation + + def to_request_bytes(self) -> bytes: + main_body = b"".join([ + (b"".join([ + bytes([1]), + self.query_id.to_bytes(8, byteorder="big") + ]) if self.query_id != 0 else bytes([0])), + write_address(self.voting_address), + self.expiration_date.to_bytes(6, byteorder="big"), + bytes([1 if self.vote else 0]), + bytes([1 if self.need_confirmation else 0]) + ]) + return b"".join([ + (PayloadID.JETTON_DAO_VOTE).to_bytes(4, byteorder="big"), + len(main_body).to_bytes(2, byteorder="big"), + main_body + ]) + + def to_message_body_cell(self) -> Cell: + return ( + begin_cell() + .store_uint(0x69fb306c, 32) + .store_uint(self.query_id, 64) + .store_address(self.voting_address) + .store_uint(self.expiration_date, 48) + .store_bit(self.vote) + .store_bit(self.need_confirmation) + .end_cell() + ) + + +class ChangeDNSWalletPayload(Payload): + def __init__(self, + wallet: Optional[Address], + has_capabilities: bool, + is_wallet: bool, + query_id: Optional[int] = None) -> None: + if is_wallet and not has_capabilities: + raise ValueError("DNS wallet record cannot be a wallet without capabilities") + self.query_id: int = query_id if query_id is not None else 0 + self.wallet: Optional[Address] = wallet + self.has_capabilities: bool = has_capabilities + self.is_wallet: bool = is_wallet + + def to_request_bytes(self) -> bytes: + main_body = b"".join([ + (b"".join([ + bytes([1]), + self.query_id.to_bytes(8, byteorder="big") + ]) if self.query_id != 0 else bytes([0])), + bytes([1 if self.wallet is not None else 0]), + bytes([0]), + (b"".join([ + write_address(self.wallet), + bytes([1 if self.has_capabilities else 0]), + bytes([1 if self.is_wallet else 0]) if self.has_capabilities else bytes([]) + ]) if self.wallet is not None else bytes([])) + ]) + return b"".join([ + (PayloadID.CHANGE_DNS_RECORD).to_bytes(4, byteorder="big"), + len(main_body).to_bytes(2, byteorder="big"), + main_body + ]) + + def to_message_body_cell(self) -> Cell: + b = ( + begin_cell() + .store_uint(0x4eb1f0f9, 32) + .store_uint(self.query_id, 64) + .store_bytes(bytes([0xe8, 0xd4, 0x40, 0x50, 0x87, 0x3d, 0xba, 0x86, 0x5a, 0xa7, 0xc1, + 0x70, 0xab, 0x4c, 0xce, 0x64, 0xd9, 0x08, 0x39, 0xa3, 0x4d, 0xcf, + 0xd6, 0xcf, 0x71, 0xd1, 0x4e, 0x02, 0x05, 0x44, 0x3b, 0x1b])) + ) + + if self.wallet is not None: + rb = ( + begin_cell() + .store_uint(0x9fd3, 16) + .store_address(self.wallet) + .store_uint(1 if self.has_capabilities else 0, 8) + ) + + if self.has_capabilities: + if self.is_wallet: + rb = ( + rb.store_uint(1, 1) + .store_uint(0x2177, 16) + ) + + rb = rb.store_uint(0, 1) + + b = b.store_ref(rb.end_cell()) + + return b.end_cell() + + +class ChangeDNSPayload(Payload): + def __init__(self, + key: bytes, + value: Optional[Cell], + query_id: Optional[int] = None) -> None: + self.query_id: int = query_id if query_id is not None else 0 + self.key: bytes = key + self.value: Optional[Cell] = value + + def to_request_bytes(self) -> bytes: + main_body = b"".join([ + (b"".join([ + bytes([1]), + self.query_id.to_bytes(8, byteorder="big") + ]) if self.query_id != 0 else bytes([0])), + bytes([1 if self.value is not None else 0]), + bytes([1]), + self.key, + write_cell(self.value) if self.value is not None else bytes([]) + ]) + return b"".join([ + (PayloadID.CHANGE_DNS_RECORD).to_bytes(4, byteorder="big"), + len(main_body).to_bytes(2, byteorder="big"), + main_body + ]) + + def to_message_body_cell(self) -> Cell: + b = ( + begin_cell() + .store_uint(0x4eb1f0f9, 32) + .store_uint(self.query_id, 64) + .store_bytes(self.key) + ) + + if self.value is not None: + b = b.store_ref(self.value) + + return b.end_cell() + + +class TokenBridgePaySwapPayload(Payload): + def __init__(self, + swap_id: bytes, + query_id: Optional[int] = None) -> None: + self.query_id: int = query_id if query_id is not None else 0 + self.swap_id: bytes = swap_id + + def to_request_bytes(self) -> bytes: + main_body = b"".join([ + (b"".join([ + bytes([1]), + self.query_id.to_bytes(8, byteorder="big") + ]) if self.query_id != 0 else bytes([0])), + self.swap_id + ]) + return b"".join([ + (PayloadID.TOKEN_BRIDGE_PAY_SWAP).to_bytes(4, byteorder="big"), + len(main_body).to_bytes(2, byteorder="big"), + main_body + ]) + + def to_message_body_cell(self) -> Cell: + return ( + begin_cell() + .store_uint(8, 32) + .store_uint(self.query_id, 64) + .store_bytes(self.swap_id) + .end_cell() + ) + + # pylint: disable-next=too-many-instance-attributes class Transaction: def __init__(self, @@ -147,7 +581,9 @@ def __init__(self, bounce: bool, amount: int, state_init: Optional[StateInit] = None, - payload: Optional[Payload] = None) -> None: + payload: Optional[Payload] = None, + subwallet_id: Optional[int] = None, + include_wallet_op: bool = True) -> None: self.to: Address = to self.send_mode: SendMode = send_mode self.seqno: int = seqno @@ -156,10 +592,25 @@ def __init__(self, self.amount: int = amount self.state_init: Optional[StateInit] = state_init self.payload: Optional[Payload] = payload + self.subwallet_id: Optional[int] = subwallet_id + self.include_wallet_op: bool = include_wallet_op + + def header_bytes(self) -> bytes: + if not self.include_wallet_op or self.subwallet_id is not None: + return b"".join([ + bytes([1]), + ( + (self.subwallet_id if self.subwallet_id is not None else 698983191) + .to_bytes(4, byteorder="big") + ), + bytes([1 if self.include_wallet_op else 0]) + ]) + + return bytes([0]) def to_request_bytes(self) -> bytes: return b"".join([ - bytes([0]), + self.header_bytes(), self.seqno.to_bytes(4, byteorder="big"), self.timeout.to_bytes(4, byteorder="big"), write_varuint(self.amount), @@ -213,12 +664,18 @@ def order_cell(self) -> Cell: return b.end_cell() def transfer_cell(self) -> Cell: - return ( + b = ( begin_cell() - .store_uint(698983191, 32) + .store_uint(698983191 if self.subwallet_id is None else self.subwallet_id, 32) .store_uint(self.timeout, 32) .store_uint(self.seqno, 32) - .store_uint(0, 8) + ) + + if self.include_wallet_op: + b = b.store_uint(0, 8) + + return ( + b .store_uint(self.send_mode, 8) .store_ref(self.order_cell()) .end_cell() diff --git a/tests/conftest.py b/tests/conftest.py index e71cdf9..4661161 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,4 +1,6 @@ from ragger.conftest import configuration +from ragger.navigator import NavInsID +import pytest ########################### ### CONFIGURATION START ### @@ -12,4 +14,4 @@ ######################### # Pull all features from the base ragger conftest using the overridden configuration -pytest_plugins = ("ragger.conftest.base_conftest", ) \ No newline at end of file +pytest_plugins = ("ragger.conftest.base_conftest", ) diff --git a/tests/requirements.txt b/tests/requirements.txt index 244899a..22bef95 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -1,6 +1,5 @@ pytest -ragger[speculos,ledgerwallet]>=1.11.4 -pysha3>=1.0.0,<2.0.0 +ragger[speculos,ledgerwallet]>=1.18.1 tonsdk==1.0.13 ecdsa>=0.18.0 diff --git a/tests/snapshots/nanos/test_app_mainmenu/00006.png b/tests/snapshots/nanos/test_app_mainmenu/00006.png index 7910783..01899aa 100644 Binary files a/tests/snapshots/nanos/test_app_mainmenu/00006.png and b/tests/snapshots/nanos/test_app_mainmenu/00006.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/00010.png b/tests/snapshots/nanos/test_app_mainmenu/00010.png index 7910783..01899aa 100644 Binary files a/tests/snapshots/nanos/test_app_mainmenu/00010.png and b/tests/snapshots/nanos/test_app_mainmenu/00010.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/00011.png b/tests/snapshots/nanos/test_app_mainmenu/00011.png index abbee17..38cf887 100644 Binary files a/tests/snapshots/nanos/test_app_mainmenu/00011.png and b/tests/snapshots/nanos/test_app_mainmenu/00011.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/00012.png b/tests/snapshots/nanos/test_app_mainmenu/00012.png index d548246..c45fbd5 100644 Binary files a/tests/snapshots/nanos/test_app_mainmenu/00012.png and b/tests/snapshots/nanos/test_app_mainmenu/00012.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/00013.png b/tests/snapshots/nanos/test_app_mainmenu/00013.png index 34cf547..6129497 100644 Binary files a/tests/snapshots/nanos/test_app_mainmenu/00013.png and b/tests/snapshots/nanos/test_app_mainmenu/00013.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/00014.png b/tests/snapshots/nanos/test_app_mainmenu/00014.png index 3476b97..dae951f 100644 Binary files a/tests/snapshots/nanos/test_app_mainmenu/00014.png and b/tests/snapshots/nanos/test_app_mainmenu/00014.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/00015.png b/tests/snapshots/nanos/test_app_mainmenu/00015.png index 625b9d3..38cf887 100644 Binary files a/tests/snapshots/nanos/test_app_mainmenu/00015.png and b/tests/snapshots/nanos/test_app_mainmenu/00015.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/00016.png b/tests/snapshots/nanos/test_app_mainmenu/00016.png index 0e2e44a..abbee17 100644 Binary files a/tests/snapshots/nanos/test_app_mainmenu/00016.png and b/tests/snapshots/nanos/test_app_mainmenu/00016.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/00017.png b/tests/snapshots/nanos/test_app_mainmenu/00017.png index b5c1b1c..d548246 100644 Binary files a/tests/snapshots/nanos/test_app_mainmenu/00017.png and b/tests/snapshots/nanos/test_app_mainmenu/00017.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/00018.png b/tests/snapshots/nanos/test_app_mainmenu/00018.png index d548246..34cf547 100644 Binary files a/tests/snapshots/nanos/test_app_mainmenu/00018.png and b/tests/snapshots/nanos/test_app_mainmenu/00018.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/00019.png b/tests/snapshots/nanos/test_app_mainmenu/00019.png new file mode 100644 index 0000000..3476b97 Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/00019.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/00020.png b/tests/snapshots/nanos/test_app_mainmenu/00020.png new file mode 100644 index 0000000..cd7ac65 Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/00020.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/00021.png b/tests/snapshots/nanos/test_app_mainmenu/00021.png new file mode 100644 index 0000000..0e2e44a Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/00021.png differ diff --git a/tests/snapshots/nanos/test_app_mainmenu/00022.png b/tests/snapshots/nanos/test_app_mainmenu/00022.png new file mode 100644 index 0000000..b5c1b1c Binary files /dev/null and b/tests/snapshots/nanos/test_app_mainmenu/00022.png differ diff --git a/tests/snapshots/nanos/test_sign_data/part0/00012.png b/tests/snapshots/nanos/test_app_mainmenu/00023.png similarity index 100% rename from tests/snapshots/nanos/test_sign_data/part0/00012.png rename to tests/snapshots/nanos/test_app_mainmenu/00023.png diff --git a/tests/snapshots/nanos/test_app_settings/00000.png b/tests/snapshots/nanos/test_app_settings/00000.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_app_settings/00000.png differ diff --git a/tests/snapshots/nanos/test_app_settings/00001.png b/tests/snapshots/nanos/test_app_settings/00001.png new file mode 100644 index 0000000..34cf547 Binary files /dev/null and b/tests/snapshots/nanos/test_app_settings/00001.png differ diff --git a/tests/snapshots/nanos/test_app_settings/00002.png b/tests/snapshots/nanos/test_app_settings/00002.png new file mode 100644 index 0000000..01899aa Binary files /dev/null and b/tests/snapshots/nanos/test_app_settings/00002.png differ diff --git a/tests/snapshots/nanos/test_app_settings/00003.png b/tests/snapshots/nanos/test_app_settings/00003.png new file mode 100644 index 0000000..c45fbd5 Binary files /dev/null and b/tests/snapshots/nanos/test_app_settings/00003.png differ diff --git a/tests/snapshots/nanos/test_app_settings/00004.png b/tests/snapshots/nanos/test_app_settings/00004.png new file mode 100644 index 0000000..6129497 Binary files /dev/null and b/tests/snapshots/nanos/test_app_settings/00004.png differ diff --git a/tests/snapshots/nanos/test_app_settings/00005.png b/tests/snapshots/nanos/test_app_settings/00005.png new file mode 100644 index 0000000..01899aa Binary files /dev/null and b/tests/snapshots/nanos/test_app_settings/00005.png differ diff --git a/tests/snapshots/nanos/test_app_settings/00006.png b/tests/snapshots/nanos/test_app_settings/00006.png new file mode 100644 index 0000000..38cf887 Binary files /dev/null and b/tests/snapshots/nanos/test_app_settings/00006.png differ diff --git a/tests/snapshots/nanos/test_app_settings/00007.png b/tests/snapshots/nanos/test_app_settings/00007.png new file mode 100644 index 0000000..c45fbd5 Binary files /dev/null and b/tests/snapshots/nanos/test_app_settings/00007.png differ diff --git a/tests/snapshots/nanos/test_app_settings/00008.png b/tests/snapshots/nanos/test_app_settings/00008.png new file mode 100644 index 0000000..6129497 Binary files /dev/null and b/tests/snapshots/nanos/test_app_settings/00008.png differ diff --git a/tests/snapshots/nanos/test_app_settings/00009.png b/tests/snapshots/nanos/test_app_settings/00009.png new file mode 100644 index 0000000..38cf887 Binary files /dev/null and b/tests/snapshots/nanos/test_app_settings/00009.png differ diff --git a/tests/snapshots/nanos/test_app_settings/00010.png b/tests/snapshots/nanos/test_app_settings/00010.png new file mode 100644 index 0000000..abbee17 Binary files /dev/null and b/tests/snapshots/nanos/test_app_settings/00010.png differ diff --git a/tests/snapshots/nanos/test_app_settings/00011.png b/tests/snapshots/nanos/test_app_settings/00011.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_app_settings/00011.png differ diff --git a/tests/snapshots/nanos/test_sign_data/part0/00001.png b/tests/snapshots/nanos/test_sign_data/part0/00001.png index 57be405..41c9cfc 100644 Binary files a/tests/snapshots/nanos/test_sign_data/part0/00001.png and b/tests/snapshots/nanos/test_sign_data/part0/00001.png differ diff --git a/tests/snapshots/nanos/test_sign_data/part0/00002.png b/tests/snapshots/nanos/test_sign_data/part0/00002.png index 511f12b..50f5e10 100644 Binary files a/tests/snapshots/nanos/test_sign_data/part0/00002.png and b/tests/snapshots/nanos/test_sign_data/part0/00002.png differ diff --git a/tests/snapshots/nanos/test_sign_data/part0/00003.png b/tests/snapshots/nanos/test_sign_data/part0/00003.png index 0eb0e1c..c7d8eaf 100644 Binary files a/tests/snapshots/nanos/test_sign_data/part0/00003.png and b/tests/snapshots/nanos/test_sign_data/part0/00003.png differ diff --git a/tests/snapshots/nanos/test_sign_data/part0/00004.png b/tests/snapshots/nanos/test_sign_data/part0/00004.png index 4c62025..4d2186c 100644 Binary files a/tests/snapshots/nanos/test_sign_data/part0/00004.png and b/tests/snapshots/nanos/test_sign_data/part0/00004.png differ diff --git a/tests/snapshots/nanos/test_sign_data/part0/00005.png b/tests/snapshots/nanos/test_sign_data/part0/00005.png index 82a44cf..e8649af 100644 Binary files a/tests/snapshots/nanos/test_sign_data/part0/00005.png and b/tests/snapshots/nanos/test_sign_data/part0/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_data/part0/00006.png b/tests/snapshots/nanos/test_sign_data/part0/00006.png index 704841d..5c97b05 100644 Binary files a/tests/snapshots/nanos/test_sign_data/part0/00006.png and b/tests/snapshots/nanos/test_sign_data/part0/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_data/part0/00007.png b/tests/snapshots/nanos/test_sign_data/part0/00007.png index 42cfe96..6a91b5c 100644 Binary files a/tests/snapshots/nanos/test_sign_data/part0/00007.png and b/tests/snapshots/nanos/test_sign_data/part0/00007.png differ diff --git a/tests/snapshots/nanos/test_sign_data/part0/00008.png b/tests/snapshots/nanos/test_sign_data/part0/00008.png index e93bbe7..66c411c 100644 Binary files a/tests/snapshots/nanos/test_sign_data/part0/00008.png and b/tests/snapshots/nanos/test_sign_data/part0/00008.png differ diff --git a/tests/snapshots/nanos/test_sign_data/part0/00009.png b/tests/snapshots/nanos/test_sign_data/part0/00009.png index 80d5cb0..d548246 100644 Binary files a/tests/snapshots/nanos/test_sign_data/part0/00009.png and b/tests/snapshots/nanos/test_sign_data/part0/00009.png differ diff --git a/tests/snapshots/nanos/test_sign_data/part0/00010.png b/tests/snapshots/nanos/test_sign_data/part0/00010.png deleted file mode 100644 index 685b94f..0000000 Binary files a/tests/snapshots/nanos/test_sign_data/part0/00010.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_sign_tx_blind_error/00000.png b/tests/snapshots/nanos/test_sign_tx_blind_error/00000.png new file mode 100644 index 0000000..3403719 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_blind_error/00000.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_blind_error/00001.png b/tests/snapshots/nanos/test_sign_tx_blind_error/00001.png new file mode 100644 index 0000000..c2420af Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_blind_error/00001.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_blind_error/00002.png b/tests/snapshots/nanos/test_sign_tx_blind_error/00002.png new file mode 100644 index 0000000..b31e455 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_blind_error/00002.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_blind_error/00003.png b/tests/snapshots/nanos/test_sign_tx_blind_error/00003.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_blind_error/00003.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00000.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00000.png new file mode 100644 index 0000000..22c51fd Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00000.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00001.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00001.png new file mode 100644 index 0000000..2634c9d Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00001.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00002.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00002.png new file mode 100644 index 0000000..5805e90 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00002.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00003.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00003.png new file mode 100644 index 0000000..e079cbb Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00003.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00004.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00004.png new file mode 100644 index 0000000..dbb8de9 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00004.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00005.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00005.png new file mode 100644 index 0000000..54e7e75 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00006.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00006.png new file mode 100644 index 0000000..49eaa8c Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_data/part0/00011.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00007.png similarity index 100% rename from tests/snapshots/nanos/test_sign_data/part0/00011.png rename to tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00007.png diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00008.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00008.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part0/00008.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00000.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00000.png new file mode 100644 index 0000000..8842989 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00000.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00001.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00001.png new file mode 100644 index 0000000..b2ab371 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00001.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00002.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00002.png new file mode 100644 index 0000000..2634c9d Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00002.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00003.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00003.png new file mode 100644 index 0000000..5805e90 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00003.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00004.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00004.png new file mode 100644 index 0000000..e079cbb Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00004.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00005.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00005.png new file mode 100644 index 0000000..dbb8de9 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00006.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00006.png new file mode 100644 index 0000000..d478330 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00007.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00007.png new file mode 100644 index 0000000..9ac01a1 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00007.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00008.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00008.png new file mode 100644 index 0000000..d1c20c8 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00008.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00009.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00009.png new file mode 100644 index 0000000..49eaa8c Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00009.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00010.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00010.png new file mode 100644 index 0000000..66c411c Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00010.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00011.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00011.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/part1/00011.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00000.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00000.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00000.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00001.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00001.png new file mode 100644 index 0000000..34cf547 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00001.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00002.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00002.png new file mode 100644 index 0000000..01899aa Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00002.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00003.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00003.png new file mode 100644 index 0000000..c45fbd5 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00003.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00004.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00004.png new file mode 100644 index 0000000..6129497 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00004.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00005.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00005.png new file mode 100644 index 0000000..01899aa Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00006.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00006.png new file mode 100644 index 0000000..38cf887 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00007.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00007.png new file mode 100644 index 0000000..c45fbd5 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00007.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00008.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00008.png new file mode 100644 index 0000000..6129497 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00008.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00009.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00009.png new file mode 100644 index 0000000..38cf887 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00009.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00010.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00010.png new file mode 100644 index 0000000..abbee17 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00010.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00011.png b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00011.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_subwallet_id/pretest/00011.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00000.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00000.png new file mode 100644 index 0000000..8842989 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00000.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00001.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00001.png new file mode 100644 index 0000000..b2ab371 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00001.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00002.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00002.png new file mode 100644 index 0000000..2634c9d Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00002.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00003.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00003.png new file mode 100644 index 0000000..5805e90 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00003.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00004.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00004.png new file mode 100644 index 0000000..e079cbb Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00004.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00005.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00005.png new file mode 100644 index 0000000..dbb8de9 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00006.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00006.png new file mode 100644 index 0000000..d478330 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00007.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00007.png new file mode 100644 index 0000000..9ac01a1 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00007.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00008.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00008.png new file mode 100644 index 0000000..d1c20c8 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00008.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00009.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00009.png new file mode 100644 index 0000000..66c411c Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00009.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00010.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00010.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part0/00010.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00000.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00000.png new file mode 100644 index 0000000..60f6631 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00000.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00001.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00001.png new file mode 100644 index 0000000..ec2e8fa Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00001.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00002.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00002.png new file mode 100644 index 0000000..9299f45 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00002.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00003.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00003.png new file mode 100644 index 0000000..baaa60a Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00003.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00004.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00004.png new file mode 100644 index 0000000..dbb8de9 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00004.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00005.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00005.png new file mode 100644 index 0000000..030d89a Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00006.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00006.png new file mode 100644 index 0000000..ad92600 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00007.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00007.png new file mode 100644 index 0000000..b985986 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00007.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00008.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00008.png new file mode 100644 index 0000000..e71bac5 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00008.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00009.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00009.png new file mode 100644 index 0000000..defcfc0 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00009.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00010.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00010.png new file mode 100644 index 0000000..66c411c Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00010.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00011.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00011.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part10/00011.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00000.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00000.png new file mode 100644 index 0000000..60f6631 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00000.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00001.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00001.png new file mode 100644 index 0000000..ec2e8fa Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00001.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00002.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00002.png new file mode 100644 index 0000000..9299f45 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00002.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00003.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00003.png new file mode 100644 index 0000000..baaa60a Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00003.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00004.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00004.png new file mode 100644 index 0000000..dbb8de9 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00004.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00005.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00005.png new file mode 100644 index 0000000..4a20cc8 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00006.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00006.png new file mode 100644 index 0000000..829c5ce Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00007.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00007.png new file mode 100644 index 0000000..bc5577d Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00007.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00008.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00008.png new file mode 100644 index 0000000..0a36e46 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00008.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00009.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00009.png new file mode 100644 index 0000000..f8f94c6 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00009.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00010.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00010.png new file mode 100644 index 0000000..66c411c Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00010.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00011.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00011.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part11/00011.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00000.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00000.png new file mode 100644 index 0000000..cc41d42 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00000.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00001.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00001.png new file mode 100644 index 0000000..d8913cc Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00001.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00002.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00002.png new file mode 100644 index 0000000..9bad245 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00002.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00003.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00003.png new file mode 100644 index 0000000..2e4e2ab Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00003.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00004.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00004.png new file mode 100644 index 0000000..dbb8de9 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00004.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00005.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00005.png new file mode 100644 index 0000000..1b1ab22 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00006.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00006.png new file mode 100644 index 0000000..96a8ee6 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00007.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00007.png new file mode 100644 index 0000000..d9a70bb Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00007.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00008.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00008.png new file mode 100644 index 0000000..66c411c Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00008.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00009.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00009.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part12/00009.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00000.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00000.png new file mode 100644 index 0000000..51ca1de Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00000.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00001.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00001.png new file mode 100644 index 0000000..edcc624 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00001.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00002.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00002.png new file mode 100644 index 0000000..275586b Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00002.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00003.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00003.png new file mode 100644 index 0000000..e5218d1 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00003.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00004.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00004.png new file mode 100644 index 0000000..dbb8de9 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00004.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00005.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00005.png new file mode 100644 index 0000000..35394b2 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00006.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00006.png new file mode 100644 index 0000000..88868f6 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00007.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00007.png new file mode 100644 index 0000000..0afc0d9 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00007.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00008.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00008.png new file mode 100644 index 0000000..7c6e396 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00008.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00009.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00009.png new file mode 100644 index 0000000..6f02857 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00009.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00010.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00010.png new file mode 100644 index 0000000..5af56d1 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00010.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00011.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00011.png new file mode 100644 index 0000000..4aeda32 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00011.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00012.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00012.png new file mode 100644 index 0000000..7e2b4e3 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00012.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00013.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00013.png new file mode 100644 index 0000000..66c411c Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00013.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00014.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00014.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part13/00014.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00000.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00000.png new file mode 100644 index 0000000..6f98f97 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00000.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00001.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00001.png new file mode 100644 index 0000000..97401a0 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00001.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00002.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00002.png new file mode 100644 index 0000000..2f16977 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00002.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00003.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00003.png new file mode 100644 index 0000000..543ef28 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00003.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00004.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00004.png new file mode 100644 index 0000000..dbb8de9 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00004.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00005.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00005.png new file mode 100644 index 0000000..cb3daf1 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00006.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00006.png new file mode 100644 index 0000000..7b2ccf7 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00007.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00007.png new file mode 100644 index 0000000..e2488c3 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00007.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00008.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00008.png new file mode 100644 index 0000000..6b62951 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00008.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00009.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00009.png new file mode 100644 index 0000000..88868f6 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00009.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00010.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00010.png new file mode 100644 index 0000000..0afc0d9 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00010.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00011.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00011.png new file mode 100644 index 0000000..7c6e396 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00011.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00012.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00012.png new file mode 100644 index 0000000..6f02857 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00012.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00013.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00013.png new file mode 100644 index 0000000..ce4f28f Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00013.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00014.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00014.png new file mode 100644 index 0000000..66c411c Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00014.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00015.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00015.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part3/00015.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00000.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00000.png new file mode 100644 index 0000000..51ca1de Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00000.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00001.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00001.png new file mode 100644 index 0000000..edcc624 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00001.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00002.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00002.png new file mode 100644 index 0000000..275586b Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00002.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00003.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00003.png new file mode 100644 index 0000000..e5218d1 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00003.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00004.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00004.png new file mode 100644 index 0000000..dbb8de9 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00004.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00005.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00005.png new file mode 100644 index 0000000..35394b2 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00006.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00006.png new file mode 100644 index 0000000..88868f6 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00007.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00007.png new file mode 100644 index 0000000..0afc0d9 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00007.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00008.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00008.png new file mode 100644 index 0000000..7c6e396 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00008.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00009.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00009.png new file mode 100644 index 0000000..6f02857 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00009.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00010.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00010.png new file mode 100644 index 0000000..085a8c2 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00010.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00011.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00011.png new file mode 100644 index 0000000..7a27a8f Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00011.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00012.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00012.png new file mode 100644 index 0000000..0e3add2 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00012.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00013.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00013.png new file mode 100644 index 0000000..66c411c Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00013.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00014.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00014.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part4/00014.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00000.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00000.png new file mode 100644 index 0000000..0d51010 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00000.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00001.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00001.png new file mode 100644 index 0000000..f06bb32 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00001.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00002.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00002.png new file mode 100644 index 0000000..ea8b5a1 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00002.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00003.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00003.png new file mode 100644 index 0000000..159dbd7 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00003.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00004.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00004.png new file mode 100644 index 0000000..dbb8de9 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00004.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00005.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00005.png new file mode 100644 index 0000000..1185fa9 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00006.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00006.png new file mode 100644 index 0000000..a98324c Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00007.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00007.png new file mode 100644 index 0000000..122cbcd Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00007.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00008.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00008.png new file mode 100644 index 0000000..1ebd539 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00008.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00009.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00009.png new file mode 100644 index 0000000..66c411c Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00009.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00010.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00010.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part5/00010.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00000.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00000.png new file mode 100644 index 0000000..b6eb13c Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00000.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00001.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00001.png new file mode 100644 index 0000000..1d5f233 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00001.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00002.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00002.png new file mode 100644 index 0000000..6480f6e Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00002.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00003.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00003.png new file mode 100644 index 0000000..4f260c2 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00003.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00004.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00004.png new file mode 100644 index 0000000..dbb8de9 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00004.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00005.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00005.png new file mode 100644 index 0000000..59e5bfc Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00006.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00006.png new file mode 100644 index 0000000..66c411c Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00007.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00007.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part6/00007.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00000.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00000.png new file mode 100644 index 0000000..604c333 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00000.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00001.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00001.png new file mode 100644 index 0000000..1d5f233 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00001.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00002.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00002.png new file mode 100644 index 0000000..6480f6e Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00002.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00003.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00003.png new file mode 100644 index 0000000..4f260c2 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00003.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00004.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00004.png new file mode 100644 index 0000000..dbb8de9 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00004.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00005.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00005.png new file mode 100644 index 0000000..3d2392f Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00006.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00006.png new file mode 100644 index 0000000..a1a70c0 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00007.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00007.png new file mode 100644 index 0000000..998b4c6 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00007.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00008.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00008.png new file mode 100644 index 0000000..819ac1f Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00008.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00009.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00009.png new file mode 100644 index 0000000..66c411c Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00009.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00010.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00010.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part7/00010.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00000.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00000.png new file mode 100644 index 0000000..0ec56a3 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00000.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00001.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00001.png new file mode 100644 index 0000000..884faef Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00001.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00002.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00002.png new file mode 100644 index 0000000..4429486 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00002.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00003.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00003.png new file mode 100644 index 0000000..f5e407d Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00003.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00004.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00004.png new file mode 100644 index 0000000..dbb8de9 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00004.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00005.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00005.png new file mode 100644 index 0000000..66c411c Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00006.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00006.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part8/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00000.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00000.png new file mode 100644 index 0000000..c2b04f1 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00000.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00001.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00001.png new file mode 100644 index 0000000..edcc624 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00001.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00002.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00002.png new file mode 100644 index 0000000..275586b Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00002.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00003.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00003.png new file mode 100644 index 0000000..e5218d1 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00003.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00004.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00004.png new file mode 100644 index 0000000..dbb8de9 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00004.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00005.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00005.png new file mode 100644 index 0000000..35ee89b Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00006.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00006.png new file mode 100644 index 0000000..10e3ab0 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00007.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00007.png new file mode 100644 index 0000000..644692d Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00007.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00008.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00008.png new file mode 100644 index 0000000..a9376ce Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00008.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00009.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00009.png new file mode 100644 index 0000000..f51c6ab Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00009.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00010.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00010.png new file mode 100644 index 0000000..66c411c Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00010.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00011.png b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00011.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/part9/00011.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00002.png b/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00002.png index 7910783..01899aa 100644 Binary files a/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00002.png and b/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00002.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00005.png b/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00005.png index 7910783..01899aa 100644 Binary files a/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00005.png and b/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00005.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00006.png b/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00006.png index abbee17..38cf887 100644 Binary files a/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00006.png and b/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00006.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00007.png b/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00007.png index d548246..c45fbd5 100644 Binary files a/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00007.png and b/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00007.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00008.png b/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00008.png new file mode 100644 index 0000000..6129497 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00008.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00009.png b/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00009.png new file mode 100644 index 0000000..38cf887 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00009.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00010.png b/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00010.png new file mode 100644 index 0000000..abbee17 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00010.png differ diff --git a/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00011.png b/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00011.png new file mode 100644 index 0000000..d548246 Binary files /dev/null and b/tests/snapshots/nanos/test_sign_tx_with_payload/pretest/00011.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/00000.png b/tests/snapshots/nanosp/test_app_mainmenu/00000.png index c250b11..ca542dd 100644 Binary files a/tests/snapshots/nanosp/test_app_mainmenu/00000.png and b/tests/snapshots/nanosp/test_app_mainmenu/00000.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/00001.png b/tests/snapshots/nanosp/test_app_mainmenu/00001.png index ab88bd3..d885fe6 100644 Binary files a/tests/snapshots/nanosp/test_app_mainmenu/00001.png and b/tests/snapshots/nanosp/test_app_mainmenu/00001.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/00004.png b/tests/snapshots/nanosp/test_app_mainmenu/00004.png index c250b11..ca542dd 100644 Binary files a/tests/snapshots/nanosp/test_app_mainmenu/00004.png and b/tests/snapshots/nanosp/test_app_mainmenu/00004.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/00005.png b/tests/snapshots/nanosp/test_app_mainmenu/00005.png index ab88bd3..d885fe6 100644 Binary files a/tests/snapshots/nanosp/test_app_mainmenu/00005.png and b/tests/snapshots/nanosp/test_app_mainmenu/00005.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/00006.png b/tests/snapshots/nanosp/test_app_mainmenu/00006.png index 4d7776c..907652a 100644 Binary files a/tests/snapshots/nanosp/test_app_mainmenu/00006.png and b/tests/snapshots/nanosp/test_app_mainmenu/00006.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/00010.png b/tests/snapshots/nanosp/test_app_mainmenu/00010.png index 4d7776c..907652a 100644 Binary files a/tests/snapshots/nanosp/test_app_mainmenu/00010.png and b/tests/snapshots/nanosp/test_app_mainmenu/00010.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/00011.png b/tests/snapshots/nanosp/test_app_mainmenu/00011.png index a96e622..f066b51 100644 Binary files a/tests/snapshots/nanosp/test_app_mainmenu/00011.png and b/tests/snapshots/nanosp/test_app_mainmenu/00011.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/00012.png b/tests/snapshots/nanosp/test_app_mainmenu/00012.png index c250b11..3fd7eda 100644 Binary files a/tests/snapshots/nanosp/test_app_mainmenu/00012.png and b/tests/snapshots/nanosp/test_app_mainmenu/00012.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/00013.png b/tests/snapshots/nanosp/test_app_mainmenu/00013.png index ab88bd3..6b36d09 100644 Binary files a/tests/snapshots/nanosp/test_app_mainmenu/00013.png and b/tests/snapshots/nanosp/test_app_mainmenu/00013.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/00014.png b/tests/snapshots/nanosp/test_app_mainmenu/00014.png index 7e1a28c..689283c 100644 Binary files a/tests/snapshots/nanosp/test_app_mainmenu/00014.png and b/tests/snapshots/nanosp/test_app_mainmenu/00014.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/00015.png b/tests/snapshots/nanosp/test_app_mainmenu/00015.png index 472505b..f066b51 100644 Binary files a/tests/snapshots/nanosp/test_app_mainmenu/00015.png and b/tests/snapshots/nanosp/test_app_mainmenu/00015.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/00016.png b/tests/snapshots/nanosp/test_app_mainmenu/00016.png index 77db803..a309e94 100644 Binary files a/tests/snapshots/nanosp/test_app_mainmenu/00016.png and b/tests/snapshots/nanosp/test_app_mainmenu/00016.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/00017.png b/tests/snapshots/nanosp/test_app_mainmenu/00017.png index e06738f..ca542dd 100644 Binary files a/tests/snapshots/nanosp/test_app_mainmenu/00017.png and b/tests/snapshots/nanosp/test_app_mainmenu/00017.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/00018.png b/tests/snapshots/nanosp/test_app_mainmenu/00018.png index c250b11..d885fe6 100644 Binary files a/tests/snapshots/nanosp/test_app_mainmenu/00018.png and b/tests/snapshots/nanosp/test_app_mainmenu/00018.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/00019.png b/tests/snapshots/nanosp/test_app_mainmenu/00019.png new file mode 100644 index 0000000..7e1a28c Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/00019.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/00020.png b/tests/snapshots/nanosp/test_app_mainmenu/00020.png new file mode 100644 index 0000000..a51be34 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/00020.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/00021.png b/tests/snapshots/nanosp/test_app_mainmenu/00021.png new file mode 100644 index 0000000..77db803 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/00021.png differ diff --git a/tests/snapshots/nanosp/test_app_mainmenu/00022.png b/tests/snapshots/nanosp/test_app_mainmenu/00022.png new file mode 100644 index 0000000..e06738f Binary files /dev/null and b/tests/snapshots/nanosp/test_app_mainmenu/00022.png differ diff --git a/tests/snapshots/nanox/test_sign_data/part0/00006.png b/tests/snapshots/nanosp/test_app_mainmenu/00023.png similarity index 100% rename from tests/snapshots/nanox/test_sign_data/part0/00006.png rename to tests/snapshots/nanosp/test_app_mainmenu/00023.png diff --git a/tests/snapshots/nanosp/test_app_settings/00000.png b/tests/snapshots/nanosp/test_app_settings/00000.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_app_settings/00000.png differ diff --git a/tests/snapshots/nanosp/test_app_settings/00001.png b/tests/snapshots/nanosp/test_app_settings/00001.png new file mode 100644 index 0000000..d885fe6 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_settings/00001.png differ diff --git a/tests/snapshots/nanosp/test_app_settings/00002.png b/tests/snapshots/nanosp/test_app_settings/00002.png new file mode 100644 index 0000000..907652a Binary files /dev/null and b/tests/snapshots/nanosp/test_app_settings/00002.png differ diff --git a/tests/snapshots/nanosp/test_app_settings/00003.png b/tests/snapshots/nanosp/test_app_settings/00003.png new file mode 100644 index 0000000..3fd7eda Binary files /dev/null and b/tests/snapshots/nanosp/test_app_settings/00003.png differ diff --git a/tests/snapshots/nanosp/test_app_settings/00004.png b/tests/snapshots/nanosp/test_app_settings/00004.png new file mode 100644 index 0000000..6b36d09 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_settings/00004.png differ diff --git a/tests/snapshots/nanosp/test_app_settings/00005.png b/tests/snapshots/nanosp/test_app_settings/00005.png new file mode 100644 index 0000000..907652a Binary files /dev/null and b/tests/snapshots/nanosp/test_app_settings/00005.png differ diff --git a/tests/snapshots/nanosp/test_app_settings/00006.png b/tests/snapshots/nanosp/test_app_settings/00006.png new file mode 100644 index 0000000..f066b51 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_settings/00006.png differ diff --git a/tests/snapshots/nanosp/test_app_settings/00007.png b/tests/snapshots/nanosp/test_app_settings/00007.png new file mode 100644 index 0000000..3fd7eda Binary files /dev/null and b/tests/snapshots/nanosp/test_app_settings/00007.png differ diff --git a/tests/snapshots/nanosp/test_app_settings/00008.png b/tests/snapshots/nanosp/test_app_settings/00008.png new file mode 100644 index 0000000..6b36d09 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_settings/00008.png differ diff --git a/tests/snapshots/nanosp/test_app_settings/00009.png b/tests/snapshots/nanosp/test_app_settings/00009.png new file mode 100644 index 0000000..f066b51 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_settings/00009.png differ diff --git a/tests/snapshots/nanosp/test_app_settings/00010.png b/tests/snapshots/nanosp/test_app_settings/00010.png new file mode 100644 index 0000000..a309e94 Binary files /dev/null and b/tests/snapshots/nanosp/test_app_settings/00010.png differ diff --git a/tests/snapshots/nanosp/test_app_settings/00011.png b/tests/snapshots/nanosp/test_app_settings/00011.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_app_settings/00011.png differ diff --git a/tests/snapshots/nanosp/test_get_proof_accepted/00001.png b/tests/snapshots/nanosp/test_get_proof_accepted/00001.png index ef4e31a..a48e336 100644 Binary files a/tests/snapshots/nanosp/test_get_proof_accepted/00001.png and b/tests/snapshots/nanosp/test_get_proof_accepted/00001.png differ diff --git a/tests/snapshots/nanosp/test_get_proof_accepted/00002.png b/tests/snapshots/nanosp/test_get_proof_accepted/00002.png index 032986a..7caff6a 100644 Binary files a/tests/snapshots/nanosp/test_get_proof_accepted/00002.png and b/tests/snapshots/nanosp/test_get_proof_accepted/00002.png differ diff --git a/tests/snapshots/nanosp/test_get_proof_accepted/00003.png b/tests/snapshots/nanosp/test_get_proof_accepted/00003.png index 0de3456..450cc7d 100644 Binary files a/tests/snapshots/nanosp/test_get_proof_accepted/00003.png and b/tests/snapshots/nanosp/test_get_proof_accepted/00003.png differ diff --git a/tests/snapshots/nanosp/test_get_proof_accepted/00005.png b/tests/snapshots/nanosp/test_get_proof_accepted/00005.png index c250b11..ca542dd 100644 Binary files a/tests/snapshots/nanosp/test_get_proof_accepted/00005.png and b/tests/snapshots/nanosp/test_get_proof_accepted/00005.png differ diff --git a/tests/snapshots/nanosp/test_get_proof_refused/00001.png b/tests/snapshots/nanosp/test_get_proof_refused/00001.png index ef4e31a..a48e336 100644 Binary files a/tests/snapshots/nanosp/test_get_proof_refused/00001.png and b/tests/snapshots/nanosp/test_get_proof_refused/00001.png differ diff --git a/tests/snapshots/nanosp/test_get_proof_refused/00002.png b/tests/snapshots/nanosp/test_get_proof_refused/00002.png index 032986a..7caff6a 100644 Binary files a/tests/snapshots/nanosp/test_get_proof_refused/00002.png and b/tests/snapshots/nanosp/test_get_proof_refused/00002.png differ diff --git a/tests/snapshots/nanosp/test_get_proof_refused/00003.png b/tests/snapshots/nanosp/test_get_proof_refused/00003.png index 0de3456..450cc7d 100644 Binary files a/tests/snapshots/nanosp/test_get_proof_refused/00003.png and b/tests/snapshots/nanosp/test_get_proof_refused/00003.png differ diff --git a/tests/snapshots/nanosp/test_get_proof_refused/00005.png b/tests/snapshots/nanosp/test_get_proof_refused/00005.png index c922246..e90cd9d 100644 Binary files a/tests/snapshots/nanosp/test_get_proof_refused/00005.png and b/tests/snapshots/nanosp/test_get_proof_refused/00005.png differ diff --git a/tests/snapshots/nanosp/test_get_proof_refused/00006.png b/tests/snapshots/nanosp/test_get_proof_refused/00006.png index c250b11..ca542dd 100644 Binary files a/tests/snapshots/nanosp/test_get_proof_refused/00006.png and b/tests/snapshots/nanosp/test_get_proof_refused/00006.png differ diff --git a/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00001.png b/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00001.png index 032986a..7caff6a 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00001.png and b/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00001.png differ diff --git a/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00002.png b/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00002.png index 0de3456..450cc7d 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00002.png and b/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00002.png differ diff --git a/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00004.png b/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00004.png index c250b11..ca542dd 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00004.png and b/tests/snapshots/nanosp/test_get_public_key_confirm_accepted/00004.png differ diff --git a/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00001.png b/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00001.png index 032986a..7caff6a 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00001.png and b/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00001.png differ diff --git a/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00002.png b/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00002.png index 0de3456..450cc7d 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00002.png and b/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00002.png differ diff --git a/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00004.png b/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00004.png index c922246..e90cd9d 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00004.png and b/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00004.png differ diff --git a/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00005.png b/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00005.png index c250b11..ca542dd 100644 Binary files a/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00005.png and b/tests/snapshots/nanosp/test_get_public_key_confirm_refused/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_data/part0/00001.png b/tests/snapshots/nanosp/test_sign_data/part0/00001.png index b0089ff..b667376 100644 Binary files a/tests/snapshots/nanosp/test_sign_data/part0/00001.png and b/tests/snapshots/nanosp/test_sign_data/part0/00001.png differ diff --git a/tests/snapshots/nanosp/test_sign_data/part0/00002.png b/tests/snapshots/nanosp/test_sign_data/part0/00002.png index f9c3bba..02f919c 100644 Binary files a/tests/snapshots/nanosp/test_sign_data/part0/00002.png and b/tests/snapshots/nanosp/test_sign_data/part0/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_data/part0/00003.png b/tests/snapshots/nanosp/test_sign_data/part0/00003.png index 1e900e6..0a81235 100644 Binary files a/tests/snapshots/nanosp/test_sign_data/part0/00003.png and b/tests/snapshots/nanosp/test_sign_data/part0/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_data/part0/00004.png b/tests/snapshots/nanosp/test_sign_data/part0/00004.png index 2a37e11..53ae651 100644 Binary files a/tests/snapshots/nanosp/test_sign_data/part0/00004.png and b/tests/snapshots/nanosp/test_sign_data/part0/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_data/part0/00005.png b/tests/snapshots/nanosp/test_sign_data/part0/00005.png index 53ae651..ca542dd 100644 Binary files a/tests/snapshots/nanosp/test_sign_data/part0/00005.png and b/tests/snapshots/nanosp/test_sign_data/part0/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_data/part1/00001.png b/tests/snapshots/nanosp/test_sign_data/part1/00001.png index 3c0aab4..510724b 100644 Binary files a/tests/snapshots/nanosp/test_sign_data/part1/00001.png and b/tests/snapshots/nanosp/test_sign_data/part1/00001.png differ diff --git a/tests/snapshots/nanosp/test_sign_data/part1/00002.png b/tests/snapshots/nanosp/test_sign_data/part1/00002.png index 02fc156..7566bce 100644 Binary files a/tests/snapshots/nanosp/test_sign_data/part1/00002.png and b/tests/snapshots/nanosp/test_sign_data/part1/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_data/part1/00003.png b/tests/snapshots/nanosp/test_sign_data/part1/00003.png index 3886602..184f401 100644 Binary files a/tests/snapshots/nanosp/test_sign_data/part1/00003.png and b/tests/snapshots/nanosp/test_sign_data/part1/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_data/part1/00004.png b/tests/snapshots/nanosp/test_sign_data/part1/00004.png index a4ed1d5..426e5c7 100644 Binary files a/tests/snapshots/nanosp/test_sign_data/part1/00004.png and b/tests/snapshots/nanosp/test_sign_data/part1/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_data/part1/00006.png b/tests/snapshots/nanosp/test_sign_data/part1/00006.png index c250b11..ca542dd 100644 Binary files a/tests/snapshots/nanosp/test_sign_data/part1/00006.png and b/tests/snapshots/nanosp/test_sign_data/part1/00006.png differ diff --git a/tests/snapshots/nanosp/test_sign_data_refused/00003.png b/tests/snapshots/nanosp/test_sign_data_refused/00003.png index c922246..e90cd9d 100644 Binary files a/tests/snapshots/nanosp/test_sign_data_refused/00003.png and b/tests/snapshots/nanosp/test_sign_data_refused/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_data_refused/00004.png b/tests/snapshots/nanosp/test_sign_data_refused/00004.png index c250b11..ca542dd 100644 Binary files a/tests/snapshots/nanosp/test_sign_data_refused/00004.png and b/tests/snapshots/nanosp/test_sign_data_refused/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_blind_error/00000.png b/tests/snapshots/nanosp/test_sign_tx_blind_error/00000.png new file mode 100644 index 0000000..11ea8a5 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_blind_error/00000.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_blind_error/00001.png b/tests/snapshots/nanosp/test_sign_tx_blind_error/00001.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_blind_error/00001.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_no_payload/00004.png b/tests/snapshots/nanosp/test_sign_tx_no_payload/00004.png index c250b11..ca542dd 100644 Binary files a/tests/snapshots/nanosp/test_sign_tx_no_payload/00004.png and b/tests/snapshots/nanosp/test_sign_tx_no_payload/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_refused/00004.png b/tests/snapshots/nanosp/test_sign_tx_refused/00004.png index c922246..e90cd9d 100644 Binary files a/tests/snapshots/nanosp/test_sign_tx_refused/00004.png and b/tests/snapshots/nanosp/test_sign_tx_refused/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_refused/00005.png b/tests/snapshots/nanosp/test_sign_tx_refused/00005.png index c250b11..ca542dd 100644 Binary files a/tests/snapshots/nanosp/test_sign_tx_refused/00005.png and b/tests/snapshots/nanosp/test_sign_tx_refused/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00000.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00000.png new file mode 100644 index 0000000..e5d8a3e Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00000.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00001.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00001.png new file mode 100644 index 0000000..897a46e Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00001.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00002.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00003.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00003.png new file mode 100644 index 0000000..2bfd330 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00004.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00004.png new file mode 100644 index 0000000..dcb264e Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00005.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00005.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00006.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00006.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part0/00006.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00000.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00000.png new file mode 100644 index 0000000..df51419 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00000.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00001.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00001.png new file mode 100644 index 0000000..b4d7bef Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00001.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00002.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00002.png new file mode 100644 index 0000000..897a46e Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00003.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00003.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00004.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00004.png new file mode 100644 index 0000000..6e0b41e Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00005.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00005.png new file mode 100644 index 0000000..dcb264e Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00006.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00006.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00006.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00007.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00007.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/part1/00007.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00000.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00000.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00000.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00001.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00001.png new file mode 100644 index 0000000..d885fe6 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00001.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00002.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00002.png new file mode 100644 index 0000000..907652a Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00003.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00003.png new file mode 100644 index 0000000..3fd7eda Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00004.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00004.png new file mode 100644 index 0000000..6b36d09 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00005.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00005.png new file mode 100644 index 0000000..907652a Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00006.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00006.png new file mode 100644 index 0000000..f066b51 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00006.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00007.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00007.png new file mode 100644 index 0000000..3fd7eda Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00007.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00008.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00008.png new file mode 100644 index 0000000..6b36d09 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00008.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00009.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00009.png new file mode 100644 index 0000000..f066b51 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00009.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00010.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00010.png new file mode 100644 index 0000000..a309e94 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00010.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00011.png b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00011.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_subwallet_id/pretest/00011.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00000.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00000.png new file mode 100644 index 0000000..df51419 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00000.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00001.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00001.png new file mode 100644 index 0000000..b4d7bef Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00001.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00002.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00002.png new file mode 100644 index 0000000..897a46e Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00003.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00003.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00004.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00004.png new file mode 100644 index 0000000..6e0b41e Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00005.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00005.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00006.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00006.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part0/00006.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part1/00005.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part1/00005.png index c250b11..ca542dd 100644 Binary files a/tests/snapshots/nanosp/test_sign_tx_with_payload/part1/00005.png and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part1/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00000.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00000.png new file mode 100644 index 0000000..2e7b530 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00000.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00001.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00001.png new file mode 100644 index 0000000..c377594 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00001.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00002.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00003.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00003.png new file mode 100644 index 0000000..64c4924 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00004.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00004.png new file mode 100644 index 0000000..da3bbd1 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00005.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00005.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00006.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00006.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00006.png differ diff --git a/tests/snapshots/nanosp/test_sign_data/part0/00006.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00007.png similarity index 100% rename from tests/snapshots/nanosp/test_sign_data/part0/00006.png rename to tests/snapshots/nanosp/test_sign_tx_with_payload/part10/00007.png diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00000.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00000.png new file mode 100644 index 0000000..2e7b530 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00000.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00001.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00001.png new file mode 100644 index 0000000..c377594 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00001.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00002.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00003.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00003.png new file mode 100644 index 0000000..841352d Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00004.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00004.png new file mode 100644 index 0000000..b42dc89 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00005.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00005.png new file mode 100644 index 0000000..5cfc40b Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00006.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00006.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00006.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00007.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00007.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part11/00007.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part12/00000.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part12/00000.png new file mode 100644 index 0000000..324b573 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part12/00000.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part12/00001.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part12/00001.png new file mode 100644 index 0000000..ca9b77a Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part12/00001.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part12/00002.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part12/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part12/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part12/00003.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part12/00003.png new file mode 100644 index 0000000..e033d24 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part12/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part12/00004.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part12/00004.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part12/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part12/00005.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part12/00005.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part12/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00000.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00000.png new file mode 100644 index 0000000..24f6ad5 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00000.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00001.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00001.png new file mode 100644 index 0000000..74c485c Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00001.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00002.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00003.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00003.png new file mode 100644 index 0000000..a9d193f Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00004.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00004.png new file mode 100644 index 0000000..d0daa10 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00005.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00005.png new file mode 100644 index 0000000..498f6f7 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00006.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00006.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00006.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00007.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00007.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00007.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00008.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00008.png new file mode 100644 index 0000000..c250b11 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part13/00008.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00000.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00000.png index 246801d..a180960 100644 Binary files a/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00000.png and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00000.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00004.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00004.png index 284142c..a6e8707 100644 Binary files a/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00004.png and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00005.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00005.png index 60cb43a..d0daa10 100644 Binary files a/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00005.png and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00006.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00006.png index 8708782..f069ebe 100644 Binary files a/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00006.png and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00006.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00007.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00007.png index efc6594..53ae651 100644 Binary files a/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00007.png and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00007.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00008.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00008.png index f069ebe..ca542dd 100644 Binary files a/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00008.png and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part2/00008.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00000.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00000.png new file mode 100644 index 0000000..8200906 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00000.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00001.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00001.png new file mode 100644 index 0000000..0784a10 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00001.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00002.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00003.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00003.png new file mode 100644 index 0000000..1d1b51b Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00004.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00004.png new file mode 100644 index 0000000..d0daa10 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00005.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00005.png new file mode 100644 index 0000000..f069ebe Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00006.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00006.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00006.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00007.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00007.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00007.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00008.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00008.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00008.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00009.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00009.png new file mode 100644 index 0000000..c250b11 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part3/00009.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00000.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00000.png new file mode 100644 index 0000000..24f6ad5 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00000.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00001.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00001.png new file mode 100644 index 0000000..74c485c Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00001.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00002.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00003.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00003.png new file mode 100644 index 0000000..a9d193f Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00004.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00004.png new file mode 100644 index 0000000..d0daa10 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00005.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00005.png new file mode 100644 index 0000000..90cbc56 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00006.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00006.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00006.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00007.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00007.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00007.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00008.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00008.png new file mode 100644 index 0000000..c250b11 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part4/00008.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00000.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00000.png new file mode 100644 index 0000000..13c54cd Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00000.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00001.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00001.png new file mode 100644 index 0000000..d968f76 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00001.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00002.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00003.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00003.png new file mode 100644 index 0000000..4f5596c Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00004.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00004.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00005.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00005.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00006.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00006.png new file mode 100644 index 0000000..c250b11 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part5/00006.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part6/00000.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part6/00000.png new file mode 100644 index 0000000..17cdcf2 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part6/00000.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part6/00001.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part6/00001.png new file mode 100644 index 0000000..56be4f9 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part6/00001.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part6/00002.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part6/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part6/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part6/00003.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part6/00003.png new file mode 100644 index 0000000..3e8cb3d Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part6/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part6/00004.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part6/00004.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part6/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part6/00005.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part6/00005.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part6/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00000.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00000.png new file mode 100644 index 0000000..885f45f Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00000.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00001.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00001.png new file mode 100644 index 0000000..56be4f9 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00001.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00002.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00003.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00003.png new file mode 100644 index 0000000..06502b5 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00004.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00004.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00005.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00005.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00006.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00006.png new file mode 100644 index 0000000..c250b11 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part7/00006.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part8/00000.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part8/00000.png new file mode 100644 index 0000000..15c8e6e Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part8/00000.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part8/00001.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part8/00001.png new file mode 100644 index 0000000..c2e3f08 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part8/00001.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part8/00002.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part8/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part8/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part8/00003.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part8/00003.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part8/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part8/00004.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part8/00004.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part8/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00000.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00000.png new file mode 100644 index 0000000..b25e3e4 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00000.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00001.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00001.png new file mode 100644 index 0000000..74c485c Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00001.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00002.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00003.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00003.png new file mode 100644 index 0000000..11a869e Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00003.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00004.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00004.png new file mode 100644 index 0000000..fb00806 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00004.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00005.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00005.png new file mode 100644 index 0000000..0a0b3ec Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00006.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00006.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00006.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00007.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00007.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/part9/00007.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00000.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00000.png index c250b11..ca542dd 100644 Binary files a/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00000.png and b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00000.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00001.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00001.png index ab88bd3..d885fe6 100644 Binary files a/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00001.png and b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00001.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00002.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00002.png index 4d7776c..907652a 100644 Binary files a/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00002.png and b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00002.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00005.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00005.png index 4d7776c..907652a 100644 Binary files a/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00005.png and b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00005.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00006.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00006.png index a96e622..f066b51 100644 Binary files a/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00006.png and b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00006.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00007.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00007.png index c250b11..3fd7eda 100644 Binary files a/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00007.png and b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00007.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00008.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00008.png new file mode 100644 index 0000000..6b36d09 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00008.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00009.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00009.png new file mode 100644 index 0000000..f066b51 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00009.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00010.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00010.png new file mode 100644 index 0000000..a309e94 Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00010.png differ diff --git a/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00011.png b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00011.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanosp/test_sign_tx_with_payload/pretest/00011.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/00006.png b/tests/snapshots/nanox/test_app_mainmenu/00006.png index 4cc051f..907652a 100644 Binary files a/tests/snapshots/nanox/test_app_mainmenu/00006.png and b/tests/snapshots/nanox/test_app_mainmenu/00006.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/00010.png b/tests/snapshots/nanox/test_app_mainmenu/00010.png index 4cc051f..907652a 100644 Binary files a/tests/snapshots/nanox/test_app_mainmenu/00010.png and b/tests/snapshots/nanox/test_app_mainmenu/00010.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/00011.png b/tests/snapshots/nanox/test_app_mainmenu/00011.png index 4c03340..f066b51 100644 Binary files a/tests/snapshots/nanox/test_app_mainmenu/00011.png and b/tests/snapshots/nanox/test_app_mainmenu/00011.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/00012.png b/tests/snapshots/nanox/test_app_mainmenu/00012.png index ca542dd..3fd7eda 100644 Binary files a/tests/snapshots/nanox/test_app_mainmenu/00012.png and b/tests/snapshots/nanox/test_app_mainmenu/00012.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/00013.png b/tests/snapshots/nanox/test_app_mainmenu/00013.png index d885fe6..6b36d09 100644 Binary files a/tests/snapshots/nanox/test_app_mainmenu/00013.png and b/tests/snapshots/nanox/test_app_mainmenu/00013.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/00014.png b/tests/snapshots/nanox/test_app_mainmenu/00014.png index 7e1a28c..689283c 100644 Binary files a/tests/snapshots/nanox/test_app_mainmenu/00014.png and b/tests/snapshots/nanox/test_app_mainmenu/00014.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/00015.png b/tests/snapshots/nanox/test_app_mainmenu/00015.png index 472505b..f066b51 100644 Binary files a/tests/snapshots/nanox/test_app_mainmenu/00015.png and b/tests/snapshots/nanox/test_app_mainmenu/00015.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/00016.png b/tests/snapshots/nanox/test_app_mainmenu/00016.png index 77db803..a309e94 100644 Binary files a/tests/snapshots/nanox/test_app_mainmenu/00016.png and b/tests/snapshots/nanox/test_app_mainmenu/00016.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/00017.png b/tests/snapshots/nanox/test_app_mainmenu/00017.png index e06738f..ca542dd 100644 Binary files a/tests/snapshots/nanox/test_app_mainmenu/00017.png and b/tests/snapshots/nanox/test_app_mainmenu/00017.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/00018.png b/tests/snapshots/nanox/test_app_mainmenu/00018.png index ca542dd..d885fe6 100644 Binary files a/tests/snapshots/nanox/test_app_mainmenu/00018.png and b/tests/snapshots/nanox/test_app_mainmenu/00018.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/00019.png b/tests/snapshots/nanox/test_app_mainmenu/00019.png new file mode 100644 index 0000000..7e1a28c Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/00019.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/00020.png b/tests/snapshots/nanox/test_app_mainmenu/00020.png new file mode 100644 index 0000000..a51be34 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/00020.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/00021.png b/tests/snapshots/nanox/test_app_mainmenu/00021.png new file mode 100644 index 0000000..77db803 Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/00021.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/00022.png b/tests/snapshots/nanox/test_app_mainmenu/00022.png new file mode 100644 index 0000000..e06738f Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/00022.png differ diff --git a/tests/snapshots/nanox/test_app_mainmenu/00023.png b/tests/snapshots/nanox/test_app_mainmenu/00023.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_app_mainmenu/00023.png differ diff --git a/tests/snapshots/nanox/test_app_settings/00000.png b/tests/snapshots/nanox/test_app_settings/00000.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_app_settings/00000.png differ diff --git a/tests/snapshots/nanox/test_app_settings/00001.png b/tests/snapshots/nanox/test_app_settings/00001.png new file mode 100644 index 0000000..d885fe6 Binary files /dev/null and b/tests/snapshots/nanox/test_app_settings/00001.png differ diff --git a/tests/snapshots/nanox/test_app_settings/00002.png b/tests/snapshots/nanox/test_app_settings/00002.png new file mode 100644 index 0000000..907652a Binary files /dev/null and b/tests/snapshots/nanox/test_app_settings/00002.png differ diff --git a/tests/snapshots/nanox/test_app_settings/00003.png b/tests/snapshots/nanox/test_app_settings/00003.png new file mode 100644 index 0000000..3fd7eda Binary files /dev/null and b/tests/snapshots/nanox/test_app_settings/00003.png differ diff --git a/tests/snapshots/nanox/test_app_settings/00004.png b/tests/snapshots/nanox/test_app_settings/00004.png new file mode 100644 index 0000000..6b36d09 Binary files /dev/null and b/tests/snapshots/nanox/test_app_settings/00004.png differ diff --git a/tests/snapshots/nanox/test_app_settings/00005.png b/tests/snapshots/nanox/test_app_settings/00005.png new file mode 100644 index 0000000..907652a Binary files /dev/null and b/tests/snapshots/nanox/test_app_settings/00005.png differ diff --git a/tests/snapshots/nanox/test_app_settings/00006.png b/tests/snapshots/nanox/test_app_settings/00006.png new file mode 100644 index 0000000..f066b51 Binary files /dev/null and b/tests/snapshots/nanox/test_app_settings/00006.png differ diff --git a/tests/snapshots/nanox/test_app_settings/00007.png b/tests/snapshots/nanox/test_app_settings/00007.png new file mode 100644 index 0000000..3fd7eda Binary files /dev/null and b/tests/snapshots/nanox/test_app_settings/00007.png differ diff --git a/tests/snapshots/nanox/test_app_settings/00008.png b/tests/snapshots/nanox/test_app_settings/00008.png new file mode 100644 index 0000000..6b36d09 Binary files /dev/null and b/tests/snapshots/nanox/test_app_settings/00008.png differ diff --git a/tests/snapshots/nanox/test_app_settings/00009.png b/tests/snapshots/nanox/test_app_settings/00009.png new file mode 100644 index 0000000..f066b51 Binary files /dev/null and b/tests/snapshots/nanox/test_app_settings/00009.png differ diff --git a/tests/snapshots/nanox/test_app_settings/00010.png b/tests/snapshots/nanox/test_app_settings/00010.png new file mode 100644 index 0000000..a309e94 Binary files /dev/null and b/tests/snapshots/nanox/test_app_settings/00010.png differ diff --git a/tests/snapshots/nanox/test_app_settings/00011.png b/tests/snapshots/nanox/test_app_settings/00011.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_app_settings/00011.png differ diff --git a/tests/snapshots/nanox/test_sign_data/part0/00001.png b/tests/snapshots/nanox/test_sign_data/part0/00001.png index 546d087..b667376 100644 Binary files a/tests/snapshots/nanox/test_sign_data/part0/00001.png and b/tests/snapshots/nanox/test_sign_data/part0/00001.png differ diff --git a/tests/snapshots/nanox/test_sign_data/part0/00002.png b/tests/snapshots/nanox/test_sign_data/part0/00002.png index 5dc7cbf..02f919c 100644 Binary files a/tests/snapshots/nanox/test_sign_data/part0/00002.png and b/tests/snapshots/nanox/test_sign_data/part0/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_data/part0/00003.png b/tests/snapshots/nanox/test_sign_data/part0/00003.png index a55f0e6..0a81235 100644 Binary files a/tests/snapshots/nanox/test_sign_data/part0/00003.png and b/tests/snapshots/nanox/test_sign_data/part0/00003.png differ diff --git a/tests/snapshots/nanox/test_sign_data/part0/00004.png b/tests/snapshots/nanox/test_sign_data/part0/00004.png index 54735e5..53ae651 100644 Binary files a/tests/snapshots/nanox/test_sign_data/part0/00004.png and b/tests/snapshots/nanox/test_sign_data/part0/00004.png differ diff --git a/tests/snapshots/nanox/test_sign_data/part0/00005.png b/tests/snapshots/nanox/test_sign_data/part0/00005.png index 53ae651..ca542dd 100644 Binary files a/tests/snapshots/nanox/test_sign_data/part0/00005.png and b/tests/snapshots/nanox/test_sign_data/part0/00005.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_blind_error/00000.png b/tests/snapshots/nanox/test_sign_tx_blind_error/00000.png new file mode 100644 index 0000000..11ea8a5 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_blind_error/00000.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_blind_error/00001.png b/tests/snapshots/nanox/test_sign_tx_blind_error/00001.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_blind_error/00001.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00000.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00000.png new file mode 100644 index 0000000..e5d8a3e Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00000.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00001.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00001.png new file mode 100644 index 0000000..897a46e Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00001.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00002.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00003.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00003.png new file mode 100644 index 0000000..2bfd330 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00003.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00004.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00004.png new file mode 100644 index 0000000..dcb264e Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00004.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00005.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00005.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00005.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00006.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00006.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part0/00006.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00000.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00000.png new file mode 100644 index 0000000..df51419 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00000.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00001.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00001.png new file mode 100644 index 0000000..b4d7bef Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00001.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00002.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00002.png new file mode 100644 index 0000000..897a46e Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00003.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00003.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00003.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00004.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00004.png new file mode 100644 index 0000000..6e0b41e Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00004.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00005.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00005.png new file mode 100644 index 0000000..dcb264e Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00005.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00006.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00006.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00006.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00007.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00007.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/part1/00007.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00000.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00000.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00000.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00001.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00001.png new file mode 100644 index 0000000..d885fe6 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00001.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00002.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00002.png new file mode 100644 index 0000000..907652a Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00003.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00003.png new file mode 100644 index 0000000..3fd7eda Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00003.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00004.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00004.png new file mode 100644 index 0000000..6b36d09 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00004.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00005.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00005.png new file mode 100644 index 0000000..907652a Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00005.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00006.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00006.png new file mode 100644 index 0000000..f066b51 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00006.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00007.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00007.png new file mode 100644 index 0000000..3fd7eda Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00007.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00008.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00008.png new file mode 100644 index 0000000..6b36d09 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00008.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00009.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00009.png new file mode 100644 index 0000000..f066b51 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00009.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00010.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00010.png new file mode 100644 index 0000000..a309e94 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00010.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00011.png b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00011.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_subwallet_id/pretest/00011.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00000.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00000.png new file mode 100644 index 0000000..df51419 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00000.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00001.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00001.png new file mode 100644 index 0000000..b4d7bef Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00001.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00002.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00002.png new file mode 100644 index 0000000..897a46e Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00003.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00003.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00003.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00004.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00004.png new file mode 100644 index 0000000..6e0b41e Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00004.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00005.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00005.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00005.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00006.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00006.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part0/00006.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00000.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00000.png new file mode 100644 index 0000000..2e7b530 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00000.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00001.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00001.png new file mode 100644 index 0000000..c377594 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00001.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00002.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00003.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00003.png new file mode 100644 index 0000000..64c4924 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00003.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00004.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00004.png new file mode 100644 index 0000000..da3bbd1 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00004.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00005.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00005.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00005.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00006.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00006.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part10/00006.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00000.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00000.png new file mode 100644 index 0000000..2e7b530 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00000.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00001.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00001.png new file mode 100644 index 0000000..c377594 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00001.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00002.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00003.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00003.png new file mode 100644 index 0000000..841352d Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00003.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00004.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00004.png new file mode 100644 index 0000000..b42dc89 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00004.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00005.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00005.png new file mode 100644 index 0000000..5cfc40b Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00005.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00006.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00006.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00006.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00007.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00007.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part11/00007.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part12/00000.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part12/00000.png new file mode 100644 index 0000000..324b573 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part12/00000.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part12/00001.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part12/00001.png new file mode 100644 index 0000000..ca9b77a Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part12/00001.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part12/00002.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part12/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part12/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part12/00003.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part12/00003.png new file mode 100644 index 0000000..e033d24 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part12/00003.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part12/00004.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part12/00004.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part12/00004.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part12/00005.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part12/00005.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part12/00005.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00000.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00000.png new file mode 100644 index 0000000..24f6ad5 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00000.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00001.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00001.png new file mode 100644 index 0000000..74c485c Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00001.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00002.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00003.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00003.png new file mode 100644 index 0000000..a9d193f Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00003.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00004.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00004.png new file mode 100644 index 0000000..d0daa10 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00004.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00005.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00005.png new file mode 100644 index 0000000..498f6f7 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00005.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00006.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00006.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00006.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00007.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00007.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part13/00007.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00000.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00000.png new file mode 100644 index 0000000..8200906 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00000.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00001.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00001.png new file mode 100644 index 0000000..0784a10 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00001.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00002.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00003.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00003.png new file mode 100644 index 0000000..1d1b51b Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00003.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00004.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00004.png new file mode 100644 index 0000000..d0daa10 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00004.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00005.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00005.png new file mode 100644 index 0000000..f069ebe Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00005.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00006.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00006.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00006.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00007.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00007.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part3/00007.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00000.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00000.png new file mode 100644 index 0000000..24f6ad5 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00000.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00001.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00001.png new file mode 100644 index 0000000..74c485c Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00001.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00002.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00003.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00003.png new file mode 100644 index 0000000..a9d193f Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00003.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00004.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00004.png new file mode 100644 index 0000000..d0daa10 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00004.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00005.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00005.png new file mode 100644 index 0000000..90cbc56 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00005.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00006.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00006.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00006.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00007.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00007.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part4/00007.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part5/00000.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part5/00000.png new file mode 100644 index 0000000..13c54cd Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part5/00000.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part5/00001.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part5/00001.png new file mode 100644 index 0000000..d968f76 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part5/00001.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part5/00002.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part5/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part5/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part5/00003.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part5/00003.png new file mode 100644 index 0000000..4f5596c Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part5/00003.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part5/00004.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part5/00004.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part5/00004.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part5/00005.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part5/00005.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part5/00005.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part6/00000.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part6/00000.png new file mode 100644 index 0000000..17cdcf2 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part6/00000.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part6/00001.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part6/00001.png new file mode 100644 index 0000000..56be4f9 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part6/00001.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part6/00002.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part6/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part6/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part6/00003.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part6/00003.png new file mode 100644 index 0000000..3e8cb3d Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part6/00003.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part6/00004.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part6/00004.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part6/00004.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part6/00005.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part6/00005.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part6/00005.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part7/00000.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part7/00000.png new file mode 100644 index 0000000..885f45f Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part7/00000.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part7/00001.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part7/00001.png new file mode 100644 index 0000000..56be4f9 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part7/00001.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part7/00002.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part7/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part7/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part7/00003.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part7/00003.png new file mode 100644 index 0000000..06502b5 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part7/00003.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part7/00004.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part7/00004.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part7/00004.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part7/00005.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part7/00005.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part7/00005.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part8/00000.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part8/00000.png new file mode 100644 index 0000000..15c8e6e Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part8/00000.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part8/00001.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part8/00001.png new file mode 100644 index 0000000..c2e3f08 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part8/00001.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part8/00002.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part8/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part8/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part8/00003.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part8/00003.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part8/00003.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part8/00004.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part8/00004.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part8/00004.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00000.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00000.png new file mode 100644 index 0000000..b25e3e4 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00000.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00001.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00001.png new file mode 100644 index 0000000..74c485c Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00001.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00002.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00002.png new file mode 100644 index 0000000..5ba5500 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00003.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00003.png new file mode 100644 index 0000000..11a869e Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00003.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00004.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00004.png new file mode 100644 index 0000000..fb00806 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00004.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00005.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00005.png new file mode 100644 index 0000000..0a0b3ec Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00005.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00006.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00006.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00006.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00007.png b/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00007.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/part9/00007.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00002.png b/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00002.png index 4cc051f..907652a 100644 Binary files a/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00002.png and b/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00002.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00005.png b/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00005.png index 4cc051f..907652a 100644 Binary files a/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00005.png and b/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00005.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00006.png b/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00006.png index 4c03340..f066b51 100644 Binary files a/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00006.png and b/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00006.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00007.png b/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00007.png index ca542dd..3fd7eda 100644 Binary files a/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00007.png and b/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00007.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00008.png b/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00008.png new file mode 100644 index 0000000..6b36d09 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00008.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00009.png b/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00009.png new file mode 100644 index 0000000..f066b51 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00009.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00010.png b/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00010.png new file mode 100644 index 0000000..a309e94 Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00010.png differ diff --git a/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00011.png b/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00011.png new file mode 100644 index 0000000..ca542dd Binary files /dev/null and b/tests/snapshots/nanox/test_sign_tx_with_payload/pretest/00011.png differ diff --git a/tests/snapshots/stax/test_app_mainmenu/00001.png b/tests/snapshots/stax/test_app_mainmenu/00001.png index 5b38909..dfb48b6 100644 Binary files a/tests/snapshots/stax/test_app_mainmenu/00001.png and b/tests/snapshots/stax/test_app_mainmenu/00001.png differ diff --git a/tests/snapshots/stax/test_app_mainmenu/00002.png b/tests/snapshots/stax/test_app_mainmenu/00002.png index 8b281f2..c7cb51a 100644 Binary files a/tests/snapshots/stax/test_app_mainmenu/00002.png and b/tests/snapshots/stax/test_app_mainmenu/00002.png differ diff --git a/tests/snapshots/stax/test_get_proof_accepted/00006.png b/tests/snapshots/stax/test_app_settings/00000.png similarity index 100% rename from tests/snapshots/stax/test_get_proof_accepted/00006.png rename to tests/snapshots/stax/test_app_settings/00000.png diff --git a/tests/snapshots/stax/test_app_settings/00001.png b/tests/snapshots/stax/test_app_settings/00001.png new file mode 100644 index 0000000..dfb48b6 Binary files /dev/null and b/tests/snapshots/stax/test_app_settings/00001.png differ diff --git a/tests/snapshots/stax/test_app_settings/00002.png b/tests/snapshots/stax/test_app_settings/00002.png new file mode 100644 index 0000000..c7cb51a Binary files /dev/null and b/tests/snapshots/stax/test_app_settings/00002.png differ diff --git a/tests/snapshots/stax/test_app_settings/00003.png b/tests/snapshots/stax/test_app_settings/00003.png new file mode 100644 index 0000000..892da7f Binary files /dev/null and b/tests/snapshots/stax/test_app_settings/00003.png differ diff --git a/tests/snapshots/stax/test_app_settings/00004.png b/tests/snapshots/stax/test_app_settings/00004.png new file mode 100644 index 0000000..905d407 Binary files /dev/null and b/tests/snapshots/stax/test_app_settings/00004.png differ diff --git a/tests/snapshots/stax/test_get_public_key_confirm_accepted/00005.png b/tests/snapshots/stax/test_app_settings/00005.png similarity index 100% rename from tests/snapshots/stax/test_get_public_key_confirm_accepted/00005.png rename to tests/snapshots/stax/test_app_settings/00005.png diff --git a/tests/snapshots/stax/test_get_proof_accepted/00002.png b/tests/snapshots/stax/test_get_proof_accepted/00002.png index e635842..2b6c53b 100644 Binary files a/tests/snapshots/stax/test_get_proof_accepted/00002.png and b/tests/snapshots/stax/test_get_proof_accepted/00002.png differ diff --git a/tests/snapshots/stax/test_get_proof_accepted/00005.png b/tests/snapshots/stax/test_get_proof_accepted/00005.png index f59899e..13499fc 100644 Binary files a/tests/snapshots/stax/test_get_proof_accepted/00005.png and b/tests/snapshots/stax/test_get_proof_accepted/00005.png differ diff --git a/tests/snapshots/stax/test_get_public_key_confirm_accepted/00002.png b/tests/snapshots/stax/test_get_public_key_confirm_accepted/00002.png index e635842..2b6c53b 100644 Binary files a/tests/snapshots/stax/test_get_public_key_confirm_accepted/00002.png and b/tests/snapshots/stax/test_get_public_key_confirm_accepted/00002.png differ diff --git a/tests/snapshots/stax/test_get_public_key_confirm_accepted/00004.png b/tests/snapshots/stax/test_get_public_key_confirm_accepted/00004.png index f59899e..13499fc 100644 Binary files a/tests/snapshots/stax/test_get_public_key_confirm_accepted/00004.png and b/tests/snapshots/stax/test_get_public_key_confirm_accepted/00004.png differ diff --git a/tests/snapshots/stax/test_sign_data/part0/00001.png b/tests/snapshots/stax/test_sign_data/part0/00001.png index dbe8fb9..3e98012 100644 Binary files a/tests/snapshots/stax/test_sign_data/part0/00001.png and b/tests/snapshots/stax/test_sign_data/part0/00001.png differ diff --git a/tests/snapshots/stax/test_sign_data/part0/00003.png b/tests/snapshots/stax/test_sign_data/part0/00003.png index 49941f3..1a5c894 100644 Binary files a/tests/snapshots/stax/test_sign_data/part0/00003.png and b/tests/snapshots/stax/test_sign_data/part0/00003.png differ diff --git a/tests/snapshots/stax/test_sign_data/part1/00004.png b/tests/snapshots/stax/test_sign_data/part1/00004.png index 49941f3..1a5c894 100644 Binary files a/tests/snapshots/stax/test_sign_data/part1/00004.png and b/tests/snapshots/stax/test_sign_data/part1/00004.png differ diff --git a/tests/snapshots/stax/test_sign_tx_blind_error/00000.png b/tests/snapshots/stax/test_sign_tx_blind_error/00000.png new file mode 100644 index 0000000..7c13332 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_blind_error/00000.png differ diff --git a/tests/snapshots/stax/test_get_proof_refused/part0/00002.png b/tests/snapshots/stax/test_sign_tx_blind_error/00001.png similarity index 100% rename from tests/snapshots/stax/test_get_proof_refused/part0/00002.png rename to tests/snapshots/stax/test_sign_tx_blind_error/00001.png diff --git a/tests/snapshots/stax/test_sign_tx_no_payload/00003.png b/tests/snapshots/stax/test_sign_tx_no_payload/00003.png index cd2f527..a21279c 100644 Binary files a/tests/snapshots/stax/test_sign_tx_no_payload/00003.png and b/tests/snapshots/stax/test_sign_tx_no_payload/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_subwallet_id/part0/00000.png b/tests/snapshots/stax/test_sign_tx_subwallet_id/part0/00000.png new file mode 100644 index 0000000..eeb3fa0 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_subwallet_id/part0/00000.png differ diff --git a/tests/snapshots/stax/test_sign_tx_subwallet_id/part0/00001.png b/tests/snapshots/stax/test_sign_tx_subwallet_id/part0/00001.png new file mode 100644 index 0000000..179fc3a Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_subwallet_id/part0/00001.png differ diff --git a/tests/snapshots/stax/test_sign_tx_subwallet_id/part0/00002.png b/tests/snapshots/stax/test_sign_tx_subwallet_id/part0/00002.png new file mode 100644 index 0000000..05a7e3e Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_subwallet_id/part0/00002.png differ diff --git a/tests/snapshots/stax/test_sign_tx_subwallet_id/part0/00003.png b/tests/snapshots/stax/test_sign_tx_subwallet_id/part0/00003.png new file mode 100644 index 0000000..01f2efc Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_subwallet_id/part0/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_subwallet_id/part0/00004.png b/tests/snapshots/stax/test_sign_tx_subwallet_id/part0/00004.png new file mode 100644 index 0000000..a21279c Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_subwallet_id/part0/00004.png differ diff --git a/tests/snapshots/stax/test_get_proof_refused/part1/00003.png b/tests/snapshots/stax/test_sign_tx_subwallet_id/part0/00005.png similarity index 100% rename from tests/snapshots/stax/test_get_proof_refused/part1/00003.png rename to tests/snapshots/stax/test_sign_tx_subwallet_id/part0/00005.png diff --git a/tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00000.png b/tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00000.png new file mode 100644 index 0000000..eeb3fa0 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00000.png differ diff --git a/tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00001.png b/tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00001.png new file mode 100644 index 0000000..44d6d8c Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00001.png differ diff --git a/tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00002.png b/tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00002.png new file mode 100644 index 0000000..d6e5d25 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00002.png differ diff --git a/tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00003.png b/tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00003.png new file mode 100644 index 0000000..da03947 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00004.png b/tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00004.png new file mode 100644 index 0000000..01f2efc Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00004.png differ diff --git a/tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00005.png b/tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00005.png new file mode 100644 index 0000000..a21279c Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00005.png differ diff --git a/tests/snapshots/stax/test_get_proof_refused/part2/00004.png b/tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00006.png similarity index 100% rename from tests/snapshots/stax/test_get_proof_refused/part2/00004.png rename to tests/snapshots/stax/test_sign_tx_subwallet_id/part1/00006.png diff --git a/tests/snapshots/stax/test_get_public_key_confirm_refused/part0/00002.png b/tests/snapshots/stax/test_sign_tx_subwallet_id/pretest/00000.png similarity index 100% rename from tests/snapshots/stax/test_get_public_key_confirm_refused/part0/00002.png rename to tests/snapshots/stax/test_sign_tx_subwallet_id/pretest/00000.png diff --git a/tests/snapshots/stax/test_sign_tx_subwallet_id/pretest/00001.png b/tests/snapshots/stax/test_sign_tx_subwallet_id/pretest/00001.png new file mode 100644 index 0000000..dfb48b6 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_subwallet_id/pretest/00001.png differ diff --git a/tests/snapshots/stax/test_sign_tx_subwallet_id/pretest/00002.png b/tests/snapshots/stax/test_sign_tx_subwallet_id/pretest/00002.png new file mode 100644 index 0000000..c7cb51a Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_subwallet_id/pretest/00002.png differ diff --git a/tests/snapshots/stax/test_sign_tx_subwallet_id/pretest/00003.png b/tests/snapshots/stax/test_sign_tx_subwallet_id/pretest/00003.png new file mode 100644 index 0000000..892da7f Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_subwallet_id/pretest/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_subwallet_id/pretest/00004.png b/tests/snapshots/stax/test_sign_tx_subwallet_id/pretest/00004.png new file mode 100644 index 0000000..905d407 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_subwallet_id/pretest/00004.png differ diff --git a/tests/snapshots/stax/test_get_public_key_confirm_refused/part1/00003.png b/tests/snapshots/stax/test_sign_tx_subwallet_id/pretest/00005.png similarity index 100% rename from tests/snapshots/stax/test_get_public_key_confirm_refused/part1/00003.png rename to tests/snapshots/stax/test_sign_tx_subwallet_id/pretest/00005.png diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part0/00000.png b/tests/snapshots/stax/test_sign_tx_with_payload/part0/00000.png new file mode 100644 index 0000000..eeb3fa0 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part0/00000.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part0/00001.png b/tests/snapshots/stax/test_sign_tx_with_payload/part0/00001.png new file mode 100644 index 0000000..44d6d8c Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part0/00001.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part0/00002.png b/tests/snapshots/stax/test_sign_tx_with_payload/part0/00002.png new file mode 100644 index 0000000..d6e5d25 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part0/00002.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part0/00003.png b/tests/snapshots/stax/test_sign_tx_with_payload/part0/00003.png new file mode 100644 index 0000000..9e0e0cf Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part0/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part0/00004.png b/tests/snapshots/stax/test_sign_tx_with_payload/part0/00004.png new file mode 100644 index 0000000..01f2efc Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part0/00004.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part0/00005.png b/tests/snapshots/stax/test_sign_tx_with_payload/part0/00005.png new file mode 100644 index 0000000..a21279c Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part0/00005.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part0/00006.png b/tests/snapshots/stax/test_sign_tx_with_payload/part0/00006.png new file mode 100644 index 0000000..edb432d Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part0/00006.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part1/00004.png b/tests/snapshots/stax/test_sign_tx_with_payload/part1/00004.png index cd2f527..a21279c 100644 Binary files a/tests/snapshots/stax/test_sign_tx_with_payload/part1/00004.png and b/tests/snapshots/stax/test_sign_tx_with_payload/part1/00004.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part10/00000.png b/tests/snapshots/stax/test_sign_tx_with_payload/part10/00000.png new file mode 100644 index 0000000..aace46a Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part10/00000.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part10/00001.png b/tests/snapshots/stax/test_sign_tx_with_payload/part10/00001.png new file mode 100644 index 0000000..e996af3 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part10/00001.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part10/00002.png b/tests/snapshots/stax/test_sign_tx_with_payload/part10/00002.png new file mode 100644 index 0000000..a848f53 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part10/00002.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part10/00003.png b/tests/snapshots/stax/test_sign_tx_with_payload/part10/00003.png new file mode 100644 index 0000000..ceb1918 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part10/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part10/00004.png b/tests/snapshots/stax/test_sign_tx_with_payload/part10/00004.png new file mode 100644 index 0000000..a21279c Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part10/00004.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part10/00005.png b/tests/snapshots/stax/test_sign_tx_with_payload/part10/00005.png new file mode 100644 index 0000000..edb432d Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part10/00005.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part11/00000.png b/tests/snapshots/stax/test_sign_tx_with_payload/part11/00000.png new file mode 100644 index 0000000..aace46a Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part11/00000.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part11/00001.png b/tests/snapshots/stax/test_sign_tx_with_payload/part11/00001.png new file mode 100644 index 0000000..e996af3 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part11/00001.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part11/00002.png b/tests/snapshots/stax/test_sign_tx_with_payload/part11/00002.png new file mode 100644 index 0000000..9bfe9ec Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part11/00002.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part11/00003.png b/tests/snapshots/stax/test_sign_tx_with_payload/part11/00003.png new file mode 100644 index 0000000..ceb1918 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part11/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part11/00004.png b/tests/snapshots/stax/test_sign_tx_with_payload/part11/00004.png new file mode 100644 index 0000000..a21279c Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part11/00004.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part11/00005.png b/tests/snapshots/stax/test_sign_tx_with_payload/part11/00005.png new file mode 100644 index 0000000..edb432d Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part11/00005.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part12/00000.png b/tests/snapshots/stax/test_sign_tx_with_payload/part12/00000.png new file mode 100644 index 0000000..13bc5ca Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part12/00000.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part12/00001.png b/tests/snapshots/stax/test_sign_tx_with_payload/part12/00001.png new file mode 100644 index 0000000..589f7bb Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part12/00001.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part12/00002.png b/tests/snapshots/stax/test_sign_tx_with_payload/part12/00002.png new file mode 100644 index 0000000..8c0e5d8 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part12/00002.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part12/00003.png b/tests/snapshots/stax/test_sign_tx_with_payload/part12/00003.png new file mode 100644 index 0000000..576f0f7 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part12/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part12/00004.png b/tests/snapshots/stax/test_sign_tx_with_payload/part12/00004.png new file mode 100644 index 0000000..a21279c Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part12/00004.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part12/00005.png b/tests/snapshots/stax/test_sign_tx_with_payload/part12/00005.png new file mode 100644 index 0000000..edb432d Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part12/00005.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part13/00000.png b/tests/snapshots/stax/test_sign_tx_with_payload/part13/00000.png new file mode 100644 index 0000000..aeca90b Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part13/00000.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part13/00001.png b/tests/snapshots/stax/test_sign_tx_with_payload/part13/00001.png new file mode 100644 index 0000000..6d42c27 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part13/00001.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part13/00002.png b/tests/snapshots/stax/test_sign_tx_with_payload/part13/00002.png new file mode 100644 index 0000000..9c7f2da Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part13/00002.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part13/00003.png b/tests/snapshots/stax/test_sign_tx_with_payload/part13/00003.png new file mode 100644 index 0000000..78169de Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part13/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part13/00004.png b/tests/snapshots/stax/test_sign_tx_with_payload/part13/00004.png new file mode 100644 index 0000000..bcc838c Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part13/00004.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part13/00005.png b/tests/snapshots/stax/test_sign_tx_with_payload/part13/00005.png new file mode 100644 index 0000000..a21279c Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part13/00005.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part13/00006.png b/tests/snapshots/stax/test_sign_tx_with_payload/part13/00006.png new file mode 100644 index 0000000..edb432d Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part13/00006.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part2/00005.png b/tests/snapshots/stax/test_sign_tx_with_payload/part2/00005.png index cd2f527..a21279c 100644 Binary files a/tests/snapshots/stax/test_sign_tx_with_payload/part2/00005.png and b/tests/snapshots/stax/test_sign_tx_with_payload/part2/00005.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part3/00000.png b/tests/snapshots/stax/test_sign_tx_with_payload/part3/00000.png new file mode 100644 index 0000000..e344c1d Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part3/00000.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part3/00001.png b/tests/snapshots/stax/test_sign_tx_with_payload/part3/00001.png new file mode 100644 index 0000000..55e1245 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part3/00001.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part3/00002.png b/tests/snapshots/stax/test_sign_tx_with_payload/part3/00002.png new file mode 100644 index 0000000..47646c2 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part3/00002.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part3/00003.png b/tests/snapshots/stax/test_sign_tx_with_payload/part3/00003.png new file mode 100644 index 0000000..866a6b8 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part3/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part3/00004.png b/tests/snapshots/stax/test_sign_tx_with_payload/part3/00004.png new file mode 100644 index 0000000..ba4e880 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part3/00004.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part3/00005.png b/tests/snapshots/stax/test_sign_tx_with_payload/part3/00005.png new file mode 100644 index 0000000..a21279c Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part3/00005.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part3/00006.png b/tests/snapshots/stax/test_sign_tx_with_payload/part3/00006.png new file mode 100644 index 0000000..edb432d Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part3/00006.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part4/00000.png b/tests/snapshots/stax/test_sign_tx_with_payload/part4/00000.png new file mode 100644 index 0000000..aeca90b Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part4/00000.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part4/00001.png b/tests/snapshots/stax/test_sign_tx_with_payload/part4/00001.png new file mode 100644 index 0000000..6d42c27 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part4/00001.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part4/00002.png b/tests/snapshots/stax/test_sign_tx_with_payload/part4/00002.png new file mode 100644 index 0000000..9c7f2da Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part4/00002.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part4/00003.png b/tests/snapshots/stax/test_sign_tx_with_payload/part4/00003.png new file mode 100644 index 0000000..eb89f54 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part4/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part4/00004.png b/tests/snapshots/stax/test_sign_tx_with_payload/part4/00004.png new file mode 100644 index 0000000..bcc838c Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part4/00004.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part4/00005.png b/tests/snapshots/stax/test_sign_tx_with_payload/part4/00005.png new file mode 100644 index 0000000..a21279c Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part4/00005.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part4/00006.png b/tests/snapshots/stax/test_sign_tx_with_payload/part4/00006.png new file mode 100644 index 0000000..edb432d Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part4/00006.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part5/00000.png b/tests/snapshots/stax/test_sign_tx_with_payload/part5/00000.png new file mode 100644 index 0000000..8069bed Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part5/00000.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part5/00001.png b/tests/snapshots/stax/test_sign_tx_with_payload/part5/00001.png new file mode 100644 index 0000000..1869b2a Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part5/00001.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part5/00002.png b/tests/snapshots/stax/test_sign_tx_with_payload/part5/00002.png new file mode 100644 index 0000000..484d612 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part5/00002.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part5/00003.png b/tests/snapshots/stax/test_sign_tx_with_payload/part5/00003.png new file mode 100644 index 0000000..b1fff39 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part5/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part5/00004.png b/tests/snapshots/stax/test_sign_tx_with_payload/part5/00004.png new file mode 100644 index 0000000..a21279c Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part5/00004.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part5/00005.png b/tests/snapshots/stax/test_sign_tx_with_payload/part5/00005.png new file mode 100644 index 0000000..edb432d Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part5/00005.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part6/00000.png b/tests/snapshots/stax/test_sign_tx_with_payload/part6/00000.png new file mode 100644 index 0000000..6562836 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part6/00000.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part6/00001.png b/tests/snapshots/stax/test_sign_tx_with_payload/part6/00001.png new file mode 100644 index 0000000..19d5eb4 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part6/00001.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part6/00002.png b/tests/snapshots/stax/test_sign_tx_with_payload/part6/00002.png new file mode 100644 index 0000000..e9ffc21 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part6/00002.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part6/00003.png b/tests/snapshots/stax/test_sign_tx_with_payload/part6/00003.png new file mode 100644 index 0000000..f766c5a Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part6/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part6/00004.png b/tests/snapshots/stax/test_sign_tx_with_payload/part6/00004.png new file mode 100644 index 0000000..a21279c Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part6/00004.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part6/00005.png b/tests/snapshots/stax/test_sign_tx_with_payload/part6/00005.png new file mode 100644 index 0000000..edb432d Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part6/00005.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part7/00000.png b/tests/snapshots/stax/test_sign_tx_with_payload/part7/00000.png new file mode 100644 index 0000000..33e4127 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part7/00000.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part7/00001.png b/tests/snapshots/stax/test_sign_tx_with_payload/part7/00001.png new file mode 100644 index 0000000..0f161df Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part7/00001.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part7/00002.png b/tests/snapshots/stax/test_sign_tx_with_payload/part7/00002.png new file mode 100644 index 0000000..5a76e15 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part7/00002.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part7/00003.png b/tests/snapshots/stax/test_sign_tx_with_payload/part7/00003.png new file mode 100644 index 0000000..5ee51c2 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part7/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part7/00004.png b/tests/snapshots/stax/test_sign_tx_with_payload/part7/00004.png new file mode 100644 index 0000000..a21279c Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part7/00004.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part7/00005.png b/tests/snapshots/stax/test_sign_tx_with_payload/part7/00005.png new file mode 100644 index 0000000..edb432d Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part7/00005.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part8/00000.png b/tests/snapshots/stax/test_sign_tx_with_payload/part8/00000.png new file mode 100644 index 0000000..ac2e276 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part8/00000.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part8/00001.png b/tests/snapshots/stax/test_sign_tx_with_payload/part8/00001.png new file mode 100644 index 0000000..8f87247 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part8/00001.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part8/00002.png b/tests/snapshots/stax/test_sign_tx_with_payload/part8/00002.png new file mode 100644 index 0000000..bafe001 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part8/00002.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part8/00003.png b/tests/snapshots/stax/test_sign_tx_with_payload/part8/00003.png new file mode 100644 index 0000000..a21279c Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part8/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part8/00004.png b/tests/snapshots/stax/test_sign_tx_with_payload/part8/00004.png new file mode 100644 index 0000000..edb432d Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part8/00004.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part9/00000.png b/tests/snapshots/stax/test_sign_tx_with_payload/part9/00000.png new file mode 100644 index 0000000..6f8895b Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part9/00000.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part9/00001.png b/tests/snapshots/stax/test_sign_tx_with_payload/part9/00001.png new file mode 100644 index 0000000..3ecf771 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part9/00001.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part9/00002.png b/tests/snapshots/stax/test_sign_tx_with_payload/part9/00002.png new file mode 100644 index 0000000..a8dd65e Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part9/00002.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part9/00003.png b/tests/snapshots/stax/test_sign_tx_with_payload/part9/00003.png new file mode 100644 index 0000000..0943114 Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part9/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part9/00004.png b/tests/snapshots/stax/test_sign_tx_with_payload/part9/00004.png new file mode 100644 index 0000000..a21279c Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part9/00004.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/part9/00005.png b/tests/snapshots/stax/test_sign_tx_with_payload/part9/00005.png new file mode 100644 index 0000000..edb432d Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/part9/00005.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/pretest/00001.png b/tests/snapshots/stax/test_sign_tx_with_payload/pretest/00001.png index 5b38909..dfb48b6 100644 Binary files a/tests/snapshots/stax/test_sign_tx_with_payload/pretest/00001.png and b/tests/snapshots/stax/test_sign_tx_with_payload/pretest/00001.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/pretest/00002.png b/tests/snapshots/stax/test_sign_tx_with_payload/pretest/00002.png index 8b281f2..c7cb51a 100644 Binary files a/tests/snapshots/stax/test_sign_tx_with_payload/pretest/00002.png and b/tests/snapshots/stax/test_sign_tx_with_payload/pretest/00002.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/pretest/00003.png b/tests/snapshots/stax/test_sign_tx_with_payload/pretest/00003.png index 468b10b..892da7f 100644 Binary files a/tests/snapshots/stax/test_sign_tx_with_payload/pretest/00003.png and b/tests/snapshots/stax/test_sign_tx_with_payload/pretest/00003.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/pretest/00004.png b/tests/snapshots/stax/test_sign_tx_with_payload/pretest/00004.png index edb432d..905d407 100644 Binary files a/tests/snapshots/stax/test_sign_tx_with_payload/pretest/00004.png and b/tests/snapshots/stax/test_sign_tx_with_payload/pretest/00004.png differ diff --git a/tests/snapshots/stax/test_sign_tx_with_payload/pretest/00005.png b/tests/snapshots/stax/test_sign_tx_with_payload/pretest/00005.png new file mode 100644 index 0000000..edb432d Binary files /dev/null and b/tests/snapshots/stax/test_sign_tx_with_payload/pretest/00005.png differ diff --git a/tests/test_app_mainmenu.py b/tests/test_app_mainmenu.py index 64952aa..181b829 100644 --- a/tests/test_app_mainmenu.py +++ b/tests/test_app_mainmenu.py @@ -24,6 +24,11 @@ def test_app_mainmenu(firmware, navigator, test_name): NavInsID.RIGHT_CLICK, NavInsID.BOTH_CLICK, NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, + NavInsID.RIGHT_CLICK, NavInsID.RIGHT_CLICK, NavInsID.BOTH_CLICK, ] diff --git a/tests/test_name_version.py b/tests/test_name_version.py index 3c1366a..bdb7949 100644 --- a/tests/test_name_version.py +++ b/tests/test_name_version.py @@ -12,4 +12,4 @@ def test_get_app_and_version(backend, backend_name): app_name, version = unpack_get_app_and_version_response(response.data) assert app_name == "TON" - assert version == "2.0.0" \ No newline at end of file + assert version == "2.1.0" \ No newline at end of file diff --git a/tests/test_proof_cmd.py b/tests/test_proof_cmd.py index 76b3ac9..05f9599 100644 --- a/tests/test_proof_cmd.py +++ b/tests/test_proof_cmd.py @@ -30,7 +30,6 @@ def test_get_proof_accepted(firmware, backend, navigator, test_name): NavInsID.USE_CASE_ADDRESS_CONFIRMATION_EXIT_QR, NavInsID.USE_CASE_ADDRESS_CONFIRMATION_TAP, NavInsID.USE_CASE_ADDRESS_CONFIRMATION_CONFIRM, - NavInsID.WAIT_FOR_HOME_SCREEN ] navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, test_name, @@ -62,18 +61,15 @@ def test_get_proof_refused(firmware, backend, navigator, test_name): instructions_set = [ [ NavInsID.USE_CASE_REVIEW_REJECT, - NavInsID.WAIT_FOR_HOME_SCREEN ], [ NavInsID.USE_CASE_REVIEW_TAP, NavInsID.USE_CASE_ADDRESS_CONFIRMATION_CANCEL, - NavInsID.WAIT_FOR_HOME_SCREEN ], [ NavInsID.USE_CASE_REVIEW_TAP, NavInsID.USE_CASE_ADDRESS_CONFIRMATION_TAP, NavInsID.USE_CASE_ADDRESS_CONFIRMATION_CANCEL, - NavInsID.WAIT_FOR_HOME_SCREEN ] ] for i, instructions in enumerate(instructions_set): diff --git a/tests/test_pubkey_cmd.py b/tests/test_pubkey_cmd.py index 1ad80c2..e403149 100644 --- a/tests/test_pubkey_cmd.py +++ b/tests/test_pubkey_cmd.py @@ -31,7 +31,6 @@ def test_get_public_key_confirm_accepted(firmware, backend, navigator, test_name NavIns(NavInsID.TOUCH, (200, 335)), NavInsID.USE_CASE_ADDRESS_CONFIRMATION_EXIT_QR, NavInsID.USE_CASE_ADDRESS_CONFIRMATION_CONFIRM, - NavInsID.WAIT_FOR_HOME_SCREEN ] navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, test_name, @@ -60,12 +59,10 @@ def test_get_public_key_confirm_refused(firmware, backend, navigator, test_name) instructions_set = [ [ NavInsID.USE_CASE_REVIEW_REJECT, - NavInsID.WAIT_FOR_HOME_SCREEN ], [ NavInsID.USE_CASE_REVIEW_TAP, NavInsID.USE_CASE_ADDRESS_CONFIRMATION_CANCEL, - NavInsID.WAIT_FOR_HOME_SCREEN ] ] for i, instructions in enumerate(instructions_set): diff --git a/tests/test_settings_cmd.py b/tests/test_settings_cmd.py new file mode 100644 index 0000000..a27e3ce --- /dev/null +++ b/tests/test_settings_cmd.py @@ -0,0 +1,44 @@ +from application_client.ton_command_sender import BoilerplateCommandSender +from utils import ROOT_SCREENSHOT_PATH +from ragger.navigator import NavInsID, NavIns + +# In this test we check the behavior of the device when asked to provide the app version +def test_app_settings(firmware, backend, navigator, test_name): + # Use the app interface instead of raw interface + client = BoilerplateCommandSender(backend) + rapdu = client.get_app_settings() + assert(len(rapdu.data) == 1 and rapdu.data[0] == 0x00) + + # Enable blind signing and expert mode + if firmware.device.startswith("nano"): + navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, + test_name, + [ + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, + NavInsID.BOTH_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, + ], + screen_change_before_first_instruction=False) + else: + navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, + test_name, + [ + NavInsID.USE_CASE_HOME_INFO, + NavInsID.USE_CASE_SETTINGS_NEXT, + NavIns(NavInsID.TOUCH, (354, 125)), + NavIns(NavInsID.TOUCH, (354, 272)), + NavInsID.USE_CASE_SETTINGS_MULTI_PAGE_EXIT, + ], + screen_change_before_first_instruction=False) + + rapdu = client.get_app_settings() + assert(len(rapdu.data) == 1 and rapdu.data[0] == (0x01 | 0x02)) + diff --git a/tests/test_sign_cmd.py b/tests/test_sign_cmd.py index b26b33c..52ffde5 100644 --- a/tests/test_sign_cmd.py +++ b/tests/test_sign_cmd.py @@ -1,6 +1,6 @@ import pytest -from application_client.ton_transaction import Transaction, SendMode, CommentPayload, Payload, JettonTransferPayload +from application_client.ton_transaction import Transaction, SendMode, CommentPayload, Payload, JettonTransferPayload, NFTTransferPayload, CustomUnsafePayload, JettonBurnPayload, AddWhitelistPayload, SingleNominatorWithdrawPayload, ChangeValidatorPayload, TonstakersDepositPayload, JettonDAOVotePayload, ChangeDNSWalletPayload, ChangeDNSPayload, TokenBridgePaySwapPayload from application_client.ton_command_sender import BoilerplateCommandSender, Errors from application_client.ton_response_unpacker import unpack_sign_tx_response from ragger.error import ExceptionRAPDU @@ -55,7 +55,49 @@ def test_sign_tx_no_payload(firmware, backend, navigator, test_name): assert check_signature_validity(pubkey, sig, hash_b) +def test_sign_tx_blind_error(firmware, backend, navigator, test_name): + # Use the app interface instead of raw interface + client = BoilerplateCommandSender(backend) + # The path used for this entire test + path: str = "m/44'/607'/0'/0'/0'/0'" + + payload = CustomUnsafePayload(Cell()) + + tx = Transaction(Address("0:" + "0" * 64), SendMode.PAY_GAS_SEPARATLY, 0, 1686176000, True, 100000000, payload=payload) + tx_bytes = tx.to_request_bytes() + + with pytest.raises(ExceptionRAPDU) as e: + with client.sign_tx(path=path, transaction=tx_bytes): + # Validate the on-screen request by performing the navigation appropriate for this device + if firmware.device.startswith("nano"): + if firmware.device == "nanos": + navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, + test_name, + [ + NavIns(NavInsID.WAIT_FOR_TEXT_ON_SCREEN, ("Error", )), + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK + ]) + else: + navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, + test_name, + [ + NavInsID.BOTH_CLICK + ]) + else: + navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, + test_name, + [ + NavInsID.USE_CASE_CHOICE_CONFIRM + ]) + + assert e.value.status == Errors.SW_BLIND_SIGNING_DISABLED + assert len(e.value.data) == 0 + + def test_sign_tx_with_payload(firmware, backend, navigator, test_name): + import os + # Use the app interface instead of raw interface client = BoilerplateCommandSender(backend) # The path used for this entire test @@ -65,11 +107,23 @@ def test_sign_tx_with_payload(firmware, backend, navigator, test_name): pubkey = client.get_public_key(path=path).data payloads: List[Payload] = [ + CustomUnsafePayload(Cell()), CommentPayload("test"), - JettonTransferPayload(100, Address("0:" + "0" * 64), forward_amount=1) + JettonTransferPayload(100, Address("0:" + "0" * 64), forward_amount=1), + NFTTransferPayload(Address("0:" + "0" * 64), forward_amount=1), + JettonBurnPayload(100, Address("0:" + "0" * 64), custom_payload=Cell()), + AddWhitelistPayload(Address("0:" + "0" * 64)), + SingleNominatorWithdrawPayload(1_000_000_000), + ChangeValidatorPayload(Address("0:" + "0" * 64)), + TonstakersDepositPayload(app_id=123), + JettonDAOVotePayload(Address("0:" + "0" * 64), 1686176000, True, True), + ChangeDNSWalletPayload(Address("0:" + "0" * 64), True, True), + ChangeDNSPayload(bytes([0] * 32), None), + TokenBridgePaySwapPayload(bytes([0] * 32)), + JettonBurnPayload(100, Address("0:" + "0" * 64), custom_payload=bytes([1, 32] * 10)), ] - # Enable expert mode + # Enable blind signing and expert mode if firmware.device.startswith("nano"): navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, test_name + "/pretest", @@ -81,6 +135,10 @@ def test_sign_tx_with_payload(firmware, backend, navigator, test_name): NavInsID.BOTH_CLICK, NavInsID.RIGHT_CLICK, NavInsID.BOTH_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, ], screen_change_before_first_instruction=False) else: @@ -90,11 +148,12 @@ def test_sign_tx_with_payload(firmware, backend, navigator, test_name): NavInsID.USE_CASE_HOME_INFO, NavInsID.USE_CASE_SETTINGS_NEXT, NavIns(NavInsID.TOUCH, (354, 125)), + NavIns(NavInsID.TOUCH, (354, 272)), NavInsID.USE_CASE_SETTINGS_MULTI_PAGE_EXIT, ], screen_change_before_first_instruction=False) - for (i, payload) in enumerate(payloads): + for (i, payload) in list(enumerate(payloads))[int(os.environ.get("PAYLOAD_START_INDEX", default="0")):]: # Create the transaction that will be sent to the device for signing tx = Transaction(Address("0:" + "0" * 64), SendMode.PAY_GAS_SEPARATLY, 0, 1686176000, True, 100000000, payload=payload) tx_bytes = tx.to_request_bytes() @@ -109,14 +168,89 @@ def test_sign_tx_with_payload(firmware, backend, navigator, test_name): [NavInsID.BOTH_CLICK], "Approve", ROOT_SCREENSHOT_PATH, - test_name + f"/part{i+1}") + test_name + f"/part{i}") + else: + navigator.navigate_until_text_and_compare(NavInsID.USE_CASE_REVIEW_TAP, + [NavInsID.USE_CASE_REVIEW_CONFIRM, + NavInsID.USE_CASE_STATUS_DISMISS], + "Hold to sign", + ROOT_SCREENSHOT_PATH, + test_name + f"/part{i}") + + # The device as yielded the result, parse it and ensure that the signature is correct + response = client.get_async_response().data + sig, hash_b = unpack_sign_tx_response(response) + assert hash_b == tx.transfer_cell().bytes_hash() + assert check_signature_validity(pubkey, sig, hash_b) + + +def test_sign_tx_subwallet_id(firmware, backend, navigator, test_name): + # Use the app interface instead of raw interface + client = BoilerplateCommandSender(backend) + # The path used for this entire test + path: str = "m/44'/607'/0'/0'/0'/0'" + + # First we need to get the public key of the device in order to build the transaction + pubkey = client.get_public_key(path=path).data + + payloads: List[Payload] = [ + CommentPayload("test"), + CustomUnsafePayload(Cell()), + ] + + # Enable blind signing and expert mode + if firmware.device.startswith("nano"): + navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, + test_name + "/pretest", + [ + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, + NavInsID.BOTH_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, + NavInsID.RIGHT_CLICK, + NavInsID.BOTH_CLICK, + ], + screen_change_before_first_instruction=False) + else: + navigator.navigate_and_compare(ROOT_SCREENSHOT_PATH, + test_name + "/pretest", + [ + NavInsID.USE_CASE_HOME_INFO, + NavInsID.USE_CASE_SETTINGS_NEXT, + NavIns(NavInsID.TOUCH, (354, 125)), + NavIns(NavInsID.TOUCH, (354, 272)), + NavInsID.USE_CASE_SETTINGS_MULTI_PAGE_EXIT, + ], + screen_change_before_first_instruction=False) + + for (i, payload) in enumerate(payloads): + # Create the transaction that will be sent to the device for signing + tx = Transaction(Address("0:" + "0" * 64), SendMode.PAY_GAS_SEPARATLY, 0, 1686176000, True, 100000000, payload=payload, subwallet_id=0x10c, include_wallet_op=False) + tx_bytes = tx.to_request_bytes() + + # Send the sign device instruction. + # As it requires on-screen validation, the function is asynchronous. + # It will yield the result when the navigation is done + with client.sign_tx(path=path, transaction=tx_bytes): + # Validate the on-screen request by performing the navigation appropriate for this device + if firmware.device.startswith("nano"): + navigator.navigate_until_text_and_compare(NavInsID.RIGHT_CLICK, + [NavInsID.BOTH_CLICK], + "Approve", + ROOT_SCREENSHOT_PATH, + test_name + f"/part{i}") else: navigator.navigate_until_text_and_compare(NavInsID.USE_CASE_REVIEW_TAP, [NavInsID.USE_CASE_REVIEW_CONFIRM, NavInsID.USE_CASE_STATUS_DISMISS], "Hold to sign", ROOT_SCREENSHOT_PATH, - test_name + f"/part{i+1}") + test_name + f"/part{i}") # The device as yielded the result, parse it and ensure that the signature is correct response = client.get_async_response().data diff --git a/tests/test_sign_custom_data.py b/tests/test_sign_custom_data.py index ef88ecf..d00974c 100644 --- a/tests/test_sign_custom_data.py +++ b/tests/test_sign_custom_data.py @@ -21,7 +21,7 @@ def test_sign_data(firmware, backend, navigator, test_name): pubkey = client.get_public_key(path=path).data requests: List[SignDataRequest] = [ - PlaintextSignDataRequest("a" * 188), + PlaintextSignDataRequest("a" * 120), AppDataSignDataRequest(Cell(), address=Address("0:" + "0" * 64), domain="test.ton", ext=Cell()) ] diff --git a/tests/test_version_cmd.py b/tests/test_version_cmd.py index 7da90b7..9381b2f 100644 --- a/tests/test_version_cmd.py +++ b/tests/test_version_cmd.py @@ -2,7 +2,7 @@ from application_client.ton_response_unpacker import unpack_get_version_response MAJOR = 2 -MINOR = 0 +MINOR = 1 PATCH = 0 # In this test we check the behavior of the device when asked to provide the app version