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