diff --git a/app/Makefile.version b/app/Makefile.version index 535f51d..0d6dbc7 100644 --- a/app/Makefile.version +++ b/app/Makefile.version @@ -3,4 +3,4 @@ APPVERSION_M=0 # This is the minor version APPVERSION_N=0 # This is the patch version -APPVERSION_P=5 +APPVERSION_P=6 diff --git a/app/src/apdu_handler.c b/app/src/apdu_handler.c index fcd963c..64415a1 100644 --- a/app/src/apdu_handler.c +++ b/app/src/apdu_handler.c @@ -26,6 +26,7 @@ #include "coin.h" #include "crypto.h" #include "crypto_helper.h" +#include "hash.h" #include "tx.h" #include "view.h" #include "view_internal.h" @@ -159,6 +160,26 @@ __Z_INLINE void handleSign(volatile uint32_t *flags, volatile uint32_t *tx, uint *flags |= IO_ASYNCH_REPLY; } +__Z_INLINE void handleSignHash(volatile uint32_t *flags, volatile uint32_t *tx, uint32_t rx) { + zemu_log("handleSignHash\n"); + if (!process_chunk(tx, rx)) { + THROW(APDU_CODE_OK); + } + + const char *error_msg = hash_parse(); + CHECK_APP_CANARY() + if (error_msg != NULL) { + const int error_msg_length = strnlen(error_msg, sizeof(G_io_apdu_buffer)); + memcpy(G_io_apdu_buffer, error_msg, error_msg_length); + *tx += (error_msg_length); + THROW(APDU_CODE_DATA_INVALID); + } + + view_review_init(hash_getItem, hash_getNumItems, app_sign_hash); + view_review_show(REVIEW_TXN); + *flags |= IO_ASYNCH_REPLY; +} + __Z_INLINE void handle_getversion(__Z_UNUSED volatile uint32_t *flags, volatile uint32_t *tx) { G_io_apdu_buffer[0] = 0; @@ -216,6 +237,12 @@ void handleApdu(volatile uint32_t *flags, volatile uint32_t *tx, uint32_t rx) { handleSign(flags, tx, rx); break; } + + case INS_SIGN_HASH: { + CHECK_PIN_VALIDATED() + handleSignHash(flags, tx, rx); + break; + } default: THROW(APDU_CODE_INS_NOT_SUPPORTED); } diff --git a/app/src/coin.h b/app/src/coin.h index 6f3f5a4..b1b330b 100644 --- a/app/src/coin.h +++ b/app/src/coin.h @@ -26,6 +26,7 @@ typedef enum { UNSUPPORTED = 0xFF, } address_encoding_e; +#define INS_SIGN_HASH 0x3 #define HDPATH_LEN_DEFAULT 5 #define HDPATH_0_DEFAULT (0x80000000u | 0x2c) // 44 #define HDPATH_1_DEFAULT (0x80000000u | 0x2328) // 9000 diff --git a/app/src/common/actions.h b/app/src/common/actions.h index baf2bfc..0ea0ce6 100644 --- a/app/src/common/actions.h +++ b/app/src/common/actions.h @@ -46,7 +46,22 @@ __Z_INLINE void app_sign() { uint16_t replyLen = 0; MEMZERO(G_io_apdu_buffer, IO_APDU_BUFFER_SIZE); - const zxerr_t err = crypto_sign(G_io_apdu_buffer, IO_APDU_BUFFER_SIZE - 3, &replyLen); + const zxerr_t err = crypto_sign(G_io_apdu_buffer, IO_APDU_BUFFER_SIZE - 3, &replyLen, false); + + if (err != zxerr_ok || replyLen == 0) { + set_code(G_io_apdu_buffer, 0, APDU_CODE_SIGN_VERIFY_ERROR); + io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, 2); + } else { + set_code(G_io_apdu_buffer, replyLen, APDU_CODE_OK); + io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, replyLen + 2); + } +} + +__Z_INLINE void app_sign_hash() { + uint16_t replyLen = 0; + + MEMZERO(G_io_apdu_buffer, IO_APDU_BUFFER_SIZE); + const zxerr_t err = crypto_sign(G_io_apdu_buffer, IO_APDU_BUFFER_SIZE - 3, &replyLen, true); if (err != zxerr_ok || replyLen == 0) { set_code(G_io_apdu_buffer, 0, APDU_CODE_SIGN_VERIFY_ERROR); diff --git a/app/src/crypto.c b/app/src/crypto.c index d566e64..24c118b 100644 --- a/app/src/crypto.c +++ b/app/src/crypto.c @@ -68,7 +68,7 @@ __Z_INLINE zxerr_t compressPubkey(const uint8_t *pubkey, uint16_t pubkeyLen, uin return zxerr_ok; } -zxerr_t crypto_sign(uint8_t *signature, uint16_t signatureMaxlen, uint16_t *sigSize) { +zxerr_t crypto_sign(uint8_t *signature, uint16_t signatureMaxlen, uint16_t *sigSize, bool hash) { if (signature == NULL || sigSize == NULL) { return zxerr_invalid_crypto_settings; } @@ -78,7 +78,11 @@ zxerr_t crypto_sign(uint8_t *signature, uint16_t signatureMaxlen, uint16_t *sigS // Hash it const uint8_t *message = tx_get_buffer(); const uint16_t messageLen = tx_get_buffer_length(); - crypto_sha256(message, messageLen, messageDigest, CX_SHA256_SIZE); + if (!hash) { + crypto_sha256(message, messageLen, messageDigest, CX_SHA256_SIZE); + } else { + MEMCPY(messageDigest, message, messageLen); + } cx_ecfp_private_key_t cx_privateKey = {0}; uint8_t privateKeyData[64] = {0}; diff --git a/app/src/crypto.h b/app/src/crypto.h index 2bdda5c..a0b1a8e 100644 --- a/app/src/crypto.h +++ b/app/src/crypto.h @@ -31,7 +31,7 @@ extern uint8_t change_address[20]; zxerr_t crypto_fillAddress(uint8_t *buffer, uint16_t bufferLen, uint16_t *addrResponseLen); -zxerr_t crypto_sign(uint8_t *signature, uint16_t signatureMaxlen, uint16_t *sigSize); +zxerr_t crypto_sign(uint8_t *signature, uint16_t signatureMaxlen, uint16_t *sigSize, bool hash); zxerr_t crypto_get_address(void); diff --git a/app/src/hash.c b/app/src/hash.c new file mode 100644 index 0000000..6cb06b2 --- /dev/null +++ b/app/src/hash.c @@ -0,0 +1,72 @@ +/******************************************************************************* + * (c) 2018 - 2022 Zondax AG + * + * 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 "app_mode.h" +#include "coin.h" +#include "crypto.h" +#include "crypto_helper.h" +#include "parser_impl.h" +#include "tx.h" +#include "zxerror.h" +#include "zxformat.h" +#include "zxmacros.h" + +const char *hash_parse() { + const uint8_t *data = tx_get_buffer(); + const size_t dataLen = tx_get_buffer_length(); + if (data == NULL || dataLen == 0) { + return parser_getErrorDescription(parser_no_data); + } + + if (dataLen != 32) { + return parser_getErrorDescription(parser_unexpected_buffer_end); + } + return NULL; +} + +zxerr_t hash_getNumItems(uint8_t *num_items) { + zemu_log_stack("hash_getNumItems"); + *num_items = 1; + return zxerr_ok; +} + +zxerr_t hash_getItem(int8_t displayIdx, char *outKey, uint16_t outKeyLen, char *outVal, uint16_t outValLen, uint8_t pageIdx, + uint8_t *pageCount) { + ZEMU_LOGF(200, "[hash_getItem] %d/%d\n", displayIdx, pageIdx) + + MEMZERO(outKey, outKeyLen); + MEMZERO(outVal, outValLen); + snprintf(outKey, outKeyLen, "?"); + snprintf(outVal, outValLen, " "); + *pageCount = 1; + + const uint8_t *hash = tx_get_buffer(); + const uint16_t hashLength = tx_get_buffer_length(); + + if (hashLength == 0) { + return zxerr_no_data; + } + + if (displayIdx == 0) { + snprintf(outKey, outKeyLen, "Hash"); + pageStringHex(outVal, outValLen, (const char *)hash, hashLength, pageIdx, pageCount); + return zxerr_ok; + } + + return zxerr_no_data; +} diff --git a/app/src/hash.h b/app/src/hash.h new file mode 100644 index 0000000..c040d60 --- /dev/null +++ b/app/src/hash.h @@ -0,0 +1,35 @@ +/******************************************************************************* + * (c) 2018 - 2022 Zondax AG + * + * 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. + ********************************************************************************/ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif +#include "zxerror.h" + +const char *hash_parse(); + +// Return the number of items in the address view +zxerr_t hash_getNumItems(uint8_t *num_items); + +// Gets an specific item from the address view (including paging) +zxerr_t hash_getItem(int8_t displayIdx, char *outKey, uint16_t outKeyLen, char *outValue, uint16_t outValueLen, + uint8_t pageIdx, uint8_t *pageCount); + +#ifdef __cplusplus +} +#endif diff --git a/app/src/parser_impl.c b/app/src/parser_impl.c index df0d471..ea2b6d8 100644 --- a/app/src/parser_impl.c +++ b/app/src/parser_impl.c @@ -16,6 +16,7 @@ #include "parser_impl.h" +#include "app_mode.h" #include "parser_impl_common.h" #include "tx_cchain.h" #include "tx_pchain.h" @@ -154,31 +155,35 @@ parser_error_t _read(parser_context_t *ctx, parser_tx_t *v) { parser_error_t getNumItems(const parser_context_t *ctx, uint8_t *numItems) { *numItems = 0; + const uint8_t expertModeHashField = app_mode_expert() ? 1 : 0; switch (ctx->tx_obj->tx_type) { case p_export_tx: // Tx + fee + Amounts(= n_outs) + Addresses *numItems = 2 + ctx->tx_obj->tx.p_export_tx.secp_outs.n_addrs + - parser_get_renderable_outputs_number(ctx->tx_obj->tx.p_export_tx.secp_outs.out_render_mask); + parser_get_renderable_outputs_number(ctx->tx_obj->tx.p_export_tx.secp_outs.out_render_mask) + + expertModeHashField; break; case p_import_tx: // Tx + fee + Amounts(= n_outs) + Addresses *numItems = 2 + ctx->tx_obj->tx.p_import_tx.base_secp_outs.n_addrs + - parser_get_renderable_outputs_number(ctx->tx_obj->tx.p_import_tx.base_secp_outs.out_render_mask); + parser_get_renderable_outputs_number(ctx->tx_obj->tx.p_import_tx.base_secp_outs.out_render_mask) + + expertModeHashField; break; case c_export_tx: // Tx + fee + Amounts(= n_outs) + Addresses *numItems = 2 + ctx->tx_obj->tx.c_export_tx.secp_outs.n_addrs + - parser_get_renderable_outputs_number(ctx->tx_obj->tx.c_export_tx.secp_outs.out_render_mask); + parser_get_renderable_outputs_number(ctx->tx_obj->tx.c_export_tx.secp_outs.out_render_mask) + + expertModeHashField; break; case c_import_tx: // Tx + fee + (amount + address) * n_outs - *numItems = 2 + (2 * ctx->tx_obj->tx.c_import_tx.evm_outs.n_outs); + *numItems = 2 + (2 * ctx->tx_obj->tx.c_import_tx.evm_outs.n_outs) + expertModeHashField; break; case add_delegator_tx: - *numItems = 6; + *numItems = 6 + expertModeHashField; break; case add_validator_tx: - *numItems = 7; + *numItems = 7 + expertModeHashField; break; default: break; diff --git a/app/src/parser_impl.h b/app/src/parser_impl.h index f1b48ab..7f43366 100644 --- a/app/src/parser_impl.h +++ b/app/src/parser_impl.h @@ -27,6 +27,7 @@ extern "C" { parser_error_t _read(parser_context_t *ctx, parser_tx_t *v); parser_error_t getNumItems(const parser_context_t *ctx, uint8_t *numItems); +const char *parser_getErrorDescription(parser_error_t err); #ifdef __cplusplus } #endif diff --git a/app/src/parser_print_common.c b/app/src/parser_print_common.c index 4aee9ef..d1b6a33 100644 --- a/app/src/parser_print_common.c +++ b/app/src/parser_print_common.c @@ -185,3 +185,22 @@ parser_error_t printNodeId(const uint8_t *nodeId, char *outVal, uint16_t outValL return parser_ok; } + +parser_error_t printHash(const parser_context_t *ctx, char *outVal, uint16_t outValLen, uint8_t pageIdx, + uint8_t *pageCount) { + unsigned char hash[CX_SHA256_SIZE] = {0}; + +#if defined(TARGET_NANOS) || defined(TARGET_NANOS2) || defined(TARGET_NANOX) || defined(TARGET_STAX) + cx_sha256_t hash_ctx; + memset(&hash_ctx, 0, sizeof(hash_ctx)); + CHECK_CX_PARSER_OK(cx_sha256_init_no_throw(&hash_ctx)); + CHECK_CX_PARSER_OK(cx_hash_no_throw(&hash_ctx.header, CX_LAST, ctx->buffer, ctx->bufferLen, hash, sizeof(hash))); +#else + picohash_ctx_t hash_ctx; + picohash_init_sha256(&hash_ctx); + picohash_update(&hash_ctx, ctx->buffer, ctx->bufferLen); + picohash_final(&hash_ctx, &hash); +#endif + pageStringHex(outVal, outValLen, (const char *)hash, sizeof(hash), pageIdx, pageCount); + return parser_ok; +} diff --git a/app/src/parser_print_common.h b/app/src/parser_print_common.h index 5769c65..c6bc29d 100644 --- a/app/src/parser_print_common.h +++ b/app/src/parser_print_common.h @@ -37,6 +37,7 @@ parser_error_t printTimestamp(uint64_t timestamp, char *outVal, uint16_t outValL parser_error_t printNodeId(const uint8_t *nodeId, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount); +parser_error_t printHash(const parser_context_t *ctx, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount); #ifdef __cplusplus } diff --git a/app/src/tx_cchain.c b/app/src/tx_cchain.c index d4474be..7d04224 100644 --- a/app/src/tx_cchain.c +++ b/app/src/tx_cchain.c @@ -156,6 +156,14 @@ parser_error_t print_c_export_tx(const parser_context_t *ctx, uint8_t displayIdx return parser_ok; } + if (displayIdx == ctx->tx_obj->tx.c_export_tx.secp_outs.n_addrs + + parser_get_renderable_outputs_number(ctx->tx_obj->tx.c_export_tx.secp_outs.out_render_mask) + 1 + + 1) { + snprintf(outKey, outKeyLen, "Hash"); + printHash(ctx, outVal, outValLen, pageIdx, pageCount); + return parser_ok; + } + return parser_display_idx_out_of_range; } @@ -209,5 +217,11 @@ parser_error_t print_c_import_tx(const parser_context_t *ctx, uint8_t displayIdx return parser_ok; } + if (displayIdx == (2 * ctx->tx_obj->tx.c_import_tx.evm_outs.n_outs) + 1 + 1) { + snprintf(outKey, outKeyLen, "Hash"); + printHash(ctx, outVal, outValLen, pageIdx, pageCount); + return parser_ok; + } + return parser_display_idx_out_of_range; } diff --git a/app/src/tx_pchain.c b/app/src/tx_pchain.c index dbb78b8..e643437 100644 --- a/app/src/tx_pchain.c +++ b/app/src/tx_pchain.c @@ -15,6 +15,7 @@ ********************************************************************************/ #include "tx_pchain.h" +#include "app_mode.h" #include "parser_impl_common.h" #include "parser_print_common.h" #include "zxformat.h" @@ -180,7 +181,7 @@ parser_error_t parser_pchain(parser_context_t *c, parser_tx_t *v) { parser_error_t print_add_del_val_tx(const parser_context_t *ctx, uint8_t displayIdx, char *outKey, uint16_t outKeyLen, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount) { - if (ctx->tx_obj->tx_type == add_delegator_tx && displayIdx == 5) { + if (ctx->tx_obj->tx_type == add_delegator_tx && displayIdx >= 5) { displayIdx += 1; } @@ -222,6 +223,11 @@ parser_error_t print_add_del_val_tx(const parser_context_t *ctx, uint8_t display printAmount64(fee, AMOUNT_DECIMAL_PLACES, ctx->tx_obj->network_id, outVal, outValLen, pageIdx, pageCount)); break; default: + if (app_mode_expert() && displayIdx == 7) { + snprintf(outKey, outKeyLen, "Hash"); + printHash(ctx, outVal, outValLen, pageIdx, pageCount); + return parser_ok; + } return parser_display_idx_out_of_range; } @@ -277,6 +283,14 @@ parser_error_t print_p_export_tx(const parser_context_t *ctx, uint8_t displayIdx return parser_ok; } + if (displayIdx == ctx->tx_obj->tx.p_export_tx.secp_outs.n_addrs + + parser_get_renderable_outputs_number(ctx->tx_obj->tx.p_export_tx.secp_outs.out_render_mask) + 1 + + 1) { + snprintf(outKey, outKeyLen, "Hash"); + printHash(ctx, outVal, outValLen, pageIdx, pageCount); + return parser_ok; + } + return parser_display_idx_out_of_range; } @@ -330,5 +344,12 @@ parser_error_t print_p_import_tx(const parser_context_t *ctx, uint8_t displayIdx return parser_ok; } + if (displayIdx == + ctx->tx_obj->tx.p_import_tx.base_secp_outs.n_addrs + ctx->tx_obj->tx.p_import_tx.base_secp_outs.n_outs + 1 + 1) { + snprintf(outKey, outKeyLen, "Hash"); + printHash(ctx, outVal, outValLen, pageIdx, pageCount); + return parser_ok; + } + return parser_display_idx_out_of_range; } diff --git a/js/src/consts.ts b/js/src/consts.ts index b466c58..d87a0c4 100644 --- a/js/src/consts.ts +++ b/js/src/consts.ts @@ -4,4 +4,12 @@ export const P2_VALUES = { DEFAULT: 0x00, }; +export const enum INS { + GET_VERSION = 0x00, + GET_ADDR = 0x01, + SIGN = 0x02, + SIGN_HASH = 0x03, +} + export const PKLEN = 33; +export const HASH_LEN = 32; diff --git a/js/src/index.ts b/js/src/index.ts index b7f8c42..c718b71 100644 --- a/js/src/index.ts +++ b/js/src/index.ts @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************* */ -import { P2_VALUES } from "./consts"; +import { HASH_LEN, INS, P2_VALUES } from "./consts"; import { ResponseAddress, ResponseSign, FlareIns } from "./types"; import GenericApp, { @@ -30,7 +30,6 @@ import { processGetAddrResponse, serializeHrp } from "./helper"; export * from "./types"; export default class FlareApp extends GenericApp { - readonly INS!: FlareIns; constructor(transport: Transport) { if (transport == null) throw new Error("Transport has not been defined"); @@ -40,6 +39,7 @@ export default class FlareApp extends GenericApp { GET_VERSION: 0x00, GET_ADDR: 0x01, SIGN: 0x02, + SIGN_HASH: 0x03, }, p1Values: { ONLY_RETRIEVE: 0x00, @@ -71,7 +71,7 @@ export default class FlareApp extends GenericApp { return this._pubkey(path, true, hrp); } - async signSendChunk(chunkIdx: number, chunkNum: number, chunk: Buffer): Promise { + async signSendChunk(chunkIdx: number, chunkNum: number, chunk: Buffer, ins: INS): Promise { let payloadType = PAYLOAD_TYPE.ADD; if (chunkIdx === 1) { payloadType = PAYLOAD_TYPE.INIT; @@ -81,7 +81,7 @@ export default class FlareApp extends GenericApp { } return await this.transport - .send(this.CLA, this.INS.SIGN, payloadType, 0, chunk, [ + .send(this.CLA, ins, payloadType, 0, chunk, [ LedgerError.NoErrors, LedgerError.DataIsInvalid, LedgerError.BadKeyHandle, @@ -120,7 +120,7 @@ export default class FlareApp extends GenericApp { async sign(path: string, message: Buffer): Promise { const chunks = this.prepareChunks(path, message); - return await this.signSendChunk(1, chunks.length, chunks[0]).then(async (response) => { + return await this.signSendChunk(1, chunks.length, chunks[0], INS.SIGN).then(async (response) => { let result: ResponseSign = { returnCode: response.returnCode, errorMessage: response.errorMessage, @@ -128,7 +128,30 @@ export default class FlareApp extends GenericApp { for (let i = 1; i < chunks.length; i += 1) { // eslint-disable-next-line no-await-in-loop - result = await this.signSendChunk(1 + i, chunks.length, chunks[i]); + result = await this.signSendChunk(1 + i, chunks.length, chunks[i], INS.SIGN); + if (result.returnCode !== LedgerError.NoErrors) { + break; + } + } + return result; + }, processErrorResponse); + } + + async signHash(path: string, hash: Buffer): Promise { + if (hash.length !== HASH_LEN) { + throw new Error("Invalid hash length"); + } + + const chunks = this.prepareChunks(path, hash); + return await this.signSendChunk(1, chunks.length, chunks[0], INS.SIGN_HASH).then(async (response) => { + let result: ResponseSign = { + returnCode: response.returnCode, + errorMessage: response.errorMessage, + }; + + for (let i = 1; i < chunks.length; i += 1) { + // eslint-disable-next-line no-await-in-loop + result = await this.signSendChunk(1 + i, chunks.length, chunks[i], INS.SIGN_HASH); if (result.returnCode !== LedgerError.NoErrors) { break; } diff --git a/js/src/types.ts b/js/src/types.ts index 175bc9f..6713285 100644 --- a/js/src/types.ts +++ b/js/src/types.ts @@ -4,6 +4,7 @@ export interface FlareIns extends INSGeneric { GET_VERSION: 0x00; GET_ADDR: 0x01; SIGN: 0x02; + SIGN_HASH: 0x03; } export interface ResponseAddress extends ResponseBase { diff --git a/tests/testcases.json b/tests/testcases.json index 52608cf..3c23229 100644 --- a/tests/testcases.json +++ b/tests/testcases.json @@ -15,7 +15,9 @@ "1 | Amount : 10.001 C2FLR", "2 | Address [1/2] : costwo1mwy6yvuk8xjl87scxfvvl63xtex3enn", "2 | Address [2/2] : vwcckmr", - "3 | Fee : 1 C2FLR" + "3 | Fee : 1 C2FLR", + "4 | Hash [1/2] : fca356a36fa8ab1b3b6a6a7e5ff58cc7dc82bb", + "4 | Hash [2/2] : 09110093c93820fc45d72c776e" ] }, { @@ -44,7 +46,9 @@ "4 | Amount : 10.001000001 C2FLR", "5 | Address [1/2] : costwo1mwy6yvuk8xjl87scxfvvl63xtex3enn", "5 | Address [2/2] : vwcckmr", - "6 | Fee : 18446744064.708551615 C2FLR" + "6 | Fee : 18446744064.708551615 C2FLR", + "7 | Hash [1/2] : d72e803ccb6d9e9a472ad72f3ca2e750375462", + "7 | Hash [2/2] : 0a47f8c9dab43cde2a61854857" ] }, { @@ -63,7 +67,9 @@ "1 | Amount : 10 C2FLR", "2 | Address [1/2] : costwo1mwy6yvuk8xjl87scxfvvl63xtex3enn", "2 | Address [2/2] : vwcckmr", - "3 | Fee : 0.001 C2FLR" + "3 | Fee : 0.001 C2FLR", + "4 | Hash [1/2] : b8e2bde38c114bc5052e06bda256e35389c231", + "4 | Hash [2/2] : df2e1514c61d52460b7d9e72d2" ] }, { @@ -88,7 +94,9 @@ "3 | Total stake : 50000 C2FLR", "4 | Rewards to [1/2] : costwo1mwy6yvuk8xjl87scxfvvl63xtex3enn", "4 | Rewards to [2/2] : vwcckmr", - "5 | Fee : 0 C2FLR" + "5 | Fee : 0 C2FLR", + "6 | Hash [1/2] : 31a6ae7a1b013cc42139c6068c6c4e5e0f54f0", + "6 | Hash [2/2] : be5e7df8b23994eab6879df943" ] }, { @@ -109,13 +117,15 @@ "output_expert": [ "0 | Validator [1/2] : NodeID-BR9YCsrXGVsc8sUoraVrBkWemnPGRSq", "0 | Validator [2/2] : YZ", - "1 | Start time: 2023-12-07 15:48:39 UTC", - "2 | End time: 2023-12-19 14:27:29 UTC", - "3 | Total stake: 1000000.1 C2FLR", + "1 | Start time : 2023-12-07 15:48:39 UTC", + "2 | End time : 2023-12-19 14:27:29 UTC", + "3 | Total stake : 1000000.1 C2FLR", "4 | Rewards to [1/2] : costwo1mwy6yvuk8xjl87scxfvvl63xtex3enn", "4 | Rewards to [2/2] : vwcckmr", - "5 | Delegate fee: 10 %", - "6 | Fee: 0 C2FLR" + "5 | Delegate fee : 10 %", + "6 | Fee : 0 C2FLR", + "7 | Hash [1/2] : 702314ffbbba8be44aafc2da46c8690b54d567", + "7 | Hash [2/2] : 28ebd41f9056f89c0ad41f4a40" ] }, { @@ -134,7 +144,9 @@ "1 | Amount : 1051010 C2FLR", "2 | Address [1/2] : costwo1mwy6yvuk8xjl87scxfvvl63xtex3enn", "2 | Address [2/2] : vwcckmr", - "3 | Fee : 0.001 C2FLR" + "3 | Fee : 0.001 C2FLR", + "4 | Hash [1/2] : c4f6fac7b240949e5de67067ca7fe24c868198", + "4 | Hash [2/2] : 07aeebee9e29acbfd52cce9ed3" ] }, { @@ -149,10 +161,13 @@ "3 | Fee : 0.00028075 C2FLR" ], "output_expert": [ - "0 | Import : P to C chain", + "0 | Import : C from P chain", + "1 | Amount : 1051009.99971925 C2FLR", "2 | Address [1/2] : 0x5a6a8c28a2fc040df3b7490440c50f00099c", "2 | Address [2/2] : 957a", - "3 | Fee : 0.00028075 C2FLR" + "3 | Fee : 0.00028075 C2FLR", + "4 | Hash [1/2] : 6645e6aefb1583eb245cafa615af51b679feae", + "4 | Hash [2/2] : e278151d38e8f060c8c756fd10" ] }, { @@ -171,7 +186,9 @@ "1 | Amount : 1.001 FLR", "2 | Address [1/2] : flare1mwy6yvuk8xjl87scxfvvl63xtex3ennv", "2 | Address [2/2] : kkpasz", - "3 | Fee : 0.00028075 FLR" + "3 | Fee : 0.00028075 FLR", + "4 | Hash [1/2] : 572e1830c7c59ecc9eadc437c7243224a77ed3", + "4 | Hash [2/2] : 85eef2163dc92802e38c494c84" ] }, { @@ -190,7 +207,9 @@ "1 | Amount : 2.1351 FLR", "2 | Address [1/2] : flare1mwy6yvuk8xjl87scxfvvl63xtex3ennv", "2 | Address [2/2] : kkpasz", - "3 | Fee : 0.01234 FLR" + "3 | Fee : 0.01234 FLR", + "4 | Hash [1/2] : 033412c293b34e5deff5c497fdf9addb201130", + "4 | Hash [2/2] : b920831a9242b23488078d3723" ] }, { @@ -209,7 +228,9 @@ "1 | Amount : 2.1341 FLR", "2 | Address [1/2] : flare1mwy6yvuk8xjl87scxfvvl63xtex3ennv", "2 | Address [2/2] : kkpasz", - "3 | Fee : 0.001 FLR" + "3 | Fee : 0.001 FLR", + "4 | Hash [1/2] : ee779397f51a379e7b1719cfc2929aab32321d", + "4 | Hash [2/2] : e59a2b745c477abdc6d818601e" ] }, { @@ -228,7 +249,9 @@ "1 | Amount : 4.2672 FLR", "2 | Address [1/2] : flare1mwy6yvuk8xjl87scxfvvl63xtex3ennv", "2 | Address [2/2] : kkpasz", - "3 | Fee : 0.001 FLR" + "3 | Fee : 0.001 FLR", + "4 | Hash [1/2] : d275b323622305ae84375e1deb2818e2f4c332", + "4 | Hash [2/2] : 724d17eefee674bbe57c9403b1" ] }, { @@ -243,11 +266,13 @@ "3 | Fee : 0.00030321 FLR" ], "output_expert": [ - "0 | Import : P to C chain", + "0 | Import : C from P chain", "1 | Amount : 4.26689679 FLR", "2 | Address [1/2] : 0x5a6a8c28a2fc040df3b7490440c50f00099c", "2 | Address [2/2] : 957a", - "3 | Fee : 0.00030321 FLR" + "3 | Fee : 0.00030321 FLR", + "4 | Hash [1/2] : 7eb6bdf75dccc487cca74adc1d5bf84b3d0edc", + "4 | Hash [2/2] : 51761c738cd02007490711c639", ] } ] diff --git a/tests/ui_tests.cpp b/tests/ui_tests.cpp index 514a326..8b92500 100644 --- a/tests/ui_tests.cpp +++ b/tests/ui_tests.cpp @@ -1,28 +1,29 @@ /******************************************************************************* -* (c) 2018 - 2023 Zondax AG -* -* 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. -********************************************************************************/ + * (c) 2018 - 2023 Zondax AG + * + * 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 "gmock/gmock.h" - -#include -#include -#include #include +#include #include -#include "parser.h" + +#include +#include + #include "app_mode.h" +#include "gmock/gmock.h" +#include "parser.h" #include "utils/common.h" using ::testing::TestWithParam; @@ -36,9 +37,9 @@ typedef struct { } testcase_t; class JsonTestsA : public ::testing::TestWithParam { -public: + public: struct PrintToStringParamName { - template + template std::string operator()(const testing::TestParamInfo &info) const { auto p = static_cast(info.param); std::stringstream ss; @@ -68,7 +69,6 @@ std::vector GetJsonTestCases(std::string jsonFile) { std::cout << "Number of testcases: " << obj.size() << std::endl; for (int i = 0; i < obj.size(); i++) { - auto outputs = std::vector(); for (auto s : obj[i]["output"]) { outputs.push_back(s.asString()); @@ -79,20 +79,14 @@ std::vector GetJsonTestCases(std::string jsonFile) { outputs_expert.push_back(s.asString()); } - answer.push_back(testcase_t{ - obj[i]["index"].asUInt64(), - obj[i]["name"].asString(), - obj[i]["blob"].asString(), - outputs, - outputs_expert - }); + answer.push_back(testcase_t{obj[i]["index"].asUInt64(), obj[i]["name"].asString(), obj[i]["blob"].asString(), + outputs, outputs_expert}); } return answer; } void check_testcase(const testcase_t &tc, bool expert_mode) { - app_mode_set_expert(expert_mode); parser_context_t ctx; @@ -127,10 +121,7 @@ void check_testcase(const testcase_t &tc, bool expert_mode) { INSTANTIATE_TEST_SUITE_P -( - JsonTestCasesCurrentTxVer, - JsonTestsA, - ::testing::ValuesIn(GetJsonTestCases("testcases.json")), - JsonTestsA::PrintToStringParamName() -); + (JsonTestCasesCurrentTxVer, JsonTestsA, ::testing::ValuesIn(GetJsonTestCases("testcases.json")), + JsonTestsA::PrintToStringParamName()); TEST_P(JsonTestsA, JsonTestsA_CheckUIOutput_CurrentTX_Normal) { check_testcase(GetParam(), false); } +TEST_P(JsonTestsA, JsonTestsA_CheckUIOutput_CurrentTX_Expert) { check_testcase(GetParam(), true); } diff --git a/tests_zemu/package.json b/tests_zemu/package.json index 5c248c8..a8748eb 100644 --- a/tests_zemu/package.json +++ b/tests_zemu/package.json @@ -37,6 +37,7 @@ "eslint-plugin-prettier": "^5.0.1", "jest": "29.7.0", "jssha": "^3.2.0", + "js-sha256": "0.9.0", "prettier": "^3.1.1", "secp256k1": "^5.0.0", "ts-jest": "^29.0.3", diff --git a/tests_zemu/snapshots/s-mainmenu/00004.png b/tests_zemu/snapshots/s-mainmenu/00004.png index 3837659..5a5a59d 100644 Binary files a/tests_zemu/snapshots/s-mainmenu/00004.png and b/tests_zemu/snapshots/s-mainmenu/00004.png differ diff --git a/tests_zemu/snapshots/s-mainmenu/00010.png b/tests_zemu/snapshots/s-mainmenu/00010.png index 3837659..5a5a59d 100644 Binary files a/tests_zemu/snapshots/s-mainmenu/00010.png and b/tests_zemu/snapshots/s-mainmenu/00010.png differ diff --git a/tests_zemu/snapshots/s-sign-add_delegator-expert/00000.png b/tests_zemu/snapshots/s-sign-add_delegator-expert/00000.png new file mode 100644 index 0000000..b036848 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_delegator-expert/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-add_delegator-expert/00001.png b/tests_zemu/snapshots/s-sign-add_delegator-expert/00001.png new file mode 100644 index 0000000..b83e983 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_delegator-expert/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-add_delegator-expert/00002.png b/tests_zemu/snapshots/s-sign-add_delegator-expert/00002.png new file mode 100644 index 0000000..5b47989 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_delegator-expert/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-add_delegator-expert/00003.png b/tests_zemu/snapshots/s-sign-add_delegator-expert/00003.png new file mode 100644 index 0000000..6feaa28 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_delegator-expert/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-add_delegator-expert/00004.png b/tests_zemu/snapshots/s-sign-add_delegator-expert/00004.png new file mode 100644 index 0000000..39ab4f9 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_delegator-expert/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-add_delegator-expert/00005.png b/tests_zemu/snapshots/s-sign-add_delegator-expert/00005.png new file mode 100644 index 0000000..91665af Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_delegator-expert/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-add_delegator-expert/00006.png b/tests_zemu/snapshots/s-sign-add_delegator-expert/00006.png new file mode 100644 index 0000000..aea1272 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_delegator-expert/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-add_delegator-expert/00007.png b/tests_zemu/snapshots/s-sign-add_delegator-expert/00007.png new file mode 100644 index 0000000..4f3342e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_delegator-expert/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-add_delegator-expert/00008.png b/tests_zemu/snapshots/s-sign-add_delegator-expert/00008.png new file mode 100644 index 0000000..9f708ec Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_delegator-expert/00008.png differ diff --git a/tests_zemu/snapshots/s-sign-add_delegator-expert/00009.png b/tests_zemu/snapshots/s-sign-add_delegator-expert/00009.png new file mode 100644 index 0000000..92402cb Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_delegator-expert/00009.png differ diff --git a/tests_zemu/snapshots/s-sign-add_delegator-expert/00010.png b/tests_zemu/snapshots/s-sign-add_delegator-expert/00010.png new file mode 100644 index 0000000..006c26a Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_delegator-expert/00010.png differ diff --git a/tests_zemu/snapshots/s-sign-add_delegator-expert/00011.png b/tests_zemu/snapshots/s-sign-add_delegator-expert/00011.png new file mode 100644 index 0000000..577092e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_delegator-expert/00011.png differ diff --git a/tests_zemu/snapshots/s-sign-add_validator-expert/00000.png b/tests_zemu/snapshots/s-sign-add_validator-expert/00000.png new file mode 100644 index 0000000..b036848 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_validator-expert/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-add_validator-expert/00001.png b/tests_zemu/snapshots/s-sign-add_validator-expert/00001.png new file mode 100644 index 0000000..b83e983 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_validator-expert/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-add_validator-expert/00002.png b/tests_zemu/snapshots/s-sign-add_validator-expert/00002.png new file mode 100644 index 0000000..5b47989 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_validator-expert/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-add_validator-expert/00003.png b/tests_zemu/snapshots/s-sign-add_validator-expert/00003.png new file mode 100644 index 0000000..6feaa28 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_validator-expert/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-add_validator-expert/00004.png b/tests_zemu/snapshots/s-sign-add_validator-expert/00004.png new file mode 100644 index 0000000..39ab4f9 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_validator-expert/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-add_validator-expert/00005.png b/tests_zemu/snapshots/s-sign-add_validator-expert/00005.png new file mode 100644 index 0000000..91665af Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_validator-expert/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-add_validator-expert/00006.png b/tests_zemu/snapshots/s-sign-add_validator-expert/00006.png new file mode 100644 index 0000000..aea1272 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_validator-expert/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-add_validator-expert/00007.png b/tests_zemu/snapshots/s-sign-add_validator-expert/00007.png new file mode 100644 index 0000000..4f3342e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_validator-expert/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-add_validator-expert/00008.png b/tests_zemu/snapshots/s-sign-add_validator-expert/00008.png new file mode 100644 index 0000000..9f708ec Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_validator-expert/00008.png differ diff --git a/tests_zemu/snapshots/s-sign-add_validator-expert/00009.png b/tests_zemu/snapshots/s-sign-add_validator-expert/00009.png new file mode 100644 index 0000000..92402cb Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_validator-expert/00009.png differ diff --git a/tests_zemu/snapshots/s-sign-add_validator-expert/00010.png b/tests_zemu/snapshots/s-sign-add_validator-expert/00010.png new file mode 100644 index 0000000..006c26a Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_validator-expert/00010.png differ diff --git a/tests_zemu/snapshots/s-sign-add_validator-expert/00011.png b/tests_zemu/snapshots/s-sign-add_validator-expert/00011.png new file mode 100644 index 0000000..577092e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-add_validator-expert/00011.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00000.png b/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00000.png new file mode 100644 index 0000000..21ca4e3 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00001.png b/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00001.png new file mode 100644 index 0000000..b0a05f9 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00002.png b/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00002.png new file mode 100644 index 0000000..f8af9d1 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00003.png b/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00003.png new file mode 100644 index 0000000..db28995 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00004.png b/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00004.png new file mode 100644 index 0000000..3a29a41 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00005.png b/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00005.png new file mode 100644 index 0000000..7e50da7 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00006.png b/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00006.png new file mode 100644 index 0000000..29e4d98 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00007.png b/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00007.png new file mode 100644 index 0000000..006c26a Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00008.png b/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00008.png new file mode 100644 index 0000000..577092e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_export_c_to_p-expert/00008.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00000.png b/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00000.png new file mode 100644 index 0000000..39e511a Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00001.png b/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00001.png new file mode 100644 index 0000000..08d5152 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00002.png b/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00002.png new file mode 100644 index 0000000..f8af9d1 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00003.png b/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00003.png new file mode 100644 index 0000000..db28995 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00004.png b/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00004.png new file mode 100644 index 0000000..2e4a697 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00005.png b/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00005.png new file mode 100644 index 0000000..3e41679 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00006.png b/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00006.png new file mode 100644 index 0000000..3cc6f0b Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00007.png b/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00007.png new file mode 100644 index 0000000..006c26a Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00008.png b/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00008.png new file mode 100644 index 0000000..577092e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_export_p_to_c-expert/00008.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00000.png b/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00000.png new file mode 100644 index 0000000..f038b89 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00001.png b/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00001.png new file mode 100644 index 0000000..8a2ec0d Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00002.png b/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00002.png new file mode 100644 index 0000000..939888c Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00003.png b/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00003.png new file mode 100644 index 0000000..9063a17 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00004.png b/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00004.png new file mode 100644 index 0000000..35f4da4 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00005.png b/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00005.png new file mode 100644 index 0000000..3cb0d72 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00006.png b/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00006.png new file mode 100644 index 0000000..8884c52 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00007.png b/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00007.png new file mode 100644 index 0000000..006c26a Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00008.png b/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00008.png new file mode 100644 index 0000000..577092e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_import_c_from_p-expert/00008.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00000.png b/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00000.png new file mode 100644 index 0000000..9941e15 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00001.png b/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00001.png new file mode 100644 index 0000000..ebd7c21 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00002.png b/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00002.png new file mode 100644 index 0000000..f8af9d1 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00003.png b/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00003.png new file mode 100644 index 0000000..db28995 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00004.png b/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00004.png new file mode 100644 index 0000000..2e4a697 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00005.png b/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00005.png new file mode 100644 index 0000000..075e129 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00006.png b/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00006.png new file mode 100644 index 0000000..76d9dd2 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00007.png b/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00007.png new file mode 100644 index 0000000..006c26a Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00008.png b/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00008.png new file mode 100644 index 0000000..577092e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-coston_import_p_from_c-expert/00008.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00000.png b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00000.png new file mode 100644 index 0000000..21ca4e3 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00001.png b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00001.png new file mode 100644 index 0000000..b0a05f9 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00002.png b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00002.png new file mode 100644 index 0000000..f8af9d1 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00003.png b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00003.png new file mode 100644 index 0000000..db28995 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00004.png b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00004.png new file mode 100644 index 0000000..3a29a41 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00005.png b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00005.png new file mode 100644 index 0000000..c4aabdc Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00006.png b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00006.png new file mode 100644 index 0000000..2a4d0dc Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00007.png b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00007.png new file mode 100644 index 0000000..006c26a Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00008.png b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00008.png new file mode 100644 index 0000000..577092e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_c_export_p_change_addr-expert/00008.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00000.png b/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00000.png new file mode 100644 index 0000000..21ca4e3 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00001.png b/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00001.png new file mode 100644 index 0000000..8a9b93e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00002.png b/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00002.png new file mode 100644 index 0000000..1dd8fc3 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00003.png b/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00003.png new file mode 100644 index 0000000..a709eac Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00004.png b/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00004.png new file mode 100644 index 0000000..31d1bad Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00005.png b/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00005.png new file mode 100644 index 0000000..b48d3c4 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00006.png b/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00006.png new file mode 100644 index 0000000..a1c5662 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00007.png b/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00007.png new file mode 100644 index 0000000..006c26a Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00008.png b/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00008.png new file mode 100644 index 0000000..577092e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_export_c_to_p-expert/00008.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00000.png b/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00000.png new file mode 100644 index 0000000..39e511a Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00001.png b/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00001.png new file mode 100644 index 0000000..3b709f6 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00002.png b/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00002.png new file mode 100644 index 0000000..1dd8fc3 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00003.png b/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00003.png new file mode 100644 index 0000000..a709eac Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00004.png b/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00004.png new file mode 100644 index 0000000..7d194d4 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00005.png b/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00005.png new file mode 100644 index 0000000..20fa0cd Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00006.png b/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00006.png new file mode 100644 index 0000000..79d4046 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00007.png b/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00007.png new file mode 100644 index 0000000..006c26a Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00008.png b/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00008.png new file mode 100644 index 0000000..577092e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_export_p_to_c-expert/00008.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00000.png b/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00000.png new file mode 100644 index 0000000..f038b89 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00001.png b/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00001.png new file mode 100644 index 0000000..0cac078 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00002.png b/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00002.png new file mode 100644 index 0000000..939888c Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00003.png b/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00003.png new file mode 100644 index 0000000..9063a17 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00004.png b/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00004.png new file mode 100644 index 0000000..bfd2570 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00005.png b/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00005.png new file mode 100644 index 0000000..47aa487 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00006.png b/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00006.png new file mode 100644 index 0000000..2f0f5d3 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00007.png b/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00007.png new file mode 100644 index 0000000..006c26a Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00008.png b/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00008.png new file mode 100644 index 0000000..577092e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_import_c_from_p-expert/00008.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00000.png b/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00000.png new file mode 100644 index 0000000..9941e15 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00001.png b/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00001.png new file mode 100644 index 0000000..d06b7e0 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00002.png b/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00002.png new file mode 100644 index 0000000..1dd8fc3 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00003.png b/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00003.png new file mode 100644 index 0000000..a709eac Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00004.png b/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00004.png new file mode 100644 index 0000000..7d194d4 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00005.png b/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00005.png new file mode 100644 index 0000000..4ae4e15 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00006.png b/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00006.png new file mode 100644 index 0000000..25a6715 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00007.png b/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00007.png new file mode 100644 index 0000000..006c26a Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00008.png b/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00008.png new file mode 100644 index 0000000..577092e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-flare_import_p_from_c-expert/00008.png differ diff --git a/tests_zemu/snapshots/s-sign-hash/00000.png b/tests_zemu/snapshots/s-sign-hash/00000.png new file mode 100644 index 0000000..89ae3e6 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-hash/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-hash/00001.png b/tests_zemu/snapshots/s-sign-hash/00001.png new file mode 100644 index 0000000..df36adb Binary files /dev/null and b/tests_zemu/snapshots/s-sign-hash/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-hash/00002.png b/tests_zemu/snapshots/s-sign-hash/00002.png new file mode 100644 index 0000000..006c26a Binary files /dev/null and b/tests_zemu/snapshots/s-sign-hash/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-hash/00003.png b/tests_zemu/snapshots/s-sign-hash/00003.png new file mode 100644 index 0000000..577092e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-hash/00003.png differ diff --git a/tests_zemu/snapshots/sp-mainmenu/00004.png b/tests_zemu/snapshots/sp-mainmenu/00004.png index 6ff41ab..7f6ccc9 100644 Binary files a/tests_zemu/snapshots/sp-mainmenu/00004.png and b/tests_zemu/snapshots/sp-mainmenu/00004.png differ diff --git a/tests_zemu/snapshots/sp-mainmenu/00010.png b/tests_zemu/snapshots/sp-mainmenu/00010.png index 6ff41ab..7f6ccc9 100644 Binary files a/tests_zemu/snapshots/sp-mainmenu/00010.png and b/tests_zemu/snapshots/sp-mainmenu/00010.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_delegator-expert/00000.png b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_delegator-expert/00001.png b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00001.png new file mode 100644 index 0000000..ba14ce7 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_delegator-expert/00002.png b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00002.png new file mode 100644 index 0000000..3030cd3 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_delegator-expert/00003.png b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00003.png new file mode 100644 index 0000000..1af5c91 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_delegator-expert/00004.png b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00004.png new file mode 100644 index 0000000..ca99afb Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_delegator-expert/00005.png b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00005.png new file mode 100644 index 0000000..08270ed Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_delegator-expert/00006.png b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00006.png new file mode 100644 index 0000000..338433f Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_delegator-expert/00007.png b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00007.png new file mode 100644 index 0000000..47be62b Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_delegator-expert/00008.png b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00008.png new file mode 100644 index 0000000..3d82c81 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00008.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_delegator-expert/00009.png b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00009.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00009.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_delegator-expert/00010.png b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00010.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_delegator-expert/00010.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_validator-expert/00000.png b/tests_zemu/snapshots/sp-sign-add_validator-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_validator-expert/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_validator-expert/00001.png b/tests_zemu/snapshots/sp-sign-add_validator-expert/00001.png new file mode 100644 index 0000000..ba14ce7 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_validator-expert/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_validator-expert/00002.png b/tests_zemu/snapshots/sp-sign-add_validator-expert/00002.png new file mode 100644 index 0000000..3030cd3 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_validator-expert/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_validator-expert/00003.png b/tests_zemu/snapshots/sp-sign-add_validator-expert/00003.png new file mode 100644 index 0000000..1af5c91 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_validator-expert/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_validator-expert/00004.png b/tests_zemu/snapshots/sp-sign-add_validator-expert/00004.png new file mode 100644 index 0000000..ca99afb Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_validator-expert/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_validator-expert/00005.png b/tests_zemu/snapshots/sp-sign-add_validator-expert/00005.png new file mode 100644 index 0000000..08270ed Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_validator-expert/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_validator-expert/00006.png b/tests_zemu/snapshots/sp-sign-add_validator-expert/00006.png new file mode 100644 index 0000000..338433f Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_validator-expert/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_validator-expert/00007.png b/tests_zemu/snapshots/sp-sign-add_validator-expert/00007.png new file mode 100644 index 0000000..47be62b Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_validator-expert/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_validator-expert/00008.png b/tests_zemu/snapshots/sp-sign-add_validator-expert/00008.png new file mode 100644 index 0000000..3d82c81 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_validator-expert/00008.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_validator-expert/00009.png b/tests_zemu/snapshots/sp-sign-add_validator-expert/00009.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_validator-expert/00009.png differ diff --git a/tests_zemu/snapshots/sp-sign-add_validator-expert/00010.png b/tests_zemu/snapshots/sp-sign-add_validator-expert/00010.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-add_validator-expert/00010.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00000.png b/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00001.png b/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00001.png new file mode 100644 index 0000000..eb9d49b Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00002.png b/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00002.png new file mode 100644 index 0000000..3dbb87f Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00003.png b/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00003.png new file mode 100644 index 0000000..564da30 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00004.png b/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00004.png new file mode 100644 index 0000000..f2c38f6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00005.png b/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00005.png new file mode 100644 index 0000000..18e27d7 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00006.png b/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00006.png new file mode 100644 index 0000000..c862586 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00007.png b/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00007.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00008.png b/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00008.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_export_c_to_p-expert/00008.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00000.png b/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00001.png b/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00001.png new file mode 100644 index 0000000..93ff843 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00002.png b/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00002.png new file mode 100644 index 0000000..4d53333 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00003.png b/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00003.png new file mode 100644 index 0000000..564da30 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00004.png b/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00004.png new file mode 100644 index 0000000..bab8119 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00005.png b/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00005.png new file mode 100644 index 0000000..4c6ac18 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00006.png b/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00006.png new file mode 100644 index 0000000..2abc931 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00007.png b/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00007.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00008.png b/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00008.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_export_p_to_c-expert/00008.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00000.png b/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00001.png b/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00001.png new file mode 100644 index 0000000..41eb1c8 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00002.png b/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00002.png new file mode 100644 index 0000000..da007b0 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00003.png b/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00003.png new file mode 100644 index 0000000..2d91e98 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00004.png b/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00004.png new file mode 100644 index 0000000..3b0d036 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00005.png b/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00005.png new file mode 100644 index 0000000..c5b5b60 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00006.png b/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00006.png new file mode 100644 index 0000000..2debb7c Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00007.png b/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00007.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00008.png b/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00008.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_import_c_from_p-expert/00008.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00000.png b/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00001.png b/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00001.png new file mode 100644 index 0000000..9b33ff1 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00002.png b/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00002.png new file mode 100644 index 0000000..6e8107d Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00003.png b/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00003.png new file mode 100644 index 0000000..564da30 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00004.png b/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00004.png new file mode 100644 index 0000000..bab8119 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00005.png b/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00005.png new file mode 100644 index 0000000..0ba34a2 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00006.png b/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00006.png new file mode 100644 index 0000000..13a88a9 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00007.png b/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00007.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00008.png b/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00008.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-coston_import_p_from_c-expert/00008.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00000.png b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00001.png b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00001.png new file mode 100644 index 0000000..eb9d49b Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00002.png b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00002.png new file mode 100644 index 0000000..3dbb87f Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00003.png b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00003.png new file mode 100644 index 0000000..564da30 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00004.png b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00004.png new file mode 100644 index 0000000..f2c38f6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00005.png b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00005.png new file mode 100644 index 0000000..b80926a Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00006.png b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00006.png new file mode 100644 index 0000000..2c60451 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00007.png b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00007.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00008.png b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00008.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_c_export_p_change_addr-expert/00008.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00000.png b/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00001.png b/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00001.png new file mode 100644 index 0000000..eb9d49b Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00002.png b/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00002.png new file mode 100644 index 0000000..bab3560 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00003.png b/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00003.png new file mode 100644 index 0000000..aca34f3 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00004.png b/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00004.png new file mode 100644 index 0000000..cc8f802 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00005.png b/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00005.png new file mode 100644 index 0000000..e7532cc Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00006.png b/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00006.png new file mode 100644 index 0000000..5b34baf Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00007.png b/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00007.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00008.png b/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00008.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_export_c_to_p-expert/00008.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00000.png b/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00001.png b/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00001.png new file mode 100644 index 0000000..93ff843 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00002.png b/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00002.png new file mode 100644 index 0000000..5106472 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00003.png b/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00003.png new file mode 100644 index 0000000..aca34f3 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00004.png b/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00004.png new file mode 100644 index 0000000..1a88fd6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00005.png b/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00005.png new file mode 100644 index 0000000..37cac05 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00006.png b/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00006.png new file mode 100644 index 0000000..638956b Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00007.png b/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00007.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00008.png b/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00008.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_export_p_to_c-expert/00008.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00000.png b/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00001.png b/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00001.png new file mode 100644 index 0000000..41eb1c8 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00002.png b/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00002.png new file mode 100644 index 0000000..10d2e40 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00003.png b/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00003.png new file mode 100644 index 0000000..2d91e98 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00004.png b/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00004.png new file mode 100644 index 0000000..da760b4 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00005.png b/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00005.png new file mode 100644 index 0000000..e4cf3a6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00006.png b/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00006.png new file mode 100644 index 0000000..a6b49d7 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00007.png b/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00007.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00008.png b/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00008.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_import_c_from_p-expert/00008.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00000.png b/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00001.png b/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00001.png new file mode 100644 index 0000000..9b33ff1 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00002.png b/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00002.png new file mode 100644 index 0000000..2e8a9fb Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00003.png b/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00003.png new file mode 100644 index 0000000..aca34f3 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00004.png b/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00004.png new file mode 100644 index 0000000..1a88fd6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00005.png b/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00005.png new file mode 100644 index 0000000..593d060 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00006.png b/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00006.png new file mode 100644 index 0000000..9b1f021 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00007.png b/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00007.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00008.png b/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00008.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-flare_import_p_from_c-expert/00008.png differ diff --git a/tests_zemu/snapshots/sp-sign-hash/00000.png b/tests_zemu/snapshots/sp-sign-hash/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-hash/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-hash/00001.png b/tests_zemu/snapshots/sp-sign-hash/00001.png new file mode 100644 index 0000000..4b3b816 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-hash/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-hash/00002.png b/tests_zemu/snapshots/sp-sign-hash/00002.png new file mode 100644 index 0000000..1b2b94f Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-hash/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-hash/00003.png b/tests_zemu/snapshots/sp-sign-hash/00003.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-hash/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-hash/00004.png b/tests_zemu/snapshots/sp-sign-hash/00004.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-hash/00004.png differ diff --git a/tests_zemu/snapshots/st-mainmenu/00001.png b/tests_zemu/snapshots/st-mainmenu/00001.png index e206757..ffc506a 100644 Binary files a/tests_zemu/snapshots/st-mainmenu/00001.png and b/tests_zemu/snapshots/st-mainmenu/00001.png differ diff --git a/tests_zemu/snapshots/st-sign-add_delegator-expert/00000.png b/tests_zemu/snapshots/st-sign-add_delegator-expert/00000.png new file mode 100644 index 0000000..a044689 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-add_delegator-expert/00000.png differ diff --git a/tests_zemu/snapshots/st-sign-add_delegator-expert/00001.png b/tests_zemu/snapshots/st-sign-add_delegator-expert/00001.png new file mode 100644 index 0000000..1b457cb Binary files /dev/null and b/tests_zemu/snapshots/st-sign-add_delegator-expert/00001.png differ diff --git a/tests_zemu/snapshots/st-sign-add_delegator-expert/00002.png b/tests_zemu/snapshots/st-sign-add_delegator-expert/00002.png new file mode 100644 index 0000000..3759feb Binary files /dev/null and b/tests_zemu/snapshots/st-sign-add_delegator-expert/00002.png differ diff --git a/tests_zemu/snapshots/st-sign-add_delegator-expert/00003.png b/tests_zemu/snapshots/st-sign-add_delegator-expert/00003.png new file mode 100644 index 0000000..4be8542 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-add_delegator-expert/00003.png differ diff --git a/tests_zemu/snapshots/st-sign-add_delegator-expert/00004.png b/tests_zemu/snapshots/st-sign-add_delegator-expert/00004.png new file mode 100644 index 0000000..db43f63 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-add_delegator-expert/00004.png differ diff --git a/tests_zemu/snapshots/st-sign-add_delegator-expert/00005.png b/tests_zemu/snapshots/st-sign-add_delegator-expert/00005.png new file mode 100644 index 0000000..0c8c7d0 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-add_delegator-expert/00005.png differ diff --git a/tests_zemu/snapshots/st-sign-add_validator-expert/00000.png b/tests_zemu/snapshots/st-sign-add_validator-expert/00000.png new file mode 100644 index 0000000..a044689 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-add_validator-expert/00000.png differ diff --git a/tests_zemu/snapshots/st-sign-add_validator-expert/00001.png b/tests_zemu/snapshots/st-sign-add_validator-expert/00001.png new file mode 100644 index 0000000..1b457cb Binary files /dev/null and b/tests_zemu/snapshots/st-sign-add_validator-expert/00001.png differ diff --git a/tests_zemu/snapshots/st-sign-add_validator-expert/00002.png b/tests_zemu/snapshots/st-sign-add_validator-expert/00002.png new file mode 100644 index 0000000..3759feb Binary files /dev/null and b/tests_zemu/snapshots/st-sign-add_validator-expert/00002.png differ diff --git a/tests_zemu/snapshots/st-sign-add_validator-expert/00003.png b/tests_zemu/snapshots/st-sign-add_validator-expert/00003.png new file mode 100644 index 0000000..4be8542 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-add_validator-expert/00003.png differ diff --git a/tests_zemu/snapshots/st-sign-add_validator-expert/00004.png b/tests_zemu/snapshots/st-sign-add_validator-expert/00004.png new file mode 100644 index 0000000..db43f63 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-add_validator-expert/00004.png differ diff --git a/tests_zemu/snapshots/st-sign-add_validator-expert/00005.png b/tests_zemu/snapshots/st-sign-add_validator-expert/00005.png new file mode 100644 index 0000000..0c8c7d0 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-add_validator-expert/00005.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_export_c_to_p-expert/00000.png b/tests_zemu/snapshots/st-sign-coston_export_c_to_p-expert/00000.png new file mode 100644 index 0000000..a044689 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_export_c_to_p-expert/00000.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_export_c_to_p-expert/00001.png b/tests_zemu/snapshots/st-sign-coston_export_c_to_p-expert/00001.png new file mode 100644 index 0000000..222330e Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_export_c_to_p-expert/00001.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_export_c_to_p-expert/00002.png b/tests_zemu/snapshots/st-sign-coston_export_c_to_p-expert/00002.png new file mode 100644 index 0000000..0973251 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_export_c_to_p-expert/00002.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_export_c_to_p-expert/00003.png b/tests_zemu/snapshots/st-sign-coston_export_c_to_p-expert/00003.png new file mode 100644 index 0000000..4cbcef1 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_export_c_to_p-expert/00003.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_export_c_to_p-expert/00004.png b/tests_zemu/snapshots/st-sign-coston_export_c_to_p-expert/00004.png new file mode 100644 index 0000000..0c8c7d0 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_export_c_to_p-expert/00004.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_export_p_to_c-expert/00000.png b/tests_zemu/snapshots/st-sign-coston_export_p_to_c-expert/00000.png new file mode 100644 index 0000000..a044689 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_export_p_to_c-expert/00000.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_export_p_to_c-expert/00001.png b/tests_zemu/snapshots/st-sign-coston_export_p_to_c-expert/00001.png new file mode 100644 index 0000000..437d94c Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_export_p_to_c-expert/00001.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_export_p_to_c-expert/00002.png b/tests_zemu/snapshots/st-sign-coston_export_p_to_c-expert/00002.png new file mode 100644 index 0000000..5cb1f6c Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_export_p_to_c-expert/00002.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_export_p_to_c-expert/00003.png b/tests_zemu/snapshots/st-sign-coston_export_p_to_c-expert/00003.png new file mode 100644 index 0000000..4cbcef1 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_export_p_to_c-expert/00003.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_export_p_to_c-expert/00004.png b/tests_zemu/snapshots/st-sign-coston_export_p_to_c-expert/00004.png new file mode 100644 index 0000000..0c8c7d0 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_export_p_to_c-expert/00004.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_import_c_from_p-expert/00000.png b/tests_zemu/snapshots/st-sign-coston_import_c_from_p-expert/00000.png new file mode 100644 index 0000000..a044689 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_import_c_from_p-expert/00000.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_import_c_from_p-expert/00001.png b/tests_zemu/snapshots/st-sign-coston_import_c_from_p-expert/00001.png new file mode 100644 index 0000000..5bc65ce Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_import_c_from_p-expert/00001.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_import_c_from_p-expert/00002.png b/tests_zemu/snapshots/st-sign-coston_import_c_from_p-expert/00002.png new file mode 100644 index 0000000..74081e2 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_import_c_from_p-expert/00002.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_import_c_from_p-expert/00003.png b/tests_zemu/snapshots/st-sign-coston_import_c_from_p-expert/00003.png new file mode 100644 index 0000000..4cbcef1 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_import_c_from_p-expert/00003.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_import_c_from_p-expert/00004.png b/tests_zemu/snapshots/st-sign-coston_import_c_from_p-expert/00004.png new file mode 100644 index 0000000..0c8c7d0 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_import_c_from_p-expert/00004.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_import_p_from_c-expert/00000.png b/tests_zemu/snapshots/st-sign-coston_import_p_from_c-expert/00000.png new file mode 100644 index 0000000..a044689 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_import_p_from_c-expert/00000.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_import_p_from_c-expert/00001.png b/tests_zemu/snapshots/st-sign-coston_import_p_from_c-expert/00001.png new file mode 100644 index 0000000..0b030f3 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_import_p_from_c-expert/00001.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_import_p_from_c-expert/00002.png b/tests_zemu/snapshots/st-sign-coston_import_p_from_c-expert/00002.png new file mode 100644 index 0000000..5daf86a Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_import_p_from_c-expert/00002.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_import_p_from_c-expert/00003.png b/tests_zemu/snapshots/st-sign-coston_import_p_from_c-expert/00003.png new file mode 100644 index 0000000..4cbcef1 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_import_p_from_c-expert/00003.png differ diff --git a/tests_zemu/snapshots/st-sign-coston_import_p_from_c-expert/00004.png b/tests_zemu/snapshots/st-sign-coston_import_p_from_c-expert/00004.png new file mode 100644 index 0000000..0c8c7d0 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-coston_import_p_from_c-expert/00004.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00000.png b/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00000.png new file mode 100644 index 0000000..a044689 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00000.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00001.png b/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00001.png new file mode 100644 index 0000000..222330e Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00001.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00002.png b/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00002.png new file mode 100644 index 0000000..c515dc9 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00002.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00003.png b/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00003.png new file mode 100644 index 0000000..4cbcef1 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00003.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00004.png b/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00004.png new file mode 100644 index 0000000..0c8c7d0 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_c_export_p_change_addr-expert/00004.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_export_c_to_p-expert/00000.png b/tests_zemu/snapshots/st-sign-flare_export_c_to_p-expert/00000.png new file mode 100644 index 0000000..a044689 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_export_c_to_p-expert/00000.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_export_c_to_p-expert/00001.png b/tests_zemu/snapshots/st-sign-flare_export_c_to_p-expert/00001.png new file mode 100644 index 0000000..37f5115 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_export_c_to_p-expert/00001.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_export_c_to_p-expert/00002.png b/tests_zemu/snapshots/st-sign-flare_export_c_to_p-expert/00002.png new file mode 100644 index 0000000..5bec499 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_export_c_to_p-expert/00002.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_export_c_to_p-expert/00003.png b/tests_zemu/snapshots/st-sign-flare_export_c_to_p-expert/00003.png new file mode 100644 index 0000000..4cbcef1 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_export_c_to_p-expert/00003.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_export_c_to_p-expert/00004.png b/tests_zemu/snapshots/st-sign-flare_export_c_to_p-expert/00004.png new file mode 100644 index 0000000..0c8c7d0 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_export_c_to_p-expert/00004.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_export_p_to_c-expert/00000.png b/tests_zemu/snapshots/st-sign-flare_export_p_to_c-expert/00000.png new file mode 100644 index 0000000..a044689 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_export_p_to_c-expert/00000.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_export_p_to_c-expert/00001.png b/tests_zemu/snapshots/st-sign-flare_export_p_to_c-expert/00001.png new file mode 100644 index 0000000..b430fc6 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_export_p_to_c-expert/00001.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_export_p_to_c-expert/00002.png b/tests_zemu/snapshots/st-sign-flare_export_p_to_c-expert/00002.png new file mode 100644 index 0000000..99ae198 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_export_p_to_c-expert/00002.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_export_p_to_c-expert/00003.png b/tests_zemu/snapshots/st-sign-flare_export_p_to_c-expert/00003.png new file mode 100644 index 0000000..4cbcef1 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_export_p_to_c-expert/00003.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_export_p_to_c-expert/00004.png b/tests_zemu/snapshots/st-sign-flare_export_p_to_c-expert/00004.png new file mode 100644 index 0000000..0c8c7d0 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_export_p_to_c-expert/00004.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_import_c_from_p-expert/00000.png b/tests_zemu/snapshots/st-sign-flare_import_c_from_p-expert/00000.png new file mode 100644 index 0000000..a044689 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_import_c_from_p-expert/00000.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_import_c_from_p-expert/00001.png b/tests_zemu/snapshots/st-sign-flare_import_c_from_p-expert/00001.png new file mode 100644 index 0000000..164bbce Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_import_c_from_p-expert/00001.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_import_c_from_p-expert/00002.png b/tests_zemu/snapshots/st-sign-flare_import_c_from_p-expert/00002.png new file mode 100644 index 0000000..4962fc0 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_import_c_from_p-expert/00002.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_import_c_from_p-expert/00003.png b/tests_zemu/snapshots/st-sign-flare_import_c_from_p-expert/00003.png new file mode 100644 index 0000000..4cbcef1 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_import_c_from_p-expert/00003.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_import_c_from_p-expert/00004.png b/tests_zemu/snapshots/st-sign-flare_import_c_from_p-expert/00004.png new file mode 100644 index 0000000..0c8c7d0 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_import_c_from_p-expert/00004.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_import_p_from_c-expert/00000.png b/tests_zemu/snapshots/st-sign-flare_import_p_from_c-expert/00000.png new file mode 100644 index 0000000..a044689 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_import_p_from_c-expert/00000.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_import_p_from_c-expert/00001.png b/tests_zemu/snapshots/st-sign-flare_import_p_from_c-expert/00001.png new file mode 100644 index 0000000..a753715 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_import_p_from_c-expert/00001.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_import_p_from_c-expert/00002.png b/tests_zemu/snapshots/st-sign-flare_import_p_from_c-expert/00002.png new file mode 100644 index 0000000..1348857 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_import_p_from_c-expert/00002.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_import_p_from_c-expert/00003.png b/tests_zemu/snapshots/st-sign-flare_import_p_from_c-expert/00003.png new file mode 100644 index 0000000..4cbcef1 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_import_p_from_c-expert/00003.png differ diff --git a/tests_zemu/snapshots/st-sign-flare_import_p_from_c-expert/00004.png b/tests_zemu/snapshots/st-sign-flare_import_p_from_c-expert/00004.png new file mode 100644 index 0000000..0c8c7d0 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-flare_import_p_from_c-expert/00004.png differ diff --git a/tests_zemu/snapshots/st-sign-hash/00000.png b/tests_zemu/snapshots/st-sign-hash/00000.png new file mode 100644 index 0000000..a044689 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-hash/00000.png differ diff --git a/tests_zemu/snapshots/st-sign-hash/00001.png b/tests_zemu/snapshots/st-sign-hash/00001.png new file mode 100644 index 0000000..a3d67bf Binary files /dev/null and b/tests_zemu/snapshots/st-sign-hash/00001.png differ diff --git a/tests_zemu/snapshots/st-sign-hash/00002.png b/tests_zemu/snapshots/st-sign-hash/00002.png new file mode 100644 index 0000000..7a6520d Binary files /dev/null and b/tests_zemu/snapshots/st-sign-hash/00002.png differ diff --git a/tests_zemu/snapshots/st-sign-hash/00003.png b/tests_zemu/snapshots/st-sign-hash/00003.png new file mode 100644 index 0000000..0c8c7d0 Binary files /dev/null and b/tests_zemu/snapshots/st-sign-hash/00003.png differ diff --git a/tests_zemu/snapshots/x-mainmenu/00004.png b/tests_zemu/snapshots/x-mainmenu/00004.png index 6ff41ab..7f6ccc9 100644 Binary files a/tests_zemu/snapshots/x-mainmenu/00004.png and b/tests_zemu/snapshots/x-mainmenu/00004.png differ diff --git a/tests_zemu/snapshots/x-mainmenu/00010.png b/tests_zemu/snapshots/x-mainmenu/00010.png index 6ff41ab..7f6ccc9 100644 Binary files a/tests_zemu/snapshots/x-mainmenu/00010.png and b/tests_zemu/snapshots/x-mainmenu/00010.png differ diff --git a/tests_zemu/snapshots/x-sign-add_delegator-expert/00000.png b/tests_zemu/snapshots/x-sign-add_delegator-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_delegator-expert/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-add_delegator-expert/00001.png b/tests_zemu/snapshots/x-sign-add_delegator-expert/00001.png new file mode 100644 index 0000000..914e0a2 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_delegator-expert/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-add_delegator-expert/00002.png b/tests_zemu/snapshots/x-sign-add_delegator-expert/00002.png new file mode 100644 index 0000000..6c64955 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_delegator-expert/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-add_delegator-expert/00003.png b/tests_zemu/snapshots/x-sign-add_delegator-expert/00003.png new file mode 100644 index 0000000..1af5c91 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_delegator-expert/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-add_delegator-expert/00004.png b/tests_zemu/snapshots/x-sign-add_delegator-expert/00004.png new file mode 100644 index 0000000..ca99afb Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_delegator-expert/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-add_delegator-expert/00005.png b/tests_zemu/snapshots/x-sign-add_delegator-expert/00005.png new file mode 100644 index 0000000..9a37b22 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_delegator-expert/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-add_delegator-expert/00006.png b/tests_zemu/snapshots/x-sign-add_delegator-expert/00006.png new file mode 100644 index 0000000..338433f Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_delegator-expert/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-add_delegator-expert/00007.png b/tests_zemu/snapshots/x-sign-add_delegator-expert/00007.png new file mode 100644 index 0000000..47be62b Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_delegator-expert/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-add_delegator-expert/00008.png b/tests_zemu/snapshots/x-sign-add_delegator-expert/00008.png new file mode 100644 index 0000000..3d82c81 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_delegator-expert/00008.png differ diff --git a/tests_zemu/snapshots/x-sign-add_delegator-expert/00009.png b/tests_zemu/snapshots/x-sign-add_delegator-expert/00009.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_delegator-expert/00009.png differ diff --git a/tests_zemu/snapshots/x-sign-add_delegator-expert/00010.png b/tests_zemu/snapshots/x-sign-add_delegator-expert/00010.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_delegator-expert/00010.png differ diff --git a/tests_zemu/snapshots/x-sign-add_validator-expert/00000.png b/tests_zemu/snapshots/x-sign-add_validator-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_validator-expert/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-add_validator-expert/00001.png b/tests_zemu/snapshots/x-sign-add_validator-expert/00001.png new file mode 100644 index 0000000..914e0a2 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_validator-expert/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-add_validator-expert/00002.png b/tests_zemu/snapshots/x-sign-add_validator-expert/00002.png new file mode 100644 index 0000000..6c64955 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_validator-expert/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-add_validator-expert/00003.png b/tests_zemu/snapshots/x-sign-add_validator-expert/00003.png new file mode 100644 index 0000000..1af5c91 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_validator-expert/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-add_validator-expert/00004.png b/tests_zemu/snapshots/x-sign-add_validator-expert/00004.png new file mode 100644 index 0000000..ca99afb Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_validator-expert/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-add_validator-expert/00005.png b/tests_zemu/snapshots/x-sign-add_validator-expert/00005.png new file mode 100644 index 0000000..9a37b22 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_validator-expert/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-add_validator-expert/00006.png b/tests_zemu/snapshots/x-sign-add_validator-expert/00006.png new file mode 100644 index 0000000..338433f Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_validator-expert/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-add_validator-expert/00007.png b/tests_zemu/snapshots/x-sign-add_validator-expert/00007.png new file mode 100644 index 0000000..47be62b Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_validator-expert/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-add_validator-expert/00008.png b/tests_zemu/snapshots/x-sign-add_validator-expert/00008.png new file mode 100644 index 0000000..3d82c81 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_validator-expert/00008.png differ diff --git a/tests_zemu/snapshots/x-sign-add_validator-expert/00009.png b/tests_zemu/snapshots/x-sign-add_validator-expert/00009.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_validator-expert/00009.png differ diff --git a/tests_zemu/snapshots/x-sign-add_validator-expert/00010.png b/tests_zemu/snapshots/x-sign-add_validator-expert/00010.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-add_validator-expert/00010.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00000.png b/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00001.png b/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00001.png new file mode 100644 index 0000000..eb9d49b Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00002.png b/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00002.png new file mode 100644 index 0000000..3dbb87f Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00003.png b/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00003.png new file mode 100644 index 0000000..b7972ac Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00004.png b/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00004.png new file mode 100644 index 0000000..f2c38f6 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00005.png b/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00005.png new file mode 100644 index 0000000..18e27d7 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00006.png b/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00006.png new file mode 100644 index 0000000..c862586 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00007.png b/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00007.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00008.png b/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00008.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_export_c_to_p-expert/00008.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00000.png b/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00001.png b/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00001.png new file mode 100644 index 0000000..93ff843 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00002.png b/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00002.png new file mode 100644 index 0000000..4d53333 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00003.png b/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00003.png new file mode 100644 index 0000000..b7972ac Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00004.png b/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00004.png new file mode 100644 index 0000000..bab8119 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00005.png b/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00005.png new file mode 100644 index 0000000..4c6ac18 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00006.png b/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00006.png new file mode 100644 index 0000000..2abc931 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00007.png b/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00007.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00008.png b/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00008.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_export_p_to_c-expert/00008.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00000.png b/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00001.png b/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00001.png new file mode 100644 index 0000000..41eb1c8 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00002.png b/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00002.png new file mode 100644 index 0000000..da007b0 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00003.png b/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00003.png new file mode 100644 index 0000000..2d91e98 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00004.png b/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00004.png new file mode 100644 index 0000000..3b0d036 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00005.png b/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00005.png new file mode 100644 index 0000000..c5b5b60 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00006.png b/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00006.png new file mode 100644 index 0000000..2debb7c Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00007.png b/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00007.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00008.png b/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00008.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_import_c_from_p-expert/00008.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00000.png b/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00001.png b/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00001.png new file mode 100644 index 0000000..9b33ff1 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00002.png b/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00002.png new file mode 100644 index 0000000..6e8107d Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00003.png b/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00003.png new file mode 100644 index 0000000..b7972ac Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00004.png b/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00004.png new file mode 100644 index 0000000..bab8119 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00005.png b/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00005.png new file mode 100644 index 0000000..0ba34a2 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00006.png b/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00006.png new file mode 100644 index 0000000..13a88a9 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00007.png b/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00007.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00008.png b/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00008.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-coston_import_p_from_c-expert/00008.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00000.png b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00001.png b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00001.png new file mode 100644 index 0000000..eb9d49b Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00002.png b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00002.png new file mode 100644 index 0000000..3dbb87f Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00003.png b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00003.png new file mode 100644 index 0000000..b7972ac Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00004.png b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00004.png new file mode 100644 index 0000000..f2c38f6 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00005.png b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00005.png new file mode 100644 index 0000000..b80926a Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00006.png b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00006.png new file mode 100644 index 0000000..2c60451 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00007.png b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00007.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00008.png b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00008.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_c_export_p_change_addr-expert/00008.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00000.png b/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00001.png b/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00001.png new file mode 100644 index 0000000..eb9d49b Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00002.png b/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00002.png new file mode 100644 index 0000000..bab3560 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00003.png b/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00003.png new file mode 100644 index 0000000..ae481d8 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00004.png b/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00004.png new file mode 100644 index 0000000..cc8f802 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00005.png b/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00005.png new file mode 100644 index 0000000..e7532cc Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00006.png b/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00006.png new file mode 100644 index 0000000..5b34baf Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00007.png b/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00007.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00008.png b/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00008.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_export_c_to_p-expert/00008.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00000.png b/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00001.png b/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00001.png new file mode 100644 index 0000000..93ff843 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00002.png b/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00002.png new file mode 100644 index 0000000..5106472 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00003.png b/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00003.png new file mode 100644 index 0000000..ae481d8 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00004.png b/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00004.png new file mode 100644 index 0000000..1a88fd6 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00005.png b/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00005.png new file mode 100644 index 0000000..37cac05 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00006.png b/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00006.png new file mode 100644 index 0000000..638956b Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00007.png b/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00007.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00008.png b/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00008.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_export_p_to_c-expert/00008.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00000.png b/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00001.png b/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00001.png new file mode 100644 index 0000000..41eb1c8 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00002.png b/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00002.png new file mode 100644 index 0000000..10d2e40 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00003.png b/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00003.png new file mode 100644 index 0000000..2d91e98 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00004.png b/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00004.png new file mode 100644 index 0000000..da760b4 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00005.png b/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00005.png new file mode 100644 index 0000000..e4cf3a6 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00006.png b/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00006.png new file mode 100644 index 0000000..a6b49d7 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00007.png b/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00007.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00008.png b/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00008.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_import_c_from_p-expert/00008.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00000.png b/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00001.png b/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00001.png new file mode 100644 index 0000000..9b33ff1 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00002.png b/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00002.png new file mode 100644 index 0000000..2e8a9fb Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00003.png b/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00003.png new file mode 100644 index 0000000..ae481d8 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00004.png b/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00004.png new file mode 100644 index 0000000..1a88fd6 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00005.png b/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00005.png new file mode 100644 index 0000000..593d060 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00006.png b/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00006.png new file mode 100644 index 0000000..9b1f021 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00007.png b/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00007.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00008.png b/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00008.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-flare_import_p_from_c-expert/00008.png differ diff --git a/tests_zemu/snapshots/x-sign-hash/00000.png b/tests_zemu/snapshots/x-sign-hash/00000.png new file mode 100644 index 0000000..fe99275 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-hash/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-hash/00001.png b/tests_zemu/snapshots/x-sign-hash/00001.png new file mode 100644 index 0000000..4b3b816 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-hash/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-hash/00002.png b/tests_zemu/snapshots/x-sign-hash/00002.png new file mode 100644 index 0000000..1b2b94f Binary files /dev/null and b/tests_zemu/snapshots/x-sign-hash/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-hash/00003.png b/tests_zemu/snapshots/x-sign-hash/00003.png new file mode 100644 index 0000000..1e4be69 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-hash/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-hash/00004.png b/tests_zemu/snapshots/x-sign-hash/00004.png new file mode 100644 index 0000000..b19a9f6 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-hash/00004.png differ diff --git a/tests_zemu/tests/transactions.test.ts b/tests_zemu/tests/transactions.test.ts index 1498656..08c904d 100644 --- a/tests_zemu/tests/transactions.test.ts +++ b/tests_zemu/tests/transactions.test.ts @@ -19,6 +19,7 @@ import FlareApp from '@zondax/ledger-flare' import { models, hdpath, defaultOptions } from './common' import secp256k1 from 'secp256k1' import { createHash } from 'crypto' +import { sha256 } from 'js-sha256' const TEST_DATA = [ { @@ -138,4 +139,77 @@ describe.each(models)('Transactions', function (m) { await sim.close() } }) + + test.concurrent.each(TEST_DATA)('Sign transaction expert', async function (data) { + const sim = new Zemu(m.path) + try { + await sim.start({ ...defaultOptions, model: m.name }) + const app = new FlareApp(sim.getTransport()) + + //Change to expert mode so we can skip fields + await sim.toggleExpertMode() + + const responseAddr = await app.getAddressAndPubKey(hdpath) + expect(responseAddr.returnCode).toEqual(0x9000) + console.log(responseAddr) + + const pubKeyRaw = new Uint8Array(responseAddr.compressed_pk!) + const pubKey = secp256k1.publicKeyConvert(pubKeyRaw, true) + + // do not wait here.. we need to navigate + const signatureRequest = app.sign(hdpath, data.blob) + + // Wait until we are not in the main menu + await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()) + await sim.compareSnapshotsAndApprove('.', `${m.prefix.toLowerCase()}-sign-${data.name}-expert`) + + const signatureResponse = await signatureRequest + console.log(signatureResponse) + + expect(signatureResponse.returnCode).toEqual(0x9000) + expect(signatureResponse.errorMessage).toEqual('No errors') + + // Now verify the signature + const message = createHash('sha256').update(data.blob).digest() + const signature = new Uint8Array(signatureResponse.signature!) + const valid = secp256k1.ecdsaVerify(secp256k1.signatureImport(signature), new Uint8Array(message), pubKey) + expect(valid).toEqual(true) + } finally { + await sim.close() + } + }) + + test.concurrent('sign hash', async function () { + const sim = new Zemu(m.path) + try { + await sim.start({ ...defaultOptions, model: m.name }) + const app = new FlareApp(sim.getTransport()) + + const responseAddr = await app.getAddressAndPubKey(hdpath) + expect(responseAddr.returnCode).toEqual(0x9000) + console.log(responseAddr) + + const pubKeyRaw = new Uint8Array(responseAddr.compressed_pk!) + const pubKey = secp256k1.publicKeyConvert(pubKeyRaw, true) + + const text = 'FlareApp' + const msg = Buffer.from(sha256(text), 'hex') + const signatureRequest = app.signHash(hdpath, msg) + + await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()) + await sim.compareSnapshotsAndApprove('.', `${m.prefix.toLowerCase()}-sign-hash`) + + const signatureResponse = await signatureRequest + console.log(signatureResponse) + expect(signatureResponse.returnCode).toEqual(0x9000) + expect(signatureResponse.errorMessage).toEqual('No errors') + + // Now verify the signature + const signature = new Uint8Array(signatureResponse.signature!) + const valid = secp256k1.ecdsaVerify(secp256k1.signatureImport(signature), msg, pubKey) + expect(valid).toEqual(true) + } finally { + await sim.close() + } + }) })