Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blind sign #36

Merged
merged 8 commits into from
Dec 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion app/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ DEFINES += PRODUCTION_BUILD=$(PRODUCTION_BUILD)

include $(CURDIR)/../deps/ledger-zxlib/makefiles/Makefile.app_testing

DEFINES += REVIEW_SCREEN_ENABLED SHORTCUT_MODE_ENABLED
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if we should remove the REVIEW_SCREEN_ENABLE this will lead to the removal of the "Review Address" screen on the show address command.

DEFINES += APP_BLINDSIGN_MODE_ENABLED

ifndef COIN
COIN=ALGO
Expand Down
4 changes: 2 additions & 2 deletions app/Makefile.version
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is the `transaction_version` field of `Runtime`
APPVERSION_M=2
# This is the `spec_version` field of `Runtime`
APPVERSION_N=1
APPVERSION_N=2
# This is the patch version of this release
APPVERSION_P=14
APPVERSION_P=0
5 changes: 5 additions & 0 deletions app/src/apdu_handler.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#include "addr.h"
#include "crypto.h"
#include "coin.h"
#include "parser.h"
#include "zxmacros.h"

static bool tx_initialized = false;
Expand Down Expand Up @@ -151,6 +152,10 @@ __Z_INLINE void handle_sign_msgpack(volatile uint32_t *flags, volatile uint32_t
int error_msg_length = strlen(error_msg);
memcpy(G_io_apdu_buffer, error_msg, error_msg_length);
*tx += (error_msg_length);
if (strcmp(error_msg, parser_getErrorDescription(parser_blindsign_mode_required)) == 0) {
*flags |= IO_ASYNCH_REPLY;
view_blindsign_error_show();
}
THROW(APDU_CODE_DATA_INVALID);
}

Expand Down
2 changes: 2 additions & 0 deletions app/src/common/parser_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ typedef enum {
parser_display_idx_out_of_range,
parser_display_page_out_of_range,
parser_unexpected_error,
parser_blindsign_mode_required,

// Coin generic
parser_unexpected_type,
parser_unexpected_method,
Expand Down
67 changes: 47 additions & 20 deletions app/src/parser_impl.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

#include "parser_impl.h"
#include "msgpack.h"
#include "app_mode.h"

static uint8_t num_items;
static uint8_t common_num_items;
Expand All @@ -40,6 +41,23 @@ static parser_error_t _findKey(parser_context_t *c, const char *key);
counter++; \
}

#define DISPLAY_APP_ITEM(appIdx, len, counter, v) \
if (!app_mode_blindsign()) { \
for(uint8_t j = 0; j < len; j++) { \
CHECK_ERROR(addItem(appIdx)) \
counter++; \
} \
}

#define DISPLAY_COMMON_ITEM(appIdx, len, counter, v) \
if (v->type == TX_APPLICATION && app_mode_blindsign()) { \
if (appIdx == IDX_COMMON_SENDER || appIdx == IDX_COMMON_REKEY_TO) { \
DISPLAY_ITEM(appIdx, len, counter) \
} \
} else { \
DISPLAY_ITEM(appIdx, len, counter) \
}

parser_error_t parser_init_context(parser_context_t *ctx,
const uint8_t *buffer,
uint16_t bufferSize) {
Expand Down Expand Up @@ -773,44 +791,44 @@ static parser_error_t _readTxCommonParams(parser_context_t *c, parser_tx_t *v)

CHECK_ERROR(_findKey(c, KEY_COMMON_SENDER))
CHECK_ERROR(_readBinFixed(c, v->sender, sizeof(v->sender)))
DISPLAY_ITEM(IDX_COMMON_SENDER, 1, common_num_items)
DISPLAY_COMMON_ITEM(IDX_COMMON_SENDER, 1, common_num_items, v)

if (_findKey(c, KEY_COMMON_LEASE) == parser_ok) {
CHECK_ERROR(_readBinFixed(c, v->lease, sizeof(v->lease)))
DISPLAY_ITEM(IDX_COMMON_LEASE, 1, common_num_items)
DISPLAY_COMMON_ITEM(IDX_COMMON_LEASE, 1, common_num_items, v)
}

if (_findKey(c, KEY_COMMON_REKEY) == parser_ok) {
CHECK_ERROR(_readBinFixed(c, v->rekey, sizeof(v->rekey)))
DISPLAY_ITEM(IDX_COMMON_REKEY_TO, 1, common_num_items)
DISPLAY_COMMON_ITEM(IDX_COMMON_REKEY_TO, 1, common_num_items, v)
}

v->fee = 0;
if (_findKey(c, KEY_COMMON_FEE) == parser_ok) {
CHECK_ERROR(_readInteger(c, &v->fee))
}
DISPLAY_ITEM(IDX_COMMON_FEE, 1, common_num_items)
DISPLAY_COMMON_ITEM(IDX_COMMON_FEE, 1, common_num_items, v)

if (_findKey(c, KEY_COMMON_GEN_ID) == parser_ok) {
CHECK_ERROR(_readString(c, (uint8_t*)v->genesisID, sizeof(v->genesisID)))
DISPLAY_ITEM(IDX_COMMON_GEN_ID, 1, common_num_items)
DISPLAY_COMMON_ITEM(IDX_COMMON_GEN_ID, 1, common_num_items, v)
}

CHECK_ERROR(_findKey(c, KEY_COMMON_GEN_HASH))
CHECK_ERROR(_readBinFixed(c, v->genesisHash, sizeof(v->genesisHash)))
DISPLAY_ITEM(IDX_COMMON_GEN_HASH, 1, common_num_items)
DISPLAY_COMMON_ITEM(IDX_COMMON_GEN_HASH, 1, common_num_items, v)

if (_findKey(c, KEY_COMMON_GROUP_ID) == parser_ok) {
CHECK_ERROR(_readBinFixed(c, v->groupID, sizeof(v->groupID)))
DISPLAY_ITEM(IDX_COMMON_GROUP_ID, 1, common_num_items)
DISPLAY_COMMON_ITEM(IDX_COMMON_GROUP_ID, 1, common_num_items, v)
}

if (_findKey(c, KEY_COMMON_NOTE) == parser_ok) {
CHECK_ERROR(_readBinSize(c, &v->note_len))
if(v->note_len > MAX_NOTE_LEN) {
return parser_unexpected_value;
}
DISPLAY_ITEM(IDX_COMMON_NOTE, 1, common_num_items)
DISPLAY_COMMON_ITEM(IDX_COMMON_NOTE, 1, common_num_items, v)
}

// First and Last valid won't be display --> don't count them
Expand Down Expand Up @@ -1049,31 +1067,31 @@ static parser_error_t _readTxApplication(parser_context_t *c, parser_tx_t *v)
if (_findKey(c, KEY_APP_ID) == parser_ok) {
CHECK_ERROR(_readInteger(c, &application->id))
}
DISPLAY_ITEM(IDX_APP_ID, 1, tx_num_items)
DISPLAY_APP_ITEM(IDX_APP_ID, 1, tx_num_items, v)

if (_findKey(c, KEY_APP_ONCOMPLETION) == parser_ok) {
CHECK_ERROR(_readInteger(c, &application->oncompletion))
}
DISPLAY_ITEM(IDX_ON_COMPLETION, 1, tx_num_items)
DISPLAY_APP_ITEM(IDX_ON_COMPLETION, 1, tx_num_items, v)

if (_findKey(c, KEY_APP_BOXES) == parser_ok) {
CHECK_ERROR(_readBoxes(c, application->boxes, &application->num_boxes))
DISPLAY_ITEM(IDX_BOXES, application->num_boxes, tx_num_items)
DISPLAY_APP_ITEM(IDX_BOXES, application->num_boxes, tx_num_items, v)
}

if (_findKey(c, KEY_APP_FOREIGN_APPS) == parser_ok) {
CHECK_ERROR(_readArrayU64(c, application->foreign_apps, &application->num_foreign_apps, MAX_FOREIGN_APPS))
DISPLAY_ITEM(IDX_FOREIGN_APP, application->num_foreign_apps, tx_num_items)
DISPLAY_APP_ITEM(IDX_FOREIGN_APP, application->num_foreign_apps, tx_num_items, v)
}

if (_findKey(c, KEY_APP_FOREIGN_ASSETS) == parser_ok) {
CHECK_ERROR(_readArrayU64(c, application->foreign_assets, &application->num_foreign_assets, MAX_FOREIGN_ASSETS))
DISPLAY_ITEM(IDX_FOREIGN_ASSET, application->num_foreign_assets, tx_num_items)
DISPLAY_APP_ITEM(IDX_FOREIGN_ASSET, application->num_foreign_assets, tx_num_items, v)
}

if (_findKey(c, KEY_APP_ACCOUNTS) == parser_ok) {
CHECK_ERROR(_verifyAccounts(c, &application->num_accounts, MAX_ACCT))
DISPLAY_ITEM(IDX_ACCOUNTS, application->num_accounts, tx_num_items)
DISPLAY_APP_ITEM(IDX_ACCOUNTS, application->num_accounts, tx_num_items, v)
}

if(application->num_accounts + application->num_foreign_apps + application->num_foreign_assets > ACCT_FOREIGN_LIMIT) {
Expand All @@ -1082,7 +1100,7 @@ static parser_error_t _readTxApplication(parser_context_t *c, parser_tx_t *v)

if (_findKey(c, KEY_APP_ARGS) == parser_ok) {
CHECK_ERROR(_verifyAppArgs(c, application->app_args_len, &application->num_app_args, MAX_ARG))
DISPLAY_ITEM(IDX_APP_ARGS, application->num_app_args, tx_num_items)
DISPLAY_APP_ITEM(IDX_APP_ARGS, application->num_app_args, tx_num_items, v)
}

uint16_t app_args_total_len = 0;
Expand All @@ -1095,30 +1113,30 @@ static parser_error_t _readTxApplication(parser_context_t *c, parser_tx_t *v)

if (_findKey(c, KEY_APP_GLOBAL_SCHEMA) == parser_ok) {
CHECK_ERROR(_readStateSchema(c, &application->global_schema))
DISPLAY_ITEM(IDX_GLOBAL_SCHEMA, 1, tx_num_items)
DISPLAY_APP_ITEM(IDX_GLOBAL_SCHEMA, 1, tx_num_items, v)
}

if (_findKey(c, KEY_APP_LOCAL_SCHEMA) == parser_ok) {
CHECK_ERROR(_readStateSchema(c, &application->local_schema))
DISPLAY_ITEM(IDX_LOCAL_SCHEMA, 1, tx_num_items)
DISPLAY_APP_ITEM(IDX_LOCAL_SCHEMA, 1, tx_num_items, v)
}

if (_findKey(c, KEY_APP_EXTRA_PAGES) == parser_ok) {
CHECK_ERROR(_readUInt8(c, &application->extra_pages))
if (application->extra_pages > 3){
return parser_too_many_extra_pages;
}
DISPLAY_ITEM(IDX_EXTRA_PAGES, 1, tx_num_items)
DISPLAY_APP_ITEM(IDX_EXTRA_PAGES, 1, tx_num_items, v)
}

if (_findKey(c, KEY_APP_APROG_LEN) == parser_ok) {
CHECK_ERROR(_getPointerBin(c, &application->aprog, &application->aprog_len))
DISPLAY_ITEM(IDX_APPROVE, 1, tx_num_items)
DISPLAY_APP_ITEM(IDX_APPROVE, 1, tx_num_items, v)
}

if (_findKey(c, KEY_APP_CPROG_LEN) == parser_ok) {
CHECK_ERROR(_getPointerBin(c, &application->cprog, &application->cprog_len))
DISPLAY_ITEM(IDX_CLEAR, 1, tx_num_items)
DISPLAY_APP_ITEM(IDX_CLEAR, 1, tx_num_items, v)
}

if (application->id == 0 && application->cprog_len + application->aprog_len > PAGE_LEN *(1+application->extra_pages)){
Expand Down Expand Up @@ -1163,7 +1181,14 @@ parser_error_t _read(parser_context_t *c, parser_tx_t *v)
CHECK_ERROR(_readTxAssetConfig(c, v))
break;
case TX_APPLICATION:
#if defined(TARGET_NANOS) || defined(TARGET_NANOS2) || defined(TARGET_NANOX) || defined(TARGET_STAX) || defined(TARGET_FLEX)
CHECK_ERROR(_readTxApplication(c, v))
if (!app_mode_blindsign()) {
app_mode_skip_blindsign_ui();
}
#else
CHECK_ERROR(_readTxApplication(c, v))
#endif
break;
default:
return parser_unknown_transaction;
Expand Down Expand Up @@ -1222,6 +1247,8 @@ const char *parser_getErrorDescription(parser_error_t err) {
return "display page out of range";
case parser_unexpected_error:
return "Unexpected error in parser";
case parser_blindsign_mode_required:
return "Blind signing mode required";
case parser_unexpected_type:
return "Unexpected type";
case parser_unexpected_method:
Expand Down
2 changes: 1 addition & 1 deletion deps/ledger-secure-sdk
Submodule ledger-secure-sdk updated 152 files
2 changes: 1 addition & 1 deletion deps/ledger-zxlib
Submodule ledger-zxlib updated 59 files
+34 −39 app/common/app_main.c
+31 −30 app/common/app_main.h
+37 −26 app/ui/view.c
+10 −0 app/ui/view.h
+35 −37 app/ui/view_inspect_s.c
+45 −2 app/ui/view_internal.h
+98 −86 app/ui/view_nano.c
+1 −1 app/ui/view_nano.h
+15 −14 app/ui/view_nano_inspect.h
+89 −79 app/ui/view_nbgl.c
+148 −7 app/ui/view_s.c
+339 −118 app/ui/view_x.c
+1 −1 dockerized_build.mk
+32 −33 include/apdu_codes.h
+23 −16 include/app_mode.h
+19 −21 include/base58.h
+1 −1 include/base64.h
+1 −1 include/bech32.h
+1 −1 include/bignum.h
+1 −6 include/bittools.h
+20 −23 include/buffering.h
+15 −15 include/hexutils.h
+8 −35 include/segwit_addr.h
+15 −18 include/sigutils.h
+17 −16 include/timeutils.h
+318 −415 include/utf8.h
+145 −149 include/view_templates.h
+14 −14 include/zxcanary.h
+51 −49 include/zxerror.h
+76 −79 include/zxformat.h
+14 −14 include/zxtypes.h
+2 −3 include/zxutils_ledger.h
+4 −4 include/zxversion.h
+1 −1 scripts/install_deps.sh
+1 −1 scripts/template.sh
+42 −0 src/app_mode.c
+40 −48 src/base58.c
+20 −20 src/base64.c
+20 −23 src/bech32.c
+24 −27 src/bignum.c
+23 −29 src/buffering.c
+24 −25 src/hexutils.c
+14 −22 src/segwit_addr.c
+17 −21 src/sigutils.c
+76 −686 src/timeutils.c
+19 −17 src/zxcanary.c
+30 −30 src/zxformat.c
+133 −134 src/zxutils_ledger.c
+1 −1 templates/Makefile.root
+1 −1 tests/asciify.cpp
+1 −1 tests/base64.cpp
+1 −1 tests/bech32.cpp
+1 −1 tests/bip44path.cpp
+1 −1 tests/buffering_tests.cpp
+1 −1 tests/doubledabble.cpp
+1 −1 tests/hexutils.cpp
+35 −1 tests/macros.cpp
+1 −1 tests/sigutils.cpp
+1 −1 tests/zxformat.cpp
6 changes: 4 additions & 2 deletions tests_zemu/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,15 @@
],
"scripts": {
"clean": "ts-node tests/pullImageKillOld.ts",
"test": "yarn clean && jest --maxConcurrency 2"
"test": "yarn clean && jest --maxConcurrency 2",
"try": "node try.mjs"
},
"dependencies": {
"@zondax/ledger-algorand": "../js",
"@zondax/zemu": "^0.51.0"
"@zondax/zemu": "^0.53.0"
},
"devDependencies": {
"@ledgerhq/hw-transport-node-hid": "^6.29.5",
"@types/jest": "^29.4.0",
"@types/ledgerhq__hw-transport": "^4.21.4",
"@typescript-eslint/eslint-plugin": "^7.17.0",
Expand Down
Binary file modified tests_zemu/snapshots/fl-mainmenu/00001.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests_zemu/snapshots/fl-mainmenu/00002.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests_zemu/snapshots/fl-mainmenu/00003.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests_zemu/snapshots/fl-mainmenu/00004.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed tests_zemu/snapshots/fl-sign_application/00002.png
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests_zemu/snapshots/fl-sign_asset_config/00002.png
Binary file modified tests_zemu/snapshots/fl-sign_asset_config/00003.png
Binary file modified tests_zemu/snapshots/fl-sign_asset_freeze/00002.png
Binary file modified tests_zemu/snapshots/fl-sign_asset_freeze/00003.png
Binary file modified tests_zemu/snapshots/fl-sign_asset_transfer/00002.png
Binary file modified tests_zemu/snapshots/fl-sign_asset_transfer/00003.png
Binary file modified tests_zemu/snapshots/fl-sign_keyreg/00000.png
Binary file modified tests_zemu/snapshots/fl-sign_keyreg/00001.png
Binary file modified tests_zemu/snapshots/fl-sign_keyreg/00004.png
Binary file modified tests_zemu/snapshots/fl-sign_keyreg/00005.png
Binary file modified tests_zemu/snapshots/fl-sign_payment/00002.png
Binary file modified tests_zemu/snapshots/fl-sign_payment/00003.png
Binary file modified tests_zemu/snapshots/s-mainmenu/00004.png
Binary file modified tests_zemu/snapshots/s-mainmenu/00005.png
Binary file modified tests_zemu/snapshots/s-mainmenu/00011.png
Binary file modified tests_zemu/snapshots/s-mainmenu/00012.png
Binary file modified tests_zemu/snapshots/s-show_address/00000.png
Binary file modified tests_zemu/snapshots/s-show_address/00001.png
Binary file modified tests_zemu/snapshots/s-show_address/00002.png
Binary file modified tests_zemu/snapshots/s-show_address/00003.png
Binary file modified tests_zemu/snapshots/s-show_address_reject/00000.png
Binary file modified tests_zemu/snapshots/s-show_address_reject/00001.png
Binary file modified tests_zemu/snapshots/s-show_address_reject/00002.png
Binary file modified tests_zemu/snapshots/s-show_address_reject/00003.png
Binary file modified tests_zemu/snapshots/s-show_address_reject/00004.png
Binary file removed tests_zemu/snapshots/s-sign_application/00000.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/s-sign_application_big/00000.png
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Binary file modified tests_zemu/snapshots/s-sign_asset_config/00000.png
Binary file modified tests_zemu/snapshots/s-sign_asset_config/00001.png
Binary file modified tests_zemu/snapshots/s-sign_asset_config/00002.png
Binary file modified tests_zemu/snapshots/s-sign_asset_config/00003.png
Binary file modified tests_zemu/snapshots/s-sign_asset_config/00004.png
Binary file modified tests_zemu/snapshots/s-sign_asset_config/00005.png
Binary file modified tests_zemu/snapshots/s-sign_asset_config/00006.png
Binary file modified tests_zemu/snapshots/s-sign_asset_config/00007.png
Binary file modified tests_zemu/snapshots/s-sign_asset_config/00008.png
Binary file modified tests_zemu/snapshots/s-sign_asset_config/00009.png
Binary file modified tests_zemu/snapshots/s-sign_asset_config/00010.png
Binary file modified tests_zemu/snapshots/s-sign_asset_config/00011.png
Binary file modified tests_zemu/snapshots/s-sign_asset_config/00012.png
Binary file modified tests_zemu/snapshots/s-sign_asset_config/00013.png
Binary file modified tests_zemu/snapshots/s-sign_asset_config/00014.png
Binary file modified tests_zemu/snapshots/s-sign_asset_config/00015.png
Binary file modified tests_zemu/snapshots/s-sign_asset_config/00016.png
Binary file removed tests_zemu/snapshots/s-sign_asset_config/00017.png
Diff not rendered.
Binary file modified tests_zemu/snapshots/s-sign_asset_freeze/00000.png
Binary file modified tests_zemu/snapshots/s-sign_asset_freeze/00001.png
Binary file modified tests_zemu/snapshots/s-sign_asset_freeze/00002.png
Binary file modified tests_zemu/snapshots/s-sign_asset_freeze/00003.png
Binary file modified tests_zemu/snapshots/s-sign_asset_freeze/00004.png
Binary file modified tests_zemu/snapshots/s-sign_asset_freeze/00005.png
Binary file modified tests_zemu/snapshots/s-sign_asset_freeze/00006.png
Binary file modified tests_zemu/snapshots/s-sign_asset_freeze/00007.png
Binary file modified tests_zemu/snapshots/s-sign_asset_freeze/00008.png
Binary file modified tests_zemu/snapshots/s-sign_asset_freeze/00009.png
Binary file modified tests_zemu/snapshots/s-sign_asset_freeze/00010.png
Binary file modified tests_zemu/snapshots/s-sign_asset_freeze/00011.png
Binary file removed tests_zemu/snapshots/s-sign_asset_freeze/00012.png
Diff not rendered.
Binary file modified tests_zemu/snapshots/s-sign_asset_transfer/00000.png
Binary file modified tests_zemu/snapshots/s-sign_asset_transfer/00001.png
Binary file modified tests_zemu/snapshots/s-sign_asset_transfer/00002.png
Binary file modified tests_zemu/snapshots/s-sign_asset_transfer/00003.png
Binary file modified tests_zemu/snapshots/s-sign_asset_transfer/00004.png
Binary file modified tests_zemu/snapshots/s-sign_asset_transfer/00005.png
Binary file modified tests_zemu/snapshots/s-sign_asset_transfer/00006.png
Binary file modified tests_zemu/snapshots/s-sign_asset_transfer/00007.png
Binary file modified tests_zemu/snapshots/s-sign_asset_transfer/00008.png
Binary file modified tests_zemu/snapshots/s-sign_asset_transfer/00009.png
Binary file modified tests_zemu/snapshots/s-sign_asset_transfer/00010.png
Binary file modified tests_zemu/snapshots/s-sign_asset_transfer/00011.png
Binary file removed tests_zemu/snapshots/s-sign_asset_transfer/00012.png
Diff not rendered.
Binary file modified tests_zemu/snapshots/s-sign_keyreg/00000.png
Binary file modified tests_zemu/snapshots/s-sign_keyreg/00001.png
Binary file modified tests_zemu/snapshots/s-sign_keyreg/00002.png
Binary file modified tests_zemu/snapshots/s-sign_keyreg/00003.png
Binary file modified tests_zemu/snapshots/s-sign_keyreg/00004.png
Binary file modified tests_zemu/snapshots/s-sign_keyreg/00005.png
Binary file modified tests_zemu/snapshots/s-sign_keyreg/00006.png
Binary file modified tests_zemu/snapshots/s-sign_keyreg/00007.png
Binary file modified tests_zemu/snapshots/s-sign_keyreg/00008.png
Binary file modified tests_zemu/snapshots/s-sign_keyreg/00009.png
Binary file modified tests_zemu/snapshots/s-sign_keyreg/00010.png
Binary file modified tests_zemu/snapshots/s-sign_keyreg/00011.png
Binary file modified tests_zemu/snapshots/s-sign_keyreg/00012.png
Binary file modified tests_zemu/snapshots/s-sign_keyreg/00013.png
Binary file modified tests_zemu/snapshots/s-sign_keyreg/00014.png
Binary file modified tests_zemu/snapshots/s-sign_keyreg/00015.png
Binary file modified tests_zemu/snapshots/s-sign_keyreg/00016.png
Binary file modified tests_zemu/snapshots/s-sign_keyreg/00017.png
Binary file modified tests_zemu/snapshots/s-sign_keyreg/00018.png
Binary file removed tests_zemu/snapshots/s-sign_keyreg/00019.png
Diff not rendered.
Binary file modified tests_zemu/snapshots/s-sign_payment/00000.png
Binary file modified tests_zemu/snapshots/s-sign_payment/00001.png
Binary file modified tests_zemu/snapshots/s-sign_payment/00002.png
Binary file modified tests_zemu/snapshots/s-sign_payment/00003.png
Binary file modified tests_zemu/snapshots/s-sign_payment/00004.png
Binary file modified tests_zemu/snapshots/s-sign_payment/00005.png
Binary file modified tests_zemu/snapshots/s-sign_payment/00006.png
Binary file modified tests_zemu/snapshots/s-sign_payment/00007.png
Binary file modified tests_zemu/snapshots/s-sign_payment/00008.png
Binary file modified tests_zemu/snapshots/s-sign_payment/00009.png
Binary file modified tests_zemu/snapshots/s-sign_payment/00010.png
Binary file modified tests_zemu/snapshots/s-sign_payment/00011.png
Binary file modified tests_zemu/snapshots/s-sign_payment/00012.png
Binary file modified tests_zemu/snapshots/s-sign_payment/00013.png
Binary file modified tests_zemu/snapshots/s-sign_payment/00014.png
Binary file removed tests_zemu/snapshots/s-sign_payment/00015.png
Diff not rendered.
Binary file modified tests_zemu/snapshots/sp-mainmenu/00000.png
Binary file modified tests_zemu/snapshots/sp-mainmenu/00001.png
Binary file modified tests_zemu/snapshots/sp-mainmenu/00002.png
Binary file modified tests_zemu/snapshots/sp-mainmenu/00003.png
Binary file modified tests_zemu/snapshots/sp-mainmenu/00004.png
Binary file modified tests_zemu/snapshots/sp-mainmenu/00005.png
Binary file modified tests_zemu/snapshots/sp-mainmenu/00006.png
Binary file modified tests_zemu/snapshots/sp-mainmenu/00010.png
Binary file modified tests_zemu/snapshots/sp-mainmenu/00011.png
Binary file modified tests_zemu/snapshots/sp-mainmenu/00012.png
Binary file modified tests_zemu/snapshots/sp-mainmenu/00013.png
Binary file modified tests_zemu/snapshots/sp-mainmenu/00014.png
Binary file modified tests_zemu/snapshots/sp-show_address/00001.png
Binary file modified tests_zemu/snapshots/sp-show_address/00002.png
Binary file modified tests_zemu/snapshots/sp-show_address/00004.png
Binary file modified tests_zemu/snapshots/sp-show_address_reject/00001.png
Binary file modified tests_zemu/snapshots/sp-show_address_reject/00002.png
Binary file modified tests_zemu/snapshots/sp-show_address_reject/00004.png
Binary file modified tests_zemu/snapshots/sp-show_address_reject/00005.png
Binary file removed tests_zemu/snapshots/sp-sign_application/00001.png
Diff not rendered.
Binary file removed tests_zemu/snapshots/sp-sign_application/00002.png
Diff not rendered.
Loading
Loading