From 75de6f4ff6483db0f8924b688ed7b6aaa1bdb5c0 Mon Sep 17 00:00:00 2001 From: Ilya Artemov Date: Thu, 23 Jan 2025 17:15:34 +0100 Subject: [PATCH] NBGL rationalization - replacing nbgl_useCaseStaticReview() by nbgl_useCaseReview() - extending tests by using 2 receivers and 1 change --- src/monero_types.h | 7 +- src/monero_ux_nbgl.c | 299 ++++++------------ tests/monero_client/monero_cmd.py | 50 ++- .../flex/test_prefix_hash_hash_init/00000.png | Bin 10943 -> 0 bytes .../flex/test_prefix_hash_hash_init/00001.png | Bin 4145 -> 0 bytes .../00000.png | Bin 11184 -> 0 bytes .../00001.png | Bin 27647 -> 0 bytes .../00002.png | Bin 4145 -> 0 bytes .../00000.png | Bin 7195 -> 11036 bytes .../00001.png | Bin 9582 -> 9764 bytes .../00002.png | Bin 0 -> 26347 bytes .../00003.png | Bin 0 -> 25374 bytes .../00004.png | Bin 0 -> 7402 bytes .../00005.png | Bin 0 -> 9666 bytes .../00000.png | Bin .../00001.png | Bin .../00002.png | Bin .../00003.png | Bin .../00004.png | Bin .../00005.png | Bin .../00006.png | Bin .../00007.png | Bin .../00008.png | Bin .../test_validate_prehash_update_2/00000.png | Bin 0 -> 360 bytes .../test_validate_prehash_update_2/00001.png | Bin 0 -> 572 bytes .../test_validate_prehash_update_2/00002.png | Bin 0 -> 569 bytes .../test_validate_prehash_update_2/00003.png | Bin 0 -> 550 bytes .../test_validate_prehash_update_2/00004.png | Bin 0 -> 582 bytes .../test_validate_prehash_update_2/00005.png | Bin 0 -> 566 bytes .../test_validate_prehash_update_2/00006.png | Bin 0 -> 532 bytes .../test_validate_prehash_update_2/00007.png | Bin 0 -> 411 bytes .../test_validate_prehash_update_2/00008.png | Bin 0 -> 285 bytes .../00000.png | Bin .../00001.png | Bin .../00002.png | Bin .../00003.png | Bin .../00004.png | Bin .../test_validate_prehash_update_2/00000.png | Bin 0 -> 389 bytes .../test_validate_prehash_update_2/00001.png | Bin 0 -> 987 bytes .../test_validate_prehash_update_2/00002.png | Bin 0 -> 983 bytes .../test_validate_prehash_update_2}/00003.png | Bin .../test_validate_prehash_update_2}/00004.png | Bin .../00000.png | Bin .../00001.png | Bin .../00002.png | Bin .../test_validate_prehash_update_1/00003.png | Bin 0 -> 437 bytes .../test_validate_prehash_update_1/00004.png | Bin 0 -> 306 bytes .../test_validate_prehash_update_2/00000.png | Bin 0 -> 389 bytes .../test_validate_prehash_update_2/00001.png | Bin 0 -> 987 bytes .../test_validate_prehash_update_2/00002.png | Bin 0 -> 983 bytes .../test_validate_prehash_update_2/00003.png | Bin 0 -> 437 bytes .../test_validate_prehash_update_2/00004.png | Bin 0 -> 306 bytes .../stax/test_prefix_hash_hash_init/00000.png | Bin 10028 -> 0 bytes .../stax/test_prefix_hash_hash_init/00001.png | Bin 3901 -> 0 bytes .../00000.png | Bin 9753 -> 0 bytes .../00001.png | Bin 24157 -> 0 bytes .../00002.png | Bin 3901 -> 0 bytes .../00000.png | Bin 6735 -> 10250 bytes .../00001.png | Bin 8975 -> 8922 bytes .../00002.png | Bin 0 -> 23417 bytes .../00003.png | Bin 0 -> 23146 bytes .../00004.png | Bin 0 -> 6925 bytes .../00005.png | Bin 0 -> 9004 bytes tests/test_sig.py | 29 +- 64 files changed, 143 insertions(+), 242 deletions(-) delete mode 100644 tests/snapshots/flex/test_prefix_hash_hash_init/00000.png delete mode 100644 tests/snapshots/flex/test_prefix_hash_hash_init/00001.png delete mode 100644 tests/snapshots/flex/test_validate_prehash_update_first/00000.png delete mode 100644 tests/snapshots/flex/test_validate_prehash_update_first/00001.png delete mode 100644 tests/snapshots/flex/test_validate_prehash_update_first/00002.png create mode 100644 tests/snapshots/flex/test_validate_prehash_update_last/00002.png create mode 100644 tests/snapshots/flex/test_validate_prehash_update_last/00003.png create mode 100644 tests/snapshots/flex/test_validate_prehash_update_last/00004.png create mode 100644 tests/snapshots/flex/test_validate_prehash_update_last/00005.png rename tests/snapshots/nanos/{test_validate_prehash_update_first => test_validate_prehash_update_1}/00000.png (100%) rename tests/snapshots/nanos/{test_validate_prehash_update_first => test_validate_prehash_update_1}/00001.png (100%) rename tests/snapshots/nanos/{test_validate_prehash_update_first => test_validate_prehash_update_1}/00002.png (100%) rename tests/snapshots/nanos/{test_validate_prehash_update_first => test_validate_prehash_update_1}/00003.png (100%) rename tests/snapshots/nanos/{test_validate_prehash_update_first => test_validate_prehash_update_1}/00004.png (100%) rename tests/snapshots/nanos/{test_validate_prehash_update_first => test_validate_prehash_update_1}/00005.png (100%) rename tests/snapshots/nanos/{test_validate_prehash_update_first => test_validate_prehash_update_1}/00006.png (100%) rename tests/snapshots/nanos/{test_validate_prehash_update_first => test_validate_prehash_update_1}/00007.png (100%) rename tests/snapshots/nanos/{test_validate_prehash_update_first => test_validate_prehash_update_1}/00008.png (100%) create mode 100644 tests/snapshots/nanos/test_validate_prehash_update_2/00000.png create mode 100644 tests/snapshots/nanos/test_validate_prehash_update_2/00001.png create mode 100644 tests/snapshots/nanos/test_validate_prehash_update_2/00002.png create mode 100644 tests/snapshots/nanos/test_validate_prehash_update_2/00003.png create mode 100644 tests/snapshots/nanos/test_validate_prehash_update_2/00004.png create mode 100644 tests/snapshots/nanos/test_validate_prehash_update_2/00005.png create mode 100644 tests/snapshots/nanos/test_validate_prehash_update_2/00006.png create mode 100644 tests/snapshots/nanos/test_validate_prehash_update_2/00007.png create mode 100644 tests/snapshots/nanos/test_validate_prehash_update_2/00008.png rename tests/snapshots/nanosp/{test_validate_prehash_update_first => test_validate_prehash_update_1}/00000.png (100%) rename tests/snapshots/nanosp/{test_validate_prehash_update_first => test_validate_prehash_update_1}/00001.png (100%) rename tests/snapshots/nanosp/{test_validate_prehash_update_first => test_validate_prehash_update_1}/00002.png (100%) rename tests/snapshots/nanosp/{test_validate_prehash_update_first => test_validate_prehash_update_1}/00003.png (100%) rename tests/snapshots/nanosp/{test_validate_prehash_update_first => test_validate_prehash_update_1}/00004.png (100%) create mode 100644 tests/snapshots/nanosp/test_validate_prehash_update_2/00000.png create mode 100644 tests/snapshots/nanosp/test_validate_prehash_update_2/00001.png create mode 100644 tests/snapshots/nanosp/test_validate_prehash_update_2/00002.png rename tests/snapshots/{nanox/test_validate_prehash_update_first => nanosp/test_validate_prehash_update_2}/00003.png (100%) rename tests/snapshots/{nanox/test_validate_prehash_update_first => nanosp/test_validate_prehash_update_2}/00004.png (100%) rename tests/snapshots/nanox/{test_validate_prehash_update_first => test_validate_prehash_update_1}/00000.png (100%) rename tests/snapshots/nanox/{test_validate_prehash_update_first => test_validate_prehash_update_1}/00001.png (100%) rename tests/snapshots/nanox/{test_validate_prehash_update_first => test_validate_prehash_update_1}/00002.png (100%) create mode 100644 tests/snapshots/nanox/test_validate_prehash_update_1/00003.png create mode 100644 tests/snapshots/nanox/test_validate_prehash_update_1/00004.png create mode 100644 tests/snapshots/nanox/test_validate_prehash_update_2/00000.png create mode 100644 tests/snapshots/nanox/test_validate_prehash_update_2/00001.png create mode 100644 tests/snapshots/nanox/test_validate_prehash_update_2/00002.png create mode 100644 tests/snapshots/nanox/test_validate_prehash_update_2/00003.png create mode 100644 tests/snapshots/nanox/test_validate_prehash_update_2/00004.png delete mode 100644 tests/snapshots/stax/test_prefix_hash_hash_init/00000.png delete mode 100644 tests/snapshots/stax/test_prefix_hash_hash_init/00001.png delete mode 100644 tests/snapshots/stax/test_validate_prehash_update_first/00000.png delete mode 100644 tests/snapshots/stax/test_validate_prehash_update_first/00001.png delete mode 100644 tests/snapshots/stax/test_validate_prehash_update_first/00002.png create mode 100644 tests/snapshots/stax/test_validate_prehash_update_last/00002.png create mode 100644 tests/snapshots/stax/test_validate_prehash_update_last/00003.png create mode 100644 tests/snapshots/stax/test_validate_prehash_update_last/00004.png create mode 100644 tests/snapshots/stax/test_validate_prehash_update_last/00005.png diff --git a/src/monero_types.h b/src/monero_types.h index 7119fb6..9c1b5a7 100644 --- a/src/monero_types.h +++ b/src/monero_types.h @@ -96,6 +96,9 @@ enum device_mode { NONE, TRANSACTION_CREATE_REAL, TRANSACTION_CREATE_FAKE, TRANS #define DISP_SUB 0x52 #define DISP_INTEGRATED 0x53 +#define MAX_AMOUNT_LENGTH 23 +#define MAX_ADDR_LENGTH 160 + struct monero_v_state_s { unsigned char state; unsigned char protocol; @@ -187,9 +190,9 @@ struct monero_v_state_s { /* menu */ char ux_menu[16]; // address to display: 95/106-chars + null - char ux_address[160]; + char ux_address[MAX_ADDR_LENGTH]; // xmr to display: max pow(2,64) unit, aka 20-chars + '0' + dot + null - char ux_amount[23]; + char ux_amount[MAX_AMOUNT_LENGTH]; // addr mode unsigned char disp_addr_mode; // M.m address diff --git a/src/monero_ux_nbgl.c b/src/monero_ux_nbgl.c index de0dfd8..84d9a13 100644 --- a/src/monero_ux_nbgl.c +++ b/src/monero_ux_nbgl.c @@ -34,39 +34,38 @@ /* ----------------------------------------------------------------------- */ /* --- Stax UI layout --- */ /* ----------------------------------------------------------------------- */ +#define MAX_TAGVALUE_NUMBER 9 +#define MAX_AMOUNT_NUMBER 6 +#define MAX_ADDR_NUMBER 3 // MAX_AMOUNT_NUMBER - timelock - fee - change typedef struct { - nbgl_layoutTagValue_t tagValuePair[6]; - nbgl_layoutTagValueList_t tagValueList; + nbgl_contentTagValue_t tagValuePair[MAX_TAGVALUE_NUMBER]; + nbgl_contentTagValueList_t tagValueList; nbgl_pageInfoLongPress_t infoLongPress; - char timelockBuffer[23]; - char feeBuffer[23]; - char changeBuffer[23]; + char amountBuffer[MAX_AMOUNT_NUMBER][MAX_AMOUNT_LENGTH]; + uint32_t amountNum; + char dstBuffer[MAX_ADDR_NUMBER][MAX_ADDR_LENGTH]; + uint32_t addrNum; nbgl_pageContent_t content; nbgl_pageNavigationInfo_t nav; } TransactionContext_t; static TransactionContext_t transactionContext; -static nbgl_page_t* pageContext; -static void release_context(void) { - if (pageContext != NULL) { - nbgl_pageRelease(pageContext); - pageContext = NULL; - } -} - -/* -------------------------------- INFO UX --------------------------------- */ +/* -------------------------------- TITLES ---------------------------------- */ +const char feeTitle[] = "Fee"; +const char changeTitle[] = "Change"; +const char amountTitle[] = "Amount"; +const char dstTitle[] = "Destination"; +const char timelockTitle[] = "Timelock"; -void ui_menu_show_tx_aborted(void) { - nbgl_useCaseReviewStatus(STATUS_TYPE_TRANSACTION_REJECTED, ui_menu_main_display); -} - -void ui_menu_show_security_error(void) { - nbgl_useCaseStatus("Security Error", false, ui_menu_main_display); +/* ------------------------------ STATIC HELPERS ---------------------------- */ +static void reset_context(void) { + transactionContext.tagValueList.nbPairs = 0; + transactionContext.amountNum = 0; + transactionContext.addrNum = 0; } -/* -------------------------------- OPEN TX UX --------------------------------- */ static void ui_menu_validation_action_cancel(void) { monero_abort_tx(); monero_io_insert_u16(SW_DENY); @@ -80,236 +79,130 @@ static void ui_menu_validation_action_confirm(void) { nbgl_useCaseSpinner("Processing TX"); } -static void ui_menu_validation_action_cancel_prompt(void) { - nbgl_useCaseConfirm("Reject transaction?", "", "Yes, Reject", "Go back to transaction", - ui_menu_validation_action_cancel); -} - static void ui_menu_validation_action(bool value) { if (value) { - transactionContext.tagValueList.nbPairs = 0; + reset_context(); ui_menu_validation_action_confirm(); } else { - ui_menu_validation_action_cancel_prompt(); + ui_menu_validation_action_cancel(); } } -unsigned int ui_menu_transaction_start(void) { - transactionContext.tagValueList.nbPairs = 0; - nbgl_useCaseReviewStart(&C_Monero_64px, "Review Transaction\nto send Monero", "", - "Reject transaction", ui_menu_validation_action_confirm, - ui_menu_validation_action_cancel_prompt); - return 0; -} - -unsigned int ui_menu_transaction_signed(void) { - nbgl_useCaseReviewStatus(STATUS_TYPE_TRANSACTION_SIGNED, ui_menu_main_display); - return 0; -} - -void ui_menu_opentx_display(unsigned int value __attribute__((unused))) { - if (G_monero_vstate.tx_sig_mode == TRANSACTION_CREATE_REAL) { - nbgl_useCaseSpinner("Processing TX"); - } else { - nbgl_useCaseSpinner("Preparing TX"); - } -} - -/* ----------------- FEE/CHANGE/TIMELOCK VALIDATION ----------------- */ - -void ui_menu_fee_validation_display(unsigned int value __attribute__((unused))) { +static void add_amount(const char* title, bool forcePageStart) { uint8_t nbPairs = transactionContext.tagValueList.nbPairs; + if ((transactionContext.amountNum >= MAX_AMOUNT_NUMBER) || (nbPairs >= MAX_TAGVALUE_NUMBER)) { + ui_menu_validation_action_cancel(); + return; + } - strncpy(transactionContext.feeBuffer, G_monero_vstate.ux_amount, - sizeof(transactionContext.feeBuffer)); + strncpy(transactionContext.amountBuffer[transactionContext.amountNum], + G_monero_vstate.ux_amount, MAX_AMOUNT_LENGTH); - transactionContext.tagValuePair[nbPairs].item = "Fee"; - transactionContext.tagValuePair[nbPairs].value = transactionContext.feeBuffer; + transactionContext.tagValuePair[nbPairs].item = title; + transactionContext.tagValuePair[nbPairs].value = + transactionContext.amountBuffer[transactionContext.amountNum]; + if (forcePageStart) transactionContext.tagValuePair[nbPairs].forcePageStart = 1; transactionContext.tagValueList.pairs = transactionContext.tagValuePair; - transactionContext.tagValueList.nbPairs++; - - ui_menu_validation_action_confirm(); -} - -void ui_menu_change_validation_display(unsigned int value __attribute__((unused))) { - uint8_t nbPairs = transactionContext.tagValueList.nbPairs; - strncpy(transactionContext.changeBuffer, G_monero_vstate.ux_amount, - sizeof(transactionContext.changeBuffer)); - - transactionContext.tagValuePair[nbPairs].item = "Change"; - transactionContext.tagValuePair[nbPairs].value = transactionContext.changeBuffer; - - transactionContext.tagValueList.pairs = transactionContext.tagValuePair; transactionContext.tagValueList.nbPairs++; - - ui_menu_validation_action_confirm(); + transactionContext.amountNum++; } -void ui_menu_change_validation_display_last(unsigned int value __attribute__((unused))) { +static void add_address(void) { uint8_t nbPairs = transactionContext.tagValueList.nbPairs; - strncpy(transactionContext.changeBuffer, G_monero_vstate.ux_amount, - sizeof(transactionContext.changeBuffer)); - - transactionContext.tagValuePair[nbPairs].item = "Change"; - transactionContext.tagValuePair[nbPairs].value = transactionContext.changeBuffer; - - transactionContext.tagValueList.pairs = transactionContext.tagValuePair; - transactionContext.tagValueList.nbPairs++; - - transactionContext.infoLongPress.icon = &C_Monero_64px; - transactionContext.infoLongPress.longPressText = "Hold to sign"; - transactionContext.infoLongPress.longPressToken = 0; - transactionContext.infoLongPress.tuneId = TUNE_TAP_CASUAL; - transactionContext.infoLongPress.text = "Sign transaction"; - - nbgl_useCaseStaticReview(&transactionContext.tagValueList, &transactionContext.infoLongPress, - "Reject transaction", ui_menu_validation_action); -} - -static void timelock_callback(void) { - uint8_t nbPairs = transactionContext.tagValueList.nbPairs; + if ((transactionContext.addrNum >= MAX_ADDR_NUMBER) || (nbPairs >= MAX_TAGVALUE_NUMBER)) { + ui_menu_validation_action_cancel(); + return; + } - strncpy(transactionContext.timelockBuffer, G_monero_vstate.ux_amount, - sizeof(transactionContext.timelockBuffer)); + strncpy(transactionContext.dstBuffer[transactionContext.addrNum], G_monero_vstate.ux_address, + MAX_ADDR_LENGTH); - transactionContext.tagValuePair[nbPairs].item = "Timelock"; - transactionContext.tagValuePair[nbPairs].value = transactionContext.timelockBuffer; + transactionContext.tagValuePair[nbPairs].item = dstTitle; + transactionContext.tagValuePair[nbPairs].value = + transactionContext.dstBuffer[transactionContext.addrNum]; transactionContext.tagValueList.pairs = transactionContext.tagValuePair; - transactionContext.tagValueList.nbPairs++; - ui_menu_validation_action_confirm(); + transactionContext.tagValueList.nbPairs++; + transactionContext.addrNum++; } -void ui_menu_timelock_validation_display(unsigned int value __attribute__((unused))) { - transactionContext.tagValueList.nbPairs = 0; +/* ------------------------------- OPEN TX UX ------------------------------- */ - nbgl_useCaseReviewStart(&C_Monero_64px, "Review Transaction\nto send Monero", NULL, - "Reject transaction", timelock_callback, - ui_menu_validation_action_cancel_prompt); +unsigned int ui_menu_transaction_start(void) { + reset_context(); + return SW_OK; } -/* ----------------------------- USER DEST/AMOUNT VALIDATION ----------------------------- */ - -#ifdef TARGET_FLEX -#define NEXT_PAGE_TEXT ("Swipe to continue") -#else -#define NEXT_PAGE_TEXT ("Tap to continue") -#endif - -static void fill_amount_and_destination(void) { - transactionContext.tagValuePair[0].item = "Amount"; - transactionContext.tagValuePair[0].value = G_monero_vstate.ux_amount; - - transactionContext.tagValuePair[1].item = "Destination"; - transactionContext.tagValuePair[1].value = G_monero_vstate.ux_address; +unsigned int ui_menu_transaction_signed(void) { + nbgl_useCaseReviewStatus(STATUS_TYPE_TRANSACTION_SIGNED, ui_menu_main_display); + return 0; +} - transactionContext.tagValueList.nbPairs = 2; - transactionContext.tagValueList.pairs = transactionContext.tagValuePair; +void ui_menu_opentx_display(unsigned int value __attribute__((unused))) { + if (G_monero_vstate.tx_sig_mode == TRANSACTION_CREATE_REAL) { + nbgl_useCaseSpinner("Processing TX"); + } else { + nbgl_useCaseSpinner("Preparing TX"); + } } -static void page_callback(int token, unsigned char index) { - (void)index; - release_context(); +/* -------------------------------- INFO UX --------------------------------- */ - ui_menu_validation_action(token); +void ui_menu_show_tx_aborted(void) { + nbgl_useCaseReviewStatus(STATUS_TYPE_TRANSACTION_REJECTED, ui_menu_main_display); } -static void continue_display(int token, unsigned char index) { - (void)index; - - if (token == QUIT_TOKEN) { - ui_menu_validation_action_cancel_prompt(); - } +/* --------------------- FEE/CHANGE/TIMELOCK VALIDATION --------------------- */ - fill_amount_and_destination(); - - nbgl_pageNavigationInfo_t info = {.activePage = 0, - .nbPages = 0, - .navType = NAV_WITH_TAP, - .progressIndicator = true, - .navWithTap.backButton = false, - .navWithTap.nextPageText = NEXT_PAGE_TEXT, - .navWithTap.nextPageToken = CONTINUE_TOKEN, - .navWithTap.quitText = "Reject transaction", - .quitToken = QUIT_TOKEN, - .tuneId = TUNE_TAP_CASUAL}; - - nbgl_pageContent_t content = { - .type = TAG_VALUE_LIST, - .tagValueList.nbPairs = transactionContext.tagValueList.nbPairs, - .tagValueList.pairs = (nbgl_layoutTagValue_t*)transactionContext.tagValueList.pairs}; - - pageContext = nbgl_pageDrawGenericContent(page_callback, &info, &content); +static void start_signature(void) { + nbgl_useCaseReview(TYPE_TRANSACTION, &transactionContext.tagValueList, &C_Monero_64px, + "Review Transaction\nto send Monero", NULL, "Sign transaction", + ui_menu_validation_action); } -static void continue_display_last(int token, unsigned char index) { - (void)index; - - if (token == QUIT_TOKEN) { - ui_menu_validation_action_cancel_prompt(); - } +void ui_menu_fee_validation_display(unsigned int value __attribute__((unused))) { + add_amount(feeTitle, false); + ui_menu_validation_action_confirm(); +} - fill_amount_and_destination(); - transactionContext.infoLongPress.icon = &C_Monero_64px; - transactionContext.infoLongPress.longPressText = "Hold to sign"; - transactionContext.infoLongPress.longPressToken = 0; - transactionContext.infoLongPress.tuneId = TUNE_TAP_CASUAL; - transactionContext.infoLongPress.text = "Sign transaction"; +void ui_menu_change_validation_display(unsigned int value __attribute__((unused))) { + add_amount(changeTitle, false); + ui_menu_validation_action_confirm(); +} - nbgl_useCaseStaticReview(&transactionContext.tagValueList, &transactionContext.infoLongPress, - "Reject transaction", ui_menu_validation_action); +void ui_menu_change_validation_display_last(unsigned int value __attribute__((unused))) { + add_amount(changeTitle, true); + start_signature(); } -static void display_previous_infos(bool last) { - release_context(); - - nbgl_pageNavigationInfo_t info = {.activePage = 0, - .nbPages = 0, - .navType = NAV_WITH_TAP, - .progressIndicator = true, - .navWithTap.backButton = false, - .navWithTap.nextPageText = NEXT_PAGE_TEXT, - .navWithTap.nextPageToken = CONTINUE_TOKEN, - .navWithTap.quitText = "Reject transaction", - .quitToken = QUIT_TOKEN, - .tuneId = TUNE_TAP_CASUAL}; - - nbgl_pageContent_t content = { - .type = TAG_VALUE_LIST, - .tagValueList.nbPairs = transactionContext.tagValueList.nbPairs, - .tagValueList.pairs = (nbgl_layoutTagValue_t*)transactionContext.tagValueList.pairs}; - - if (last) { - pageContext = nbgl_pageDrawGenericContent(continue_display_last, &info, &content); +void ui_menu_timelock_validation_display(unsigned int value __attribute__((unused))) { + reset_context(); + if (transactionContext.addrNum == 0) { + /* If no yet receivers addresses let us add the change on the same page */ + add_amount(timelockTitle, false); } else { - pageContext = nbgl_pageDrawGenericContent(continue_display, &info, &content); + /* In the other case let us for new page */ + add_amount(timelockTitle, true); } + ui_menu_validation_action_confirm(); } -void ui_menu_validation_display(unsigned int value __attribute__((unused))) { - const bool last = 0; - uint8_t nbPairs = transactionContext.tagValueList.nbPairs; +/* ---------------------- USER DEST/AMOUNT VALIDATION ----------------------- */ - if (nbPairs > 0) { - display_previous_infos(last); - } else { - continue_display(CONTINUE_TOKEN, 0); - } +void ui_menu_validation_display(unsigned int value __attribute__((unused))) { + add_amount(amountTitle, true); + add_address(); + ui_menu_validation_action_confirm(); } void ui_menu_validation_display_last(unsigned int value __attribute__((unused))) { - const bool last = 1; - uint8_t nbPairs = transactionContext.tagValueList.nbPairs; - - if (nbPairs > 0) { - display_previous_infos(last); - } else { - continue_display_last(CONTINUE_TOKEN, 0); - } + add_amount(amountTitle, true); + add_address(); + start_signature(); } /* ---------------------------- PUBLIC ADDRESS UX ---------------------------- */ #define ADDR_MAJOR G_monero_vstate.ux_address + 124 @@ -401,7 +294,7 @@ int ui_menu_any_pubaddr_display(unsigned int value __attribute__((unused)), unsi return 0; } -/* -------------------------------- EXPORT VIEW KEY UX --------------------------------- */ +/* -------------------------- EXPORT VIEW KEY UX ---------------------------- */ static void ui_menu_export_viewkey_action(bool value) { unsigned int sw; diff --git a/tests/monero_client/monero_cmd.py b/tests/monero_client/monero_cmd.py index 0510a5e..ab1f2e9 100644 --- a/tests/monero_client/monero_cmd.py +++ b/tests/monero_client/monero_cmd.py @@ -28,7 +28,7 @@ from .utils.utils import get_nano_review_instructions from pathlib import Path from ragger.firmware import Firmware -from ragger.navigator import NavInsID, NavIns +from ragger.navigator import NavInsID PROTOCOL_VERSION: int = 3 TESTS_ROOT_DIR = Path(__file__).parent.parent @@ -224,23 +224,22 @@ def prefix_hash_init(self, backend, test_name, firmware, navigator, version: int encode_varint(timelock) ]) - if firmware == Firmware.NANOS: - instructions = get_nano_review_instructions(1) - elif firmware.is_nano: + instructions = None + if firmware.is_nano: instructions = get_nano_review_instructions(1) - else: - instructions = [ - NavInsID.SWIPE_CENTER_TO_LEFT - ] + with self.device.send_async(cla=PROTOCOL_VERSION, ins=ins, p1=1, p2=0, option=0, payload=payload): - navigator.navigate_and_compare(TESTS_ROOT_DIR, - test_name + "_hash_init", - instructions) + if firmware.is_nano: + navigator.navigate_and_compare(TESTS_ROOT_DIR, + test_name + "_hash_init", + instructions) + else: + pass sw, response = self.device.async_response() # type: int, bytes @@ -387,14 +386,9 @@ def validate_prehash_init(self, # txntype is skipped in the app payload: bytes = struct.pack("B", txntype) + encode_varint(txnfee) - if firmware == Firmware.NANOS: - instructions = get_nano_review_instructions(1) - elif firmware.is_nano: + instructions = None + if firmware.is_nano: instructions = get_nano_review_instructions(1) - else: - instructions = [ - NavInsID.USE_CASE_REVIEW_TAP - ] with self.device.send_async(cla=PROTOCOL_VERSION, ins=ins, @@ -451,6 +445,7 @@ def validate_prehash_update(self, blinded_amount )) + instructions = None if firmware == Firmware.NANOS: if is_last: instructions = get_nano_review_instructions(1) @@ -463,15 +458,13 @@ def validate_prehash_update(self, instructions = get_nano_review_instructions(3) else: if is_last: - instructions = [ - NavInsID.USE_CASE_REVIEW_TAP, - NavInsID.USE_CASE_REVIEW_CONFIRM - ] - - else: instructions = [ NavInsID.SWIPE_CENTER_TO_LEFT, NavInsID.SWIPE_CENTER_TO_LEFT, + NavInsID.SWIPE_CENTER_TO_LEFT, + NavInsID.SWIPE_CENTER_TO_LEFT, + NavInsID.USE_CASE_REVIEW_TAP, + NavInsID.USE_CASE_REVIEW_CONFIRM ] backend.wait_for_text_on_screen("Processing") @@ -488,9 +481,12 @@ def validate_prehash_update(self, instructions, screen_change_after_last_instruction=False, timeout=10000) else: - navigator.navigate_and_compare(TESTS_ROOT_DIR, - test_name + "_prehash_update_first", - instructions) + if firmware.is_nano: + navigator.navigate_and_compare(TESTS_ROOT_DIR, + test_name + "_prehash_update_" + str(index), + instructions) + else: + pass sw, response = self.device.async_response() # type: int, bytes diff --git a/tests/snapshots/flex/test_prefix_hash_hash_init/00000.png b/tests/snapshots/flex/test_prefix_hash_hash_init/00000.png deleted file mode 100644 index 4bb060d544f2866a57e79ec516d8fe1fa59f82ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10943 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 EKYH&vjsO4v diff --git a/tests/snapshots/flex/test_prefix_hash_hash_init/00001.png b/tests/snapshots/flex/test_prefix_hash_hash_init/00001.png deleted file mode 100644 index 92bcce3e93235c882b1a51b4db853ad14d8137d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4145 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 J+u69ne*n@*d*J{8 diff --git a/tests/snapshots/flex/test_validate_prehash_update_first/00000.png b/tests/snapshots/flex/test_validate_prehash_update_first/00000.png deleted file mode 100644 index fa42052bf5a9dc924cf934bd135d4681f9babc0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11184 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 diff --git a/tests/snapshots/flex/test_validate_prehash_update_first/00001.png b/tests/snapshots/flex/test_validate_prehash_update_first/00001.png deleted file mode 100644 index 80e695ca8a77fd13eff0edced1d36cd6c705ca11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27647 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 J+u69ne*n@*d*J{8 diff --git a/tests/snapshots/flex/test_validate_prehash_update_last/00000.png b/tests/snapshots/flex/test_validate_prehash_update_last/00000.png index ed0ded39c3a203d0299a1fd1bf9ab5b77c039f13..399dcdd9a1a64d9927b08d60ebac681b12f977d5 100644 GIT binary patch literal 11036 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 M=+=$u>-XdS10ZUBy8r+H literal 7195 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 diff --git a/tests/snapshots/flex/test_validate_prehash_update_last/00001.png b/tests/snapshots/flex/test_validate_prehash_update_last/00001.png index 8d0f73ab5ece953e70cd97244213fd1cb1320e3a..ce21edba324b2fffcb5392df3f35c8451b77badd 100644 GIT binary patch literal 9764 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 W?1vt=d%)9QAS-j*%XMaV6aEjpJDOhr literal 9582 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 diff --git a/tests/snapshots/flex/test_validate_prehash_update_last/00002.png b/tests/snapshots/flex/test_validate_prehash_update_last/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..fbdeb433a5199691d90921e5219633f15bc6bdd5 GIT binary patch literal 26347 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
QqNnkLb&Qqr)n&Eod`o3a-ikI^WEe^; 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 TyfJ{PArKWMjRz(Fya@g;THEhC literal 0 HcmV?d00001 diff --git a/tests/snapshots/flex/test_validate_prehash_update_last/00004.png b/tests/snapshots/flex/test_validate_prehash_update_last/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..63aea46cb66181c98c41bc2ef97e77a999114d56 GIT binary patch literal 7402 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%0DwY;Z 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 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_validate_prehash_update_2/00004.png b/tests/snapshots/nanos/test_validate_prehash_update_2/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..fa90ac8d7afdfeba2ea6a3fee19afd7599402829 GIT binary patch literal 582 zcmV-M0=fN(P)I;CK zb|aEz0Le=6ZdTrfI>#4fOEOQ6Hnk2T@@7B>5|*TV3%U{y(Wc7|Ahq%3PLcv(IOtCI zaYa$pID5$OJx?(k09gBotz=ommv~N)rBg%eYzPtG79JG_h8FStzZ9zdlkVeiWkr{$uN0f;q5;gIjZ#66jK$P|BT(^1rDj2b?I=dNZg@8)p=BDEUo zhn)DElsmk?(Lo&IPxh2L)s~~Okv=50Vijd#256FLa%nV%Ul$XVL~P2UvoTZR)D+2v@BMDG*-itZ-9+sAUP zcQgaEESP&Mib6>JlBZAZ*F;-vG;({^rNTjIcdK*P5>zO}{})sM&f{@W6ve0V2cB-G UyM&}ABLDyZ07*qoM6N<$f|2JCSO5S3 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_validate_prehash_update_2/00005.png b/tests/snapshots/nanos/test_validate_prehash_update_2/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..dc69d011c40e2d4b3228a51055c92db415fd2dc0 GIT binary patch literal 566 zcmV-60?GY}P)%A|Np^xNFVH2%1uC$OgEhALqZX`i3VFM6bgmHUGazv+P6;`e@iNKX_pJx zx7ToJ9TbSB7;KQTXoVH~_MRR-2ZpEUunvnwkjV0cRQmM}n1H4aqCh(#WiUe?DJ69w zO-@fr57-rxAmArO$_v8_tm8Uy=shS@2%>jRC{q`LBC1HH{E#T6bEkI(J>d+flmUEV(#6@x2LRp?5%_u-?XqR5X;jYiP}v3|-#M5Rd=Yeas6dSzhaw4?RZMhqQnZl>>nRDmqceZ%Qx3za7T^h(cuoETa{QBbp~sqBTK zSAhW1%cC3i6Wg`8T!9c$?}Q6}s3qt-bE;4%6beQ>0X#3+mwScr!~g&Q07*qoM6N<$ Efb=kc!Kd&z#)wq412 zymfESh;$-DR1E0};XHl~!|RFeE@M~+X;YMU#l{ErH6+~u+OC0sTHwsVmL?2kSPig+ zRZ`@@l;WDg3Q*5_1pDW@iXWO6SjW}IHsaPom7w-233cj9(2OdYseJoc16he>NsQX< z;WPnyQd-FvU0<-nP+Ba|Fk-hEHrfVpO+kelB7BC?H7kYljc{54if5&469F~kXgcO8 zW+$Mf1(=Zw$r$h_+y;zUMG{t&u)BrD1glwEe5}}zU6GrvbPdNtZC6#t&;z|+ah!m8 zna6tndKg!y_b(>rU?-V{c5>Z5Y=3>Vyza6kGj!ygFs*kPdJiA97|ukYRKF$pNV@2n zv(H(WDC=l6^}~NlD$-&r?=2x?B&w`0UKXZoa)gn$hh5klSJ0st?W*a6oe4S$%MpfFyAe-MRVzuvj~whwnme)dyh(%wJ0o zxqYc$k#~Oe6AnxMldRiL(Qo0s+$4s@&lK0)vk@xox=z6(XP%{9hW@Ovr5JLD}zThU4407w^5<Wn(a@N8}O3edLRXnQ+X6VNz=tirC2tMZCB9v9TrEhu*?5>yA&(Wkg*@T)4~ zA)G4;u!oHfOu3SNApx7$mlNaaljIZm+b2n0*9XCbd;p46#m%=O=cE7t002ovPDHLk FV1nB?yg>i} literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_validate_prehash_update_2/00008.png b/tests/snapshots/nanos/test_validate_prehash_update_2/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..2360dfba85d3d3107cbfe890b71b29980adf1cc3 GIT binary patch literal 285 zcmV+&0pk9NP)N2bPv2x;z27W0Biy zX??DNrK9SOPV4v0_4qoUfXfZu97NX4ot;0NAHY}EMFml*Mir}Wr4*Uae4g>kBj^)i zcD^i@e>l={dHfQV1K>e&$tFpf72-T$eJGi8@{M#mT z<>dGBZ!FV7wr;(4*u?DDHwlBg$^Avo3zu&?yy?k$hH}+g{kCOghk2#%|NABU?Zd{q zQKx(Ng?KoWYls;>a(#7@Gt}!sv2sP=C$0@kEycc1-4S+4`(&o7*96^D?R+!uxjyDi ze*9r}_`UtHFIp!w*E~^>w>;tU#aQsKkKwQNQ!05@=bdqTe!RDwf9|$wLHAQ@sz2T- z?^ylK#PNHH?6T*b=YN#-OIPOH%MV>DTG*OhZ|B`<{%~d8!Fd&@Wn-T2Osjget|3(U zSL~x)HP^c=E~`^={^V{5oLly9`iIO??+dm$GrcD6WP0@UrJPc#d+mnsTKmMaQT(vr c0MdEim?xil6dTDjeH%#B)78&qol`;+097um;Q#;t literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_validate_prehash_update_2/00001.png b/tests/snapshots/nanosp/test_validate_prehash_update_2/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..3dfe1bc92d29c46b8b69841125096e7a5e4bb796 GIT binary patch literal 987 zcmV<110?*3P)9XkU1x9vh2Ly2(<<-X)nWA3D64j zbi4*KF-d}CNolU>l)=LXb7KJ+S&Ek3g@4t(37$h z1ZFmQhfKOr(zR-&#Paz9taAv>o~xWjJ*!EpxxHAGff4m?5$VDjrd7g*8SJi62u8zI z3%{NG0#td@G)>d|792Iy)pn}wir5yorLOq)TDOC1eGg08?UVGmM$L&Hl z*kRFaiz}<@3zlRgSt())869sFrb>?e=!htqYBkxlWi2ls#qk#ayZ9Os6_W>C6{d;e zFtH}lZ3rB;>R_!@S{s4TiNuPt0Ku8sC1_2Z9XB1-2CwRaj59gc!Kph*K_xr%Sm4B} z9}vScqHNHsgW(j&(ej1VZiU;tEx*%*9E2}`OyA4&t{=D|KK57vB`sS~A0*@F?kQln z%YQtQ50j#<4#zZJ5=WoG?cpf)GqL|kvp>IiLq~z4<_=e~P!q(N`jh`>>;P-K)v9)?rOnA(F)hi+pN#D%VQcYSRm-*J z)_Hwj#9~wKROX?o=&_PZr1r!ls210y{A<-`g|21mrvtNAoKArpnsq5HTc=nMXJ`kU z1vRG7RFzp(dWrNXo8y;yD)rxn((dtHG~Q7DbZH?OKt>G8pKi6(x1m)0bA`ZrQ}&+4 zP)SOG1MdK7IwEsM44w&@^Z!>Ole}V#dzBo5>mjpTby{nhrfHg{`7n?g3ZCn%hvX?l z&EQdQYTwvU3vQwN>}Gk$47#t{LGwzmpaG;6*N)nkCH_Q&Bisx2Fd|-M>bqQ&A{ds6 zK%b{ddRhOUMWwoTk2NAU6TEK$RIDwJX8}k|`A1NhT|s)3ZpU-ui@gQNWcID^f0 z!(O&gkrR@r=@AThZvnQxfQ;PGsI@aqO}0AzOtS>b8Ea@KYG@>7TUs>J!WPo?PXf$X zR1LLeN4^4-%`>{GTj*8;9^&RQdAdlc^`7$DG)>bqP17{z`~#9lT1nWsmEiyY002ov JPDHLkV1lC&+PMG# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_validate_prehash_update_2/00002.png b/tests/snapshots/nanosp/test_validate_prehash_update_2/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..395d1fcbe251b74b960e969802e87d78137853f2 GIT binary patch literal 983 zcmV;|11S87P)joN4?8%-Y zQXP2(1L;HNmc-QZ4hed}zk-gmsWm#_x&yR}We{fKcfhRR8=DxjGGN);i_uPl-xyLz zUV`|ykwI2mj6S63`^#sqI9Lz_PUZ(0Kw|Vse8q5+*qviv=%sf68H|<%v8SSFgou|s zeT<(HEnP3odS}k-*dh^2PO{_L-I{7v^j(A}K(1WT56~w9Z4E`m8EO@Jl0}ef4vrED z@98PQ+Sa~7BHm%0gBOzKq}qOP)-Pg5UtjzCi9zyHdUxZHozeIWZ|~~~-~yajf>p5b zt1)ZDk&DfDwj#i+<^wP?U+ipB7pBDv%>&|%I7r|wo=#9mh*`j{YD2?O;`qe4{bixQ zf6^L9wQ_HE{!NNpFZ=SkTR#LEEb%cC3P2u}y%^BstB(+8PC11&+{G^dK9 zD2nH?Z=Wn;4yj;N8tfj5O)QRmE?&PueNi$Zt&G~s+|WK}=jPz-*--xKL`DKmJIxiq znNfZgnrltkPsAC!QuIB*>Z3MzP^bw<;~G@3OQ9CCi9B;U8e?BWfXbA`=0VjZ54;J# zate!X%OihUM3(B%c$|Re%AGuL2b^AExg6Wx^}A8?VU?}5cK<_IE7Tf#jgOK*aKV=0 z@p;O@^58w)>8DX@=)*+*XWR~akAJ$aAF_HBMNt$#kN*@JzV#<|X#fBK002ovPDHLk FV1j%t)QA88 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_validate_prehash_update_first/00003.png b/tests/snapshots/nanosp/test_validate_prehash_update_2/00003.png similarity index 100% rename from tests/snapshots/nanox/test_validate_prehash_update_first/00003.png rename to tests/snapshots/nanosp/test_validate_prehash_update_2/00003.png diff --git a/tests/snapshots/nanox/test_validate_prehash_update_first/00004.png b/tests/snapshots/nanosp/test_validate_prehash_update_2/00004.png similarity index 100% rename from tests/snapshots/nanox/test_validate_prehash_update_first/00004.png rename to tests/snapshots/nanosp/test_validate_prehash_update_2/00004.png diff --git a/tests/snapshots/nanox/test_validate_prehash_update_first/00000.png b/tests/snapshots/nanox/test_validate_prehash_update_1/00000.png similarity index 100% rename from tests/snapshots/nanox/test_validate_prehash_update_first/00000.png rename to tests/snapshots/nanox/test_validate_prehash_update_1/00000.png diff --git a/tests/snapshots/nanox/test_validate_prehash_update_first/00001.png b/tests/snapshots/nanox/test_validate_prehash_update_1/00001.png similarity index 100% rename from tests/snapshots/nanox/test_validate_prehash_update_first/00001.png rename to tests/snapshots/nanox/test_validate_prehash_update_1/00001.png diff --git a/tests/snapshots/nanox/test_validate_prehash_update_first/00002.png b/tests/snapshots/nanox/test_validate_prehash_update_1/00002.png similarity index 100% rename from tests/snapshots/nanox/test_validate_prehash_update_first/00002.png rename to tests/snapshots/nanox/test_validate_prehash_update_1/00002.png diff --git a/tests/snapshots/nanox/test_validate_prehash_update_1/00003.png b/tests/snapshots/nanox/test_validate_prehash_update_1/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..63db7647ff4de471b692cef68df0dd8b4493503a GIT binary patch literal 437 zcmV;m0ZRUfP)H)9Sou?uP9KCFrKKF+B( z;dDNobK&3DycRuuINRTY)L*Pr0$5)Gc;%0-)0rFVUG7c?ti&voc!}a z^m_?^%x(_-t=0+IU5P!nJei>HemJV%O^AWi`bi7^_y_{Tz^qV00000 f0000006^Cl!j~X&&{~Bn00000NkvXXu0mjfCg#d| literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_validate_prehash_update_1/00004.png b/tests/snapshots/nanox/test_validate_prehash_update_1/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..e1237d4076e88005e87d25cd4877e9a41d85b5b7 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qa?Ri978JRyuBIScSu2mA>h~! z;cxp@zCCK^OkBX9v*+@wIiFQo^!tkr9-9JG4FU}U_Kt<#nqQ00S+1DA@p5wQ*2TV> zPv`6oXjh)UY;KVG-qWv+MRqTIy#IKs+|`*j<-y@|GB-!Rd3F22W3&5mZ;koWqT((l zv8`Ep^j4ho>+4cyO1A7?eEe6CSIIB7v;&XW>}8g${rTqd&+P};KTIoq*;L~08-C~O zrHPm1G78WC5EC&Ev7Ia4eLH?n)UH1-RqteluhsJkx7;>!=P~m$+w;r+{#ZR_dhY#u z>c37XznJZ^moxr?rv7uFyAOoV_&=W;>;(pfAM@o7g>Bt>&TT#$NW|0C&t;ucLK6V4 Cz>5|D literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_validate_prehash_update_2/00000.png b/tests/snapshots/nanox/test_validate_prehash_update_2/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..c10a641e7409e19110953a24aabf31260df893f9 GIT binary patch literal 389 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s|ba4!+nDh2#ZeFtiPeWq) zE#IR5%0Kmf3u1K>e&$tFpf72-T$eJGi8@{M#mT z<>dGBZ!FV7wr;(4*u?DDHwlBg$^Avo3zu&?yy?k$hH}+g{kCOghk2#%|NABU?Zd{q zQKx(Ng?KoWYls;>a(#7@Gt}!sv2sP=C$0@kEycc1-4S+4`(&o7*96^D?R+!uxjyDi ze*9r}_`UtHFIp!w*E~^>w>;tU#aQsKkKwQNQ!05@=bdqTe!RDwf9|$wLHAQ@sz2T- z?^ylK#PNHH?6T*b=YN#-OIPOH%MV>DTG*OhZ|B`<{%~d8!Fd&@Wn-T2Osjget|3(U zSL~x)HP^c=E~`^={^V{5oLly9`iIO??+dm$GrcD6WP0@UrJPc#d+mnsTKmMaQT(vr c0MdEim?xil6dTDjeH%#B)78&qol`;+097um;Q#;t literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_validate_prehash_update_2/00001.png b/tests/snapshots/nanox/test_validate_prehash_update_2/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..3dfe1bc92d29c46b8b69841125096e7a5e4bb796 GIT binary patch literal 987 zcmV<110?*3P)9XkU1x9vh2Ly2(<<-X)nWA3D64j zbi4*KF-d}CNolU>l)=LXb7KJ+S&Ek3g@4t(37$h z1ZFmQhfKOr(zR-&#Paz9taAv>o~xWjJ*!EpxxHAGff4m?5$VDjrd7g*8SJi62u8zI z3%{NG0#td@G)>d|792Iy)pn}wir5yorLOq)TDOC1eGg08?UVGmM$L&Hl z*kRFaiz}<@3zlRgSt())869sFrb>?e=!htqYBkxlWi2ls#qk#ayZ9Os6_W>C6{d;e zFtH}lZ3rB;>R_!@S{s4TiNuPt0Ku8sC1_2Z9XB1-2CwRaj59gc!Kph*K_xr%Sm4B} z9}vScqHNHsgW(j&(ej1VZiU;tEx*%*9E2}`OyA4&t{=D|KK57vB`sS~A0*@F?kQln z%YQtQ50j#<4#zZJ5=WoG?cpf)GqL|kvp>IiLq~z4<_=e~P!q(N`jh`>>;P-K)v9)?rOnA(F)hi+pN#D%VQcYSRm-*J z)_Hwj#9~wKROX?o=&_PZr1r!ls210y{A<-`g|21mrvtNAoKArpnsq5HTc=nMXJ`kU z1vRG7RFzp(dWrNXo8y;yD)rxn((dtHG~Q7DbZH?OKt>G8pKi6(x1m)0bA`ZrQ}&+4 zP)SOG1MdK7IwEsM44w&@^Z!>Ole}V#dzBo5>mjpTby{nhrfHg{`7n?g3ZCn%hvX?l z&EQdQYTwvU3vQwN>}Gk$47#t{LGwzmpaG;6*N)nkCH_Q&Bisx2Fd|-M>bqQ&A{ds6 zK%b{ddRhOUMWwoTk2NAU6TEK$RIDwJX8}k|`A1NhT|s)3ZpU-ui@gQNWcID^f0 z!(O&gkrR@r=@AThZvnQxfQ;PGsI@aqO}0AzOtS>b8Ea@KYG@>7TUs>J!WPo?PXf$X zR1LLeN4^4-%`>{GTj*8;9^&RQdAdlc^`7$DG)>bqP17{z`~#9lT1nWsmEiyY002ov JPDHLkV1lC&+PMG# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_validate_prehash_update_2/00002.png b/tests/snapshots/nanox/test_validate_prehash_update_2/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..395d1fcbe251b74b960e969802e87d78137853f2 GIT binary patch literal 983 zcmV;|11S87P)joN4?8%-Y zQXP2(1L;HNmc-QZ4hed}zk-gmsWm#_x&yR}We{fKcfhRR8=DxjGGN);i_uPl-xyLz zUV`|ykwI2mj6S63`^#sqI9Lz_PUZ(0Kw|Vse8q5+*qviv=%sf68H|<%v8SSFgou|s zeT<(HEnP3odS}k-*dh^2PO{_L-I{7v^j(A}K(1WT56~w9Z4E`m8EO@Jl0}ef4vrED z@98PQ+Sa~7BHm%0gBOzKq}qOP)-Pg5UtjzCi9zyHdUxZHozeIWZ|~~~-~yajf>p5b zt1)ZDk&DfDwj#i+<^wP?U+ipB7pBDv%>&|%I7r|wo=#9mh*`j{YD2?O;`qe4{bixQ zf6^L9wQ_HE{!NNpFZ=SkTR#LEEb%cC3P2u}y%^BstB(+8PC11&+{G^dK9 zD2nH?Z=Wn;4yj;N8tfj5O)QRmE?&PueNi$Zt&G~s+|WK}=jPz-*--xKL`DKmJIxiq znNfZgnrltkPsAC!QuIB*>Z3MzP^bw<;~G@3OQ9CCi9B;U8e?BWfXbA`=0VjZ54;J# zate!X%OihUM3(B%c$|Re%AGuL2b^AExg6Wx^}A8?VU?}5cK<_IE7Tf#jgOK*aKV=0 z@p;O@^58w)>8DX@=)*+*XWR~akAJ$aAF_HBMNt$#kN*@JzV#<|X#fBK002ovPDHLk FV1j%t)QA88 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_validate_prehash_update_2/00003.png b/tests/snapshots/nanox/test_validate_prehash_update_2/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..63db7647ff4de471b692cef68df0dd8b4493503a GIT binary patch literal 437 zcmV;m0ZRUfP)H)9Sou?uP9KCFrKKF+B( z;dDNobK&3DycRuuINRTY)L*Pr0$5)Gc;%0-)0rFVUG7c?ti&voc!}a z^m_?^%x(_-t=0+IU5P!nJei>HemJV%O^AWi`bi7^_y_{Tz^qV00000 f0000006^Cl!j~X&&{~Bn00000NkvXXu0mjfCg#d| literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_validate_prehash_update_2/00004.png b/tests/snapshots/nanox/test_validate_prehash_update_2/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..e1237d4076e88005e87d25cd4877e9a41d85b5b7 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*Qa?Ri978JRyuBIScSu2mA>h~! z;cxp@zCCK^OkBX9v*+@wIiFQo^!tkr9-9JG4FU}U_Kt<#nqQ00S+1DA@p5wQ*2TV> zPv`6oXjh)UY;KVG-qWv+MRqTIy#IKs+|`*j<-y@|GB-!Rd3F22W3&5mZ;koWqT((l zv8`Ep^j4ho>+4cyO1A7?eEe6CSIIB7v;&XW>}8g${rTqd&+P};KTIoq*;L~08-C~O zrHPm1G78WC5EC&Ev7Ia4eLH?n)UH1-RqteluhsJkx7;>!=P~m$+w;r+{#ZR_dhY#u z>c37XznJZ^moxr?rv7uFyAOoV_&=W;>;(pfAM@o7g>Bt>&TT#$NW|0C&t;ucLK6V4 Cz>5|D literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_prefix_hash_hash_init/00000.png b/tests/snapshots/stax/test_prefix_hash_hash_init/00000.png deleted file mode 100644 index 6216e52b48dd99b254c910055ab435438506423f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10028 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 S%z?My*o+O$4H|B`KKWnRka(y7 diff --git a/tests/snapshots/stax/test_prefix_hash_hash_init/00001.png b/tests/snapshots/stax/test_prefix_hash_hash_init/00001.png deleted file mode 100644 index 740935316268cd56e58f77883bd86fb2a13c95fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3901 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 V|19Wd1FwAXK#VNzR^4%b_Ft#+|LOn$ diff --git a/tests/snapshots/stax/test_validate_prehash_update_first/00001.png b/tests/snapshots/stax/test_validate_prehash_update_first/00001.png deleted file mode 100644 index c9b9d9687b5a0b59dd6aeb24e34872a90cdae598..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24157 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 diff --git a/tests/snapshots/stax/test_validate_prehash_update_first/00002.png b/tests/snapshots/stax/test_validate_prehash_update_first/00002.png deleted file mode 100644 index 740935316268cd56e58f77883bd86fb2a13c95fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3901 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 E7rVmAJpcdz literal 6735 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 literal 8975 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 M&26vLnt7xCA3P~)6#xJL diff --git a/tests/snapshots/stax/test_validate_prehash_update_last/00002.png b/tests/snapshots/stax/test_validate_prehash_update_last/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..8f4e185a9b20bc2d4adc76d88c969cc762865967 GIT binary patch literal 23417 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 M(l@_aam79MpIT>{UjP6A literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_validate_prehash_update_last/00003.png b/tests/snapshots/stax/test_validate_prehash_update_last/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..279d4af70d946daaa514aca5890aa2b19cfcb40a GIT binary patch literal 23146 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 L&i#^m)}j9i-4HtF literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_validate_prehash_update_last/00004.png b/tests/snapshots/stax/test_validate_prehash_update_last/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..1d6e09083bb98083e807f922d7a8e0a10f1b286f GIT binary patch literal 6925 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�#F>Led*RNmMt`MLO zb)(hpa1QH6hjtdUH;=JbUcWdrio7&*dH6;qq{i&9Cxam+o8 zI(Xy5?F;86ODiSV?nAe2GtifI9(*idmld9z+Ya{_KBHbA?(6H5Hw5;fX{WyqA7s1} z3j~5$eIwN+(ZMewN&dmMOD+CQ5LC$sXsIvk#l_B&pgk}1tw!3FlKb-c--?4PN?1+) z{crNdT(&Y@+^T8-Hez6C$gr;v!4->(&p2YbU*|q@f};0Vz;Xi&C_OQf+;#?W?I9{0 zh+|tIQhq4&Y9!1*`v5*ketw5*mCM?UyS)#}Bkk;zpQ-EuL%1nUY{ijY@UZ!`B?-4b>)-wg~{tuE7Zb>-jZ4Z8;a%TE|ovRjwrp zvoArvZ~&!}*DJ3B=;FlvS&Djunc_>0^A zKsu$}6!cq_dyh88Z$-}qe@?c0YMQWy%@%*+AE3e)fVKjY&D3s7Qtxf&ai&AToD*Tq zX?A)#clr)jmWJ98R;z)+v6;M|!qm682HPhN>YW*mQuS#C-%;P)ea$3dD+wHVd`^;& zF4ThAwz~)TbFT8jYzo?dy~pJo?)r<%jdUrH2ZVgI-G<3IEhGGDYB<=P)KUO;3=~!7 zK02PEOALy&1{J66+y6Q@ss#AVrQzY~dj@wZ{O11w Dm;=Jn literal 0 HcmV?d00001 diff --git a/tests/snapshots/stax/test_validate_prehash_update_last/00005.png b/tests/snapshots/stax/test_validate_prehash_update_last/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..abefe7c91b06c0991af04c12d73589f3a235d255 GIT binary patch literal 9004 zcmeHt`8SmP|Np3|2vG?|RF=e$eI4ACq_XA4j2K(UzV9(2+>Nc2v5%rq_Ls<(daJR_20- zPaOtzzN*IWe&ufm)c{ z52EgL;SYg82}dCyKjHt5|K{L7R0F??<3Tp`)zuoR3=)ZS)j!s5n4Efc+x!&`-pjvV z7y|W%z4}slspW@oa%yMaHT#63+x&({Av0{$pJP?lEg@p&d?S?A)zz_PtgC;KSTX|4 zUsrkY!;^&jSHS$k-U5e)O(l|358}>yvUuKEg8A*Ud%GXGzqM z7#}&1D zZ!ufUOO7AR?;;;0suS>sPBL?3yB2pt^pVlU-fQFOGO#zn$=*#tsYblx)VMo=louw? z9KJtrd)6T4MHv~u+W#Ej6_rwr!@*j+F9DH;he!1ZDYHhS&l(aA75A44A2izkY~mG7 zi^0NcZ@G&nr`|hgp6=wXnwO#2l6`LO3%Sj^<5;c^G@ql9i@!(y{KRTW^qb?po%_Xse5Po!ps)7KNc zqL@var0Nrx%Z)#3F(=C%Vx$P$HVc@(Se+{is0lD$mnLOn7bf<(kbx&8EZY=Lv1D7 zUHaxigj1ps_y2f*X2b8_lNjo+?Tm$Gw|_h5Sml zyBFf88p1;`&66n%xh)=Ym|&VR<*CL6&C4gJdTYq1I6V_2nAX6%P3k_~yB_|@Y*THx z+2Hx%=-)N767WcI>vH3#2_>xAtKSvXpP8q8GnEI(vN+4wQuqS&f!kO3ZQjRUUmyGr zw#C{*PrTr0%1lL41q>?x15Z#yeT#tx?MdeJmn-N?b~utM2^pjKQLo!d$0V!JQ8cHMn?30OqsOKNN<-EnDON@Q0JN>qqxRW(ZQ zzna^NVe4iKrT2Udxtc30aEWW4-t%m8hQX0ca~DseGGfsL_U$D#-ei3LrqOz5jgzPl z&FGF`jlyAE&)HgV~(^ z3eH=E5{c2R3N5u-D#P-D-kmOMPLp%J?+$CoEtdxs7WzcDh`!w6>PRb1qjV)>Z8tSlx}ANS%nY> zv6%}o9f%1ZMN&9-wx%{d+rYrLsL1%lX7Ss2o9aE@KrgsA9PL&3%MMX()J~xLEhtIl z^kX5EN1H14EVDno2PJ%`Vx-G(LPQ9=Cu+T*sz20uZm0X8(=z@-i(=u1a+S%! z&YvV)>(`^&B7dQ2E@4ad-*h_>4Xi_zn@&IuX);ZShE>m)u&6KHB47eDF7WPPg^cEk zi>R&0RKwVw3k?C)U#j0kd3F@iS5mb3hI3s+QaNq8H>aUzn>@%rx}8#fi89Z0P_ozwr`V?>Q&?&H%0dmWe}X12j#*hvpG9z}a` z7z|IkbfXu1oK+)v1JM+?j)ibJoMpsSZ@9K3Q_mlkmr%}JNSf8(z5fNdSfKz^UOtg> z*N9lQafWwj$zu8x`o>w_t>Uv3}#%1vr3-lIP3EjSM9mJLkCt{qnuLM(cYKJTw|w?`64G34Yzmb z)K|MngXvY9GwT<~rTs0+u3WPo)!MsO_c=q3>Sw>4Q;&%n0k@5}by`KjgIHJ65ozL$dHUuW5)L#AG0 zlk;w~31$X{SxVh9D!}|HEcXY@xP%VGYK>DEdfcN41`*wfc3+GQs*etw&Y5N<6ieFI zBFVMpnQe~mZ?rGi6a^?oN&EXtj8)(~rDon#R0aCwWH%}tW{_H3Q2}SQRnG3;iZ$bM zv*O2r9V}sn5;k|E4*lBQ#gM477AsXbbF+MYlf-M>eB1@w~HwiR*4cE+)CuShQFF zLMU!(rlXTRGNmT{1xf`zARpIF4r1mmBK?;uR98RzYWw-62@@p1bp zqj9BN0abpdbvn!6c;}+wlT*p)a4n!gHca@Jb%gB)HnnZGequGKwPvj(S7R0<`3y%* zEq=c+yt~%XT@`Tb%lV8bfRMlpP|H92ZA z`Z^T5qEg;6;e6_rDjb<|=8dxonM~e9dAs#ofpNUFj7FX}lC(0TnZTA_E&p42>O#Vx z{Id>)g0L}4Y!FcOK7-!Ro?QQH_4wU8t_6n!Cz=IhYHTy!f1^^XHhA`r8+^HPXAgU- zLf%{)Ko6K$@KnR(PY^e0scM!Ron+02rpB_;`aGJdT`xJ}w`-|sX&q&Wc;~@qSMcYM zU1UdA`;B?db$Qx_&*T@`ME1eQm+rF!iHgR#4K(6JdR8O03GR#D>Ahxfu&ZXN-3DJ6 zNU55pjsLp0$ZG7k`?+vEuWJnZMY=yU!AsF1cQD*QMYP5lX@^Xw&(%GnVYw|DEd~Yt z@S)>M(FSk0GJo#fCvk(XIPFSFx&PLVP{B?j#gLouJP?(FPbr|+vb58CNsWOz ztk)~~)D#^LT-(Ee-hl#+Wj_rg()u#u7oP{Ji0;P_PL1;_MuRWz7SKPORrWgoeV|o4 z^1x?5~E$yk}7o&G{Xi$-RytD ze)+S2i2E(%{ujpXuptQ4u*qabvef`^Jf3+Q0_KmAPB=WaBht?`YXmV5My#wqpMi)G z_K8TS*=N~BDc=I~+bl=EeAR_Am^uebQXhT(Y8Rz)JHw5~??&0H?HW?C^2eTi5e2Od zeeFGNg8U(+GB4G=oyRfmN+?trrp0+6^!1hM?7#GIz`y`^dMoMH>0n{(PQhREDZGd z46LjiLc~I-QU`uK+1NXdf)E!o6i|H$A<|~HANv1h@0{V4N&p(>rkOCflb)k4D;Cf? zy^~0fMdZr1%?7Q1eaA3zi?_L(kdVb8+m~2XkvAld9MYh)2>~Q>i7>Gm`Glu86mlFO z>F-7@pGURLDlCK&Xi+%iLhE$k`q8iKiFt$4Ab-I)VhbtVfZ!83RRo!9`N3vF_qmY(>((YK#tHAw+cz zfU_IAkv?w3Y}M}1STev+&1^r%WQJ|UT8w@UKmqayd{1x9O+!NhY%kCy^ zkMOgMufg=T971&^F=hEdfp+}KPmP+_TVK!&A9?lss@}vD{1{+M80fCSXy?DfVk$MK z-u1p+=hM`5&DbCmQ5lPO{z%2uCIL{iYsW~~yZc)pFyoZTe97~_s<7J{>+Ngoc--kz z{Y~&PKvsAMRwL!t*s`ed(PdfsgCWN<_F@dw8!iea0PKv^IaS^ZzLB!7eciJTO3y34 zKM}7e)KcYH_UTWuK29jcURz(kC1FkfbCqv!nYPi>tik|caF&ob^kU$Ryp^0TM8l>G znN4ebO$%I>x=G+)J=Ih>t zPF4j)gNbWphkF`Bi&$}lzX+#*Io}?-fD}+92gKhRivL?%8@CHX>KVYYxby2Df1a0M zso`r#{Fd4U>td(--dlE;D-2z^zjLo?imcPWqz}-0?Z7V|&08G_eVeFQwX=6-vgG=I zZf6cBT5o68c|x-q?i{&*wa_ix_I7z;&V(*c9{a`Uc00g+U25T0rtm3BV6L+TPpX&Z zss&aZg~qG zPsCEf;Cr1rCM&vziofZ0nelv-u70I&Jzj#Sv?TYNo_l2vVl}Hg4w#(rF>Ws1Pz?w$ z5st_~WgK_0>oPH2h$?&Q6ssaFw?==~8-aZ5y|>0J0d(PSDqf+CGPRNcgp5#N>afv- z`0T8>Z*5+cK5PlM^NCv5#v4BSE$ChQ|6|@63zLcEB~FpihYedV;b~vF%$3=#6w%0scfL)dPf(W(#2t24VZ?dd~Rn_BO;v7jidTrHBr=AA34Zn0b)4#|w zJj=bP(?RBAZ3Y1w4T>%y1sW|TM6G|x@h$c)lZnWQd*A*VsK79Mfk1O4=UEf}E=h9B zcHr?`q|#T9M(8T;v*;sQlz-&md|#=k&1D ztpqv1t!S(94I$@ytv5l5BW{IuFHq&x^z5mi)}@QcX$yNMlb`Vc3t62YOgfUFykVpGk3+5&JO zXi*ZvwSA%E!51~$5c(1Hl~-aoE=xTsZzcFNA+9vr_1m;K`*e83W1A0Sd(6j;!&y8l z){in04YK(L4UZ}M2=#^r(CejCKlXfeLoP|^T$L`(KN2S8(4oF5?e5$#kP=DC?z=Po z-ayG`hxL#6RE~d`ak;MTX&b|yf3NwTSB&tboH+=2_ep+HNU&)9_$ zwZ`)GV(FCWDclR9zqS8~a%)OsF0W1h9gm#gvk%HMt3#|PJ7NLAtaT?ac6WO&Gst3b z$i0-WjJ*T0+c8~vkmLjHxM;ue)$x;4vf$q+TJl3X9*fYI0kHbLgy!lP?vH=TV|q1W zpy)SVhh+TiZK)BEd_dRS1t%||O4#T8yc%wIB+rc}`{qdPgF_aLplH3h+U0cfMo^XB zbS?ZKD|kB}{6p9x#XwBra4R#Z-+?^y$#nRM=VjWH%l~ z%g4&mH|2OmpH8k~DNe7zgngeiLSs9fgQ5n{z}|7I7b~s1BrpDXfUs{4T`$fg#QuZ$ zzfu2xfBdAzB8n=*h4zEixj-n{4}=Z5l^42P+yBG*;zyX7?GrCOw!)7iyrPI21=RcB z=FALcss(^LXXk&mET;8=kPVTzH zIVg!g`Q4+`07RaXi;9@o9C|0w6@Cm0$tb_mfym*S-c%y9z3?;*`s1v?0tM8K8$JQ( zI((#XkO1JC4WGm zJ;P1|<7hUy4yP&r7`|&(QacM1$YQtcCPD3ZT*>sZ)GxlCkPbv~;t8{}lvj^uS9+oX zS;!y^H87|4?q~oFc}B;dvO`m@r=M_Yn7D~^Hygk!me$XUDS90Z|ZD`vpCeH4P zI)%=T>nJkQ~Bb{OMpdU&tLCsL2guv zZ90Br?*LreW+AaF=eOt9;>$v=`!%Z*M}u1Vlg|*R~{JViiUVfOe-!u;ZcE*yJomaa{(zPO;-wSKwxcdp=2KK4wzd;)@nxI661)(mU**F-ZO%h-dN0 z)+#)x&i#bh29r7VQzqU-&BxImEyZBhE!5Tkcj-zRBwK_dGX15A_z$nrseW|=oMCwj zk1}bQ!bv)N_I$+$kI^@wV*O2v0rgG8L<9-=dQv#r&J9t5W!;vWL44J`@REL29q$`Y z-!`6rBr_RZl6v_dZm?08lx9qT^n1Kpq3CV6{J_Hn z^(>*prC-c8k`}=OzKoW&D5?yr-}7h+iIuDAJToxxJ*=pE)-_^!Kj2eph+_&j&i8AJ z;o>Nkn--x;u&}EU@c1z_{^_x2 z@p}j`l@Pi^;_o^0pz_DR^+2wtCLFCSngJ!XS-)M~bLMvcRaRC87`wktg?sYFGY26J z+?~X>*&{|D>WYZNxkC07l?Xr|lB?QQm&3L*N(}svuIR&bd?XD>S_j^b5<8dgd_$FT zeSCnAGDkjXon^cUC3U)|?ChXa1xQrf-GEc{^f3m0j=W6I;?&Hz0fs7_9?a!wogPlr z;w(4VM6zB(@aRcy+kuA(=1+~Nf(5sn3yb>-E_~qhEInH49oemtf$Ftf7=|g4Hnbpg z`j!IcOQ#QdChgg7;y|;@Y}vzIl3>q|FuW$>It+ih6ew1SdEG?c_p7>Xm}W!+1q;?& zm+yM2fQl0}`FJXi3DI-4{;2(37iBm#DX$S+2Q?pW#K`XT-{Z9Tw8i(2WK$gqT$r<3 znq5}r4oXXJ^&a3>;dA67+cMWU33vb^6xT=XXX)c62E#cD?#Re{64haACU5>@ ze;7hVTIWf|E~c=1)o=6HB%(LfDRw>hn2~3*Q(;GebYy6mjN)|K4B7M|cgd9z^spnm zajiHpr28}E25yF9t)Tjcc-m&V4{O$(-e@s-WqkUv>@x=q_2IDF@xnd2*sRTugl|FX w*&!i&YER;*mZqTKG&dfbl>g9J*xUbD3dD{)zJEXPFBp)8nbqZbQ@7;*0jFuZ%m4rY literal 0 HcmV?d00001 diff --git a/tests/test_sig.py b/tests/test_sig.py index 3f70e0c..529b2c8 100644 --- a/tests/test_sig.py +++ b/tests/test_sig.py @@ -1,8 +1,6 @@ import pytest from monero_client.monero_types import SigType, Keys -from monero_client.exception import ClientNotSupported - @pytest.mark.incremental class TestSignature: @@ -36,17 +34,28 @@ def state(): "a9FiYNpEjBoHZ9iTww3vL96P1hcmTQXvpFAo" ) + receiver2 = Keys( + public_view_key=bytes.fromhex("1fe0cf63fc16b40b5397c47a5227e4eb4d" + "9bc735dbd8d062340c11d35966f904"), + public_spend_key=bytes.fromhex("a22faef2684feb1583f69a3d2bd87e09b3" + "9f70276b69b8512876b7adc8ddfac8"), + secret_view_key=bytes.fromhex("b9209a473237f601d66246de732680cb62" + "d344fbf0d2bc23e195087d53a06f37"), + secret_spend_key=None, + addr="5R32BpY7seiTednbP9I7mzS7L9tyN0VmxSp1lSfkasRlgoO98XjU6gnHpwqtX9Md0e7SBj9IaWLZR2AZeEzz6NsXhLMdRi9" + ) + return {"sender": sender, - "receiver_number": 2, - "receiver": [receiver, sender], - "is_change_addr": [False, True], - "amount": [int(69.36*1000000000000), int(0.55*1000000000000)], + "receiver_number": 3, + "receiver": [receiver, receiver2, sender], + "is_change_addr": [False, False, True], + "amount": [int(69.36*1000000000000), int(0.37*1000000000000), int(0.55*1000000000000)], "tx_pub_key": None, "_tx_priv_key": None, - "_ak_amount": [[], []], - "blinded_amount": [[], []], - "blinded_mask": [[], []], - "y": [[], []]} + "_ak_amount": [[], [], []], + "blinded_amount": [[], [], []], + "blinded_mask": [[], [], []], + "y": [[], [], []]} @staticmethod def test_set_sig(monero):