From 1b70b558c6e19e5af380ea5780294fa5e78eabd1 Mon Sep 17 00:00:00 2001 From: eskimo Date: Sun, 6 Sep 2026 15:13:36 -0400 Subject: [PATCH] Handshake Ledger app Hardware-wallet app for Handshake (HNS). Derives Handshake addresses and signs Handshake transactions, including name-auction covenants, on Ledger Stax, Flex, Nano S+, Nano X and Apex+. The design premise is that the host computer is untrusted: every APDU byte is attacker-controlled, and the device's job is to be correct when the host lies. Two failures outrank all others, and the code is shaped around them. Signing something other than what the user approved. Any field the signature commits to and the host can vary has to appear on the review screen, and anything the screen cannot represent honestly is refused rather than shown under a label that does not describe it. So the device signs SIGHASH_ALL only, checked per input rather than once for the session; it displays a TRANSFER covenant's destination, which decides who ends up owning the name and appears nowhere else in the output; it shows a covenant's name hash when the plaintext name cannot be verified against it; and it refuses covenant kinds it cannot name, outputs whose values exceed their inputs, and declared input totals that would overflow the fee arithmetic. Misusing key material. Derivation paths are constrained to m/44'/{5353..5356}'/account'[/change/index] in the app itself, not only by the install manifest, because BOLOS terminates the app on an out-of-whitelist path instead of returning an error. One coin type per signing session, since the review renders every address under a single HRP. Panics count too: set_panic!(exiting_panic) means a panic kills the app and strands the session, so nothing unwraps on host-derived data and the session ceilings are sized to the configured heap. Consensus follows shd, the Swift Handshake node, which is the reference for the sighash preimage, covenant item layouts and address encoding. SIGN_TX is a PSBT-style state machine driven by P1 (BEGIN / ADD_INPUT / ADD_OUTPUT / REVIEW / SIGN_INPUT): the host streams the transaction as structured records, the device accumulates its own view of the values, shows one review, then signs each input on demand. Tests run under speculos in a container (./scripts/test), 66 of them, green on all five devices. test_sign_tx_policy.py covers each refusal above and needs no golden snapshots because every case is rejected before anything is drawn; the snapshots that do exist are the record of what the user sees before approving. tests/application_client/handshake_sighash.py is a deliberately independent reimplementation of the sighash, used to verify real signatures. Status: v0.1, pre-audit. Not for mainnet keys. Signing has not yet been exercised on physical hardware. Forked from LedgerHQ/app-boilerplate-rust (Apache-2.0). Co-Authored-By: Claude Opus 5 --- .cargo/config.toml | 34 + .gitattributes | 2 + .github/PULL_REQUEST_TEMPLATE.md | 8 + .github/copilot-instructions.md | 96 ++ .github/dependabot.yml | 14 + .../workflows/build_and_functional_tests.yml | 50 + .github/workflows/coding_style_checks.yml | 24 + .github/workflows/guidelines_enforcer.yml | 27 + .github/workflows/misspellings_checks.yml | 22 + .github/workflows/python_tests_checks.yml | 28 + .gitignore | 35 + Cargo.lock | 1425 +++++++++++++++++ Cargo.toml | 46 + LICENSE.md | 201 +++ README.md | 134 ++ build.rs | 34 + glyphs/handshake_48x48.png | Bin 0 -> 264 bytes glyphs/handshake_64x64.gif | Bin 0 -> 386 bytes icons/handshake_14x14.gif | Bin 0 -> 99 bytes icons/handshake_32x32.gif | Bin 0 -> 199 bytes icons/handshake_32x32.png | Bin 0 -> 183 bytes icons/handshake_40x40.gif | Bin 0 -> 241 bytes icons/mask_14x14.gif | Bin 0 -> 88 bytes ledger_app.toml | 7 + mypy.ini | 21 + rust-toolchain.toml | 2 + scripts/build | 70 + scripts/build-unsigned-tx | 101 ++ scripts/gen-manifest | 96 ++ scripts/send-apdu | 47 + scripts/sign-tx | 218 +++ scripts/test | 43 + src/app_ui/address.rs | 45 + src/app_ui/menu.rs | 17 + src/app_ui/message.rs | 80 + src/app_ui/sign.rs | 166 ++ src/handlers/get_public_key.rs | 56 + src/handlers/get_version.rs | 40 + src/handlers/sign_message.rs | 151 ++ src/handlers/sign_tx.rs | 669 ++++++++ src/handshake/address.rs | 29 + src/handshake/bech32_encode.rs | 25 + src/handshake/blake2b.rs | 49 + src/handshake/covenant.rs | 125 ++ src/handshake/mod.rs | 61 + src/handshake/sighash.rs | 185 +++ src/handshake/tx.rs | 66 + src/main.rs | 272 ++++ src/swap.rs | 18 + src/utils.rs | 158 ++ tests/Dockerfile | 13 + tests/README.md | 45 + tests/application_client/README.md | 16 + tests/application_client/__init__.py | 0 .../handshake_command_sender.py | 150 ++ .../handshake_response_unpacker.py | 63 + tests/application_client/handshake_sighash.py | 85 + .../handshake_transaction.py | 118 ++ tests/application_client/py.typed | 0 tests/setup.cfg | 28 + tests/standalone/README.md | 35 + tests/standalone/__init__.py | 0 tests/standalone/conftest.py | 31 + tests/standalone/requirements.txt | 4 + tests/standalone/review_nav.py | 37 + tests/standalone/setup.cfg | 2 + .../apex_p/test_app_mainmenu/00000.png | Bin 0 -> 3343 bytes .../apex_p/test_app_mainmenu/00001.png | Bin 0 -> 2326 bytes .../apex_p/test_app_mainmenu/00002.png | Bin 0 -> 3343 bytes .../00000.png | Bin 0 -> 3197 bytes .../00001.png | Bin 0 -> 4774 bytes .../00002.png | Bin 0 -> 2030 bytes .../00003.png | Bin 0 -> 3343 bytes .../00000.png | Bin 0 -> 3197 bytes .../00001.png | Bin 0 -> 4774 bytes .../test_sign_message_accepted/00000.png | Bin 0 -> 2965 bytes .../test_sign_message_accepted/00001.png | Bin 0 -> 5003 bytes .../test_sign_message_accepted/00002.png | Bin 0 -> 3007 bytes .../test_sign_message_accepted/00003.png | Bin 0 -> 3343 bytes .../test_sign_message_refused/00000.png | Bin 0 -> 2965 bytes .../test_sign_message_refused/00001.png | Bin 0 -> 5003 bytes .../test_sign_message_refused/00002.png | Bin 0 -> 3007 bytes .../test_sign_message_refused/00003.png | Bin 0 -> 2879 bytes .../apex_p/test_sign_tx_accepted/00000.png | Bin 0 -> 3134 bytes .../apex_p/test_sign_tx_accepted/00001.png | Bin 0 -> 4940 bytes .../apex_p/test_sign_tx_accepted/00002.png | Bin 0 -> 3420 bytes .../apex_p/test_sign_tx_accepted/00003.png | Bin 0 -> 3045 bytes .../apex_p/test_sign_tx_accepted/00004.png | Bin 0 -> 3343 bytes .../test_sign_tx_open_covenant/00000.png | Bin 0 -> 3134 bytes .../test_sign_tx_open_covenant/00001.png | Bin 0 -> 4247 bytes .../test_sign_tx_open_covenant/00002.png | Bin 0 -> 3338 bytes .../test_sign_tx_open_covenant/00003.png | Bin 0 -> 3045 bytes .../test_sign_tx_open_covenant/00004.png | Bin 0 -> 3343 bytes .../apex_p/test_sign_tx_refused/00000.png | Bin 0 -> 3134 bytes .../apex_p/test_sign_tx_refused/00001.png | Bin 0 -> 4483 bytes .../apex_p/test_sign_tx_refused/00002.png | Bin 0 -> 2156 bytes .../apex_p/test_sign_tx_refused/00003.png | Bin 0 -> 3045 bytes .../apex_p/test_sign_tx_refused/00004.png | Bin 0 -> 2879 bytes .../test_sign_tx_transfer_covenant/00000.png | Bin 0 -> 3151 bytes .../test_sign_tx_transfer_covenant/00001.png | Bin 0 -> 4207 bytes .../test_sign_tx_transfer_covenant/00002.png | Bin 0 -> 6043 bytes .../test_sign_tx_transfer_covenant/00003.png | Bin 0 -> 2896 bytes .../test_sign_tx_transfer_covenant/00004.png | Bin 0 -> 3058 bytes .../test_sign_tx_transfer_covenant/00005.png | Bin 0 -> 3343 bytes .../flex/test_app_mainmenu/00000.png | Bin 0 -> 11523 bytes .../flex/test_app_mainmenu/00001.png | Bin 0 -> 7997 bytes .../flex/test_app_mainmenu/00002.png | Bin 0 -> 11523 bytes .../00000.png | Bin 0 -> 10457 bytes .../00001.png | Bin 0 -> 18047 bytes .../00002.png | Bin 0 -> 5768 bytes .../00003.png | Bin 0 -> 11523 bytes .../00000.png | Bin 0 -> 10457 bytes .../00001.png | Bin 0 -> 18047 bytes .../flex/test_sign_message_accepted/00000.png | Bin 0 -> 8958 bytes .../flex/test_sign_message_accepted/00001.png | Bin 0 -> 19084 bytes .../flex/test_sign_message_accepted/00002.png | Bin 0 -> 9271 bytes .../flex/test_sign_message_accepted/00003.png | Bin 0 -> 11523 bytes .../flex/test_sign_message_refused/00000.png | Bin 0 -> 8958 bytes .../flex/test_sign_message_refused/00001.png | Bin 0 -> 19084 bytes .../flex/test_sign_message_refused/00002.png | Bin 0 -> 9271 bytes .../flex/test_sign_message_refused/00003.png | Bin 0 -> 9996 bytes .../flex/test_sign_tx_accepted/00000.png | Bin 0 -> 9894 bytes .../flex/test_sign_tx_accepted/00001.png | Bin 0 -> 18245 bytes .../flex/test_sign_tx_accepted/00002.png | Bin 0 -> 12075 bytes .../flex/test_sign_tx_accepted/00003.png | Bin 0 -> 9428 bytes .../flex/test_sign_tx_accepted/00004.png | Bin 0 -> 11523 bytes .../flex/test_sign_tx_open_covenant/00000.png | Bin 0 -> 9894 bytes .../flex/test_sign_tx_open_covenant/00001.png | Bin 0 -> 15419 bytes .../flex/test_sign_tx_open_covenant/00002.png | Bin 0 -> 11850 bytes .../flex/test_sign_tx_open_covenant/00003.png | Bin 0 -> 9428 bytes .../flex/test_sign_tx_open_covenant/00004.png | Bin 0 -> 11523 bytes .../flex/test_sign_tx_refused/00000.png | Bin 0 -> 9894 bytes .../flex/test_sign_tx_refused/00001.png | Bin 0 -> 16379 bytes .../flex/test_sign_tx_refused/00002.png | Bin 0 -> 6136 bytes .../flex/test_sign_tx_refused/00003.png | Bin 0 -> 9428 bytes .../flex/test_sign_tx_refused/00004.png | Bin 0 -> 9996 bytes .../test_sign_tx_transfer_covenant/00000.png | Bin 0 -> 9919 bytes .../test_sign_tx_transfer_covenant/00001.png | Bin 0 -> 15585 bytes .../test_sign_tx_transfer_covenant/00002.png | Bin 0 -> 22673 bytes .../test_sign_tx_transfer_covenant/00003.png | Bin 0 -> 9633 bytes .../test_sign_tx_transfer_covenant/00004.png | Bin 0 -> 9492 bytes .../test_sign_tx_transfer_covenant/00005.png | Bin 0 -> 11523 bytes .../nanosp/test_app_mainmenu/00000.png | Bin 0 -> 537 bytes .../nanosp/test_app_mainmenu/00001.png | Bin 0 -> 407 bytes .../nanosp/test_app_mainmenu/00002.png | Bin 0 -> 362 bytes .../00000.png | Bin 0 -> 545 bytes .../00001.png | Bin 0 -> 771 bytes .../00002.png | Bin 0 -> 498 bytes .../00003.png | Bin 0 -> 327 bytes .../00004.png | Bin 0 -> 290 bytes .../00000.png | Bin 0 -> 545 bytes .../00001.png | Bin 0 -> 771 bytes .../00002.png | Bin 0 -> 498 bytes .../00003.png | Bin 0 -> 327 bytes .../00004.png | Bin 0 -> 347 bytes .../00005.png | Bin 0 -> 381 bytes .../test_sign_message_accepted/00000.png | Bin 0 -> 455 bytes .../test_sign_message_accepted/00001.png | Bin 0 -> 780 bytes .../test_sign_message_accepted/00002.png | Bin 0 -> 498 bytes .../test_sign_message_accepted/00003.png | Bin 0 -> 446 bytes .../test_sign_message_accepted/00004.png | Bin 0 -> 422 bytes .../test_sign_message_accepted/00005.png | Bin 0 -> 537 bytes .../test_sign_message_refused/00000.png | Bin 0 -> 455 bytes .../test_sign_message_refused/00001.png | Bin 0 -> 780 bytes .../test_sign_message_refused/00002.png | Bin 0 -> 498 bytes .../test_sign_message_refused/00003.png | Bin 0 -> 446 bytes .../test_sign_message_refused/00004.png | Bin 0 -> 422 bytes .../test_sign_message_refused/00005.png | Bin 0 -> 470 bytes .../test_sign_message_refused/00006.png | Bin 0 -> 537 bytes .../nanosp/test_sign_tx_accepted/00000.png | Bin 0 -> 529 bytes .../nanosp/test_sign_tx_accepted/00001.png | Bin 0 -> 660 bytes .../nanosp/test_sign_tx_accepted/00002.png | Bin 0 -> 437 bytes .../nanosp/test_sign_tx_accepted/00003.png | Bin 0 -> 579 bytes .../nanosp/test_sign_tx_accepted/00004.png | Bin 0 -> 441 bytes .../nanosp/test_sign_tx_accepted/00005.png | Bin 0 -> 458 bytes .../nanosp/test_sign_tx_accepted/00006.png | Bin 0 -> 325 bytes .../nanosp/test_sign_tx_accepted/00007.png | Bin 0 -> 438 bytes .../nanosp/test_sign_tx_accepted/00008.png | Bin 0 -> 537 bytes .../test_sign_tx_open_covenant/00000.png | Bin 0 -> 529 bytes .../test_sign_tx_open_covenant/00001.png | Bin 0 -> 660 bytes .../test_sign_tx_open_covenant/00002.png | Bin 0 -> 422 bytes .../test_sign_tx_open_covenant/00003.png | Bin 0 -> 446 bytes .../test_sign_tx_open_covenant/00004.png | Bin 0 -> 391 bytes .../test_sign_tx_open_covenant/00005.png | Bin 0 -> 458 bytes .../test_sign_tx_open_covenant/00006.png | Bin 0 -> 338 bytes .../test_sign_tx_open_covenant/00007.png | Bin 0 -> 438 bytes .../test_sign_tx_open_covenant/00008.png | Bin 0 -> 537 bytes .../nanosp/test_sign_tx_refused/00000.png | Bin 0 -> 529 bytes .../nanosp/test_sign_tx_refused/00001.png | Bin 0 -> 660 bytes .../nanosp/test_sign_tx_refused/00002.png | Bin 0 -> 436 bytes .../nanosp/test_sign_tx_refused/00003.png | Bin 0 -> 458 bytes .../nanosp/test_sign_tx_refused/00004.png | Bin 0 -> 334 bytes .../nanosp/test_sign_tx_refused/00005.png | Bin 0 -> 438 bytes .../nanosp/test_sign_tx_refused/00006.png | Bin 0 -> 470 bytes .../nanosp/test_sign_tx_refused/00007.png | Bin 0 -> 537 bytes .../test_sign_tx_transfer_covenant/00000.png | Bin 0 -> 529 bytes .../test_sign_tx_transfer_covenant/00001.png | Bin 0 -> 580 bytes .../test_sign_tx_transfer_covenant/00002.png | Bin 0 -> 428 bytes .../test_sign_tx_transfer_covenant/00003.png | Bin 0 -> 494 bytes .../test_sign_tx_transfer_covenant/00004.png | Bin 0 -> 920 bytes .../test_sign_tx_transfer_covenant/00005.png | Bin 0 -> 488 bytes .../test_sign_tx_transfer_covenant/00006.png | Bin 0 -> 711 bytes .../test_sign_tx_transfer_covenant/00007.png | Bin 0 -> 458 bytes .../test_sign_tx_transfer_covenant/00008.png | Bin 0 -> 335 bytes .../test_sign_tx_transfer_covenant/00009.png | Bin 0 -> 438 bytes .../test_sign_tx_transfer_covenant/00010.png | Bin 0 -> 537 bytes .../nanox/test_app_mainmenu/00000.png | Bin 0 -> 537 bytes .../nanox/test_app_mainmenu/00001.png | Bin 0 -> 407 bytes .../nanox/test_app_mainmenu/00002.png | Bin 0 -> 362 bytes .../00000.png | Bin 0 -> 545 bytes .../00001.png | Bin 0 -> 771 bytes .../00002.png | Bin 0 -> 498 bytes .../00003.png | Bin 0 -> 327 bytes .../00004.png | Bin 0 -> 290 bytes .../00000.png | Bin 0 -> 545 bytes .../00001.png | Bin 0 -> 771 bytes .../00002.png | Bin 0 -> 498 bytes .../00003.png | Bin 0 -> 327 bytes .../00004.png | Bin 0 -> 347 bytes .../00005.png | Bin 0 -> 381 bytes .../test_sign_message_accepted/00000.png | Bin 0 -> 455 bytes .../test_sign_message_accepted/00001.png | Bin 0 -> 780 bytes .../test_sign_message_accepted/00002.png | Bin 0 -> 498 bytes .../test_sign_message_accepted/00003.png | Bin 0 -> 446 bytes .../test_sign_message_accepted/00004.png | Bin 0 -> 422 bytes .../test_sign_message_accepted/00005.png | Bin 0 -> 537 bytes .../nanox/test_sign_message_refused/00000.png | Bin 0 -> 455 bytes .../nanox/test_sign_message_refused/00001.png | Bin 0 -> 780 bytes .../nanox/test_sign_message_refused/00002.png | Bin 0 -> 498 bytes .../nanox/test_sign_message_refused/00003.png | Bin 0 -> 446 bytes .../nanox/test_sign_message_refused/00004.png | Bin 0 -> 422 bytes .../nanox/test_sign_message_refused/00005.png | Bin 0 -> 470 bytes .../nanox/test_sign_message_refused/00006.png | Bin 0 -> 537 bytes .../nanox/test_sign_tx_accepted/00000.png | Bin 0 -> 529 bytes .../nanox/test_sign_tx_accepted/00001.png | Bin 0 -> 660 bytes .../nanox/test_sign_tx_accepted/00002.png | Bin 0 -> 437 bytes .../nanox/test_sign_tx_accepted/00003.png | Bin 0 -> 579 bytes .../nanox/test_sign_tx_accepted/00004.png | Bin 0 -> 441 bytes .../nanox/test_sign_tx_accepted/00005.png | Bin 0 -> 458 bytes .../nanox/test_sign_tx_accepted/00006.png | Bin 0 -> 325 bytes .../nanox/test_sign_tx_accepted/00007.png | Bin 0 -> 438 bytes .../nanox/test_sign_tx_accepted/00008.png | Bin 0 -> 537 bytes .../test_sign_tx_open_covenant/00000.png | Bin 0 -> 529 bytes .../test_sign_tx_open_covenant/00001.png | Bin 0 -> 660 bytes .../test_sign_tx_open_covenant/00002.png | Bin 0 -> 422 bytes .../test_sign_tx_open_covenant/00003.png | Bin 0 -> 446 bytes .../test_sign_tx_open_covenant/00004.png | Bin 0 -> 391 bytes .../test_sign_tx_open_covenant/00005.png | Bin 0 -> 458 bytes .../test_sign_tx_open_covenant/00006.png | Bin 0 -> 338 bytes .../test_sign_tx_open_covenant/00007.png | Bin 0 -> 438 bytes .../test_sign_tx_open_covenant/00008.png | Bin 0 -> 537 bytes .../nanox/test_sign_tx_refused/00000.png | Bin 0 -> 529 bytes .../nanox/test_sign_tx_refused/00001.png | Bin 0 -> 660 bytes .../nanox/test_sign_tx_refused/00002.png | Bin 0 -> 436 bytes .../nanox/test_sign_tx_refused/00003.png | Bin 0 -> 458 bytes .../nanox/test_sign_tx_refused/00004.png | Bin 0 -> 334 bytes .../nanox/test_sign_tx_refused/00005.png | Bin 0 -> 438 bytes .../nanox/test_sign_tx_refused/00006.png | Bin 0 -> 470 bytes .../nanox/test_sign_tx_refused/00007.png | Bin 0 -> 537 bytes .../test_sign_tx_transfer_covenant/00000.png | Bin 0 -> 529 bytes .../test_sign_tx_transfer_covenant/00001.png | Bin 0 -> 580 bytes .../test_sign_tx_transfer_covenant/00002.png | Bin 0 -> 428 bytes .../test_sign_tx_transfer_covenant/00003.png | Bin 0 -> 494 bytes .../test_sign_tx_transfer_covenant/00004.png | Bin 0 -> 920 bytes .../test_sign_tx_transfer_covenant/00005.png | Bin 0 -> 488 bytes .../test_sign_tx_transfer_covenant/00006.png | Bin 0 -> 711 bytes .../test_sign_tx_transfer_covenant/00007.png | Bin 0 -> 458 bytes .../test_sign_tx_transfer_covenant/00008.png | Bin 0 -> 335 bytes .../test_sign_tx_transfer_covenant/00009.png | Bin 0 -> 438 bytes .../test_sign_tx_transfer_covenant/00010.png | Bin 0 -> 537 bytes .../stax/test_app_mainmenu/00000.png | Bin 0 -> 10331 bytes .../stax/test_app_mainmenu/00001.png | Bin 0 -> 7387 bytes .../stax/test_app_mainmenu/00002.png | Bin 0 -> 10331 bytes .../00000.png | Bin 0 -> 9766 bytes .../00001.png | Bin 0 -> 16508 bytes .../00002.png | Bin 0 -> 5782 bytes .../00003.png | Bin 0 -> 10331 bytes .../00000.png | Bin 0 -> 9766 bytes .../00001.png | Bin 0 -> 16508 bytes .../stax/test_sign_message_accepted/00000.png | Bin 0 -> 8349 bytes .../stax/test_sign_message_accepted/00001.png | Bin 0 -> 17348 bytes .../stax/test_sign_message_accepted/00002.png | Bin 0 -> 8704 bytes .../stax/test_sign_message_accepted/00003.png | Bin 0 -> 10331 bytes .../stax/test_sign_message_refused/00000.png | Bin 0 -> 8349 bytes .../stax/test_sign_message_refused/00001.png | Bin 0 -> 17348 bytes .../stax/test_sign_message_refused/00002.png | Bin 0 -> 8704 bytes .../stax/test_sign_message_refused/00003.png | Bin 0 -> 9127 bytes .../stax/test_sign_tx_accepted/00000.png | Bin 0 -> 9261 bytes .../stax/test_sign_tx_accepted/00001.png | Bin 0 -> 18917 bytes .../stax/test_sign_tx_accepted/00002.png | Bin 0 -> 8470 bytes .../stax/test_sign_tx_accepted/00003.png | Bin 0 -> 8907 bytes .../stax/test_sign_tx_accepted/00004.png | Bin 0 -> 10331 bytes .../stax/test_sign_tx_open_covenant/00000.png | Bin 0 -> 9261 bytes .../stax/test_sign_tx_open_covenant/00001.png | Bin 0 -> 18608 bytes .../stax/test_sign_tx_open_covenant/00002.png | Bin 0 -> 5783 bytes .../stax/test_sign_tx_open_covenant/00003.png | Bin 0 -> 8907 bytes .../stax/test_sign_tx_open_covenant/00004.png | Bin 0 -> 10331 bytes .../stax/test_sign_tx_refused/00000.png | Bin 0 -> 9318 bytes .../stax/test_sign_tx_refused/00001.png | Bin 0 -> 16223 bytes .../stax/test_sign_tx_refused/00002.png | Bin 0 -> 8960 bytes .../stax/test_sign_tx_refused/00003.png | Bin 0 -> 9127 bytes .../test_sign_tx_transfer_covenant/00000.png | Bin 0 -> 9297 bytes .../test_sign_tx_transfer_covenant/00001.png | Bin 0 -> 14104 bytes .../test_sign_tx_transfer_covenant/00002.png | Bin 0 -> 23136 bytes .../test_sign_tx_transfer_covenant/00003.png | Bin 0 -> 5952 bytes .../test_sign_tx_transfer_covenant/00004.png | Bin 0 -> 8945 bytes .../test_sign_tx_transfer_covenant/00005.png | Bin 0 -> 10331 bytes tests/standalone/test_app_mainmenu.py | 19 + tests/standalone/test_appname_cmd.py | 10 + tests/standalone/test_error_cmd.py | 34 + tests/standalone/test_pubkey_cmd.py | 57 + tests/standalone/test_sign_message.py | 67 + tests/standalone/test_sign_tx.py | 117 ++ tests/standalone/test_sign_tx_policy.py | 234 +++ tests/standalone/test_version_cmd.py | 10 + 315 files changed, 6172 insertions(+) create mode 100644 .cargo/config.toml create mode 100644 .gitattributes create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/copilot-instructions.md create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/build_and_functional_tests.yml create mode 100644 .github/workflows/coding_style_checks.yml create mode 100644 .github/workflows/guidelines_enforcer.yml create mode 100644 .github/workflows/misspellings_checks.yml create mode 100644 .github/workflows/python_tests_checks.yml create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 build.rs create mode 100644 glyphs/handshake_48x48.png create mode 100644 glyphs/handshake_64x64.gif create mode 100644 icons/handshake_14x14.gif create mode 100644 icons/handshake_32x32.gif create mode 100644 icons/handshake_32x32.png create mode 100644 icons/handshake_40x40.gif create mode 100755 icons/mask_14x14.gif create mode 100644 ledger_app.toml create mode 100644 mypy.ini create mode 100644 rust-toolchain.toml create mode 100755 scripts/build create mode 100755 scripts/build-unsigned-tx create mode 100755 scripts/gen-manifest create mode 100755 scripts/send-apdu create mode 100755 scripts/sign-tx create mode 100755 scripts/test create mode 100644 src/app_ui/address.rs create mode 100644 src/app_ui/menu.rs create mode 100644 src/app_ui/message.rs create mode 100644 src/app_ui/sign.rs create mode 100644 src/handlers/get_public_key.rs create mode 100644 src/handlers/get_version.rs create mode 100644 src/handlers/sign_message.rs create mode 100644 src/handlers/sign_tx.rs create mode 100644 src/handshake/address.rs create mode 100644 src/handshake/bech32_encode.rs create mode 100644 src/handshake/blake2b.rs create mode 100644 src/handshake/covenant.rs create mode 100644 src/handshake/mod.rs create mode 100644 src/handshake/sighash.rs create mode 100644 src/handshake/tx.rs create mode 100644 src/main.rs create mode 100644 src/swap.rs create mode 100644 src/utils.rs create mode 100644 tests/Dockerfile create mode 100644 tests/README.md create mode 100644 tests/application_client/README.md create mode 100644 tests/application_client/__init__.py create mode 100644 tests/application_client/handshake_command_sender.py create mode 100644 tests/application_client/handshake_response_unpacker.py create mode 100644 tests/application_client/handshake_sighash.py create mode 100644 tests/application_client/handshake_transaction.py create mode 100644 tests/application_client/py.typed create mode 100644 tests/setup.cfg create mode 100644 tests/standalone/README.md create mode 100644 tests/standalone/__init__.py create mode 100644 tests/standalone/conftest.py create mode 100644 tests/standalone/requirements.txt create mode 100644 tests/standalone/review_nav.py create mode 100644 tests/standalone/setup.cfg create mode 100644 tests/standalone/snapshots/apex_p/test_app_mainmenu/00000.png create mode 100644 tests/standalone/snapshots/apex_p/test_app_mainmenu/00001.png create mode 100644 tests/standalone/snapshots/apex_p/test_app_mainmenu/00002.png create mode 100644 tests/standalone/snapshots/apex_p/test_get_public_key_confirm_accepted/00000.png create mode 100644 tests/standalone/snapshots/apex_p/test_get_public_key_confirm_accepted/00001.png create mode 100644 tests/standalone/snapshots/apex_p/test_get_public_key_confirm_accepted/00002.png create mode 100644 tests/standalone/snapshots/apex_p/test_get_public_key_confirm_accepted/00003.png create mode 100644 tests/standalone/snapshots/apex_p/test_get_public_key_confirm_refused/00000.png create mode 100644 tests/standalone/snapshots/apex_p/test_get_public_key_confirm_refused/00001.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_message_accepted/00000.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_message_accepted/00001.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_message_accepted/00002.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_message_accepted/00003.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_message_refused/00000.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_message_refused/00001.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_message_refused/00002.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_message_refused/00003.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_accepted/00000.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_accepted/00001.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_accepted/00002.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_accepted/00003.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_accepted/00004.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_open_covenant/00000.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_open_covenant/00001.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_open_covenant/00002.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_open_covenant/00003.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_open_covenant/00004.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_refused/00000.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_refused/00001.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_refused/00002.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_refused/00003.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_refused/00004.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_transfer_covenant/00000.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_transfer_covenant/00001.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_transfer_covenant/00002.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_transfer_covenant/00003.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_transfer_covenant/00004.png create mode 100644 tests/standalone/snapshots/apex_p/test_sign_tx_transfer_covenant/00005.png create mode 100644 tests/standalone/snapshots/flex/test_app_mainmenu/00000.png create mode 100644 tests/standalone/snapshots/flex/test_app_mainmenu/00001.png create mode 100644 tests/standalone/snapshots/flex/test_app_mainmenu/00002.png create mode 100644 tests/standalone/snapshots/flex/test_get_public_key_confirm_accepted/00000.png create mode 100644 tests/standalone/snapshots/flex/test_get_public_key_confirm_accepted/00001.png create mode 100644 tests/standalone/snapshots/flex/test_get_public_key_confirm_accepted/00002.png create mode 100644 tests/standalone/snapshots/flex/test_get_public_key_confirm_accepted/00003.png create mode 100644 tests/standalone/snapshots/flex/test_get_public_key_confirm_refused/00000.png create mode 100644 tests/standalone/snapshots/flex/test_get_public_key_confirm_refused/00001.png create mode 100644 tests/standalone/snapshots/flex/test_sign_message_accepted/00000.png create mode 100644 tests/standalone/snapshots/flex/test_sign_message_accepted/00001.png create mode 100644 tests/standalone/snapshots/flex/test_sign_message_accepted/00002.png create mode 100644 tests/standalone/snapshots/flex/test_sign_message_accepted/00003.png create mode 100644 tests/standalone/snapshots/flex/test_sign_message_refused/00000.png create mode 100644 tests/standalone/snapshots/flex/test_sign_message_refused/00001.png create mode 100644 tests/standalone/snapshots/flex/test_sign_message_refused/00002.png create mode 100644 tests/standalone/snapshots/flex/test_sign_message_refused/00003.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_accepted/00000.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_accepted/00001.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_accepted/00002.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_accepted/00003.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_accepted/00004.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_open_covenant/00000.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_open_covenant/00001.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_open_covenant/00002.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_open_covenant/00003.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_open_covenant/00004.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_refused/00000.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_refused/00001.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_refused/00002.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_refused/00003.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_refused/00004.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_transfer_covenant/00000.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_transfer_covenant/00001.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_transfer_covenant/00002.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_transfer_covenant/00003.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_transfer_covenant/00004.png create mode 100644 tests/standalone/snapshots/flex/test_sign_tx_transfer_covenant/00005.png create mode 100644 tests/standalone/snapshots/nanosp/test_app_mainmenu/00000.png create mode 100644 tests/standalone/snapshots/nanosp/test_app_mainmenu/00001.png create mode 100644 tests/standalone/snapshots/nanosp/test_app_mainmenu/00002.png create mode 100644 tests/standalone/snapshots/nanosp/test_get_public_key_confirm_accepted/00000.png create mode 100644 tests/standalone/snapshots/nanosp/test_get_public_key_confirm_accepted/00001.png create mode 100644 tests/standalone/snapshots/nanosp/test_get_public_key_confirm_accepted/00002.png create mode 100644 tests/standalone/snapshots/nanosp/test_get_public_key_confirm_accepted/00003.png create mode 100644 tests/standalone/snapshots/nanosp/test_get_public_key_confirm_accepted/00004.png create mode 100644 tests/standalone/snapshots/nanosp/test_get_public_key_confirm_refused/00000.png create mode 100644 tests/standalone/snapshots/nanosp/test_get_public_key_confirm_refused/00001.png create mode 100644 tests/standalone/snapshots/nanosp/test_get_public_key_confirm_refused/00002.png create mode 100644 tests/standalone/snapshots/nanosp/test_get_public_key_confirm_refused/00003.png create mode 100644 tests/standalone/snapshots/nanosp/test_get_public_key_confirm_refused/00004.png create mode 100644 tests/standalone/snapshots/nanosp/test_get_public_key_confirm_refused/00005.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_message_accepted/00000.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_message_accepted/00001.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_message_accepted/00002.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_message_accepted/00003.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_message_accepted/00004.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_message_accepted/00005.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_message_refused/00000.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_message_refused/00001.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_message_refused/00002.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_message_refused/00003.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_message_refused/00004.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_message_refused/00005.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_message_refused/00006.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00000.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00001.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00002.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00003.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00004.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00005.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00006.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00007.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00008.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_open_covenant/00000.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_open_covenant/00001.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_open_covenant/00002.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_open_covenant/00003.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_open_covenant/00004.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_open_covenant/00005.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_open_covenant/00006.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_open_covenant/00007.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_open_covenant/00008.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_refused/00000.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_refused/00001.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_refused/00002.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_refused/00003.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_refused/00004.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_refused/00005.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_refused/00006.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_refused/00007.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_transfer_covenant/00000.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_transfer_covenant/00001.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_transfer_covenant/00002.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_transfer_covenant/00003.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_transfer_covenant/00004.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_transfer_covenant/00005.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_transfer_covenant/00006.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_transfer_covenant/00007.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_transfer_covenant/00008.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_transfer_covenant/00009.png create mode 100644 tests/standalone/snapshots/nanosp/test_sign_tx_transfer_covenant/00010.png create mode 100644 tests/standalone/snapshots/nanox/test_app_mainmenu/00000.png create mode 100644 tests/standalone/snapshots/nanox/test_app_mainmenu/00001.png create mode 100644 tests/standalone/snapshots/nanox/test_app_mainmenu/00002.png create mode 100644 tests/standalone/snapshots/nanox/test_get_public_key_confirm_accepted/00000.png create mode 100644 tests/standalone/snapshots/nanox/test_get_public_key_confirm_accepted/00001.png create mode 100644 tests/standalone/snapshots/nanox/test_get_public_key_confirm_accepted/00002.png create mode 100644 tests/standalone/snapshots/nanox/test_get_public_key_confirm_accepted/00003.png create mode 100644 tests/standalone/snapshots/nanox/test_get_public_key_confirm_accepted/00004.png create mode 100644 tests/standalone/snapshots/nanox/test_get_public_key_confirm_refused/00000.png create mode 100644 tests/standalone/snapshots/nanox/test_get_public_key_confirm_refused/00001.png create mode 100644 tests/standalone/snapshots/nanox/test_get_public_key_confirm_refused/00002.png create mode 100644 tests/standalone/snapshots/nanox/test_get_public_key_confirm_refused/00003.png create mode 100644 tests/standalone/snapshots/nanox/test_get_public_key_confirm_refused/00004.png create mode 100644 tests/standalone/snapshots/nanox/test_get_public_key_confirm_refused/00005.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_message_accepted/00000.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_message_accepted/00001.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_message_accepted/00002.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_message_accepted/00003.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_message_accepted/00004.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_message_accepted/00005.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_message_refused/00000.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_message_refused/00001.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_message_refused/00002.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_message_refused/00003.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_message_refused/00004.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_message_refused/00005.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_message_refused/00006.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_accepted/00000.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_accepted/00001.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_accepted/00002.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_accepted/00003.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_accepted/00004.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_accepted/00005.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_accepted/00006.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_accepted/00007.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_accepted/00008.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_open_covenant/00000.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_open_covenant/00001.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_open_covenant/00002.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_open_covenant/00003.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_open_covenant/00004.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_open_covenant/00005.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_open_covenant/00006.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_open_covenant/00007.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_open_covenant/00008.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_refused/00000.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_refused/00001.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_refused/00002.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_refused/00003.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_refused/00004.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_refused/00005.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_refused/00006.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_refused/00007.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_transfer_covenant/00000.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_transfer_covenant/00001.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_transfer_covenant/00002.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_transfer_covenant/00003.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_transfer_covenant/00004.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_transfer_covenant/00005.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_transfer_covenant/00006.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_transfer_covenant/00007.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_transfer_covenant/00008.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_transfer_covenant/00009.png create mode 100644 tests/standalone/snapshots/nanox/test_sign_tx_transfer_covenant/00010.png create mode 100644 tests/standalone/snapshots/stax/test_app_mainmenu/00000.png create mode 100644 tests/standalone/snapshots/stax/test_app_mainmenu/00001.png create mode 100644 tests/standalone/snapshots/stax/test_app_mainmenu/00002.png create mode 100644 tests/standalone/snapshots/stax/test_get_public_key_confirm_accepted/00000.png create mode 100644 tests/standalone/snapshots/stax/test_get_public_key_confirm_accepted/00001.png create mode 100644 tests/standalone/snapshots/stax/test_get_public_key_confirm_accepted/00002.png create mode 100644 tests/standalone/snapshots/stax/test_get_public_key_confirm_accepted/00003.png create mode 100644 tests/standalone/snapshots/stax/test_get_public_key_confirm_refused/00000.png create mode 100644 tests/standalone/snapshots/stax/test_get_public_key_confirm_refused/00001.png create mode 100644 tests/standalone/snapshots/stax/test_sign_message_accepted/00000.png create mode 100644 tests/standalone/snapshots/stax/test_sign_message_accepted/00001.png create mode 100644 tests/standalone/snapshots/stax/test_sign_message_accepted/00002.png create mode 100644 tests/standalone/snapshots/stax/test_sign_message_accepted/00003.png create mode 100644 tests/standalone/snapshots/stax/test_sign_message_refused/00000.png create mode 100644 tests/standalone/snapshots/stax/test_sign_message_refused/00001.png create mode 100644 tests/standalone/snapshots/stax/test_sign_message_refused/00002.png create mode 100644 tests/standalone/snapshots/stax/test_sign_message_refused/00003.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_accepted/00000.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_accepted/00001.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_accepted/00002.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_accepted/00003.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_accepted/00004.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_open_covenant/00000.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_open_covenant/00001.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_open_covenant/00002.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_open_covenant/00003.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_open_covenant/00004.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_refused/00000.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_refused/00001.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_refused/00002.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_refused/00003.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_transfer_covenant/00000.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_transfer_covenant/00001.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_transfer_covenant/00002.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_transfer_covenant/00003.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_transfer_covenant/00004.png create mode 100644 tests/standalone/snapshots/stax/test_sign_tx_transfer_covenant/00005.png create mode 100644 tests/standalone/test_app_mainmenu.py create mode 100644 tests/standalone/test_appname_cmd.py create mode 100644 tests/standalone/test_error_cmd.py create mode 100644 tests/standalone/test_pubkey_cmd.py create mode 100644 tests/standalone/test_sign_message.py create mode 100644 tests/standalone/test_sign_tx.py create mode 100644 tests/standalone/test_sign_tx_policy.py create mode 100644 tests/standalone/test_version_cmd.py diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..3f07925 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,34 @@ +[target.apex_p] +runner = "speculos -m apex_p" + +[build] +target = "apex_p" + +[profile.release] +opt-level = 'z' +lto = true + +# Uncomment the line below to generate a map file +# rustflags = ["-Clink-args=-Map=app.map"] + +[unstable] +build-std = ["core", "alloc"] +build-std-features = ["compiler-builtins-mem"] + +# Authorized values are [2048, 4096, 8192, 16384, 24576]. The default of 8192 +# is not enough headroom: a full review screen (MAX_OUTPUTS outputs, each with +# an address, an amount and up to three covenant rows) allocates two Strings and +# a Field per row on top of the accumulated session state, and the two peak at +# the same moment. See the session ceilings in `handlers::sign_tx`. +[env] +HEAP_SIZE = "16384" + +# Native (no-Docker) build wiring. +# - Set LEDGER_SDK_PATH in your shell to point at a clone of +# LedgerHQ/ledger-secure-sdk at the API_LEVEL matching your device firmware +# (Stax SE 1.9.1 → API_LEVEL_25). `scripts/build` defaults it to +# $HOME/.ledger-sdk/secure-sdk-25. +# - The ARM toolchain (arm-none-eabi-gcc) must also be on PATH; the brew cask +# installs it to /Applications/ArmGNUToolchain//arm-none-eabi/bin +# and does NOT add it to PATH: either prepend it in your shell rc or use +# `scripts/build`, which wires both env vars automatically. \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..f2fb620 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,8 @@ +# Checklist + +- [ ] App update process has been followed +- [ ] Target branch is `develop` +- [ ] Application version has been bumped + + diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000..04548c4 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,96 @@ +# Handshake Ledger app development guide + +Rust app for Ledger hardware wallets (Stax, Flex, Nano S+, Nano X, Apex+) using +`ledger_device_sdk`. It signs [Handshake](https://handshake.org) transactions, +including name-auction covenants. + +## The threat model drives everything + +The host computer is untrusted. Every APDU byte is attacker-controlled, and the +device's job is to be correct when the host lies. Two failures outrank all +others: + +1. **Signing something other than what the user approved.** Any field the + signature commits to and the host can vary must appear on the review screen. + If it cannot be displayed honestly, refuse to sign rather than showing a + label that does not describe the bytes. +2. **Misusing key material.** Signing under an unapproved path, or returning + anything derived from the seed without the user seeing what they authorised. + +A panic is also a real defect: `set_panic!(exiting_panic)` means the app dies +and the user's session is stranded. Never `unwrap()` on host-derived data. + +## Architecture + +**APDU flow**: `Comm` receives CLA=0xe0; `Instruction` parses INS/P1/P2 +(`src/main.rs`); handlers in `src/handlers/` return +`Result`; `AppSW` maps errors to status words. + +**SIGN_TX is a state machine, not a chunked blob.** P1 selects the sub-op: +`BEGIN` / `ADD_INPUT` / `ADD_OUTPUT` / `REVIEW` / `SIGN_INPUT`. The host streams +the transaction as structured records, the device accumulates its own view of +the values, shows one review, then signs each input on demand. P2 chunks a +single large `ADD_OUTPUT` only. See the table at the top of +`src/handlers/sign_tx.rs`. + +**Session state** lives in `TxContext`, with a `Phase` enum enforcing ordering +and a BLAKE2b fingerprint captured at approval so nothing can change between +`REVIEW` and `SIGN_INPUT`. + +**Protocol primitives** are in `src/handshake/`: addresses, bech32, BLAKE2b, +covenants, sighash, transaction types. These mirror `shd` (the Swift Handshake +node), which is the reference for every consensus question. Check against it +rather than from memory; a divergence in the sighash is a chain-split risk. + +**UI** is NBGL: `NbglHomeAndSettings` for home, `NbglReview` with `Field` arrays +for transaction and message review, `NbglAddressReview` for address confirm. +Glyphs load via `include_gif!()` under `#[cfg(target_os = "...")]`. + +## Build and test + +```bash +./scripts/build stax # or flex / nanox / nanosplus / apex_p +``` + +Use `scripts/build`, not `cargo ledger build`: on macOS the latter writes +neither the Intel HEX nor the manifest, and cannot compile the Nano NBGL sources +without a `uint` define. The manifest is generated from the ELF by +`scripts/gen-manifest` and must never be hand-written, because `dataSize` has to +match the binary. + +```bash +pip install -r tests/standalone/requirements.txt +pytest tests/standalone --tb=short -v --device stax +``` + +`tests/standalone/test_sign_tx_policy.py` is the regression suite for what the +device refuses; it needs no golden snapshots because every case is rejected +before anything is drawn. `tests/application_client/handshake_sighash.py` is an +independent sighash implementation used to cross-check real signatures. + +## Key patterns + +**Error handling**: map SDK errors to `AppSW` variants +(`.map_err(|_| AppSW::TxSignFail)`). Never `unwrap()` outside `build.rs`. + +**BIP-32 paths**: length byte + big-endian 4-byte components. `Bip32Path` in +`src/utils.rs`; `validate_path` enforces +`m/44'/{5353..5356}'/account'[/change/index]` and every handler calls it before +deriving. BOLOS terminates the app on an out-of-whitelist path rather than +returning an error, which is why the check happens in-app first. + +**Cryptography**: `Secp256k1::derive_from_path()` for derivation; +**BLAKE2b-256** for the sighash and signed messages (not SHA256d, not Keccak); +BLAKE2b-160 for witness programs; SHA3-256 for name hashes (`NameRules.hashName` +is SHA3, and Keccak differs in padding). `SIGN_TX` returns a 64-byte compact +`r||s` plus the sighash byte; `SIGN_MESSAGE` returns +`recovery_id || sig || pubkey`. + +**Memory**: `#![no_std]`, `alloc::vec::Vec` and `alloc::format!`. The heap is set +in `.cargo/config.toml` and the review screen's strings are the binding +constraint, so session ceilings in `sign_tx.rs` are sized against it. Do not +reserve capacity for host-declared counts. + +**Metadata**: `[package.metadata.ledger]` in `Cargo.toml` defines the app name, +icons, derivation-path whitelist and flags per device. Keep the whitelist and +`validate_path` in agreement. diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..5462dbb --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,14 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file + +version: 2 +updates: + - package-ecosystem: "cargo" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "daily" + allow: + - dependency-name: "ledger_device_sdk" + - dependency-name: "include_gif" diff --git a/.github/workflows/build_and_functional_tests.yml b/.github/workflows/build_and_functional_tests.yml new file mode 100644 index 0000000..c198920 --- /dev/null +++ b/.github/workflows/build_and_functional_tests.yml @@ -0,0 +1,50 @@ +name: Build and run functional tests using ragger through reusable workflow + +# This workflow will build the app and then run functional tests using the Ragger framework upon Speculos emulation. +# It calls a reusable workflow developed by Ledger's internal developer team to build the application and upload the +# resulting binaries. +# It then calls another reusable workflow to run the Ragger tests on the compiled application binary. +# +# The build part of this workflow is mandatory, this ensures that the app will be deployable in the Ledger App Store. +# While the test part of this workflow is optional, having functional testing on your application is mandatory and this workflow and +# tooling environment is meant to be easy to use and adapt after forking your application + +permissions: + contents: write + actions: write + pull-requests: write + +on: + workflow_dispatch: + inputs: + golden_run: + type: choice + required: true + default: 'Raise an error (default)' + description: CI behavior if the test snapshots are different than expected. + options: + - 'Raise an error (default)' + - 'Open a PR' + push: + branches: + - master + - main + - develop + pull_request: + +jobs: + build_application: + name: Build application using the reusable workflow + uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_build.yml@v1 + with: + upload_app_binaries_artifact: "app_handshake_binaries" + builder: ledger-app-builder + + tests_standalone: + name: Run standalone ragger tests using the reusable workflow + needs: build_application + uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_ragger_tests.yml@v1 + with: + download_app_binaries_artifact: "app_handshake_binaries" + regenerate_snapshots: ${{ github.event_name == 'workflow_dispatch' && inputs.golden_run == 'Open a PR' }} + test_dir: "tests/standalone" diff --git a/.github/workflows/coding_style_checks.yml b/.github/workflows/coding_style_checks.yml new file mode 100644 index 0000000..11d49c7 --- /dev/null +++ b/.github/workflows/coding_style_checks.yml @@ -0,0 +1,24 @@ +name: Run coding style check + +# This workflow will run linting checks to ensure a level of code quality among all Ledger applications. +# +# The presence of this workflow is mandatory as a minimal level of linting is required. + +permissions: + contents: read + +on: + workflow_dispatch: + push: + branches: + - master + - main + - develop + pull_request: + +jobs: + check_linting: + name: Check linting using the reusable workflow + uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_lint.yml@v1 + with: + source: './src' diff --git a/.github/workflows/guidelines_enforcer.yml b/.github/workflows/guidelines_enforcer.yml new file mode 100644 index 0000000..b9306ac --- /dev/null +++ b/.github/workflows/guidelines_enforcer.yml @@ -0,0 +1,27 @@ +name: Ensure compliance with Ledger guidelines + +# This workflow is mandatory in all applications +# It calls a reusable workflow guidelines_enforcer developed by Ledger's internal developer team. +# The successful completion of the reusable workflow is a mandatory step for an app to be available on the Ledger +# application store. +# +# More information on the guidelines can be found in the repository: +# LedgerHQ/ledger-app-workflows/ + +permissions: + contents: read + actions: write + +on: + workflow_dispatch: + push: + branches: + - master + - main + - develop + pull_request: + +jobs: + guidelines_enforcer: + name: Call Ledger guidelines_enforcer + uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_guidelines_enforcer.yml@v1 diff --git a/.github/workflows/misspellings_checks.yml b/.github/workflows/misspellings_checks.yml new file mode 100644 index 0000000..e476e05 --- /dev/null +++ b/.github/workflows/misspellings_checks.yml @@ -0,0 +1,22 @@ +name: Misspellings checks + +# This workflow performs some misspelling checks on the repository +# It is there to help us maintain a level of quality in our codebase and does not have to be kept on forked +# applications. + +permissions: + contents: read + +on: + workflow_dispatch: + push: + branches: + - master + - main + - develop + pull_request: + +jobs: + misspell: + name: Check misspellings + uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_spell_check.yml@v1 diff --git a/.github/workflows/python_tests_checks.yml b/.github/workflows/python_tests_checks.yml new file mode 100644 index 0000000..2afc7e7 --- /dev/null +++ b/.github/workflows/python_tests_checks.yml @@ -0,0 +1,28 @@ +name: Checks on the Python tests +permissions: + contents: read + +# This workflow performs some checks on the Python client used by the ragger tests +# It is there to help us maintain a level of quality in our codebase and does not have to be kept on forked +# applications. + +on: + workflow_dispatch: + push: + branches: + - master + - main + - develop + pull_request: + +jobs: + lint: + name: Call Ledger Python linters + uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_python_checks.yml@v1 + with: + run_linter: pylint + run_type_check: true + src_directory: application_client + setup_directory: tests + req_directory: tests + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f163443 --- /dev/null +++ b/.gitignore @@ -0,0 +1,35 @@ +target +.claude/ +app.json +app_nanos.json +app_nanosplus.json +app_nanox.json +app_stax.json +app_flex.json + +# Automatic generated NBGL glyphs +glyphs/home_nano_nbgl.png + +# Temporary directory with snapshots taken during test runs +snapshots-tmp/ + +# Python +*.pyc[cod] +*.egg +__pycache__/ +*.egg-info/ +.eggs/ +.python-version + +# Related to the Ledger VSCode extension +# Virtual env for sideload (macOS and Windows) +ledger/ +# Build directory +build/ + +# Helper script git clone +tests/swap/.test_dependencies/app-exchange/ +tests/swap/.test_dependencies/app-ethereum/ + +# macOS +.DS_Store diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..e075e36 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,1425 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "aligned-vec" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" +dependencies = [ + "equator", +] + +[[package]] +name = "anyhow" +version = "1.0.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" + +[[package]] +name = "app-handshake" +version = "0.1.0" +dependencies = [ + "arrayvec", + "bech32", + "hex", + "image", + "ledger_device_sdk", + "ledger_secure_sdk_sys", + "numtoa", + "serde", + "serde-json-core", +] + +[[package]] +name = "arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" + +[[package]] +name = "arg_enum_proc_macro" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "av1-grain" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f3efb2ca85bc610acfa917b5aaa36f3fcbebed5b3182d7f877b02531c4b80c8" +dependencies = [ + "anyhow", + "arrayvec", + "log", + "nom", + "num-rational", + "v_frame", +] + +[[package]] +name = "avif-serialize" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47c8fbc0f831f4519fe8b810b6a7a91410ec83031b8233f730a0480029f6a23f" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "bech32" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" + +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "itertools", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.98", +] + +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + +[[package]] +name = "bitflags" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" + +[[package]] +name = "bitstream-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2" + +[[package]] +name = "built" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ed6191a7e78c36abdb16ab65341eefd73d64d303fffccdbb00d51e4205967b" + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "bytemuck" +version = "1.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "cc" +version = "1.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7777341816418c02e033934a09f20dc0ccaf65a5201ef8a450ae0105a573fda" +dependencies = [ + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "const-zero" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3c6565524986fe3225da0beb9b4aa55ebc73cd57ff8cb4ccf016ca4c8d006af" + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "embedded-alloc" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddae17915accbac2cfbc64ea0ae6e3b330e6ea124ba108dada63646fd3c6f815" +dependencies = [ + "critical-section", + "linked_list_allocator", +] + +[[package]] +name = "equator" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" +dependencies = [ + "equator-macro", +] + +[[package]] +name = "equator-macro" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "exr" +version = "1.73.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0" +dependencies = [ + "bit_field", + "half", + "lebe", + "miniz_oxide", + "rayon-core", + "smallvec", + "zune-inflate", +] + +[[package]] +name = "fax" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab" +dependencies = [ + "fax_derive", +] + +[[package]] +name = "fax_derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "flate2" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gif" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "glob" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" + +[[package]] +name = "half" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "hash32" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" + +[[package]] +name = "heapless" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" +dependencies = [ + "hash32", + "serde", + "stable_deref_trait", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "image" +version = "0.25.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c6a3ce16143778e24df6f95365f12ed105425b22abefd289dd88a64bab59605" +dependencies = [ + "bytemuck", + "byteorder-lite", + "color_quant", + "exr", + "gif", + "image-webp", + "moxcms", + "num-traits", + "png", + "qoi", + "ravif", + "rayon", + "rgb", + "tiff", + "zune-core", + "zune-jpeg", +] + +[[package]] +name = "image-webp" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3" +dependencies = [ + "byteorder-lite", + "quick-error", +] + +[[package]] +name = "imgref" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408" + +[[package]] +name = "include_gif" +version = "1.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4046578028f0249b76fb88acb6a0eac1f635bf9e2630ba5d0562831597ffc323" +dependencies = [ + "flate2", + "image", + "syn 1.0.109", +] + +[[package]] +name = "indexmap" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "interpolate_name" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" + +[[package]] +name = "jobserver" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] + +[[package]] +name = "lebe" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" + +[[package]] +name = "ledger_device_sdk" +version = "1.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8adde0c75d115974c33db5e8e50dbf809d874d64ea970570cd6cc523ce009d6b" +dependencies = [ + "const-zero", + "include_gif", + "ledger_secure_sdk_sys", + "num-traits", + "numtoa", + "rand_core", + "serde_json", + "zeroize", +] + +[[package]] +name = "ledger_secure_sdk_sys" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f18ccb022d22741651f4a13bb417e2e5f4f2d68b832409b80bdc3726e76b1bd9" +dependencies = [ + "bindgen", + "cc", + "critical-section", + "embedded-alloc", + "glob", +] + +[[package]] +name = "libc" +version = "0.2.169" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" + +[[package]] +name = "libfuzzer-sys" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5037190e1f70cbeef565bd267599242926f724d3b8a9f510fd7e0b540cfa4404" +dependencies = [ + "arbitrary", + "cc", +] + +[[package]] +name = "libloading" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" +dependencies = [ + "cfg-if", + "windows-targets", +] + +[[package]] +name = "linked_list_allocator" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afa463f5405ee81cdb9cc2baf37e08ec7e4c8209442b5d72c04cfb2cd6e6286" + +[[package]] +name = "log" +version = "0.4.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" + +[[package]] +name = "loop9" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" +dependencies = [ + "imgref", +] + +[[package]] +name = "maybe-rayon" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" +dependencies = [ + "cfg-if", + "rayon", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3b1c9bd4fe1f0f8b387f6eb9eb3b4a1aa26185e5750efb9140301703f62cd1b" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "moxcms" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd32fa8935aeadb8a8a6b6b351e40225570a37c43de67690383d87ef170cd08" +dependencies = [ + "num-traits", + "pxfm", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "noop_proc_macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "numtoa" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aa2c4e539b869820a2b82e1aef6ff40aa85e65decdd5185e83fb4b1249cd00f" + +[[package]] +name = "once_cell" +version = "1.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "png" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" +dependencies = [ + "bitflags", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac" +dependencies = [ + "proc-macro2", + "syn 2.0.98", +] + +[[package]] +name = "proc-macro2" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" +dependencies = [ + "profiling-procmacros", +] + +[[package]] +name = "profiling-procmacros" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" +dependencies = [ + "quote", + "syn 2.0.98", +] + +[[package]] +name = "pxfm" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e790881194f6f6e86945f0a42a6981977323669aeb6c40e9c7ec253133b96f8" +dependencies = [ + "num-traits", +] + +[[package]] +name = "qoi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[package]] +name = "quote" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rav1e" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9" +dependencies = [ + "arbitrary", + "arg_enum_proc_macro", + "arrayvec", + "av1-grain", + "bitstream-io", + "built", + "cfg-if", + "interpolate_name", + "itertools", + "libc", + "libfuzzer-sys", + "log", + "maybe-rayon", + "new_debug_unreachable", + "noop_proc_macro", + "num-derive", + "num-traits", + "once_cell", + "paste", + "profiling", + "rand", + "rand_chacha", + "simd_helpers", + "system-deps", + "thiserror", + "v_frame", + "wasm-bindgen", +] + +[[package]] +name = "ravif" +version = "0.11.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5825c26fddd16ab9f515930d49028a630efec172e903483c94796cfe31893e6b" +dependencies = [ + "avif-serialize", + "imgref", + "loop9", + "quick-error", + "rav1e", + "rayon", + "rgb", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "rgb" +version = "0.8.52" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" + +[[package]] +name = "serde" +version = "1.0.217" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-json-core" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b81787e655bd59cecadc91f7b6b8651330b2be6c33246039a65e5cd6f4e0828" +dependencies = [ + "heapless", + "ryu", + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.217" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "serde_json" +version = "1.0.143" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "simd_helpers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" +dependencies = [ + "quote", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck", + "pkg-config", + "toml", + "version-compare", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "tiff" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f" +dependencies = [ + "fax", + "flate2", + "half", + "quick-error", + "weezl", + "zune-jpeg", +] + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "unicode-ident" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" + +[[package]] +name = "v_frame" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2" +dependencies = [ + "aligned-vec", + "num-traits", + "wasm-bindgen", +] + +[[package]] +name = "version-compare" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.98", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "weezl" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +dependencies = [ + "memchr", +] + +[[package]] +name = "zerocopy" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zune-core" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "zune-jpeg" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1f7e205ce79eb2da3cd71c5f55f3589785cb7c79f6a03d1c8d1491bda5d089" +dependencies = [ + "zune-core", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..8c19f85 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,46 @@ +[package] +name = "app-handshake" +version = "0.1.0" +authors = ["eskimo ", "Ledger SAS (boilerplate)"] +edition = "2021" + +[dependencies] +ledger_device_sdk = {version = "1.34.0", features = ["io_new"]} +ledger_secure_sdk_sys = "1.15" +serde = { version="1.0.192", default-features = false, features = ["derive"] } +serde-json-core = "0.6.0" +hex = { version = "0.4.3", default-features = false, features = ["serde", "alloc"] } +numtoa = "0.2.4" +arrayvec = { version = "0.7", default-features = false } +bech32 = { version = "0.11", default-features = false, features = ["alloc"] } + +[build-dependencies] +image = "0.25.7" + +[features] +default = ["ledger_device_sdk/nano_nbgl"] +debug = ["ledger_device_sdk/debug"] + +[package.metadata.ledger] +curve = ["secp256k1"] +flags = "0" +path = ["44'/5353'", "44'/5354'", "44'/5355'", "44'/5356'"] +name = "Handshake" + +[package.metadata.ledger.nanox] +icon = "icons/handshake_14x14.gif" + +[package.metadata.ledger.nanosplus] +icon = "icons/handshake_14x14.gif" + +[package.metadata.ledger.stax] +icon = "icons/handshake_32x32.gif" + +[package.metadata.ledger.flex] +icon = "icons/handshake_40x40.gif" + +[package.metadata.ledger.apex_p] +icon = "icons/handshake_32x32.png" + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(target_os, values("apex_p", "stax", "flex", "nanos", "nanox", "nanosplus"))'] } diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..8dada3e --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + 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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..54de9bc --- /dev/null +++ b/README.md @@ -0,0 +1,134 @@ +# Handshake Ledger app + +Hardware-wallet app for [Handshake](https://handshake.org) (HNS). Lets a Ledger Stax / Flex / Nano S+ / Nano X derive Handshake addresses and sign Handshake transactions, including name-auction covenants. + +> ⚠️ **Status:** v0.1, pre-audit. Do **not** use with mainnet keys yet. + +Forked from [LedgerHQ/app-boilerplate-rust](https://github.com/LedgerHQ/app-boilerplate-rust) (Apache-2.0). + +## Devices + +Stax (primary target), Flex, Nano S+, Nano X, Apex+. All five compile; only Stax has been exercised on real hardware. + +## What the app does (v0.1) + +| INS | Command | Behavior | +| ------ | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `0x03` | `GET_VERSION` | Returns app version (major.minor.patch). | +| `0x04` | `GET_APP_NAME` | Returns `Handshake`. | +| `0x05` | `GET_PUBKEY` | Derives a secp256k1 pubkey from a BIP-32 path under `m/44'/5353'/...`, encodes as bech32 (`hs…` mainnet / `ts…` testnet). With `P1=1`, shows the address and its derivation path on-device to confirm. | +| `0x06` | `SIGN_TX` | PSBT-style state machine selected by `P1`: `BEGIN` / `ADD_INPUT` / `ADD_OUTPUT` / `REVIEW` / `SIGN_INPUT`. The host streams the tx as structured records, the device sums values itself, shows one review, then signs each input on demand. See `src/handlers/sign_tx.rs`. | +| `0x07` | `SIGN_MESSAGE` | Prepends `"handshake signed message:\n"`, BLAKE2b-256 hashes, shows signer address, path and preview, returns `recovery_id ‖ sig ‖ pubkey`. | + +CLA: `0xe0`. Status words live in `src/main.rs::AppSW`. + +## What the device refuses + +A hardware wallet's job is to be correct when the host lies, so the app rejects anything its review screen cannot represent honestly. `tests/standalone/test_sign_tx_policy.py` covers each of these. + +- **Sighash types other than `ALL` (`0x01`).** The review lists concrete outputs and a concrete fee, which is only what the signature commits to under `ALL`. `NONE` commits to no outputs, `SINGLE`/`SINGLEREVERSE` to one, `ANYONECANPAY` drops the other inputs and `NOINPUT` drops the outpoint. Checked per input, not once for the session. +- **Derivation paths outside `m/44'/{5353..5356}'/account'[/change/index]`.** The install manifest whitelists the same prefixes, but BOLOS terminates the app on a path outside them instead of returning an error, so the app checks first. All inputs in one session must share a coin type, since the review renders every address under a single HRP. +- **Sessions larger than 16 inputs / 8 outputs, or 1 KB of covenant items in total.** Sized to the configured heap. The counts no longer drive an up-front allocation, so a single `BEGIN` cannot exhaust it. +- **Covenant kinds above `REVOKE` (11), and kind `0` carrying items.** Either would put bytes into the sighash under a label that does not describe them. +- **Declared input values that sum past `u64`, or outputs exceeding inputs.** The fee is computed in `u128` and the session refused rather than truncated into a plausible-looking number. + +## Building (no Docker) + +Native Rust + ARM toolchain: no Docker, no `ledger-app-builder`. + +### Prerequisites + +```sh +# Rust nightly is pinned in rust-toolchain.toml; rustup will install it on demand. +rustup show + +# ARM bare-metal toolchain + LLVM (macOS) +brew install --cask gcc-arm-embedded +brew install llvm + +# Ledger Cargo subcommand + sideload tool + emulator +cargo install --git https://github.com/LedgerHQ/cargo-ledger +pip install ledgerwallet speculos +``` + +`scripts/build` has the full one-time setup in its header comment, including the +BOLOS Secure SDK clone and the API level that must match your device firmware. + +### Build + +```sh +./scripts/build stax # or: flex / nanox / nanosplus / apex_p +``` + +Use `scripts/build` rather than `cargo ledger build` directly: on macOS the latter +writes neither the Intel HEX nor the `ledgerctl` manifest, and it cannot compile +the Nano NBGL sources without a `uint` define. The script handles all three. + +The manifest is **generated from the built ELF** by `scripts/gen-manifest`, never +hand-written: `dataSize` has to match the binary, and an undersized one installs +cleanly and then refuses to launch. + +Binary and manifest land under `target//release/`. + +## Testing + +### Speculos emulator + +```sh +speculos --apdu-port 9999 --api-port 5001 --model stax \ + target/stax/release/app-handshake +``` + +### Ragger functional tests + +```sh +./scripts/test # stax +./scripts/test flex # or nanosp / nanox / apex_p +./scripts/test stax -k policy -v +``` + +Speculos does not run natively on macOS, so `scripts/test` runs it and ragger in +a container built from Ledger's dev-tools image (`tests/Dockerfile`). The image +is multi-arch, so this runs natively on Apple silicon. The first invocation +builds the image, which takes a few minutes; after that a full device run is +about 30 seconds. + +Tests that drive the UI compare against golden snapshots under +`tests/standalone/snapshots//`. Regenerate them with +`./scripts/test --golden_run`, and look at the diff before committing: +those images are the record of what the review screen shows, which is the whole +point of the device. `test_sign_tx_policy.py` needs no snapshots, because every +case in it is refused before anything is drawn. + +## Installing on a real device + +Unlock the device and stay on the dashboard (not inside an app): + +```sh +ledgerctl install -f target/stax/release/app_stax.json +``` + +## Architecture + +- `src/main.rs`: APDU dispatcher and app entry. +- `src/handlers/`: one file per APDU command. +- `src/app_ui/`: NBGL UI screens (menu, address confirm, tx review, message review). +- `src/handshake/`: protocol primitives (addresses, covenants, sighash, BLAKE2b). +- `src/swap.rs`: Ledger Exchange integration, a stub. `handler_sign_review` refuses outright when swap parameters are present rather than auto-approving, so wiring Exchange up requires adding the validation deliberately. + +## Spec / signing + +The app mirrors `shd`: + +- Curve: **secp256k1**, compressed public keys (33 B). +- BIP-32 path: `m/44'/5353'/account'/change/index`. Handshake assigns one SLIP-44 coin type per network (**5353'** mainnet, **5354'** testnet, **5355'** regtest, **5356'** simnet), and the coin type is what selects the HRP on-device (`Network::from_coin_type`). +- Address: bech32 (BIP-173, never bech32m) with HRPs `hs` / `ts` / `rs` / `ss`, witness version 0, P2WPKH = `BLAKE2b-160(compressed_pubkey)`. +- Sighash: BIP-143-style preimage, hashed with **BLAKE2b-256** (not SHA256d). The preimage builder handles `ALL`, `NONE`, `SINGLE`, `SINGLEREVERSE` and the `NOINPUT` / `ANYONECANPAY` flags so it matches `shd` byte for byte, but `SIGN_TX` only signs `ALL`. `tests/application_client/handshake_sighash.py` is an independent reimplementation used to cross-check the device's signatures. +- Signature: 64-byte compact r‖s with a 1-byte sighash type appended. Low-S comes from BOLOS itself: `cx_ecdsa_sign` canonicalizes unless `CX_NO_CANONICAL` is set, and the SDK's `deterministic_sign` does not set it. +- Outputs carry a `covenant` field (name auctions). Items are re-serialized verbatim into the sighash preimage, and the review decodes them: the operation label for every kind, the plaintext name for OPEN/BID/FINALIZE once checked against the hash the covenant commits to, the name hash otherwise, and for TRANSFER the destination address, which decides who ends up owning the name and appears nowhere else on screen. + +Authoritative source: `shd/Sources/Script/SigHash.swift`, `shd/Sources/Protocol/Transaction.swift`, `shd/Sources/Covenants/CovenantData.swift`. + +## License + +Apache-2.0, see `LICENSE.md`. Original boilerplate © Ledger SAS. diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..b583284 --- /dev/null +++ b/build.rs @@ -0,0 +1,34 @@ +use image::{ImageFormat, ImageReader, Pixel}; + +fn main() { + println!("cargo:rerun-if-changed=script.ld"); + println!("cargo:rerun-if-changed=icons/handshake_14x14.gif"); + println!("cargo:rerun-if-changed=icons/mask_14x14.gif"); + + let path = std::path::PathBuf::from("icons"); + let reader = ImageReader::open(path.join("handshake_14x14.gif")).unwrap(); + let img = reader.decode().unwrap(); + let mut gray = img.into_luma8(); + + // Apply mask + let mask = ImageReader::open(path.join("mask_14x14.gif")) + .unwrap() + .decode() + .unwrap() + .into_luma8(); + + for (x, y, mask_pixel) in mask.enumerate_pixels() { + let mask_value = mask_pixel[0]; + let mut gray_pixel = *gray.get_pixel(x, y); + if mask_value == 0 { + gray_pixel = image::Luma([0]); + } else { + gray_pixel.invert(); + } + gray.put_pixel(x, y, gray_pixel); + } + + let glyph_path = std::path::PathBuf::from("glyphs"); + gray.save_with_format(glyph_path.join("home_nano_nbgl.png"), ImageFormat::Png) + .unwrap(); +} diff --git a/glyphs/handshake_48x48.png b/glyphs/handshake_48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..caa8057b7396bdc058f80985a4a77e72ce7becbe GIT binary patch literal 264 zcmV+j0r&oiP)_^T8tejkj32zqmd@z;be%f1`s3u#XosV)L8E zh();ahR;@KYy@{b?6oZJvn-eFIXQCbp>vXu%I4V#YcHOMuKaTN_k-W9s9Fa@S$^OE O00007HEp|DZ(BzFS2t|M zl5c+wK6^M^;iOZa2JJRE^V5)P^CrF=v+}U4ukZZ5`FQB(Ff(gg&JKRC_`BR2o}bDw z{pj+Awa3J}o+`%N!0XFjO`gC0-epav)qiB!Mv!yx?bhFWa~a5BgAa1%pn4PfC*gi^ g8RwmB8Uo1SWgF7QSB0@%n4pO6`KIEE3*-O!NFz@cBY6O1`N&&Y>IY0 zCjuTE?v~J&o8z%j@pub|dL2uo!D7!&0oklKGmIX3Oj5O7*RpeClJ_jd+;c}V10Q=& z)sQ}BGc)j^-$cjGcP3hsRWHo8sXiqlwe{JhRpP66ec=q%4q6p8zpIq%Q}*?hu``#c w{+PTpXi9Q>lj_gUkE471O7Hppo|+TAGW+bhrI}`HZtZB(Rq~TDQ(&+L0PjjphyVZp literal 0 HcmV?d00001 diff --git a/icons/handshake_32x32.png b/icons/handshake_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..9ec0c0d0cfa874eb42bc4c400ec886960338fed6 GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^3Lwk~Bp9L@-6Mfiou`XqNW~o0zKy(x97LS&Z`W97 zt=8dprm>-EVbH`WJg$POJWMkgc4_n3{W{e8^w6ixmJ0I{&6KWjKIA_VBcSN-Jnivb z5AiR$cUGkG)!t32|V8+ gvcFVdQ&MBb@02L5KU;qFB literal 0 HcmV?d00001 diff --git a/icons/handshake_40x40.gif b/icons/handshake_40x40.gif new file mode 100644 index 0000000000000000000000000000000000000000..23a5e944a925201a2e0a4b6b84a098f917b08f5a GIT binary patch literal 241 zcmZ?wbh9u|)L_tHXk-9^|NsAkX$Bn-1rm4QIK{xsA>*-O!NFz@VJVga6A~NR_(Z*A zI5sYF?ckRUi|G(dKGvbmfyYP_$%zK&>;T{tiH z^tRmaiB`9_^;DPX-Ca_4c9XB?mN!=xM-;ERx@+p1vn|oib}FmI-zK!i6t42&5h{w> oF-6`x?@q|)JLj5?DuvCyuKW1#vY%b|vO|kwuP@7HV_~oc0H$tZ(EtDd literal 0 HcmV?d00001 diff --git a/icons/mask_14x14.gif b/icons/mask_14x14.gif new file mode 100755 index 0000000000000000000000000000000000000000..1568a9f3f73bcdec72287fb7a11d870df663dab9 GIT binary patch literal 88 zcmZ?wbhEHbe`QEFmIYKlU6W=V#EyQgmegW^vXMlJ>>1|5)6 gkR}Euk(TDpvRB;qx;NeG-h9vI^6dtnqaqB}0Cm|P&Hw-a literal 0 HcmV?d00001 diff --git a/ledger_app.toml b/ledger_app.toml new file mode 100644 index 0000000..5959dbf --- /dev/null +++ b/ledger_app.toml @@ -0,0 +1,7 @@ +[app] +build_directory = "./" +sdk = "Rust" +devices = ["nanox", "nanos+", "stax", "flex", "apex_p"] + +[pytest.standalone] +directory = "./tests/standalone/" diff --git a/mypy.ini b/mypy.ini new file mode 100644 index 0000000..fc18a98 --- /dev/null +++ b/mypy.ini @@ -0,0 +1,21 @@ +[mypy] +python_version = 3.10 +warn_unused_configs = True +disallow_untyped_defs = False +check_untyped_defs = False +warn_return_any = False +strict_optional = False +mypy_path = tests + +# Ignore missing imports for external libraries without type stubs +[mypy-hid.*] +ignore_missing_imports = True + +[mypy-pytest.*] +ignore_missing_imports = True + +[mypy-ragger.*] +ignore_missing_imports = True + +[mypy-ecdsa.*] +ignore_missing_imports = True diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..b8ce6f8 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,2 @@ +[toolchain] +channel = "nightly-2025-12-05" diff --git a/scripts/build b/scripts/build new file mode 100755 index 0000000..354e8c7 --- /dev/null +++ b/scripts/build @@ -0,0 +1,70 @@ +#!/usr/bin/env bash +# Build the Handshake Ledger app for a given device, with all the macOS +# native-toolchain env wrangling that cargo-ledger and the secure SDK assume. +# +# Usage: ./scripts/build [stax|flex|nanox|nanosplus] (default: stax) +# +# Prerequisites (one-time setup): +# brew install --cask gcc-arm-embedded # ARM bare-metal toolchain +# brew install llvm # llvm-objcopy, llvm-nm +# cargo install --git https://github.com/LedgerHQ/cargo-ledger cargo-ledger +# cargo ledger setup # installs target.json files +# git clone --depth=1 --branch API_LEVEL_25 \ +# https://github.com/LedgerHQ/ledger-secure-sdk ~/.ledger-sdk/secure-sdk-25 +# # API level must match the device firmware: +# # Stax SE 1.9.1 → API_LEVEL_25. +# # If install fails with status 0x511f, you're probably on the wrong level: +# # re-clone the SDK at the matching API_LEVEL_NN branch and override +# # LEDGER_SDK_PATH for the build. +# python3 -m pip install --user --break-system-packages Pillow +# # Patch the rustup-installed link_wrap.sh to be macOS-portable: +# sed -i '' 's|stat -c %s|wc -c <|' \ +# ~/.rustup/toolchains/$(rustup show active-toolchain | cut -d' ' -f1)/lib/rustlib/$(rustc -vV | sed -n 's/host: //p')/bin/link_wrap.sh + +set -euo pipefail + +DEVICE="${1:-stax}" +ARM_BIN="/Applications/ArmGNUToolchain/15.2.rel1/arm-none-eabi/bin" +LLVM_BIN="/opt/homebrew/opt/llvm/bin" +SDK="${LEDGER_SDK_PATH:-$HOME/.ledger-sdk/secure-sdk-25}" + +if [[ ! -x "$ARM_BIN/arm-none-eabi-gcc" ]]; then + echo "ARM toolchain not found at $ARM_BIN: install with: brew install --cask gcc-arm-embedded" + exit 1 +fi +if [[ ! -x "$LLVM_BIN/llvm-objcopy" ]]; then + echo "llvm-objcopy not found at $LLVM_BIN: install with: brew install llvm" + exit 1 +fi +if [[ ! -f "$SDK/install_params.py" ]]; then + echo "BOLOS Secure SDK not found at $SDK: see prerequisites in this script" + exit 1 +fi + +# The Nano NBGL sources use `uint`, a BSD spelling that arm-none-eabi-gcc +# accepts and the clang this script drives does not, so nanosplus and nanox +# fail to compile out of the box. `uint32_t` is the right width for the two +# loop counters that use it (lib_nbgl/src/nbgl_use_case_nanos.c:373,1581). +EXTRA_CFLAGS="" +if [[ "$DEVICE" == "nanosplus" || "$DEVICE" == "nanox" ]]; then + EXTRA_CFLAGS="-Duint=uint32_t" +fi + +PATH="$ARM_BIN:$LLVM_BIN:$PATH" \ +LEDGER_SDK_PATH="$SDK" \ +CFLAGS="${CFLAGS:-} $EXTRA_CFLAGS" \ +cargo ledger build "$DEVICE" "${@:2}" + +# cargo-ledger's post-build expects an Intel HEX next to the manifest but +# silently produces nothing on macOS: generate it from the ELF. +ELF="target/$DEVICE/release/app-handshake" +HEX="$ELF.hex" +if [[ -f "$ELF" && ( ! -f "$HEX" || "$ELF" -nt "$HEX" ) ]]; then + "$LLVM_BIN/llvm-objcopy" -O ihex "$ELF" "$HEX" + echo "wrote $HEX" +fi + +# cargo-ledger also fails to write the ledgerctl manifest on macOS. Generate it +# from the ELF, so `dataSize` can never drift from the binary being installed: +# an undersized dataSize installs cleanly and then refuses to launch. +"$(dirname "$0")/gen-manifest" "$DEVICE" diff --git a/scripts/build-unsigned-tx b/scripts/build-unsigned-tx new file mode 100755 index 0000000..ab00d76 --- /dev/null +++ b/scripts/build-unsigned-tx @@ -0,0 +1,101 @@ +#!/usr/bin/env python3 +"""Build a Handshake unsigned base transaction (no witnesses) from inputs and outputs. + +Mirrors the wire format from shd `Sources/Protocol/Transaction.swift`: + version(4 LE) || varint(in_count) || inputs[40B each] || varint(out_count) || outputs || locktime(4 LE) + +For each output: + value(8 LE) || address(version(1)+hashLen(1)+hash) || covenant(type(1)+varint(0)) + +Defaults: version=0, sequence=0xFFFFFFFF, locktime=0, covenant=.none. + +Usage: + ./scripts/build-unsigned-tx \\ + --input 865d9e8011815fbfeb168bff83767f039cd6ac71bd75893d74fb89a3d932322d:0 \\ + --output hs1qdydhjsla4ahvy5tn6w44ax7y62mpsd5nk3qnvw:9999000 + +(Amounts are in dollarydoos. 1 HNS = 1,000,000 dollarydoos.) +""" +import argparse +import sys + +import bech32 # type: ignore[import-untyped] + + +def encode_varint(n: int) -> bytes: + if n < 0xFD: + return bytes([n]) + if n <= 0xFFFF: + return b"\xfd" + n.to_bytes(2, "little") + if n <= 0xFFFFFFFF: + return b"\xfe" + n.to_bytes(4, "little") + return b"\xff" + n.to_bytes(8, "little") + + +def parse_input(s: str) -> tuple[bytes, int]: + """`:`: txid is natural byte order (matches shd .hex).""" + txid_str, vout_str = s.split(":") + txid = bytes.fromhex(txid_str) + if len(txid) != 32: + raise ValueError(f"input txid must be 32 bytes, got {len(txid)}") + return txid, int(vout_str) + + +def parse_output(s: str, network_hrp: str) -> tuple[int, int, bytes]: + """`:` → (amount, witness_version, hash_bytes).""" + addr, amount_str = s.split(":") + hrp, data = bech32.bech32_decode(addr) + if hrp != network_hrp: + raise ValueError(f"address HRP {hrp!r} != expected {network_hrp!r}") + if data is None or not data: + raise ValueError(f"invalid bech32 address: {addr}") + witver = data[0] + program = bech32.convertbits(data[1:], 5, 8, False) + if program is None: + raise ValueError(f"invalid bech32 program: {addr}") + return int(amount_str), witver, bytes(program) + + +def main() -> int: + ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + ap.add_argument("--input", action="append", required=True, + help="`:` (repeat for multiple inputs)") + ap.add_argument("--output", action="append", required=True, + help="`:` (repeat for multiple outputs)") + ap.add_argument("--version", type=int, default=0) + ap.add_argument("--locktime", type=int, default=0) + ap.add_argument("--sequence", type=lambda s: int(s, 0), default=0xFFFFFFFF) + ap.add_argument("--network", choices=["main", "testnet", "regtest", "simnet"], + default="main") + args = ap.parse_args() + + hrp_map = {"main": "hs", "testnet": "ts", "regtest": "rs", "simnet": "ss"} + hrp = hrp_map[args.network] + + out = bytearray() + out += args.version.to_bytes(4, "little") + + inputs = [parse_input(i) for i in args.input] + out += encode_varint(len(inputs)) + for txid, vout in inputs: + out += txid + out += vout.to_bytes(4, "little") + out += args.sequence.to_bytes(4, "little") + + outputs = [parse_output(o, hrp) for o in args.output] + out += encode_varint(len(outputs)) + for amount, witver, program in outputs: + out += amount.to_bytes(8, "little") + # Address: version(1) + hashLen(1) + hash + out += bytes([witver, len(program)]) + program + # Covenant.none: type(0) + varint(0 items) + out += b"\x00\x00" + + out += args.locktime.to_bytes(4, "little") + + print(out.hex()) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/gen-manifest b/scripts/gen-manifest new file mode 100755 index 0000000..2d71d75 --- /dev/null +++ b/scripts/gen-manifest @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 +"""Write the ledgerctl install manifest for a built app. + +cargo-ledger does not emit `app_.json` on macOS, so generate it from +the built ELF plus `[package.metadata.ledger]` in Cargo.toml. + +Everything that can be read from the ELF is read from the ELF: app name, +version, api level and target id all come from its `ledger.*` sections, so the +manifest cannot drift from the binary it installs. + +`dataSize` is `_envram_data - _nvram_data`: the NVRAM the app is granted at +install time. Getting it too small installs an app that will not launch. + +Usage: ./scripts/gen-manifest [stax|flex|nanox|nanosplus] (default: stax) +""" +import json +import pathlib +import subprocess +import sys +import tomllib + +LLVM_NM = "/opt/homebrew/opt/llvm/bin/llvm-nm" +LLVM_OBJCOPY = "/opt/homebrew/opt/llvm/bin/llvm-objcopy" + +# cargo-ledger's Cargo.toml key -> the [package.metadata.ledger.] table +DEVICE_TABLE = { + "stax": "stax", "flex": "flex", + "nanox": "nanox", "nanosplus": "nanosplus", "apex_p": "apex_p", +} + + +def elf_section(elf, name): + """Read a `ledger.*` metadata string section out of the ELF.""" + out = subprocess.run( + [LLVM_OBJCOPY, f"--dump-section=ledger.{name}=/dev/stdout", elf, "/dev/null"], + capture_output=True, + ).stdout + return out.decode("utf-8", "replace").strip("\0\n ") + + +def data_size(elf): + """NVRAM granted to the app: `_envram_data - _nvram_data`.""" + out = subprocess.run([LLVM_NM, elf], capture_output=True, text=True).stdout + sym = {} + for line in out.splitlines(): + parts = line.split() + if len(parts) == 3 and parts[2] in ("_nvram_data", "_envram_data"): + sym[parts[2]] = int(parts[0], 16) + missing = {"_nvram_data", "_envram_data"} - sym.keys() + if missing: + sys.exit(f"gen-manifest: {elf} has no {', '.join(sorted(missing))} symbol") + return sym["_envram_data"] - sym["_nvram_data"] + + +def main(): + device = sys.argv[1] if len(sys.argv) > 1 else "stax" + root = pathlib.Path(__file__).resolve().parent.parent + + cargo = tomllib.loads((root / "Cargo.toml").read_text()) + pkg = cargo["package"] + meta = pkg["metadata"]["ledger"] + per_device = meta.get(DEVICE_TABLE.get(device, device), {}) + + elf = root / "target" / device / "release" / pkg["name"] + if not elf.is_file(): + sys.exit(f"gen-manifest: {elf} not built: run ./scripts/build {device} first") + hex_path = elf.with_suffix(".hex") + if not hex_path.is_file(): + sys.exit(f"gen-manifest: {hex_path} missing: run ./scripts/build {device} first") + + icon = per_device.get("icon") + if not icon: + sys.exit(f"gen-manifest: no icon for '{device}' in [package.metadata.ledger.{device}]") + + flags = meta.get("flags", "0") + manifest = { + "name": elf_section(elf, "app_name"), + "version": elf_section(elf, "app_version"), + "icon": str(root / icon), + "targetId": elf_section(elf, "target_id"), + "flags": f"0x{int(str(flags), 0):03x}", + "apiLevel": elf_section(elf, "api_level"), + "derivationPath": {"curves": meta["curve"], "paths": meta["path"]}, + "binary": hex_path.name, + "dataSize": data_size(elf), + } + + out = elf.parent / f"app_{device}.json" + out.write_text(json.dumps(manifest, indent=4) + "\n") + print(f"wrote {out.relative_to(root)} " + f"(name={manifest['name']} apiLevel={manifest['apiLevel']} " + f"dataSize={manifest['dataSize']})") + + +if __name__ == "__main__": + main() diff --git a/scripts/send-apdu b/scripts/send-apdu new file mode 100755 index 0000000..fc3e05f --- /dev/null +++ b/scripts/send-apdu @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 +"""Send a raw APDU (hex) to whatever app is currently open on a connected Ledger. + +Usage: + ./scripts/send-apdu E005010015058000002C8000374F800000000000000000000000 + +Or pipe: + echo E005010015058000002C8000374F800000000000000000000000 | ./scripts/send-apdu +""" +import sys + +from ledgerwallet.transport import enumerate_devices + + +def main() -> int: + if len(sys.argv) > 1: + hex_apdu = sys.argv[1] + else: + hex_apdu = sys.stdin.read().strip() + hex_apdu = hex_apdu.replace(" ", "").replace("\n", "") + if not hex_apdu: + print("usage: send-apdu ", file=sys.stderr) + return 2 + apdu = bytes.fromhex(hex_apdu) + + devices = enumerate_devices() + if not devices: + print("no Ledger device found", file=sys.stderr) + return 1 + transport = devices[0] + transport.open() + try: + print(f"-> {apdu.hex().upper()}") + # 60s timeout to give the user time to confirm on-device. + response = transport.exchange(apdu, timeout=60000) + if len(response) < 2: + print(f"<- short response: {response.hex().upper()}") + return 1 + data, sw = response[:-2], int.from_bytes(response[-2:], "big") + print(f"<- sw={sw:04x} data={data.hex().upper()} ({len(data)} bytes)") + finally: + transport.close() + return 0 if response[-2:] == b"\x90\x00" else 1 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/sign-tx b/scripts/sign-tx new file mode 100755 index 0000000..573088c --- /dev/null +++ b/scripts/sign-tx @@ -0,0 +1,218 @@ +#!/usr/bin/env python3 +"""End-to-end SIGN_TX driver for the PSBT-style state machine (INS 0x06). + +Streams an unsigned Handshake tx to the Ledger app as structured sub-ops +(BEGIN / ADD_INPUT / ADD_OUTPUT / REVIEW / SIGN_INPUT), then assembles the +signed tx with one witness per input. + +Usage: + ./scripts/sign-tx \ + --path "44'/5353'/0'/0/0" \ + --input 865d9e8011815fbfeb168bff83767f039cd6ac71bd75893d74fb89a3d932322d:0:10000000 \ + --output hs1qdydhjsla4ahvy5tn6w44ax7y62mpsd5ny4jlej:9999000 + +Amounts are in dollarydoos. 1 HNS = 1,000,000 dollarydoos. +Exit code 0 = signed; nonzero = error or device rejection. +""" +import argparse +import sys + +import bech32 # type: ignore[import-untyped] +from ledgerwallet.transport import enumerate_devices + +CLA = 0xE0 +INS_GET_PUBKEY = 0x05 +INS_SIGN_TX = 0x06 + +P1_BEGIN = 0x00 +P1_ADD_INPUT = 0x01 +P1_ADD_OUTPUT = 0x02 +P1_REVIEW = 0x03 +P1_SIGN_INPUT = 0x04 + +P2_LAST = 0x00 +P2_MORE = 0x80 + +SCRIPT_KIND_P2WPKH = 0x00 +MAX_DATA = 240 + +HRP = {"main": "hs", "testnet": "ts", "regtest": "rs", "simnet": "ss"} + + +def open_device(): + devs = enumerate_devices() + if not devs: + print("no Ledger device found", file=sys.stderr) + sys.exit(1) + t = devs[0] + t.open() + return t + + +def parse_path(s: str) -> bytes: + """`count(1) || components[count](BE u32, hardened bit set on quoted parts)`.""" + parts = [p for p in s.lstrip("m/").split("/") if p] + out = bytearray([len(parts)]) + for p in parts: + n = int(p.rstrip("'")) + if p.endswith("'"): + n |= 0x80000000 + out.extend(n.to_bytes(4, "big")) + return bytes(out) + + +def encode_varint(n: int) -> bytes: + if n < 0xFD: + return bytes([n]) + if n <= 0xFFFF: + return b"\xfd" + n.to_bytes(2, "little") + if n <= 0xFFFFFFFF: + return b"\xfe" + n.to_bytes(4, "little") + return b"\xff" + n.to_bytes(8, "little") + + +def apdu(ins: int, p1: int, p2: int, data: bytes) -> bytes: + if len(data) > 255: + raise RuntimeError(f"APDU data too long: {len(data)}") + return bytes([CLA, ins, p1, p2, len(data)]) + data + + +def exchange(t, apdu_bytes: bytes, timeout_ms: int = 120000) -> bytes: + """Same convention as scripts/send-apdu: transport returns data || sw.""" + print(f"-> {apdu_bytes.hex().upper()}", file=sys.stderr) + response = t.exchange(apdu_bytes, timeout=timeout_ms) + if len(response) < 2: + raise RuntimeError(f"short response: {response.hex()}") + sw = int.from_bytes(response[-2:], "big") + data = bytes(response[:-2]) + print(f"<- sw={sw:04x} data={data.hex().upper()} ({len(data)} bytes)", file=sys.stderr) + if sw != 0x9000: + raise RuntimeError(f"APDU failed: sw={sw:04x}") + return data + + +def get_compressed_pubkey(t, path_bytes: bytes) -> bytes: + """GET_PUBKEY (no display): pk_len(1)||pk||cc_len(1)||cc||addr_len(1)||addr.""" + data = exchange(t, apdu(INS_GET_PUBKEY, 0, 0, path_bytes)) + return data[1 : 1 + data[0]] + + +def parse_input(s: str): + """`::`.""" + txid_str, vout_str, value_str = s.split(":") + txid = bytes.fromhex(txid_str) + if len(txid) != 32: + raise ValueError(f"input txid must be 32 bytes, got {len(txid)}") + return txid, int(vout_str), int(value_str) + + +def parse_output(s: str, hrp: str) -> bytes: + """`:` -> value(8 LE)||ver(1)||len(1)||hash||cov(0x00)||varint(0).""" + addr, amount_str = s.rsplit(":", 1) + got_hrp, data = bech32.bech32_decode(addr) + if got_hrp != hrp: + raise ValueError(f"address HRP {got_hrp!r} != expected {hrp!r}") + if not data: + raise ValueError(f"invalid bech32 address: {addr}") + witver = data[0] + program = bech32.convertbits(data[1:], 5, 8, False) + if program is None: + raise ValueError(f"invalid bech32 program: {addr}") + return ( + int(amount_str).to_bytes(8, "little") + + bytes([witver, len(program)]) + + bytes(program) + + b"\x00" # covenant kind NONE + + encode_varint(0) # covenant item count + ) + + +def main() -> int: + ap = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter + ) + ap.add_argument("--path", required=True, help="BIP-32 path, e.g. 44'/5353'/0'/0/0") + ap.add_argument("--input", action="append", required=True, + help="`::` (repeat for multiple inputs)") + ap.add_argument("--output", action="append", default=[], + help="`:` (repeat for multiple outputs)") + ap.add_argument("--tx-version", type=int, default=0) + ap.add_argument("--locktime", type=int, default=0) + ap.add_argument("--sequence", type=lambda s: int(s, 0), default=0xFFFFFFFF) + ap.add_argument("--sighash-type", type=lambda s: int(s, 0), default=0x01) + ap.add_argument("--network", choices=list(HRP), default="main") + args = ap.parse_args() + + hrp = HRP[args.network] + path_bytes = parse_path(args.path) + inputs = [parse_input(i) for i in args.input] + outputs = [parse_output(o, hrp) for o in args.output] + + t = open_device() + try: + pubkey = get_compressed_pubkey(t, path_bytes) + print(f"# compressed pubkey: {pubkey.hex().upper()}", file=sys.stderr) + + # BEGIN + exchange(t, apdu(INS_SIGN_TX, P1_BEGIN, 0, + args.tx_version.to_bytes(4, "little") + + encode_varint(len(inputs)) + + encode_varint(len(outputs)) + + args.locktime.to_bytes(4, "little"))) + + # ADD_INPUT (one APDU each) + for txid, vout, value in inputs: + exchange(t, apdu(INS_SIGN_TX, P1_ADD_INPUT, 0, + txid + + vout.to_bytes(4, "little") + + args.sequence.to_bytes(4, "little") + + value.to_bytes(8, "little") + + bytes([args.sighash_type]) + + path_bytes + + bytes([SCRIPT_KIND_P2WPKH]))) + + # ADD_OUTPUT (chunked; P2 = MORE until the last chunk of each output) + for payload in outputs: + chunks = [payload[i:i + MAX_DATA] for i in range(0, len(payload), MAX_DATA)] + for i, c in enumerate(chunks): + p2 = P2_LAST if i == len(chunks) - 1 else P2_MORE + exchange(t, apdu(INS_SIGN_TX, P1_ADD_OUTPUT, p2, c)) + + # REVIEW (blocks on the user) + exchange(t, apdu(INS_SIGN_TX, P1_REVIEW, 0, b"")) + + # SIGN_INPUT per input -> sig(64)||sighash(1)||pk_len(1)||pk + witnesses = [] + for idx in range(len(inputs)): + r = exchange(t, apdu(INS_SIGN_TX, P1_SIGN_INPUT, 0, idx.to_bytes(4, "big"))) + if len(r) < 66 or len(r) != 66 + r[65]: + raise RuntimeError(f"bad SIGN_INPUT response: {r.hex()}") + sig_with_sighash = r[:65] + pk = r[66:] + print(f"# input {idx} sig: {sig_with_sighash.hex().upper()}", file=sys.stderr) + witnesses.append( + encode_varint(2) + + encode_varint(len(sig_with_sighash)) + sig_with_sighash + + encode_varint(len(pk)) + pk + ) + + # version || inputs || outputs || locktime || witnesses (shd Transaction.write) + tx = bytearray(args.tx_version.to_bytes(4, "little")) + tx += encode_varint(len(inputs)) + for txid, vout, _ in inputs: + tx += txid + vout.to_bytes(4, "little") + args.sequence.to_bytes(4, "little") + tx += encode_varint(len(outputs)) + for payload in outputs: + tx += payload + tx += args.locktime.to_bytes(4, "little") + for w in witnesses: + tx += w + + print(tx.hex()) + return 0 + finally: + t.close() + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/test b/scripts/test new file mode 100755 index 0000000..ec172f6 --- /dev/null +++ b/scripts/test @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +# Run the ragger functional tests against speculos, in Docker. +# +# Speculos does not run natively on macOS, so both it and ragger live in a +# container built from Ledger's dev-tools image (see tests/Dockerfile). The +# image is multi-arch, so this runs natively on Apple silicon. +# +# Usage: +# ./scripts/test # stax +# ./scripts/test flex # another device +# ./scripts/test stax --golden_run # regenerate snapshots +# ./scripts/test stax -k policy -v # any extra pytest args +# +# Regenerating snapshots is a deliberate act: they are the record of what the +# review screen shows, which is the thing a hardware wallet is for. Look at the +# diff before committing one. +set -euo pipefail + +cd "$(dirname "$0")/.." + +DEVICE="${1:-stax}" +[[ $# -gt 0 ]] && shift + +# ragger's device names differ from the build target directory names. +case "$DEVICE" in + nanosp) TARGET=nanosplus ;; + *) TARGET="$DEVICE" ;; +esac + +IMAGE=ledger-hns-test + +if ! docker image inspect "$IMAGE" >/dev/null 2>&1; then + echo "building $IMAGE (first run only)..." + docker build -t "$IMAGE" -f tests/Dockerfile tests/ +fi + +if [[ ! -f "target/$TARGET/release/app-handshake" ]]; then + echo "app not built for $TARGET, building..." + ./scripts/build "$TARGET" +fi + +exec docker run --rm -v "$PWD":/app -w /app "$IMAGE" \ + pytest tests/standalone --tb=short -v --device "$DEVICE" "$@" diff --git a/src/app_ui/address.rs b/src/app_ui/address.rs new file mode 100644 index 0000000..491e049 --- /dev/null +++ b/src/app_ui/address.rs @@ -0,0 +1,45 @@ +//! Address confirmation screen for GET_PUBKEY with P1=1. + +use ledger_device_sdk::include_gif; +use ledger_device_sdk::io::Comm; +use ledger_device_sdk::nbgl::{Field, NbglAddressReview, NbglGlyph}; + +use crate::handshake::Network; +use crate::AppSW; + +/// Show an address for the user to compare against what their wallet displays. +/// +/// The derivation path goes on the screen too: without it a user confirming +/// "their" receive address cannot tell account 0 from account 99, nor a +/// legitimate index from one the host substituted. +pub fn ui_display_address( + comm: &mut Comm, + network: Network, + address: &str, + path: &str, +) -> Result { + #[cfg(target_os = "apex_p")] + const ICON: NbglGlyph = NbglGlyph::from_include(include_gif!("glyphs/handshake_48x48.png", NBGL)); + #[cfg(any(target_os = "stax", target_os = "flex"))] + const ICON: NbglGlyph = NbglGlyph::from_include(include_gif!("glyphs/handshake_64x64.gif", NBGL)); + #[cfg(any(target_os = "nanosplus", target_os = "nanox"))] + const ICON: NbglGlyph = NbglGlyph::from_include(include_gif!("icons/handshake_14x14.gif", NBGL)); + + let title = match network { + Network::Mainnet => "Verify Handshake address", + Network::Testnet => "Verify Handshake testnet address", + Network::Regtest => "Verify Handshake regtest address", + Network::Simnet => "Verify Handshake simnet address", + }; + + let fields = [Field { + name: "Derivation path", + value: path, + }]; + + Ok(NbglAddressReview::new() + .glyph(&ICON) + .review_title(title) + .set_tag_value_list(&fields) + .show(comm, address)) +} diff --git a/src/app_ui/menu.rs b/src/app_ui/menu.rs new file mode 100644 index 0000000..adf69f3 --- /dev/null +++ b/src/app_ui/menu.rs @@ -0,0 +1,17 @@ +use ledger_device_sdk::include_gif; +use ledger_device_sdk::io::Comm; +use ledger_device_sdk::nbgl::{NbglGlyph, NbglHomeAndSettings}; + +pub fn ui_menu_main(_: &mut Comm) -> NbglHomeAndSettings { + #[cfg(target_os = "apex_p")] + const ICON: NbglGlyph = NbglGlyph::from_include(include_gif!("glyphs/handshake_48x48.png", NBGL)); + #[cfg(any(target_os = "stax", target_os = "flex"))] + const ICON: NbglGlyph = NbglGlyph::from_include(include_gif!("glyphs/handshake_64x64.gif", NBGL)); + #[cfg(any(target_os = "nanosplus", target_os = "nanox"))] + const ICON: NbglGlyph = + NbglGlyph::from_include(include_gif!("glyphs/home_nano_nbgl.png", NBGL)); + + NbglHomeAndSettings::new() + .glyph(&ICON) + .infos("Handshake", env!("CARGO_PKG_VERSION"), "eskimo") +} diff --git a/src/app_ui/message.rs b/src/app_ui/message.rs new file mode 100644 index 0000000..2c86d62 --- /dev/null +++ b/src/app_ui/message.rs @@ -0,0 +1,80 @@ +//! Stax review screen for SIGN_MESSAGE. + +use alloc::format; +use alloc::string::String; +use alloc::vec::Vec; + +use ledger_device_sdk::include_gif; +use ledger_device_sdk::io::Comm; +use ledger_device_sdk::nbgl::{Field, NbglGlyph, NbglReview}; + +use crate::handshake::{address as hns_address, bech32_encode, blake2b, hex_string, Network}; +use crate::utils::{format_path, get_pubkey_from_path, Bip32Path}; +use crate::AppSW; + +/// Show the message + signer address, wait on "Hold to sign". Returns +/// `true` on approval. +/// +/// `message` is displayed verbatim; it's expected to be UTF-8 text. If +/// it's binary or longer than what fits, we fall back to showing its +/// BLAKE2b-256 hash: the user at least gets a stable fingerprint for +/// the thing they're being asked to sign. +pub fn ui_display_message( + comm: &mut Comm, + path: &Bip32Path, + message: &[u8], +) -> Result { + #[cfg(target_os = "apex_p")] + const ICON: NbglGlyph = + NbglGlyph::from_include(include_gif!("glyphs/handshake_48x48.png", NBGL)); + #[cfg(any(target_os = "stax", target_os = "flex"))] + const ICON: NbglGlyph = + NbglGlyph::from_include(include_gif!("glyphs/handshake_64x64.gif", NBGL)); + #[cfg(any(target_os = "nanosplus", target_os = "nanox"))] + const ICON: NbglGlyph = NbglGlyph::from_include(include_gif!("icons/handshake_14x14.gif", NBGL)); + + let network = Network::from_coin_type(path.as_ref().get(1).copied().unwrap_or(0)); + + let pubkey_uncomp = get_pubkey_from_path(path)?; + let compressed = hns_address::compress_pubkey(&pubkey_uncomp); + let pubkey_hash = blake2b::blake2b_160(&compressed); + let signer_addr = bech32_encode::encode_p2wpkh(network, &pubkey_hash); + + let message_display = match core::str::from_utf8(message) { + Ok(s) if s.chars().all(|c| !c.is_control() || c == '\n' || c == '\t') => { + truncate(s, 512) + } + _ => format!( + "[binary, blake2b-256: {}]", + hex_string(&blake2b::blake2b_256(message)) + ), + }; + + let owned: Vec<(String, String)> = alloc::vec![ + (String::from("Signer"), signer_addr), + (String::from("Derivation path"), format_path(path)), + (String::from("Message"), message_display), + ]; + let fields: Vec = owned + .iter() + .map(|(n, v)| Field { + name: n.as_str(), + value: v.as_str(), + }) + .collect(); + + let review = NbglReview::new() + .titles("Review message", "", "Sign message") + .glyph(&ICON); + Ok(review.show(comm, &fields)) +} + +fn truncate(s: &str, max: usize) -> String { + if s.len() <= max { + String::from(s) + } else { + let mut out = String::from(&s[..max.saturating_sub(1).min(s.len())]); + out.push('…'); + out + } +} diff --git a/src/app_ui/sign.rs b/src/app_ui/sign.rs new file mode 100644 index 0000000..b8fb43e --- /dev/null +++ b/src/app_ui/sign.rs @@ -0,0 +1,166 @@ +//! Stax review screen for SIGN_TX. +//! +//! Everything the signature commits to and that the host can vary must appear +//! here. `handlers::sign_tx` refuses the cases this screen cannot represent +//! honestly (non-ALL sighash types, covenant kinds the device cannot name), so +//! the two files have to be read together. + +use alloc::format; +use alloc::string::String; +use alloc::vec::Vec; + +use ledger_device_sdk::include_gif; +use ledger_device_sdk::io::Comm; +use ledger_device_sdk::nbgl::{Field, NbglGlyph, NbglReview}; + +use crate::handshake::{ + bech32_encode, covenant, hex_string, + tx::{Address, Tx}, + Network, +}; +use crate::AppSW; + +/// 1 HNS = 1,000,000 dollarydoos. Source: `shd/Sources/Base/Amount.swift:10`. +const DOOS_PER_HNS: u64 = 1_000_000; + +pub fn ui_display_tx( + comm: &mut Comm, + network: Network, + tx: &Tx<'_>, + fee: u64, + input_count: usize, + total_in: u64, +) -> Result { + #[cfg(target_os = "apex_p")] + const ICON: NbglGlyph = NbglGlyph::from_include(include_gif!("glyphs/handshake_48x48.png", NBGL)); + #[cfg(any(target_os = "stax", target_os = "flex"))] + const ICON: NbglGlyph = NbglGlyph::from_include(include_gif!("glyphs/handshake_64x64.gif", NBGL)); + #[cfg(any(target_os = "nanosplus", target_os = "nanox"))] + const ICON: NbglGlyph = NbglGlyph::from_include(include_gif!("icons/handshake_14x14.gif", NBGL)); + + // Build owned strings first; the `Field` slice will borrow into them. + let mut owned: Vec<(String, String)> = Vec::with_capacity(tx.outputs.len() * 3 + 6); + + // Leads the screen when it is not mainnet: the HRP on each address says the + // same thing, but only to someone who reads address prefixes. + if network != Network::Mainnet { + owned.push((String::from("Network"), String::from(network_label(network)))); + } + + for (i, out) in tx.outputs.iter().enumerate() { + let addr_str = match &out.address { + Address::P2WPKH(h) => bech32_encode::encode_p2wpkh(network, h), + Address::P2WSH(h) => bech32_encode::encode_p2wsh(network, h), + }; + owned.push((format!("Output {} to", i + 1), addr_str)); + owned.push((format!("Output {} amount", i + 1), format_hns(out.value))); + + // A covenant is the whole point of the transaction when there is one, so it + // gets its own rows rather than being appended to the amount as hex. + if !out.covenant.is_none() { + let kind = out.covenant.kind; + let items = &out.covenant.items; + owned.push(( + format!("Output {} operation", i + 1), + String::from(covenant::label(kind)), + )); + + // The plaintext name is shown only when the device could check it + // against the hash the covenant commits to. When it could not, show + // the hash itself rather than nothing: otherwise a covenant whose + // name failed verification looks exactly like one that carries no + // name at all, and the user has nothing to compare against their + // wallet. + if let Some(name) = covenant::verified_name(kind, items) { + owned.push((format!("Output {} name", i + 1), name)); + } else if let Some(hash) = covenant::name_hash(kind, items) { + owned.push((format!("Output {} name hash", i + 1), hex_string(hash))); + } + + // TRANSFER hands the name to another address, and that address + // appears nowhere else: the output itself pays back to the name's + // current address for its existing lockup, so without this row a + // transfer to a thief renders identically to one to yourself. + if let Some((version, hash)) = covenant::transfer_destination(kind, items) { + owned.push(( + format!("Output {} transfer to", i + 1), + format_program(network, version, hash), + )); + } + } + } + + // The device can only vouch for the values of inputs it is asked to sign; + // a host may declare others purely to move this total. Showing the count + // and sum puts a padded total on screen instead of leaving it to surface + // only as an oddly small fee. + owned.push(( + String::from("Inputs"), + format!("{} totalling {}", input_count, format_hns(total_in)), + )); + owned.push((String::from("Fee"), format_hns(fee))); + + // Both are committed to by the signature and both come straight off the + // wire. A far-future locktime keeps an approved transaction from confirming + // at all, which for a height-bounded REVEAL or REDEEM forfeits the bid. + if tx.locktime != 0 { + owned.push((String::from("Locktime"), format!("{}", tx.locktime))); + } + if tx.version != 0 { + owned.push((String::from("Tx version"), format!("{}", tx.version))); + } + + let fields: Vec = owned + .iter() + .map(|(name, value)| Field { + name: name.as_str(), + value: value.as_str(), + }) + .collect(); + + let review = NbglReview::new() + .titles("Review HNS transaction", "", "Sign transaction") + .glyph(&ICON); + + Ok(review.show(comm, &fields)) +} + +fn network_label(network: Network) -> &'static str { + match network { + Network::Mainnet => "mainnet", + Network::Testnet => "testnet", + Network::Regtest => "regtest", + Network::Simnet => "simnet", + } +} + +/// Render a witness program as an address when the device can encode it, and +/// as its raw hex when it cannot, so an exotic version never renders as nothing. +fn format_program(network: Network, version: u8, hash: &[u8]) -> String { + match (version, hash.len()) { + (0, 20) => { + let mut h = [0u8; 20]; + h.copy_from_slice(hash); + bech32_encode::encode_p2wpkh(network, &h) + } + (0, 32) => { + let mut h = [0u8; 32]; + h.copy_from_slice(hash); + bech32_encode::encode_p2wsh(network, &h) + } + _ => format!("witness v{} {}", version, hex_string(hash)), + } +} + +fn format_hns(doos: u64) -> String { + let whole = doos / DOOS_PER_HNS; + let frac = doos % DOOS_PER_HNS; + if frac == 0 { + return format!("{} HNS", whole); + } + let mut frac_str = format!("{:06}", frac); + while frac_str.ends_with('0') { + frac_str.pop(); + } + format!("{}.{} HNS", whole, frac_str) +} diff --git a/src/handlers/get_public_key.rs b/src/handlers/get_public_key.rs new file mode 100644 index 0000000..e41075f --- /dev/null +++ b/src/handlers/get_public_key.rs @@ -0,0 +1,56 @@ +//! GET_PUBLIC_KEY APDU handler. +//! +//! Derives a secp256k1 key from a BIP-32 path, returns the compressed pubkey +//! plus chain code plus the corresponding Handshake bech32 address. +//! If `display=true`, shows the address on-device for the user to confirm. + +use crate::app_ui::address::ui_display_address; +use crate::handshake::{address as hns_address, Network}; +use crate::utils::{coin_type, format_path, get_pubkey_from_path, validate_path, Bip32Path}; +use crate::AppSW; +use ledger_device_sdk::ecc::{Secp256k1, SeedDerive}; +use ledger_device_sdk::io::{Command, CommandResponse}; + +pub fn handler_get_public_key( + command: Command<'_>, + display: bool, +) -> Result, AppSW> { + let data = command.get_data(); + let path: Bip32Path = data.try_into()?; + validate_path(&path)?; + + let uncompressed = get_pubkey_from_path(&path)?; + let (_, chaincode) = Secp256k1::derive_from(path.as_ref()); + // An `unwrap` here would abort the app on a derivation the SDK declined to + // produce a chain code for, and the path reaching it is host-chosen. + let chaincode = chaincode.ok_or(AppSW::KeyDeriveFail)?; + + let compressed = hns_address::compress_pubkey(&uncompressed); + let network = network_for_path(&path); + let address = hns_address::p2wpkh_address(network, &uncompressed); + + let path_str = format_path(&path); + let comm = command.into_comm(); + if display && !ui_display_address(comm, network, &address, &path_str)? { + return Err(AppSW::Deny); + } + + let mut response = comm.begin_response(); + response.append(&[compressed.len() as u8])?; + response.append(&compressed)?; + response.append(&[chaincode.value.len() as u8])?; + response.append(&chaincode.value)?; + let addr_bytes = address.as_bytes(); + response.append(&[addr_bytes.len() as u8])?; + response.append(addr_bytes)?; + Ok(response) +} + +/// Pick the Handshake network from the BIP-32 path's coin-type component. +/// +/// `m/44'/5353'/...` → mainnet (`hs`), `5354'` → testnet (`ts`), +/// `5355'` → regtest (`rs`), `5356'` → simnet (`ss`). +/// Anything else defaults to mainnet for safety. +fn network_for_path(path: &Bip32Path) -> Network { + Network::from_coin_type(coin_type(path)) +} diff --git a/src/handlers/get_version.rs b/src/handlers/get_version.rs new file mode 100644 index 0000000..4585989 --- /dev/null +++ b/src/handlers/get_version.rs @@ -0,0 +1,40 @@ +/***************************************************************************** + * Ledger App Boilerplate Rust. + * (c) 2023 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ +use crate::AppSW; +use core::str::FromStr; +use ledger_device_sdk::io::{Command, CommandResponse}; + +pub fn handler_get_version(command: Command<'_>) -> Result, AppSW> { + if let Some((major, minor, patch)) = parse_version_string(env!("CARGO_PKG_VERSION")) { + let mut response = command.into_response(); + response.append(&[major, minor, patch])?; + Ok(response) + } else { + Err(AppSW::VersionParsingFail) + } +} + +fn parse_version_string(input: &str) -> Option<(u8, u8, u8)> { + // Split the input string by '.'. + // Input should be of the form "major.minor.patch", + // where "major", "minor", and "patch" are integers. + let mut parts = input.split('.'); + let major = u8::from_str(parts.next()?).ok()?; + let minor = u8::from_str(parts.next()?).ok()?; + let patch = u8::from_str(parts.next()?).ok()?; + Some((major, minor, patch)) +} diff --git a/src/handlers/sign_message.rs b/src/handlers/sign_message.rs new file mode 100644 index 0000000..a837688 --- /dev/null +++ b/src/handlers/sign_message.rs @@ -0,0 +1,151 @@ +//! SIGN_MESSAGE APDU handler. +//! +//! Single-shot APDU (INS=0x07, P1=0, P2=0). +//! +//! **Payload:** `path_len(1) || path[path_len * 4 BE] || msg_len(2 LE) || message[msg_len]` +//! +//! **Response:** `recovery_id(1) || sig_compact(64) || pubkey_compressed(33)`, 98 bytes. +//! +//! The device prepends `"handshake signed message:\n"` to the message +//! (matching `shd`'s `verifymessage`; see `Sources/Node/SPVRPC.swift:693` +//! and `Sources/Node/FullNode.swift:3857`), BLAKE2b-256 hashes the result, +//! shows the signer address + message preview, and on approval signs the +//! hash. The host combines the returned `[recovery_id, sig]` into the +//! standard 65-byte recoverable signature format. + +use alloc::vec::Vec; + +use ledger_device_sdk::ecc::{Secp256k1, SeedDerive}; +use ledger_device_sdk::io::{Command, CommandResponse}; + +use crate::app_ui::message::ui_display_message; +use crate::handshake::{address as hns_address, blake2b}; +use crate::handlers::sign_tx::TxContext; +use crate::utils::{get_pubkey_from_path, validate_path, Bip32Path}; +use crate::AppSW; + +const MESSAGE_PREFIX: &[u8] = b"handshake signed message:\n"; +const MAX_MESSAGE_LEN: usize = 512; + +pub fn handler_sign_message<'a>( + command: Command<'a>, + _ctx: &mut TxContext, +) -> Result, AppSW> { + let data = command.get_data(); + let mut r = Reader::new(data); + let path_len = r.read_u8()? as usize; + if path_len == 0 || path_len > 10 { + return Err(AppSW::TxParsingFail); + } + let mut path_words = [0u32; 10]; + for slot in path_words.iter_mut().take(path_len) { + *slot = r.read_u32_be()?; + } + let msg_len = r.read_u16_le()? as usize; + if msg_len > MAX_MESSAGE_LEN { + return Err(AppSW::TxWrongLength); + } + let msg = r.read_bytes(msg_len)?.to_vec(); + if !r.is_empty() { + return Err(AppSW::TxWrongLength); + } + let path = Bip32Path::from_raw(&path_words[..path_len])?; + validate_path(&path)?; + + let mut preimage = Vec::with_capacity(MESSAGE_PREFIX.len() + msg.len()); + preimage.extend_from_slice(MESSAGE_PREFIX); + preimage.extend_from_slice(&msg); + let hash = blake2b::blake2b_256(&preimage); + + let comm = command.into_comm(); + let approved = ui_display_message(comm, &path, &msg)?; + if !approved { + return Err(AppSW::Deny); + } + + let (der, der_len, parity) = Secp256k1::derive_from_path(path.as_ref()) + .deterministic_sign(&hash) + .map_err(|_| AppSW::TxSignFail)?; + let compact = der_to_compact(&der[..der_len as usize]).ok_or(AppSW::TxSignFail)?; + + // Recovery id's low bit is the Y-parity of R; the high bit flags x >= + // curve order, which happens with probability ~2^-128 for random hashes. + // Taking just the parity is correct for every signature anyone will + // ever encounter, and the host verifier tries all 4 candidates anyway. + let rec_id = parity as u8; + + let pubkey_uncomp = get_pubkey_from_path(&path)?; + let compressed = hns_address::compress_pubkey(&pubkey_uncomp); + + let mut response = comm.begin_response(); + response.append(&[rec_id])?; + response.append(&compact)?; + response.append(&compressed)?; + Ok(response) +} + +fn der_to_compact(der: &[u8]) -> Option<[u8; 64]> { + if der.len() < 8 || der[0] != 0x30 || der[2] != 0x02 { + return None; + } + let r_len = der[3] as usize; + let r_start: usize = 4; + let r_end = r_start.checked_add(r_len)?; + if der.len() < r_end + 2 || der[r_end] != 0x02 { + return None; + } + let s_len = der[r_end + 1] as usize; + let s_start = r_end + 2; + let s_end = s_start.checked_add(s_len)?; + if der.len() < s_end { + return None; + } + let r = &der[r_start..r_end]; + let s = &der[s_start..s_end]; + let r_trim = if r.len() > 32 && r[0] == 0 { &r[1..] } else { r }; + let s_trim = if s.len() > 32 && s[0] == 0 { &s[1..] } else { s }; + if r_trim.len() > 32 || s_trim.len() > 32 { + return None; + } + let mut out = [0u8; 64]; + out[32 - r_trim.len()..32].copy_from_slice(r_trim); + out[64 - s_trim.len()..].copy_from_slice(s_trim); + Some(out) +} + +struct Reader<'a> { + buf: &'a [u8], + pos: usize, +} + +impl<'a> Reader<'a> { + fn new(buf: &'a [u8]) -> Self { + Self { buf, pos: 0 } + } + fn is_empty(&self) -> bool { + self.pos >= self.buf.len() + } + fn need(&mut self, n: usize) -> Result<&'a [u8], AppSW> { + let end = self.pos.checked_add(n).ok_or(AppSW::TxWrongLength)?; + if end > self.buf.len() { + return Err(AppSW::TxWrongLength); + } + let s = &self.buf[self.pos..end]; + self.pos = end; + Ok(s) + } + fn read_u8(&mut self) -> Result { + Ok(self.need(1)?[0]) + } + fn read_u16_le(&mut self) -> Result { + let b = self.need(2)?; + Ok(u16::from_le_bytes([b[0], b[1]])) + } + fn read_u32_be(&mut self) -> Result { + let b = self.need(4)?; + Ok(u32::from_be_bytes([b[0], b[1], b[2], b[3]])) + } + fn read_bytes(&mut self, n: usize) -> Result<&'a [u8], AppSW> { + self.need(n) + } +} diff --git a/src/handlers/sign_tx.rs b/src/handlers/sign_tx.rs new file mode 100644 index 0000000..4b4c89d --- /dev/null +++ b/src/handlers/sign_tx.rs @@ -0,0 +1,669 @@ +//! SIGN_TX state machine. +//! +//! PSBT-style multi-step flow driven by the host. Sub-ops (selected via P1): +//! +//! | P1 | Op | Payload | +//! | ----- | ------------ | ------------------------------------------------------------------------------------ | +//! | 0x00 | `BEGIN` | `tx_version(4 LE) \|\| input_count(varint) \|\| output_count(varint) \|\| locktime(4 LE)` | +//! | 0x01 | `ADD_INPUT` | `prev_hash(32) \|\| prev_idx(4 LE) \|\| seq(4 LE) \|\| value(8 LE) \|\| sighash(1) \|\| path_len(1) \|\| path[path_len*4 BE] \|\| script_kind(1)` | +//! | 0x02 | `ADD_OUTPUT` | chunked (P2 MORE/LAST): `value(8 LE) \|\| addr_version(1) \|\| addr_len(1) \|\| addr_hash[·] \|\| covenant_kind(1) \|\| covenant_items(varint) \|\| items[·]` | +//! | 0x03 | `REVIEW` | empty → shows outputs + `sum(input_values) − sum(output_values)` fee, waits on user approval | +//! | 0x04 | `SIGN_INPUT` | `input_index(4 BE)` → returns `sig(64) \|\| sighash_byte(1) \|\| pk_len(1) \|\| pk[·]` | +//! +//! The host builds the tx, streams it in structured form, the device sums +//! input & output values itself, shows the review once, and signs each input on +//! demand after approval: same UX as Bitcoin's PSBT flow. +//! +//! `script_kind` in `ADD_INPUT`: `0x00` = P2WPKH (implemented). `0x01` = +//! P2WSH (reserved for multisig; rejected for now until the script parser +//! lands). +//! +//! `sighash` in `ADD_INPUT` must be `0x01` (SIGHASH_ALL). See +//! [`SIGHASH_ALL`] for why the other types are refused. + +use alloc::vec::Vec; + +use ledger_device_sdk::ecc::{Secp256k1, SeedDerive}; +use ledger_device_sdk::io::{Command, CommandResponse}; +use ledger_device_sdk::libcall::swap::CreateTxParams; +use ledger_device_sdk::nbgl::NbglHomeAndSettings; + +use crate::app_ui::sign::ui_display_tx; +use crate::handshake::{ + address as hns_address, blake2b, covenant, + sighash::SighashContext, + tx::{Address, Covenant, Input, Outpoint, Output, Tx}, + Network, +}; +use crate::utils::{coin_type, get_pubkey_from_path, validate_path, Bip32Path}; +use crate::AppSW; + +/// Per-input metadata supplied by the host alongside the structural tx data. +/// `value` and `sighash_type` feed the BIP-143 sighash preimage; `path` picks +/// the signing key. +#[derive(Default, Clone)] +struct InputMeta { + path: Bip32Path, + value: u64, + sighash_type: u8, + script_kind: u8, +} + +const SCRIPT_KIND_P2WPKH: u8 = 0x00; + +/// The only sighash type the device will sign. +/// +/// The review screen shows the outputs and the fee as though the signature +/// commits to them, which is true only for SIGHASH_ALL. Under NONE the digest +/// commits to no outputs at all, and under SINGLE/SINGLEREVERSE to exactly one; +/// ANYONECANPAY drops the other inputs and NOINPUT drops the outpoint, making +/// the signature replayable against a different coin entirely. A signature of +/// any of those types, obtained behind a screen that listed concrete outputs and +/// a concrete fee, is a blank cheque. +/// +/// The wallet only ever sends ALL. Supporting the rest means rendering, per +/// input, what each one does and does not commit to, which is a UI problem +/// rather than a signing one. Until that exists, refuse them. +const SIGHASH_ALL: u8 = 0x01; + +/// Session ceilings, sized to the configured heap (`.cargo/config.toml`). +/// +/// These bound three things at once: the accumulated session state, the +/// transaction view the sighash walks, and the review screen's strings, which +/// are the largest of the three (roughly 110 bytes per displayed row). A host +/// that declares more than this gets a status word; the wallet can split the +/// batch. The previous limits of 256/256 could not be allocated at all, so a +/// single BEGIN exhausted the heap and the panic handler killed the app. +const MAX_INPUTS: u64 = 16; +const MAX_OUTPUTS: u64 = 8; + +/// Total covenant item bytes across the whole session, not per output. +const MAX_COVENANT_BYTES: usize = 1024; + +/// Reassembly ceiling for one chunked `ADD_OUTPUT`. +const MAX_OUTPUT_BYTES: usize = 1024; + +/// Signing session state machine. +#[derive(Default, PartialEq, Eq, Clone, Copy, Debug)] +enum Phase { + /// No session in progress. Accepts `BEGIN`. + #[default] + Idle, + /// `BEGIN` received; collecting inputs. Accepts `ADD_INPUT`. + CollectInputs, + /// All inputs received; collecting outputs. Accepts `ADD_OUTPUT` + /// (unless `output_count == 0`, in which case `REVIEW` is expected). + CollectOutputs, + /// All inputs + outputs received. Accepts `REVIEW`. + PendingReview, + /// User approved. Accepts `SIGN_INPUT` (any number). + Signing, +} + +pub struct TxContext<'a> { + phase: Phase, + tx_version: u32, + input_count: u32, + output_count: u32, + locktime: u32, + inputs: Vec, + input_metas: Vec, + outputs: Vec, + /// Reassembly buffer for multi-chunk `ADD_OUTPUT` (covenants with DNS + /// records can exceed a single APDU's 240-byte data limit). + pending_output_buf: Vec, + /// Running total of covenant item bytes accepted this session. + covenant_bytes: usize, + /// Fingerprint of the approved signing session. Defense-in-depth: the + /// state machine already rejects `SIGN_INPUT` pre-approval, but this + /// guards against logic bugs. If the session's input/output data + /// changes without a fresh REVIEW approval, the fingerprint mismatches + /// and we refuse to sign. + approved_fingerprint: Option<[u8; 32]>, + review_finished: bool, + pub home: NbglHomeAndSettings, + pub swap_params: Option<&'a CreateTxParams>, +} + +impl<'a> TxContext<'a> { + pub fn new() -> TxContext<'a> { + TxContext { + phase: Phase::Idle, + tx_version: 0, + input_count: 0, + output_count: 0, + locktime: 0, + inputs: Vec::new(), + input_metas: Vec::new(), + outputs: Vec::new(), + pending_output_buf: Vec::new(), + covenant_bytes: 0, + approved_fingerprint: None, + review_finished: false, + home: Default::default(), + swap_params: None, + } + } + + pub fn new_with_swap(params: &'a CreateTxParams) -> TxContext<'a> { + let mut ctx = Self::new(); + ctx.swap_params = Some(params); + ctx + } + + pub fn finished(&self) -> bool { + self.review_finished + } + + fn reset(&mut self) { + self.phase = Phase::Idle; + self.tx_version = 0; + self.input_count = 0; + self.output_count = 0; + self.locktime = 0; + self.inputs.clear(); + self.input_metas.clear(); + self.outputs.clear(); + self.pending_output_buf.clear(); + self.covenant_bytes = 0; + self.approved_fingerprint = None; + self.review_finished = false; + } + + /// Borrow the session as the `Tx` view the sighash builder and the review + /// screen expect. Borrowed rather than cloned: `SIGN_INPUT` builds one of + /// these per signature, and copying every input and output each time would + /// double peak heap use at the worst possible moment. + fn as_tx(&self) -> Tx<'_> { + Tx { + version: self.tx_version, + inputs: &self.inputs, + outputs: &self.outputs, + locktime: self.locktime, + } + } +} + +// ─── BEGIN ───────────────────────────────────────────────────────────────── + +pub fn handler_sign_begin<'a>( + command: Command<'a>, + ctx: &mut TxContext, +) -> Result, AppSW> { + let data = command.get_data(); + let mut r = Reader::new(data); + let version = r.read_u32_le()?; + let n_in = r.read_varint()?; + let n_out = r.read_varint()?; + let locktime = r.read_u32_le()?; + if !r.is_empty() { + return Err(AppSW::TxWrongLength); + } + if n_in == 0 || n_in > MAX_INPUTS || n_out > MAX_OUTPUTS { + return Err(AppSW::TxParsingFail); + } + + ctx.reset(); + ctx.phase = Phase::CollectInputs; + ctx.tx_version = version; + ctx.input_count = n_in as u32; + ctx.output_count = n_out as u32; + ctx.locktime = locktime; + // No `reserve` here: the declared counts are host-controlled, and reserving + // for them up front turns one APDU into an allocation the heap may not be + // able to satisfy. The vectors grow as records actually arrive. + Ok(command.into_response()) +} + +// ─── ADD_INPUT ───────────────────────────────────────────────────────────── + +pub fn handler_sign_add_input<'a>( + command: Command<'a>, + ctx: &mut TxContext, +) -> Result, AppSW> { + if ctx.phase != Phase::CollectInputs { + return Err(AppSW::WrongState); + } + let data = command.get_data(); + let mut r = Reader::new(data); + let prev_hash: [u8; 32] = r.read_array::<32>()?; + let prev_index = r.read_u32_le()?; + let sequence = r.read_u32_le()?; + let value = r.read_u64_le()?; + let sighash_type = r.read_u8()?; + let path_len = r.read_u8()? as usize; + if path_len == 0 || path_len > 10 { + return Err(AppSW::TxParsingFail); + } + let mut path_words = [0u32; 10]; + for slot in path_words.iter_mut().take(path_len) { + *slot = r.read_u32_be()?; + } + let script_kind = r.read_u8()?; + if !r.is_empty() { + return Err(AppSW::TxWrongLength); + } + if script_kind != SCRIPT_KIND_P2WPKH { + // P2WSH / multisig planned for phase 2. + return Err(AppSW::TxParsingFail); + } + // Checked per input, not once for the session: the type reaching the + // signature is this input's own, so a check that looked only at input 0 + // would leave every later input free to carry something else. + if sighash_type != SIGHASH_ALL { + return Err(AppSW::TxParsingFail); + } + + let path = Bip32Path::from_raw(&path_words[..path_len])?; + validate_path(&path)?; + // One network per session. The review renders every address under a single + // HRP, so a mixed-coin-type session would show real mainnet destinations + // wearing a regtest prefix. + if let Some(first) = ctx.input_metas.first() { + if coin_type(&first.path) != coin_type(&path) { + return Err(AppSW::BadDerivationPath); + } + } + + ctx.inputs.push(Input { + outpoint: Outpoint { + hash: prev_hash, + index: prev_index, + }, + sequence, + }); + ctx.input_metas.push(InputMeta { + path, + value, + sighash_type, + script_kind, + }); + + if ctx.inputs.len() as u32 == ctx.input_count { + ctx.phase = if ctx.output_count == 0 { + Phase::PendingReview + } else { + Phase::CollectOutputs + }; + } + Ok(command.into_response()) +} + +// ─── ADD_OUTPUT ──────────────────────────────────────────────────────────── + +pub fn handler_sign_add_output<'a>( + command: Command<'a>, + more: bool, + ctx: &mut TxContext, +) -> Result, AppSW> { + if ctx.phase != Phase::CollectOutputs { + return Err(AppSW::WrongState); + } + let data = command.get_data(); + if ctx.pending_output_buf.len() + data.len() > MAX_OUTPUT_BYTES { + return Err(AppSW::TxWrongLength); + } + ctx.pending_output_buf.extend_from_slice(data); + if more { + return Ok(command.into_response()); + } + + // Last chunk: parse the full output and append. + let output = parse_output(&ctx.pending_output_buf)?; + ctx.pending_output_buf.clear(); + + // Budget covenant bytes across the whole session, not per output: eight + // outputs each just under the per-output ceiling would otherwise add up to + // more than the heap holds. + let bytes: usize = output.covenant.items.iter().map(|i| i.len()).sum(); + ctx.covenant_bytes = ctx.covenant_bytes.saturating_add(bytes); + if ctx.covenant_bytes > MAX_COVENANT_BYTES { + return Err(AppSW::TxWrongLength); + } + + ctx.outputs.push(output); + + if ctx.outputs.len() as u32 == ctx.output_count { + ctx.phase = Phase::PendingReview; + } + Ok(command.into_response()) +} + +// ─── REVIEW ──────────────────────────────────────────────────────────────── + +pub fn handler_sign_review<'a>( + command: Command<'a>, + ctx: &mut TxContext, +) -> Result, AppSW> { + if ctx.phase != Phase::PendingReview { + return Err(AppSW::WrongState); + } + if !command.get_data().is_empty() { + return Err(AppSW::TxWrongLength); + } + + // Swap mode is not implemented (see `src/swap.rs`, which is a stub, and + // `normal_main`, which is only ever called with `None`). Refusing here + // rather than approving keeps the unreachable branch from becoming an + // unreviewed signature the day someone wires Exchange up. + if ctx.swap_params.is_some() { + return Err(AppSW::SwapFail); + } + + let tx = ctx.as_tx(); + + // The device accumulates its own view of the values rather than parsing + // them out of raw tx bytes, so for the inputs it actually signs the totals + // are self-enforcing: a lie about a signed input's value corrupts that + // input's BIP-143 preimage and consensus rejects the signature. + // + // What that does NOT cover is an input the host declares and then never + // asks the device to sign, whose value still lands in this sum. Reject + // rather than truncate, and show the input count and total alongside the + // fee so a padded total is visible on screen instead of silently wrapping + // to a plausible-looking number. + let sum_in: u128 = ctx.input_metas.iter().map(|m| m.value as u128).sum(); + let sum_out: u128 = tx.outputs.iter().map(|o| o.value as u128).sum(); + if sum_in > u64::MAX as u128 || sum_out > sum_in { + return Err(AppSW::TxParsingFail); + } + let total_in = sum_in as u64; + let fee = (sum_in - sum_out) as u64; + + let network = network_for_path(&ctx.input_metas[0].path); + let input_count = ctx.input_metas.len(); + let comm = command.into_comm(); + let approved = ui_display_tx(comm, network, &tx, fee, input_count, total_in)?; + + // Set after the reset, not before: `reset` clears this flag, so assigning + // it first left `finished()` false on rejection and the main loop never + // returned the device to its home screen. + if !approved { + ctx.reset(); + ctx.review_finished = true; + return Err(AppSW::Deny); + } + ctx.review_finished = true; + ctx.approved_fingerprint = Some(session_fingerprint(ctx)); + ctx.phase = Phase::Signing; + Ok(comm.begin_response()) +} + +// ─── SIGN_INPUT ──────────────────────────────────────────────────────────── + +pub fn handler_sign_input<'a>( + command: Command<'a>, + ctx: &mut TxContext, +) -> Result, AppSW> { + if ctx.phase != Phase::Signing { + return Err(AppSW::WrongState); + } + let data = command.get_data(); + if data.len() != 4 { + return Err(AppSW::TxWrongLength); + } + let idx = u32::from_be_bytes([data[0], data[1], data[2], data[3]]) as usize; + if idx >= ctx.inputs.len() { + return Err(AppSW::TxParsingFail); + } + + // Re-verify the approved session hasn't been mutated under us. + let expected = ctx.approved_fingerprint.as_ref().ok_or(AppSW::WrongState)?; + let actual = session_fingerprint(ctx); + if *expected != actual { + return Err(AppSW::WrongState); + } + + let meta = &ctx.input_metas[idx]; + // Belt and braces: `ADD_INPUT` already refuses anything else, so reaching + // this means the session state was corrupted after the fact. + if meta.sighash_type != SIGHASH_ALL { + return Err(AppSW::WrongState); + } + let tx = ctx.as_tx(); + + let pubkey_uncomp = get_pubkey_from_path(&meta.path)?; + let compressed = hns_address::compress_pubkey(&pubkey_uncomp); + let pubkey_hash = blake2b::blake2b_160(&compressed); + let script_code = build_p2wpkh_script_code(&pubkey_hash); + + let sighash = SighashContext { + tx: &tx, + input_index: idx, + script_code: &script_code, + value: meta.value, + sighash_type: meta.sighash_type, + } + .compute(); + + let (der, der_len, _parity) = Secp256k1::derive_from_path(meta.path.as_ref()) + .deterministic_sign(&sighash) + .map_err(|_| AppSW::TxSignFail)?; + let der_slice = &der[..der_len as usize]; + let compact = der_to_compact(der_slice).ok_or(AppSW::TxSignFail)?; + + let comm = command.into_comm(); + let mut response = comm.begin_response(); + response.append(&compact)?; + response.append(&[meta.sighash_type])?; + response.append(&[compressed.len() as u8])?; + response.append(&compressed)?; + Ok(response) +} + +// ─── Helpers ─────────────────────────────────────────────────────────────── + +/// BLAKE2b-256 over a deterministic encoding of the session's input and +/// output data. Used to detect tampering between REVIEW approval and +/// subsequent SIGN_INPUT calls. +fn session_fingerprint(ctx: &TxContext) -> [u8; 32] { + let mut buf: Vec = Vec::with_capacity(256); + buf.extend_from_slice(&ctx.tx_version.to_le_bytes()); + buf.extend_from_slice(&ctx.locktime.to_le_bytes()); + for (input, meta) in ctx.inputs.iter().zip(ctx.input_metas.iter()) { + buf.extend_from_slice(&input.outpoint.hash); + buf.extend_from_slice(&input.outpoint.index.to_le_bytes()); + buf.extend_from_slice(&input.sequence.to_le_bytes()); + buf.extend_from_slice(&meta.value.to_le_bytes()); + buf.push(meta.sighash_type); + buf.push(meta.script_kind); + let path = meta.path.as_ref(); + buf.push(path.len() as u8); + for w in path { + buf.extend_from_slice(&w.to_be_bytes()); + } + } + for out in &ctx.outputs { + buf.extend_from_slice(&out.value.to_le_bytes()); + match &out.address { + Address::P2WPKH(h) => { + buf.push(0); + buf.push(20); + buf.extend_from_slice(h); + } + Address::P2WSH(h) => { + buf.push(0); + buf.push(32); + buf.extend_from_slice(h); + } + } + buf.push(out.covenant.kind); + buf.push(out.covenant.items.len() as u8); + for item in &out.covenant.items { + let len = item.len() as u32; + buf.extend_from_slice(&len.to_le_bytes()); + buf.extend_from_slice(item); + } + } + blake2b::blake2b_256(&buf) +} + +/// Parse one ADD_OUTPUT payload: `value || addr_version || addr_len || addr +/// || covenant_kind || covenant_items_count || [items]`. +fn parse_output(buf: &[u8]) -> Result { + let mut r = Reader::new(buf); + let value = r.read_u64_le()?; + let addr_version = r.read_u8()?; + if addr_version != 0 { + return Err(AppSW::TxParsingFail); + } + let addr_len = r.read_u8()? as usize; + let address = match addr_len { + 20 => Address::P2WPKH(r.read_array::<20>()?), + 32 => Address::P2WSH(r.read_array::<32>()?), + _ => return Err(AppSW::TxParsingFail), + }; + let kind = r.read_u8()?; + // An unknown kind would be labelled "UNKNOWN" on screen while its bytes go + // into the sighash verbatim. Refuse instead of asking the user to approve + // an operation the device cannot name. + if kind > covenant::MAX_KIND { + return Err(AppSW::TxParsingFail); + } + let n_items = r.read_varint()? as usize; + if n_items > 16 { + return Err(AppSW::TxParsingFail); + } + let mut items: Vec> = Vec::with_capacity(n_items); + for _ in 0..n_items { + let item_len = r.read_varint()? as usize; + items.push(r.read_bytes(item_len)?.to_vec()); + } + if !r.is_empty() { + return Err(AppSW::TxWrongLength); + } + // Kind 0 means "no covenant". Items alongside it would be committed to the + // sighash while the review screen read "none". + if kind == 0 && !items.is_empty() { + return Err(AppSW::TxParsingFail); + } + Ok(Output { + value, + address, + covenant: Covenant { kind, items }, + }) +} + +fn network_for_path(path: &Bip32Path) -> Network { + Network::from_coin_type(coin_type(path)) +} + +/// P2WPKH script_code: `OP_DUP OP_BLAKE160 OP_EQUALVERIFY OP_CHECKSIG`. +/// Mirrors `shd/Sources/Script/Script.swift::p2pkh`. +fn build_p2wpkh_script_code(pubkey_hash: &[u8; 20]) -> [u8; 25] { + let mut s = [0u8; 25]; + s[0] = 0x76; // OP_DUP + s[1] = 0xc0; // OP_BLAKE160 (Handshake; Bitcoin uses 0xa9 OP_HASH160) + s[2] = 0x14; // push 20 bytes + s[3..23].copy_from_slice(pubkey_hash); + s[23] = 0x88; // OP_EQUALVERIFY + s[24] = 0xac; // OP_CHECKSIG + s +} + +/// DER → compact `r || s` (32-byte each, left-padded). See BIP-66 for the +/// DER layout. Returns `None` if the DER is malformed or either integer +/// exceeds 32 bytes after stripping the leading zero pad. +fn der_to_compact(der: &[u8]) -> Option<[u8; 64]> { + if der.len() < 8 || der[0] != 0x30 || der[2] != 0x02 { + return None; + } + let r_len = der[3] as usize; + let r_start: usize = 4; + let r_end = r_start.checked_add(r_len)?; + if der.len() < r_end + 2 || der[r_end] != 0x02 { + return None; + } + let s_len = der[r_end + 1] as usize; + let s_start = r_end + 2; + let s_end = s_start.checked_add(s_len)?; + if der.len() < s_end { + return None; + } + let r = &der[r_start..r_end]; + let s = &der[s_start..s_end]; + + let r_trim = if r.len() > 32 && r[0] == 0 { &r[1..] } else { r }; + let s_trim = if s.len() > 32 && s[0] == 0 { &s[1..] } else { s }; + if r_trim.len() > 32 || s_trim.len() > 32 { + return None; + } + + let mut out = [0u8; 64]; + out[32 - r_trim.len()..32].copy_from_slice(r_trim); + out[64 - s_trim.len()..].copy_from_slice(s_trim); + Some(out) +} + +// ─── Tiny byte reader ────────────────────────────────────────────────────── + +struct Reader<'a> { + buf: &'a [u8], + pos: usize, +} + +impl<'a> Reader<'a> { + fn new(buf: &'a [u8]) -> Self { + Self { buf, pos: 0 } + } + + fn is_empty(&self) -> bool { + self.pos >= self.buf.len() + } + + fn need(&mut self, n: usize) -> Result<&'a [u8], AppSW> { + let end = self.pos.checked_add(n).ok_or(AppSW::TxWrongLength)?; + if end > self.buf.len() { + return Err(AppSW::TxWrongLength); + } + let s = &self.buf[self.pos..end]; + self.pos = end; + Ok(s) + } + + fn read_u8(&mut self) -> Result { + Ok(self.need(1)?[0]) + } + + fn read_u32_le(&mut self) -> Result { + let b = self.need(4)?; + Ok(u32::from_le_bytes([b[0], b[1], b[2], b[3]])) + } + + fn read_u32_be(&mut self) -> Result { + let b = self.need(4)?; + Ok(u32::from_be_bytes([b[0], b[1], b[2], b[3]])) + } + + fn read_u64_le(&mut self) -> Result { + let b = self.need(8)?; + Ok(u64::from_le_bytes([ + b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7], + ])) + } + + fn read_array(&mut self) -> Result<[u8; N], AppSW> { + let s = self.need(N)?; + let mut out = [0u8; N]; + out.copy_from_slice(s); + Ok(out) + } + + fn read_bytes(&mut self, n: usize) -> Result<&'a [u8], AppSW> { + self.need(n) + } + + /// Compact-size varint (Bitcoin style): same encoding Handshake uses. + fn read_varint(&mut self) -> Result { + let first = self.read_u8()?; + Ok(match first { + 0xff => self.read_u64_le()?, + 0xfe => self.read_u32_le()? as u64, + 0xfd => { + let b = self.need(2)?; + u16::from_le_bytes([b[0], b[1]]) as u64 + } + n => n as u64, + }) + } +} diff --git a/src/handshake/address.rs b/src/handshake/address.rs new file mode 100644 index 0000000..7e0f910 --- /dev/null +++ b/src/handshake/address.rs @@ -0,0 +1,29 @@ +//! P2WPKH address derivation: secp256k1 pubkey → BLAKE2b-160 → bech32. + +use alloc::string::String; + +use super::{bech32_encode, blake2b, Network}; + +/// Compress a 65-byte uncompressed secp256k1 pubkey to 33 bytes. +/// +/// Input layout: `0x04 || X (32) || Y (32)` +/// Output layout: `0x02 (Y even) | 0x03 (Y odd) || X (32)` +pub fn compress_pubkey(uncompressed: &[u8; 65]) -> [u8; 33] { + debug_assert_eq!(uncompressed[0], 0x04, "expected uncompressed pubkey marker"); + let mut out = [0u8; 33]; + out[0] = if uncompressed[64] & 1 == 0 { 0x02 } else { 0x03 }; + out[1..].copy_from_slice(&uncompressed[1..33]); + out +} + +/// P2WPKH witness program = BLAKE2b-160 of the compressed pubkey. +pub fn witness_program(compressed_pubkey: &[u8; 33]) -> [u8; 20] { + blake2b::blake2b_160(compressed_pubkey) +} + +/// Full Handshake P2WPKH bech32 address from an uncompressed secp256k1 pubkey. +pub fn p2wpkh_address(network: Network, uncompressed_pubkey: &[u8; 65]) -> String { + let compressed = compress_pubkey(uncompressed_pubkey); + let program = witness_program(&compressed); + bech32_encode::encode_p2wpkh(network, &program) +} diff --git a/src/handshake/bech32_encode.rs b/src/handshake/bech32_encode.rs new file mode 100644 index 0000000..ce24549 --- /dev/null +++ b/src/handshake/bech32_encode.rs @@ -0,0 +1,25 @@ +//! Bech32 (BIP-173) address encoding for Handshake witness-v0 outputs. +//! +//! Handshake uses the same witness-v0 bech32 scheme as Bitcoin SegWit, +//! just with HRPs `hs` / `ts` / `rs` / `ss` instead of `bc` / `tb`. + +use alloc::string::String; + +use bech32::Hrp; + +use super::Network; + +/// Encode a 20-byte P2WPKH witness program as a bech32 address. +/// +/// Both inputs are statically valid (HRP is a constant; program is exactly 20 bytes), +/// so the underlying encoder cannot fail. +pub fn encode_p2wpkh(network: Network, program: &[u8; 20]) -> String { + let hrp = Hrp::parse(network.hrp()).expect("static HRP"); + bech32::segwit::encode_v0(hrp, program).expect("witness program is correct length") +} + +/// Encode a 32-byte P2WSH witness program as a bech32 address. +pub fn encode_p2wsh(network: Network, program: &[u8; 32]) -> String { + let hrp = Hrp::parse(network.hrp()).expect("static HRP"); + bech32::segwit::encode_v0(hrp, program).expect("witness program is correct length") +} diff --git a/src/handshake/blake2b.rs b/src/handshake/blake2b.rs new file mode 100644 index 0000000..4b54482 --- /dev/null +++ b/src/handshake/blake2b.rs @@ -0,0 +1,49 @@ +//! BLAKE2b wrappers for Handshake's two output sizes. +//! +//! - 256-bit: transaction hashes, sighash preimage hash. Uses the SDK's `Blake2b_256`. +//! - 160-bit: P2WPKH witness program (pubkey hash). Implemented locally because +//! the SDK only ships Blake2b_{256,384,512}; we mirror the SDK's `impl_hash!` +//! pattern with the cxlib syscall configured for a 160-bit digest. + +use ledger_device_sdk::hash::{blake2::Blake2b_256, HashInit}; +use ledger_secure_sdk_sys::{cx_blake2b_init_no_throw, cx_blake2b_t, cx_hash_t}; + +pub fn blake2b_256(data: &[u8]) -> [u8; 32] { + let mut h = Blake2b_256::new(); + let mut out = [0u8; 32]; + let _ = h.hash(data, &mut out); + out +} + +#[derive(Default)] +#[allow(non_camel_case_types)] +pub struct Blake2b_160 { + ctx: cx_blake2b_t, +} + +impl HashInit for Blake2b_160 { + fn as_ctx_mut(&mut self) -> &mut cx_hash_t { + &mut self.ctx.header + } + + fn as_ctx(&self) -> &cx_hash_t { + &self.ctx.header + } + + fn new() -> Self { + let mut h: Self = Default::default(); + let _ = unsafe { cx_blake2b_init_no_throw(&mut h.ctx, 160) }; + h + } + + fn reset(&mut self) { + let _ = unsafe { cx_blake2b_init_no_throw(&mut self.ctx, 160) }; + } +} + +pub fn blake2b_160(data: &[u8]) -> [u8; 20] { + let mut h = Blake2b_160::new(); + let mut out = [0u8; 20]; + let _ = h.hash(data, &mut out); + out +} diff --git a/src/handshake/covenant.rs b/src/handshake/covenant.rs new file mode 100644 index 0000000..a717c0d --- /dev/null +++ b/src/handshake/covenant.rs @@ -0,0 +1,125 @@ +//! Handshake covenants: what a name operation is, and which name it is about. +//! +//! The device receives covenant items as opaque bytes and re-serializes them +//! verbatim into the sighash, so signing never needs to understand them. Display +//! does: a user approving `[covenant 0x02]` against a 42-character address is not +//! meaningfully reviewing anything, which defeats the point of a hardware wallet. + +use alloc::string::String; +use alloc::vec::Vec; + +use ledger_device_sdk::hash::{sha3::Sha3_256, HashInit}; + +/// Covenant type bytes, matching `shd/Sources/Protocol/CovenantType.swift:6-29`. +/// +/// Note CLAIM = 1: Handshake reserves it for the IANA/Alexa pre-reserve list, and +/// every later type is one higher than the equivalent on chains that lack it. +pub fn label(kind: u8) -> &'static str { + match kind { + 0 => "none", + 1 => "CLAIM", + 2 => "OPEN", + 3 => "BID", + 4 => "REVEAL", + 5 => "REDEEM", + 6 => "REGISTER", + 7 => "UPDATE", + 8 => "RENEW", + 9 => "TRANSFER", + 10 => "FINALIZE", + 11 => "REVOKE", + _ => "UNKNOWN", + } +} + +/// The plaintext name a covenant is about, when it carries one. +/// +/// OPEN, BID and FINALIZE put the name at `items[2]` alongside its hash at +/// `items[0]` (`shd/Sources/Covenants/CovenantData.swift:89-105, 170-177`). Every +/// other type carries only the 32-byte hash, and a name for those would have to +/// come from the host, which is exactly the claim a hardware wallet must not take +/// on trust, so they show none. +/// +/// The name is checked against the hash the covenant actually commits to before it +/// is shown. Without that, a compromised host could display a name you own while +/// opening an auction on one you do not: the hash is what consensus reads, and the +/// string is only a label until it is verified against it. +pub fn verified_name(kind: u8, items: &[Vec]) -> Option { + if !matches!(kind, 2 | 3 | 10) { + return None; + } + let name_hash = items.first()?; + let raw = items.get(2)?; + if name_hash.len() != 32 || raw.is_empty() || raw.len() > 63 { + return None; + } + + // Handshake name charset (`shd` NameRules): lowercase alphanumeric, hyphen and + // underscore. Rejecting anything else also removes the interior NUL that would + // panic inside the SDK's `CString::new(..).unwrap()` on the way to the screen. + if !raw.iter().all(|c| c.is_ascii_lowercase() || c.is_ascii_digit() || *c == b'-' || *c == b'_') { + return None; + } + + // SHA3-256, not Keccak: `NameRules.hashName` is SHA3, and the two differ in + // padding, so the wrong one fails every comparison silently. + let mut h = Sha3_256::new(); + let mut digest = [0u8; 32]; + if h.hash(raw, &mut digest).is_err() { + return None; + } + if digest[..] != name_hash[..] { + return None; + } + + core::str::from_utf8(raw).ok().map(String::from) +} + +/// Highest covenant type Handshake defines (REVOKE). Anything above this is +/// not a covenant the device can label, so `parse_output` refuses to sign it +/// rather than showing the user the word "UNKNOWN" over bytes it will commit to. +pub const MAX_KIND: u8 = 11; + +/// The 32-byte name hash a covenant commits to. +/// +/// Every name covenant shd builds puts it at `items[0]` +/// (`shd/Sources/Covenants/CovenantData.swift:88-191`, all eleven builders). +/// Shown when the plaintext name is unavailable or fails verification, so the +/// absence of a verified name is never the only thing on screen: the user still +/// gets a stable identifier to compare against what their wallet claims. +pub fn name_hash(kind: u8, items: &[Vec]) -> Option<&[u8]> { + if kind == 0 || kind > MAX_KIND { + return None; + } + let h = items.first()?; + if h.len() == 32 { + Some(h) + } else { + None + } +} + +/// TRANSFER's destination: the address the name is being handed to. +/// +/// `items = [nameHash, height, [addressVersion], addressHash]` +/// (`shd/Sources/Covenants/CovenantData.swift:158-165`, `makeTransfer`), so +/// `items[2]` is a one-byte witness version and `items[3]` the program. +/// +/// This is the covenant's whole point and it appears nowhere else on screen: +/// the output pays back to the name's current address for its existing lockup, +/// so without this row a transfer to a thief and a transfer to yourself render +/// identically. Length bounds match shd's `addressHash` guard. +pub fn transfer_destination(kind: u8, items: &[Vec]) -> Option<(u8, &[u8])> { + if kind != 9 { + return None; + } + let version_item = items.get(2)?; + if version_item.len() != 1 { + return None; + } + let hash = items.get(3)?; + if hash.len() < 2 || hash.len() > 40 { + return None; + } + Some((version_item[0], hash)) +} diff --git a/src/handshake/mod.rs b/src/handshake/mod.rs new file mode 100644 index 0000000..8db81b1 --- /dev/null +++ b/src/handshake/mod.rs @@ -0,0 +1,61 @@ +//! Handshake protocol primitives: addresses, transaction format, sighash. +//! +//! Mirrors `shd/Sources/Protocol/` and `shd/Sources/Script/` byte-for-byte. + +pub mod address; +pub mod bech32_encode; +pub mod covenant; +pub mod blake2b; +pub mod sighash; +pub mod tx; + +/// SLIP-44 coin type used in BIP-32 paths: `m/44'/5353'/...` (mainnet). +/// Handshake assigns one coin type per network; see [`Network::from_coin_type`]. +pub const SLIP44_COIN_TYPE: u32 = 5353; + +/// Handshake network: selects the bech32 HRP and is part of the BIP-32 path. +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum Network { + Mainnet, + Testnet, + Regtest, + Simnet, +} + +impl Network { + pub const fn hrp(self) -> &'static str { + match self { + Network::Mainnet => "hs", + Network::Testnet => "ts", + Network::Regtest => "rs", + Network::Simnet => "ss", + } + } + + /// Map the coin-type component of a BIP-32 path (`m/44'/'/...`) to a + /// network. Handshake assigns one SLIP-44 coin type per network: + /// 5353' mainnet, 5354' testnet, 5355' regtest, 5356' simnet. + /// + /// Anything else, including a path too short to carry a coin type, + /// defaults to mainnet for safety. + pub const fn from_coin_type(coin_type: u32) -> Self { + match coin_type { + 0x8000_14EA => Network::Testnet, // 5354' + 0x8000_14EB => Network::Regtest, // 5355' + 0x8000_14EC => Network::Simnet, // 5356' + _ => Network::Mainnet, // 5353' and non-standard + } + } +} + +/// Lowercase hex, for the identifiers the review screen shows when it has no +/// human-readable form to offer (name hashes, unencodable address programs). +pub fn hex_string(bytes: &[u8]) -> alloc::string::String { + const HEX: &[u8; 16] = b"0123456789abcdef"; + let mut out = alloc::string::String::with_capacity(bytes.len() * 2); + for b in bytes { + out.push(HEX[(b >> 4) as usize] as char); + out.push(HEX[(b & 0x0f) as usize] as char); + } + out +} diff --git a/src/handshake/sighash.rs b/src/handshake/sighash.rs new file mode 100644 index 0000000..7da4646 --- /dev/null +++ b/src/handshake/sighash.rs @@ -0,0 +1,185 @@ +//! BIP-143-style sighash preimage builder, hashed with BLAKE2b-256. +//! +//! Mirrors `shd/Sources/Script/SigHash.swift::compute`. + +use alloc::vec::Vec; + +use super::blake2b; +use super::tx::{Address, Covenant, Output, Tx}; + +/// Sighash type byte values used by Handshake. +pub mod sighash_type { + pub const ALL: u8 = 0x01; + pub const NONE: u8 = 0x02; + pub const SINGLE: u8 = 0x03; + /// Handshake-specific: mirrors the input index to an output index. + pub const SINGLEREVERSE: u8 = 0x04; + pub const NOINPUT: u8 = 0x40; + pub const ANYONECANPAY: u8 = 0x80; +} + +/// Inputs to a single signature: which input we're signing, the spent +/// output's `script_code` (varint-prefixed witness program for P2WPKH), +/// the value being spent, and which sighash type the wallet asked for. +pub struct SighashContext<'a> { + pub tx: &'a Tx<'a>, + pub input_index: usize, + pub script_code: &'a [u8], + pub value: u64, + pub sighash_type: u8, +} + +impl SighashContext<'_> { + pub fn compute(&self) -> [u8; 32] { + let inp = &self.tx.inputs[self.input_index]; + let mut buf: Vec = Vec::with_capacity(256); + + buf.extend_from_slice(&self.tx.version.to_le_bytes()); + buf.extend_from_slice(&self.hash_prevouts()); + buf.extend_from_slice(&self.hash_sequence()); + + // Outpoint of the input being signed. Under NOINPUT, hsd substitutes a + // default-constructed Input: a zero hash and index 0xFFFFFFFF, NOT index 0. + // (hsd `tx.js:313` `input = new Input()`, `outpoint.js:45`.) + if self.sighash_type & sighash_type::NOINPUT != 0 { + buf.extend_from_slice(&[0u8; 32]); + buf.extend_from_slice(&0xFFFF_FFFFu32.to_le_bytes()); + } else { + buf.extend_from_slice(&inp.outpoint.hash); + buf.extend_from_slice(&inp.outpoint.index.to_le_bytes()); + } + + write_varint(&mut buf, self.script_code.len() as u64); + buf.extend_from_slice(self.script_code); + buf.extend_from_slice(&self.value.to_le_bytes()); + // Sequence likewise comes from the substituted default Input under NOINPUT + // (hsd `input.js:47`), so it is 0xFFFFFFFF rather than this input's own value. + let sequence = if self.sighash_type & sighash_type::NOINPUT != 0 { + 0xFFFF_FFFFu32 + } else { + inp.sequence + }; + buf.extend_from_slice(&sequence.to_le_bytes()); + + buf.extend_from_slice(&self.hash_outputs()); + buf.extend_from_slice(&self.tx.locktime.to_le_bytes()); + buf.extend_from_slice(&(self.sighash_type as u32).to_le_bytes()); + + blake2b::blake2b_256(&buf) + } + + fn hash_prevouts(&self) -> [u8; 32] { + // ANYONECANPAY only. hsd deliberately does NOT nullify hashPrevouts for + // NOINPUT; see the comment at `tx.js:302-310`, which notes their NOINPUT + // "is not useful by itself" precisely because the outpoint stays committed + // to here. Zeroing this as well produces a digest mainnet rejects. + if self.sighash_type & sighash_type::ANYONECANPAY != 0 { + return [0u8; 32]; + } + let mut buf = Vec::with_capacity(self.tx.inputs.len() * 36); + for inp in self.tx.inputs { + buf.extend_from_slice(&inp.outpoint.hash); + buf.extend_from_slice(&inp.outpoint.index.to_le_bytes()); + } + blake2b::blake2b_256(&buf) + } + + fn hash_sequence(&self) -> [u8; 32] { + let base = base_type(self.sighash_type); + if self.sighash_type & sighash_type::ANYONECANPAY != 0 + || base == sighash_type::NONE + || base == sighash_type::SINGLE + || base == sighash_type::SINGLEREVERSE + { + return [0u8; 32]; + } + let mut buf = Vec::with_capacity(self.tx.inputs.len() * 4); + for inp in self.tx.inputs { + buf.extend_from_slice(&inp.sequence.to_le_bytes()); + } + blake2b::blake2b_256(&buf) + } + + fn hash_outputs(&self) -> [u8; 32] { + let base = base_type(self.sighash_type); + match base { + sighash_type::ALL => { + let mut buf = Vec::new(); + for out in self.tx.outputs { + serialize_output(&mut buf, out); + } + blake2b::blake2b_256(&buf) + } + sighash_type::SINGLE | sighash_type::SINGLEREVERSE => { + let idx = if base == sighash_type::SINGLEREVERSE { + self.tx + .outputs + .len() + .checked_sub(1) + .and_then(|last| last.checked_sub(self.input_index)) + } else { + Some(self.input_index) + }; + match idx.and_then(|i| self.tx.outputs.get(i)) { + Some(out) => { + let mut buf = Vec::new(); + serialize_output(&mut buf, out); + blake2b::blake2b_256(&buf) + } + None => [0u8; 32], + } + } + // NONE or anything unexpected: zeros. + _ => [0u8; 32], + } + } +} + +fn base_type(t: u8) -> u8 { + t & 0x1f +} + +fn write_varint(buf: &mut Vec, n: u64) { + if n < 0xfd { + buf.push(n as u8); + } else if n <= 0xffff { + buf.push(0xfd); + buf.extend_from_slice(&(n as u16).to_le_bytes()); + } else if n <= 0xffff_ffff { + buf.push(0xfe); + buf.extend_from_slice(&(n as u32).to_le_bytes()); + } else { + buf.push(0xff); + buf.extend_from_slice(&n.to_le_bytes()); + } +} + +fn serialize_output(buf: &mut Vec, out: &Output) { + buf.extend_from_slice(&out.value.to_le_bytes()); + serialize_address(buf, &out.address); + serialize_covenant(buf, &out.covenant); +} + +fn serialize_address(buf: &mut Vec, addr: &Address) { + // shd `Address.write`: version(1) || hashLen(1) || hash. + buf.push(0); // witness version 0 + match addr { + Address::P2WPKH(h) => { + buf.push(20); + buf.extend_from_slice(h); + } + Address::P2WSH(h) => { + buf.push(32); + buf.extend_from_slice(h); + } + } +} + +fn serialize_covenant(buf: &mut Vec, cov: &Covenant) { + buf.push(cov.kind); + write_varint(buf, cov.items.len() as u64); + for item in &cov.items { + write_varint(buf, item.len() as u64); + buf.extend_from_slice(item); + } +} diff --git a/src/handshake/tx.rs b/src/handshake/tx.rs new file mode 100644 index 0000000..7f05a39 --- /dev/null +++ b/src/handshake/tx.rs @@ -0,0 +1,66 @@ +//! Handshake transaction types. +//! +//! Mirrors `shd/Sources/Protocol/Transaction.swift` and +//! `shd/Sources/Protocol/Input.swift` byte layouts. +//! +//! These are views, not parsers: `SIGN_TX` receives the transaction as +//! structured records (one APDU per input and per output) rather than as a +//! serialized blob, so the device never parses a whole serialized transaction. +//! See `handlers::sign_tx`. + +use alloc::vec::Vec; + +/// Hash + index: the 36-byte outpoint reference inside an input. +#[derive(Clone, Copy, Debug)] +pub struct Outpoint { + pub hash: [u8; 32], + pub index: u32, +} + +/// 40 bytes on the wire: outpoint(36) + sequence(4 LE). +#[derive(Clone, Copy, Debug)] +pub struct Input { + pub outpoint: Outpoint, + pub sequence: u32, +} + +/// An output's covenant: empty for plain transfers, non-empty for name auctions. +/// We store the raw bytes so the sighash digest sees the exact serialization. +#[derive(Clone, Debug)] +pub struct Covenant { + pub kind: u8, + pub items: Vec>, +} + +impl Covenant { + pub fn is_none(&self) -> bool { + self.kind == 0 && self.items.is_empty() + } +} + +#[derive(Clone, Debug)] +pub struct Output { + pub value: u64, + /// Address in its on-chain form: `[version_byte, hash...]` (20 or 32 bytes payload). + pub address: Address, + pub covenant: Covenant, +} + +#[derive(Clone, Debug)] +pub enum Address { + P2WPKH([u8; 20]), + P2WSH([u8; 32]), +} + +/// A transaction as the sighash builder and the review screen see it. +/// +/// Borrows the session's input and output vectors rather than owning copies: +/// the device signs each input on demand, and cloning the whole transaction per +/// signature would double peak heap use at the worst possible moment. +#[derive(Clone, Copy, Debug)] +pub struct Tx<'a> { + pub version: u32, + pub inputs: &'a [Input], + pub outputs: &'a [Output], + pub locktime: u32, +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..d1fdf70 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,272 @@ +/***************************************************************************** + * Ledger App Boilerplate Rust. + * (c) 2023 Ledger SAS. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#![no_std] +#![no_main] + +mod handshake; +mod utils; +mod app_ui { + pub mod address; + pub mod menu; + pub mod message; + pub mod sign; +} +mod handlers { + pub mod get_public_key; + pub mod get_version; + pub mod sign_message; + pub mod sign_tx; +} + +mod swap; + +use app_ui::menu::ui_menu_main; +use handlers::{ + get_public_key::handler_get_public_key, + get_version::handler_get_version, + sign_message::handler_sign_message, + sign_tx::{ + handler_sign_add_input, handler_sign_add_output, handler_sign_begin, + handler_sign_input, handler_sign_review, TxContext, + }, +}; +use ledger_device_sdk::io::{self, init_comm, ApduHeader, Comm, Command, Reply, StatusWords}; +use ledger_device_sdk::libcall::swap::CreateTxParams; + +ledger_device_sdk::set_panic!(ledger_device_sdk::exiting_panic); + +// Required for using String, Vec, format!... +extern crate alloc; + +use ledger_device_sdk::nbgl::{NbglReviewStatus, StatusType}; + +ledger_device_sdk::define_comm!(COMM); + +// SIGN_TX sub-op P1 selectors. Reusing INS=0x06 as a command group and +// dispatching via P1 keeps the wire format simple and backwards-familiar. +const P1_SIGN_BEGIN: u8 = 0x00; // payload: tx_version||n_in||n_out||locktime +const P1_SIGN_ADD_INPUT: u8 = 0x01; // payload: prevout||seq||value||sighash||path||kind +const P1_SIGN_ADD_OUTPUT: u8 = 0x02; // payload: output bytes (chunked, P2 = MORE/LAST) +const P1_SIGN_REVIEW: u8 = 0x03; // payload: empty +const P1_SIGN_INPUT: u8 = 0x04; // payload: input_index(4 BE) + +// P2 for ADD_OUTPUT chunking. +const P2_LAST: u8 = 0x00; +const P2_MORE: u8 = 0x80; + +// Application status words. +#[repr(u16)] +#[derive(Clone, Copy, PartialEq)] +pub enum AppSW { + Deny = 0x6985, + WrongP1P2 = 0x6A86, + WrongState = 0x6B00, + InsNotSupported = 0x6D00, + ClaNotSupported = 0x6E00, + CommError = 0x6F00, + TxDisplayFail = 0xB001, + AddrDisplayFail = 0xB002, + TxWrongLength = 0xB004, + TxParsingFail = 0xB005, + TxHashFail = 0xB006, + TxSignFail = 0xB008, + KeyDeriveFail = 0xB009, + VersionParsingFail = 0xB00A, + /// Derivation path outside Handshake's BIP-44 policy. Returned instead of + /// letting BOLOS terminate the app on an out-of-whitelist path. + BadDerivationPath = 0xB00B, + WrongApduLength = StatusWords::BadLen as u16, + SwapFail = 0xC000, + Ok = 0x9000, +} + +impl From for Reply { + fn from(sw: AppSW) -> Reply { + Reply(sw as u16) + } +} + +impl From for AppSW { + fn from(_e: io::CommError) -> Self { + AppSW::CommError + } +} + +/// Possible input commands received through APDUs. +#[derive(Debug)] +pub enum Instruction { + GetVersion, + GetAppName, + GetPubkey { display: bool }, + SignBegin, + SignAddInput, + SignAddOutput { more: bool }, + SignReview, + SignInput, + SignMessage, +} + +impl TryFrom for Instruction { + type Error = AppSW; + + /// Parse INS/P1/P2 into an [`Instruction`]. CLA is filtered separately + /// by `Comm::set_expected_cla(0xe0)` in `normal_main`. + fn try_from(value: ApduHeader) -> Result { + match (value.ins, value.p1, value.p2) { + (3, 0, 0) => Ok(Instruction::GetVersion), + (4, 0, 0) => Ok(Instruction::GetAppName), + (5, 0 | 1, 0) => Ok(Instruction::GetPubkey { + display: value.p1 != 0, + }), + (6, P1_SIGN_BEGIN, 0) => Ok(Instruction::SignBegin), + (6, P1_SIGN_ADD_INPUT, 0) => Ok(Instruction::SignAddInput), + (6, P1_SIGN_ADD_OUTPUT, P2_LAST) => Ok(Instruction::SignAddOutput { more: false }), + (6, P1_SIGN_ADD_OUTPUT, P2_MORE) => Ok(Instruction::SignAddOutput { more: true }), + (6, P1_SIGN_REVIEW, 0) => Ok(Instruction::SignReview), + (6, P1_SIGN_INPUT, 0) => Ok(Instruction::SignInput), + (7, 0, 0) => Ok(Instruction::SignMessage), + (3..=7, _, _) => Err(AppSW::WrongP1P2), + (_, _, _) => Err(AppSW::InsNotSupported), + } + } +} + +fn show_status_and_home_if_needed( + comm: &mut Comm, + ins: &Instruction, + tx_ctx: &mut TxContext, + status: &AppSW, +) { + if tx_ctx.swap_params.is_some() { + return; + } + let success = *status == AppSW::Ok; + match (ins, status) { + (Instruction::GetPubkey { display: true }, AppSW::Deny | AppSW::Ok) => { + // Address-verify success screen (3s auto-dismiss) then home. + NbglReviewStatus::new() + .status_type(StatusType::Address) + .show(comm, success); + tx_ctx.home.show_and_return(); + } + (Instruction::SignReview, AppSW::Deny | AppSW::Ok) if tx_ctx.finished() => { + // Tx review done (user approved or rejected). Go straight to + // home without the NbglReviewStatus success screen: on BLE its + // sync wait can fail to auto-dismiss and block the next APDU. + // The wallet shows its own success UI once broadcast completes. + tx_ctx.home.show_and_return(); + } + (Instruction::SignMessage, AppSW::Deny | AppSW::Ok) => { + // Same reason as the SignReview branch above. + tx_ctx.home.show_and_return(); + } + _ => {} + } +} + +// --8<-- [start:sample_main] +#[no_mangle] +extern "C" fn sample_main(arg0: u32) { + if arg0 != 0 { + // We have been started by the Exchange application through the os_lib_call API + // We need to answer the command instead of starting the normal app main loop + swap::swap_main(arg0); + } else { + // Normal app mode, start the main loop listening for APDU commands + normal_main(None); + } +} +// --8<-- [end:sample_main] + +/// Main application entry point. +/// +/// Handles both standard execution (user opens app) and library mode execution +/// (Exchange app calls this app for swap). +/// +/// # Arguments +/// +/// * `swap_params` - Optional swap parameters. If present, the app runs in "swap mode": +/// - UI is bypassed (no main menu, no transaction review) +/// - Transaction is validated against swap params +/// - Returns `true` if signed successfully, `false` otherwise +pub fn normal_main(swap_params: Option<&CreateTxParams>) -> bool { + // Create the communication manager, and configure it to accept only APDU from the 0xe0 class. + // If any APDU with a wrong class value is received, comm will respond automatically with + // BadCla status word. + let comm = init_comm(&COMM); + comm.set_expected_cla(0xe0); + + let mut tx_ctx = if let Some(params) = swap_params { + TxContext::new_with_swap(params) + } else { + TxContext::new() + }; + + if swap_params.is_none() { + tx_ctx.home = ui_menu_main(comm); + tx_ctx.home.show_and_return(); + } + + loop { + let command = comm.next_command(); + let decoded = command.decode::(); + let Ok(ins) = decoded else { + let _ = comm.send(&[], decoded.unwrap_err()); + continue; + }; + + let _status = match handle_apdu(command, &ins, &mut tx_ctx) { + Ok(reply) => { + let _ = reply.send(AppSW::Ok); + AppSW::Ok + } + Err(sw) => { + let _ = comm.send(&[], sw); + sw + } + }; + show_status_and_home_if_needed(comm, &ins, &mut tx_ctx, &_status); + + // In swap mode, exit after transaction is finished (signed or rejected) + if tx_ctx.swap_params.is_some() && tx_ctx.finished() { + return _status == AppSW::Ok; + } + } +} + +fn handle_apdu<'a>( + command: Command<'a>, + ins: &Instruction, + ctx: &mut TxContext, +) -> Result, AppSW> { + match ins { + Instruction::GetAppName => { + let mut response = command.into_response(); + response.append(b"Handshake")?; + Ok(response) + } + Instruction::GetVersion => handler_get_version(command), + Instruction::GetPubkey { display } => handler_get_public_key(command, *display), + Instruction::SignBegin => handler_sign_begin(command, ctx), + Instruction::SignAddInput => handler_sign_add_input(command, ctx), + Instruction::SignAddOutput { more } => handler_sign_add_output(command, *more, ctx), + Instruction::SignReview => handler_sign_review(command, ctx), + Instruction::SignInput => handler_sign_input(command, ctx), + Instruction::SignMessage => handler_sign_message(command, ctx), + } +} diff --git a/src/swap.rs b/src/swap.rs new file mode 100644 index 0000000..812d2a7 --- /dev/null +++ b/src/swap.rs @@ -0,0 +1,18 @@ +//! Ledger Exchange (atomic swap) integration: v0.1 stub. +//! +//! When the Exchange app calls our app via `os_lib_call`, we land in `swap_main`. +//! For v0.1 we don't support being driven by Exchange yet: just return without +//! doing anything so the host falls back to normal flow / surfaces the failure. +//! +//! Note `handler_sign_review` refuses outright when `swap_params` is set, +//! rather than auto-approving: whoever wires Exchange up has to add the +//! validation against `CreateTxParams` deliberately, and cannot inherit an +//! unreviewed signature by accident. +//! +//! TODO: implement `SwapCheckAddress` (re-derive our bech32 from the BIP-32 path +//! and compare), `SwapGetPrintableAmount` (format dollarydoos as `X.YYYYYY HNS`), and +//! `SwapSignTransaction` (forward to `normal_main` with `swap_params=Some(...)`). + +pub fn swap_main(_arg0: u32) { + // no-op for v0.1 +} diff --git a/src/utils.rs b/src/utils.rs new file mode 100644 index 0000000..eff696a --- /dev/null +++ b/src/utils.rs @@ -0,0 +1,158 @@ +use alloc::format; +use alloc::string::String; +use alloc::vec::Vec; + +use crate::handshake::SLIP44_COIN_TYPE; +use crate::AppSW; + +/// Hardened-derivation bit. +const HARDENED: u32 = 0x8000_0000; + +/// Upper bound on BIP-32 path components accepted from the host. +pub const MAX_PATH_COMPONENTS: usize = 10; +use ledger_device_sdk::ecc::{Secp256k1, SeedDerive}; + +/// BIP32 derivation path stored as a vector of u32 components. +/// +/// Each component represents one level in the path (e.g., m/44'/1'/0'/0/0 has 5 components). +/// Hardened derivation is indicated by setting the high bit (>= 0x80000000). +#[derive(Default, Clone)] +pub struct Bip32Path(Vec); + +impl AsRef<[u32]> for Bip32Path { + fn as_ref(&self) -> &[u32] { + &self.0 + } +} + +impl Bip32Path { + /// Build a path from already-parsed u32 components (hardened bits + /// already set by the caller where appropriate). Used by the new + /// `SIGN_TX` state machine's `ADD_INPUT` handler, which parses the + /// path words off the wire itself and doesn't go through `TryFrom`. + pub fn from_raw(components: &[u32]) -> Result { + if components.is_empty() || components.len() > MAX_PATH_COMPONENTS { + return Err(AppSW::WrongApduLength); + } + Ok(Bip32Path(components.to_vec())) + } +} + +impl TryFrom<&[u8]> for Bip32Path { + type Error = AppSW; + + /// Constructs a [`Bip32Path`] from APDU-encoded bytes. + /// + /// # Format + /// + /// - First byte: Number of path components (e.g., 5 for m/44'/1'/0'/0/0) + /// - Remaining bytes: Big-endian u32 components (4 bytes each) + /// + /// # Example + /// + /// For path m/44'/1'/0'/0/0: + /// ```text + /// [0x05, 0x8000002C, 0x80000001, 0x80000000, 0x00000000, 0x00000000] + /// ``` + /// + fn try_from(data: &[u8]) -> Result { + // Check data length + if data.is_empty() // At least the length byte is required + || (data[0] as usize * 4 != data.len() - 1) + { + return Err(AppSW::WrongApduLength); + } + // Same ceiling as `from_raw`: without it the APDU buffer alone would + // admit 66 components. + if data[0] == 0 || data[0] as usize > MAX_PATH_COMPONENTS { + return Err(AppSW::WrongApduLength); + } + + Ok(Bip32Path( + data[1..] + .chunks(4) + .map(|chunk| u32::from_be_bytes(chunk.try_into().unwrap())) + .collect(), + )) + } +} + +/// Derive the raw public key from a BIP32 path. +/// +/// Returns the uncompressed secp256k1 public key (65 bytes): +/// - First byte: 0x04 (uncompressed marker) +/// - Next 32 bytes: X coordinate +/// - Last 32 bytes: Y coordinate +/// +/// # Used by +/// +/// - `handler_get_public_key`: Returns this raw pubkey to the client +/// - Internally for address computation +/// +/// # Arguments +/// +/// * `path` - BIP32 derivation path +/// +/// # Returns +/// +/// 65-byte uncompressed public key or error +pub fn get_pubkey_from_path(path: &Bip32Path) -> Result<[u8; 65], AppSW> { + let (k, _) = Secp256k1::derive_from(path.as_ref()); + let pk = k.public_key().map_err(|_| AppSW::KeyDeriveFail)?; + Ok(pk.pubkey) +} + +/// Enforce Handshake's BIP-44 path policy: `m/44'/'/account'` with an +/// optional `/change/index` beneath it, where `` is one of the four +/// networks (5353' mainnet through 5356' simnet). +/// +/// The install manifest whitelists the same four prefixes, but BOLOS does not +/// return an error for a derivation outside them: it terminates the app. A host +/// could otherwise kill the app with a single request and strand a partially +/// streamed signing session with no status word back to the wallet. Checking +/// here turns that into an ordinary reply, and keeps `SLIP44_COIN_TYPE` the one +/// source of truth so the manifest and the code cannot drift apart. +pub fn validate_path(path: &Bip32Path) -> Result<(), AppSW> { + let words = path.as_ref(); + if !(3..=5).contains(&words.len()) { + return Err(AppSW::BadDerivationPath); + } + if words[0] != (HARDENED | 44) { + return Err(AppSW::BadDerivationPath); + } + let coin = words[1]; + if !((HARDENED | SLIP44_COIN_TYPE)..=(HARDENED | (SLIP44_COIN_TYPE + 3))).contains(&coin) { + return Err(AppSW::BadDerivationPath); + } + if words[2] & HARDENED == 0 { + return Err(AppSW::BadDerivationPath); + } + // change and index are non-hardened under BIP-44. + if words[3..].iter().any(|c| c & HARDENED != 0) { + return Err(AppSW::BadDerivationPath); + } + Ok(()) +} + +/// The coin-type component, which selects the network. Callers have already +/// passed `validate_path`, so it is always present. +pub fn coin_type(path: &Bip32Path) -> u32 { + path.as_ref().get(1).copied().unwrap_or(0) +} + +/// Render a path the way a user reads it: `m/44'/5353'/0'/0/0`. +/// +/// Shown on every approval screen. Without it a user confirming "their" address +/// cannot tell account 0 from account 99, nor a legitimate index from one the +/// host substituted. +pub fn format_path(path: &Bip32Path) -> String { + let mut out = String::from("m"); + for component in path.as_ref() { + out.push('/'); + out.push_str(&format!("{}", component & !HARDENED)); + if component & HARDENED != 0 { + out.push('\''); + } + } + out +} diff --git a/tests/Dockerfile b/tests/Dockerfile new file mode 100644 index 0000000..dd69152 --- /dev/null +++ b/tests/Dockerfile @@ -0,0 +1,13 @@ +# Test runner: Ledger's dev-tools image (speculos) plus ragger. +# +# The upstream image ships speculos but not ragger, and its system Python is +# PEP-668 managed, so ragger goes into the same venv speculos lives in. +# +# Built and run by ../scripts/test. +FROM ghcr.io/ledgerhq/ledger-app-builder/ledger-app-dev-tools:latest + +COPY standalone/requirements.txt /tmp/requirements.txt +RUN /opt/venv/bin/pip install --no-cache-dir -r /tmp/requirements.txt \ + && rm /tmp/requirements.txt + +ENV PATH="/opt/venv/bin:${PATH}" diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 0000000..4649a4e --- /dev/null +++ b/tests/README.md @@ -0,0 +1,45 @@ +# Functional tests + +`application_client/` is the Python client: APDU encoding, transaction and +covenant builders, response unpackers, and an independent reimplementation of +the Handshake sighash used to cross-check the device's signatures. + +`standalone/` holds the tests, run against the app started from the device +dashboard. There is no swap test directory: swap is not implemented (see +`src/swap.rs`), and `handler_sign_review` refuses outright when swap parameters +are present rather than auto-approving. + +## Running + +```sh +../scripts/test # stax +../scripts/test nanosp # or flex / nanox / apex_p +``` + +Speculos does not run natively on macOS, so `scripts/test` runs it and ragger in +a container built from `Dockerfile` here, on top of Ledger's dev-tools image. +That image ships speculos but not ragger, and its system Python is PEP-668 +managed, so ragger is installed into the same venv speculos lives in. + +All five devices pass. To run pytest directly instead (on Linux, with ragger +installed): + +```sh +pip install -r standalone/requirements.txt +pytest standalone --tb=short -v --device stax +``` + +## Snapshots + +UI tests compare against golden PNGs under +`standalone/snapshots///`. Regenerate with +`../scripts/test --golden_run`, or through the "Build and run +functional tests" workflow with `golden_run` set to "Open a PR". Read the diff +before committing one: those images are the record of what the user is shown +before they approve a signature. + +`standalone/test_sign_tx_policy.py` deliberately needs none of them: every case +there is refused before the device draws anything. + +`standalone/review_nav.py` explains why the approval path drives the navigator +directly instead of using `scenario_navigator.review_approve()`. diff --git a/tests/application_client/README.md b/tests/application_client/README.md new file mode 100644 index 0000000..a4216d3 --- /dev/null +++ b/tests/application_client/README.md @@ -0,0 +1,16 @@ +# Application client + +A small Python client for the Handshake Ledger app: enough to send APDUs, +build the records `SIGN_TX` streams, and decode what comes back. + +- `handshake_command_sender.py`: APDU encoding and the `SIGN_TX` state machine + (BEGIN / ADD_INPUT / ADD_OUTPUT / REVIEW / SIGN_INPUT), plus the status words + from `src/main.rs::AppSW`. +- `handshake_transaction.py`: payload builders and the covenant item layouts + from `shd/Sources/Covenants/CovenantData.swift`. +- `handshake_response_unpacker.py`: response decoding. Note the app returns + **compressed** 33-byte public keys. +- `handshake_sighash.py`: an independent BIP-143-style sighash over BLAKE2b-256, + written separately from the device's implementation so that a test failure + means the two disagree rather than that one implementation is self-consistent. +- `py.typed`: marker for type checkers. diff --git a/tests/application_client/__init__.py b/tests/application_client/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/application_client/handshake_command_sender.py b/tests/application_client/handshake_command_sender.py new file mode 100644 index 0000000..43c1b65 --- /dev/null +++ b/tests/application_client/handshake_command_sender.py @@ -0,0 +1,150 @@ +"""APDU client for the Handshake Ledger app. + +Speaks the protocol the app actually implements: `SIGN_TX` is a state machine +selected by P1 (BEGIN / ADD_INPUT / ADD_OUTPUT / REVIEW / SIGN_INPUT), not the +chunked single-shot flow the Ledger boilerplate uses. See +`src/handlers/sign_tx.rs` and `scripts/sign-tx`. +""" + +from contextlib import contextmanager +from enum import IntEnum +from typing import Generator, List, Optional + +from ragger.backend.interface import BackendInterface, RAPDU +from ragger.bip import pack_derivation_path + +CLA: int = 0xE0 + +#: Data bytes per APDU. ADD_OUTPUT payloads above this are chunked with P2_MORE. +MAX_APDU_DATA: int = 240 + + +class InsType(IntEnum): + GET_VERSION = 0x03 + GET_APP_NAME = 0x04 + GET_PUBLIC_KEY = 0x05 + SIGN_TX = 0x06 + SIGN_MESSAGE = 0x07 + + +class P1(IntEnum): + NONE = 0x00 + #: GET_PUBLIC_KEY: show the address on-device before replying. + CONFIRM = 0x01 + #: SIGN_TX sub-ops. + SIGN_BEGIN = 0x00 + SIGN_ADD_INPUT = 0x01 + SIGN_ADD_OUTPUT = 0x02 + SIGN_REVIEW = 0x03 + SIGN_INPUT = 0x04 + + +class P2(IntEnum): + LAST = 0x00 + MORE = 0x80 + + +class Errors(IntEnum): + """Mirrors `AppSW` in src/main.rs.""" + + SW_DENY = 0x6985 + SW_WRONG_P1P2 = 0x6A86 + SW_WRONG_STATE = 0x6B00 + SW_INS_NOT_SUPPORTED = 0x6D00 + SW_CLA_NOT_SUPPORTED = 0x6E00 + SW_COMM_ERROR = 0x6F00 + SW_TX_DISPLAY_FAIL = 0xB001 + SW_ADDR_DISPLAY_FAIL = 0xB002 + SW_TX_WRONG_LENGTH = 0xB004 + SW_TX_PARSING_FAIL = 0xB005 + SW_TX_HASH_FAIL = 0xB006 + SW_TX_SIGN_FAIL = 0xB008 + SW_KEY_DERIVE_FAIL = 0xB009 + SW_VERSION_PARSING_FAIL = 0xB00A + SW_BAD_DERIVATION_PATH = 0xB00B + SW_SWAP_FAIL = 0xC000 + + +def split_message(message: bytes, max_size: int) -> List[bytes]: + return [message[x:x + max_size] for x in range(0, len(message), max_size)] + + +class HandshakeCommandSender: + def __init__(self, backend: BackendInterface) -> None: + self.backend = backend + + # ── Simple queries ───────────────────────────────────────────────────── + + def get_version(self) -> RAPDU: + return self.backend.exchange(cla=CLA, ins=InsType.GET_VERSION, + p1=P1.NONE, p2=P2.LAST, data=b"") + + def get_app_name(self) -> RAPDU: + return self.backend.exchange(cla=CLA, ins=InsType.GET_APP_NAME, + p1=P1.NONE, p2=P2.LAST, data=b"") + + def get_public_key(self, path: str) -> RAPDU: + return self.backend.exchange(cla=CLA, ins=InsType.GET_PUBLIC_KEY, + p1=P1.NONE, p2=P2.LAST, + data=pack_derivation_path(path)) + + @contextmanager + def get_public_key_with_confirmation(self, path: str) -> Generator[None, None, None]: + with self.backend.exchange_async(cla=CLA, ins=InsType.GET_PUBLIC_KEY, + p1=P1.CONFIRM, p2=P2.LAST, + data=pack_derivation_path(path)) as response: + yield response + + # ── SIGN_TX state machine ────────────────────────────────────────────── + + def sign_tx_begin(self, payload: bytes) -> RAPDU: + return self.backend.exchange(cla=CLA, ins=InsType.SIGN_TX, + p1=P1.SIGN_BEGIN, p2=P2.LAST, data=payload) + + def sign_tx_add_input(self, payload: bytes) -> RAPDU: + return self.backend.exchange(cla=CLA, ins=InsType.SIGN_TX, + p1=P1.SIGN_ADD_INPUT, p2=P2.LAST, data=payload) + + def sign_tx_add_output(self, payload: bytes) -> RAPDU: + """Send one output, chunking it across APDUs if needed.""" + chunks = split_message(payload, MAX_APDU_DATA) or [b""] + rapdu = None + for i, chunk in enumerate(chunks): + p2 = P2.LAST if i == len(chunks) - 1 else P2.MORE + rapdu = self.backend.exchange(cla=CLA, ins=InsType.SIGN_TX, + p1=P1.SIGN_ADD_OUTPUT, p2=p2, data=chunk) + return rapdu + + def sign_tx_review_sync(self) -> RAPDU: + """REVIEW without a navigator: only for cases the device rejects + before it puts anything on screen.""" + return self.backend.exchange(cla=CLA, ins=InsType.SIGN_TX, + p1=P1.SIGN_REVIEW, p2=P2.LAST, data=b"") + + @contextmanager + def sign_tx_review(self) -> Generator[None, None, None]: + """REVIEW: blocks on the user, so the caller drives the navigator.""" + with self.backend.exchange_async(cla=CLA, ins=InsType.SIGN_TX, + p1=P1.SIGN_REVIEW, p2=P2.LAST, + data=b"") as response: + yield response + + def sign_tx_input(self, index: int) -> RAPDU: + return self.backend.exchange(cla=CLA, ins=InsType.SIGN_TX, + p1=P1.SIGN_INPUT, p2=P2.LAST, + data=index.to_bytes(4, "big")) + + # ── SIGN_MESSAGE ─────────────────────────────────────────────────────── + + @contextmanager + def sign_message(self, path: str, message: bytes) -> Generator[None, None, None]: + payload = (pack_derivation_path(path) + + len(message).to_bytes(2, "little") + + message) + with self.backend.exchange_async(cla=CLA, ins=InsType.SIGN_MESSAGE, + p1=P1.NONE, p2=P2.LAST, + data=payload) as response: + yield response + + def get_async_response(self) -> Optional[RAPDU]: + return self.backend.last_async_response diff --git a/tests/application_client/handshake_response_unpacker.py b/tests/application_client/handshake_response_unpacker.py new file mode 100644 index 0000000..028a8b5 --- /dev/null +++ b/tests/application_client/handshake_response_unpacker.py @@ -0,0 +1,63 @@ +"""Response unpackers for the Handshake Ledger app. + +The app returns COMPRESSED (33-byte) secp256k1 public keys, unlike the Ledger +boilerplate, which returns the 65-byte uncompressed form. +""" + +from struct import unpack +from typing import Tuple + + +def _pop_sized(buffer: bytes, size: int) -> Tuple[bytes, bytes]: + return buffer[size:], buffer[0:size] + + +def _pop_len_prefixed(buffer: bytes) -> Tuple[bytes, bytes]: + n = buffer[0] + return buffer[1 + n:], buffer[1:n + 1] + + +def compress_pubkey(uncompressed: bytes) -> bytes: + """65-byte `04 || X || Y` to 33-byte `02|03 || X`.""" + assert len(uncompressed) == 65 and uncompressed[0] == 0x04 + prefix = 0x02 if uncompressed[64] % 2 == 0 else 0x03 + return bytes([prefix]) + uncompressed[1:33] + + +def unpack_get_app_name_response(response: bytes) -> str: + return response.decode("ascii") + + +def unpack_get_version_response(response: bytes) -> Tuple[int, int, int]: + assert len(response) == 3 + major, minor, patch = unpack("BBB", response) + return (major, minor, patch) + + +def unpack_get_public_key_response(response: bytes) -> Tuple[bytes, bytes, str]: + """`pk_len(1) || pk(33) || cc_len(1) || cc(32) || addr_len(1) || addr`.""" + response, pubkey = _pop_len_prefixed(response) + response, chaincode = _pop_len_prefixed(response) + response, address = _pop_len_prefixed(response) + + assert len(pubkey) == 33, f"expected a compressed pubkey, got {len(pubkey)} bytes" + assert len(chaincode) == 32 + assert len(response) == 0 + return pubkey, chaincode, address.decode("ascii") + + +def unpack_sign_input_response(response: bytes) -> Tuple[bytes, int, bytes]: + """`sig(64) || sighash_type(1) || pk_len(1) || pk(33)`.""" + response, signature = _pop_sized(response, 64) + response, sighash = _pop_sized(response, 1) + response, pubkey = _pop_len_prefixed(response) + + assert len(pubkey) == 33 + assert len(response) == 0 + return signature, sighash[0], pubkey + + +def unpack_sign_message_response(response: bytes) -> Tuple[int, bytes, bytes]: + """`recovery_id(1) || sig(64) || pk(33)`, 98 bytes.""" + assert len(response) == 98, f"expected 98 bytes, got {len(response)}" + return response[0], response[1:65], response[65:] diff --git a/tests/application_client/handshake_sighash.py b/tests/application_client/handshake_sighash.py new file mode 100644 index 0000000..5383965 --- /dev/null +++ b/tests/application_client/handshake_sighash.py @@ -0,0 +1,85 @@ +"""An independent BIP-143-style sighash for Handshake, for cross-checking the +device's signatures. + +Deliberately a second implementation rather than a port of the device's: a test +that reuses the code under test proves only that it is self-consistent. Field +order and lengths follow `shd/Sources/Script/SigHash.swift::compute`. +""" + +from hashlib import blake2b +from typing import List, Sequence, Tuple + + +def encode_varint(n: int) -> bytes: + """Deliberately duplicated rather than imported: this module is meant to be + an independent check, and it keeps the cross-check importable without ragger.""" + if n < 0xFD: + return bytes([n]) + if n <= 0xFFFF: + return b"\xfd" + n.to_bytes(2, "little") + if n <= 0xFFFFFFFF: + return b"\xfe" + n.to_bytes(4, "little") + return b"\xff" + n.to_bytes(8, "little") + + +def blake2b_256(data: bytes) -> bytes: + return blake2b(data, digest_size=32).digest() + + +def blake2b_160(data: bytes) -> bytes: + return blake2b(data, digest_size=20).digest() + + +def p2wpkh_script_code(compressed_pubkey: bytes) -> bytes: + """OP_DUP OP_BLAKE160 OP_EQUALVERIFY OP_CHECKSIG. + + Handshake uses OP_BLAKE160 (0xc0) where Bitcoin uses OP_HASH160 (0xa9). + """ + return (b"\x76\xc0\x14" + + blake2b_160(compressed_pubkey) + + b"\x88\xac") + + +def serialize_output(value: int, + addr_hash: bytes, + addr_version: int = 0, + covenant_kind: int = 0, + covenant_items: Sequence[bytes] = ()) -> bytes: + items = b"".join(encode_varint(len(i)) + i for i in covenant_items) + return (value.to_bytes(8, "little") + + bytes([addr_version, len(addr_hash)]) + + addr_hash + + bytes([covenant_kind]) + + encode_varint(len(covenant_items)) + + items) + + +def sighash_all(version: int, + inputs: List[Tuple[bytes, int, int]], + outputs: List[bytes], + locktime: int, + index: int, + script_code: bytes, + value: int) -> bytes: + """SIGHASH_ALL only, which is the one type the device signs. + + `inputs` are (txid, vout, sequence); `outputs` are pre-serialized. + """ + hash_prevouts = blake2b_256(b"".join( + txid + vout.to_bytes(4, "little") for txid, vout, _ in inputs)) + hash_sequence = blake2b_256(b"".join( + seq.to_bytes(4, "little") for _, _, seq in inputs)) + hash_outputs = blake2b_256(b"".join(outputs)) + + txid, vout, sequence = inputs[index] + preimage = (version.to_bytes(4, "little") + + hash_prevouts + + hash_sequence + + txid + vout.to_bytes(4, "little") + + encode_varint(len(script_code)) + script_code + + value.to_bytes(8, "little") + + sequence.to_bytes(4, "little") + + hash_outputs + + locktime.to_bytes(4, "little") + + (0x01).to_bytes(4, "little")) + return blake2b_256(preimage) diff --git a/tests/application_client/handshake_transaction.py b/tests/application_client/handshake_transaction.py new file mode 100644 index 0000000..d898db7 --- /dev/null +++ b/tests/application_client/handshake_transaction.py @@ -0,0 +1,118 @@ +"""Builders for the structured records SIGN_TX streams to the device. + +Wire layouts are documented at the top of `src/handlers/sign_tx.rs`; the +covenant item layouts mirror `shd/Sources/Covenants/CovenantData.swift`. +""" + +from hashlib import sha3_256 +from typing import List, Sequence, Tuple + +from ragger.bip import pack_derivation_path + +SCRIPT_KIND_P2WPKH: int = 0x00 +SCRIPT_KIND_P2WSH: int = 0x01 + +SIGHASH_ALL: int = 0x01 +SIGHASH_NONE: int = 0x02 +SIGHASH_SINGLE: int = 0x03 +SIGHASH_SINGLEREVERSE: int = 0x04 +SIGHASH_NOINPUT: int = 0x40 +SIGHASH_ANYONECANPAY: int = 0x80 + +# Covenant types, matching shd/Sources/Protocol/CovenantType.swift. +COVENANT_NONE: int = 0 +COVENANT_CLAIM: int = 1 +COVENANT_OPEN: int = 2 +COVENANT_BID: int = 3 +COVENANT_REVEAL: int = 4 +COVENANT_REDEEM: int = 5 +COVENANT_REGISTER: int = 6 +COVENANT_UPDATE: int = 7 +COVENANT_RENEW: int = 8 +COVENANT_TRANSFER: int = 9 +COVENANT_FINALIZE: int = 10 +COVENANT_REVOKE: int = 11 + + +def encode_varint(n: int) -> bytes: + if n < 0xFD: + return bytes([n]) + if n <= 0xFFFF: + return b"\xfd" + n.to_bytes(2, "little") + if n <= 0xFFFFFFFF: + return b"\xfe" + n.to_bytes(4, "little") + return b"\xff" + n.to_bytes(8, "little") + + +def name_hash(name: bytes) -> bytes: + """`shd` NameRules.hashName: SHA3-256, not Keccak.""" + return sha3_256(name).digest() + + +def begin_payload(n_in: int, n_out: int, version: int = 0, locktime: int = 0) -> bytes: + return (version.to_bytes(4, "little") + + encode_varint(n_in) + + encode_varint(n_out) + + locktime.to_bytes(4, "little")) + + +def input_payload(path: str, + value: int, + txid: bytes = b"\x11" * 32, + vout: int = 0, + sequence: int = 0xFFFFFFFF, + sighash: int = SIGHASH_ALL, + script_kind: int = SCRIPT_KIND_P2WPKH) -> bytes: + assert len(txid) == 32 + return (txid + + vout.to_bytes(4, "little") + + sequence.to_bytes(4, "little") + + value.to_bytes(8, "little") + + bytes([sighash]) + + pack_derivation_path(path) + + bytes([script_kind])) + + +def output_payload(value: int, + addr_hash: bytes = b"\x22" * 20, + addr_version: int = 0, + covenant_kind: int = COVENANT_NONE, + covenant_items: Sequence[bytes] = ()) -> bytes: + items = b"".join(encode_varint(len(i)) + i for i in covenant_items) + return (value.to_bytes(8, "little") + + bytes([addr_version, len(addr_hash)]) + + addr_hash + + bytes([covenant_kind]) + + encode_varint(len(covenant_items)) + + items) + + +def uint32_le(n: int) -> bytes: + return n.to_bytes(4, "little") + + +def open_items(name: bytes) -> List[bytes]: + """OPEN: [nameHash, height, name] (CovenantData.makeOpen).""" + return [name_hash(name), uint32_le(0), name] + + +def bid_items(name: bytes, height: int = 0, blind: bytes = b"\x33" * 32) -> List[bytes]: + """BID: [nameHash, startHeight, name, blind] (CovenantData.makeBid).""" + return [name_hash(name), uint32_le(height), name, blind] + + +def reveal_items(name: bytes, height: int = 0, nonce: bytes = b"\x44" * 32) -> List[bytes]: + """REVEAL: [nameHash, startHeight, nonce]. Carries no plaintext name.""" + return [name_hash(name), uint32_le(height), nonce] + + +def transfer_items(name: bytes, + dest_hash: bytes, + height: int = 0, + dest_version: int = 0) -> List[bytes]: + """TRANSFER: [nameHash, startHeight, [version], addressHash]. + + `items[3]` is the address the name is handed to, which is the whole point + of the covenant and appears nowhere else in the output. + """ + return [name_hash(name), uint32_le(height), bytes([dest_version]), dest_hash] diff --git a/tests/application_client/py.typed b/tests/application_client/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/tests/setup.cfg b/tests/setup.cfg new file mode 100644 index 0000000..7d3bb78 --- /dev/null +++ b/tests/setup.cfg @@ -0,0 +1,28 @@ +[tool:pytest] +addopts = --strict-markers + +[pylint] +disable = C0114, # missing-module-docstring + C0115, # missing-class-docstring + C0116, # missing-function-docstring + C0103, # invalid-name + C0411, # wrong-import-order + C0301, # line-too-long + C0303, # trailing-whitespace + C0415, # import-outside-toplevel + R0801, # duplicate-code + R0903, # too-few-public-methods + R0913, # too-many-arguments + W0511, # fixme (TODO comments) + W0611, # unused-import + W0612, # unused-variable + W0613, # unused-argument + W0621, # redefined-outer-name + W1309, # f-string-without-interpolation + W1510, # subprocess-run-check + E0401 # import-error +max-line-length=100 +extension-pkg-whitelist=hid + +[pycodestyle] +max-line-length = 100 diff --git a/tests/standalone/README.md b/tests/standalone/README.md new file mode 100644 index 0000000..63f8120 --- /dev/null +++ b/tests/standalone/README.md @@ -0,0 +1,35 @@ +# Standalone Functional Tests + +This directory contains the **standalone functional test suite** for the Ledger application. +It is intended to validate the application’s behavior in a **generic context**, when launched directly from the device's dashboard. + +These tests are written using: + +- [pytest](https://docs.pytest.org/en/stable/): Python testing framework +- [Ragger](https://github.com/LedgerHQ/ragger): Ledger's open-source testing library for simulating device interactions + +--- + +## Purpose + +The standalone test suite ensures that: + +- The application launches correctly from the dashboard +- The main menu and navigation behave as expected +- Core commands (e.g., `GET_VERSION`, `GET_PUBLIC_KEY`, `SIGN_TX`) function properly +- User approval flows work under normal conditions +- Errors are correctly reported and handled + +--- + +## Directory Structure + +```text +standalone/ +├── conftest.py # Pytest fixtures and device setup +├── test_*.py # Functional test cases +├── snapshots/ # Ragger UI snapshots +├── snapshots-tmp/ # Temporary snapshot diffs (not tracked in git) +├── requirements.txt # Python dependencies +└── utils.py # Local test helpers +``` diff --git a/tests/standalone/__init__.py b/tests/standalone/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/standalone/conftest.py b/tests/standalone/conftest.py new file mode 100644 index 0000000..04e78ab --- /dev/null +++ b/tests/standalone/conftest.py @@ -0,0 +1,31 @@ +from ragger.conftest import configuration +from ragger.navigator import NavInsID +import pytest +########################### +### CONFIGURATION START ### +########################### + +# You can configure optional parameters by overriding the value of ragger.configuration.OPTIONAL_CONFIGURATION +# Please refer to ragger/conftest/configuration.py for their descriptions and accepted values + +######################### +### CONFIGURATION END ### +######################### + +# Pull all features from the base ragger conftest using the overridden configuration +pytest_plugins = ("ragger.conftest.base_conftest", ) + +# Notes : +# 1. Remove this fixture once the pending review screen is removed from the app +# 2. This fixture clears the pending review screen before each test +# 3. The scope should be the same as the one configured by BACKEND_SCOPE in +# ragger/conftest/configuration.py +# @pytest.fixture(scope="class", autouse=True) +# def clear_pending_review(firmware, navigator): +# # Press a button to clear the pending review +# if firmware.device.startswith("nano"): +# print("Clearing pending review") +# instructions = [ +# NavInsID.BOTH_CLICK, +# ] +# navigator.navigate(instructions,screen_change_before_first_instruction=False) diff --git a/tests/standalone/requirements.txt b/tests/standalone/requirements.txt new file mode 100644 index 0000000..ac945d2 --- /dev/null +++ b/tests/standalone/requirements.txt @@ -0,0 +1,4 @@ +pytest +ragger[speculos,ledgerwallet]>=1.21.1 +ecdsa>=0.16.1,<0.17.0 +tomli>=2.0.1 diff --git a/tests/standalone/review_nav.py b/tests/standalone/review_nav.py new file mode 100644 index 0000000..03eda43 --- /dev/null +++ b/tests/standalone/review_nav.py @@ -0,0 +1,37 @@ +"""Review navigation that does not assume a post-approval status modal. + +`scenario_navigator.review_approve()` appends `USE_CASE_STATUS_DISMISS` on touch +devices, expecting an `NbglReviewStatus` screen after the confirm. This app +deliberately returns straight to its home screen instead: over BLE that screen's +sync wait can fail to auto-dismiss and block the next APDU, and the wallet shows +its own success UI once the broadcast completes. See +`show_status_and_home_if_needed` in `src/main.rs`. + +So drive the navigation directly rather than changing the app to suit the +framework's default. +""" + +from ragger.navigator import NavInsID + +#: Text on the final review page. On touch devices this is NBGL's own hold +#: button; on Nano it is the finish title passed to `NbglReview::titles`. +TOUCH_FINISH = "^Hold to sign$" +NANO_FINISH = r"^Sign (transaction|message)$" + + +def approve_review(device, navigator, path, test_name, nano_text=NANO_FINISH): + """Page through a review and approve it.""" + if device.is_nano: + navigate, validate, text = NavInsID.RIGHT_CLICK, [NavInsID.BOTH_CLICK], nano_text + else: + navigate, validate, text = (NavInsID.SWIPE_CENTER_TO_LEFT, + [NavInsID.USE_CASE_REVIEW_CONFIRM], + TOUCH_FINISH) + navigator.navigate_until_text_and_compare( + navigate_instruction=navigate, + validation_instructions=validate, + text=text, + path=path, + test_case_name=test_name, + screen_change_after_last_instruction=True, + ) diff --git a/tests/standalone/setup.cfg b/tests/standalone/setup.cfg new file mode 100644 index 0000000..f1b54e3 --- /dev/null +++ b/tests/standalone/setup.cfg @@ -0,0 +1,2 @@ +[tool:pytest] +addopts = --strict-markers diff --git a/tests/standalone/snapshots/apex_p/test_app_mainmenu/00000.png b/tests/standalone/snapshots/apex_p/test_app_mainmenu/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..25bc2a57f059b7bdc1fb7050f285bd0e063c47ef GIT binary patch literal 3343 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_app_mainmenu/00001.png b/tests/standalone/snapshots/apex_p/test_app_mainmenu/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..40eafb10cde0f0af3f5e7381f94a9cbec05b29f3 GIT binary patch literal 2326 zcmeH}e^AnQ7{}3;Qcl#_bSX+{;W9IobT~w(xyt3VR?bd-%+kcNl2k;~zKAfL%f!vC zv=p}5vLC1DC{bbIj|5Gob0ts-LXlP=U=EZdoOk=D?slEK{kuOtckk!9=RSXY-mm9< zpNd@x+Z|VWtOS8Tj&VC;KLdem0v1m-*mkjV-u?Ds0hY(bM(-`CpOTN{pA*}bjL3|F zg^iQg^wGyQtL<+U9~zs#?E%d^$6l7Hd~PlGY*2x zw?Q$&1i~s z2KKV?Toiolh1w5z}Uw0)-H?3Y^1WFoV{<{kQTg@^}W4OdlQ|<|Q&it*PeeD?ji&g|hJ6vol+WvT#9S z0j9xr|JgeL$9m#2QBq=n5AlVSwkl9EhE@w+3y=A#!ufy?eJRpJIBDGB6k$+eVC_L~ zU)NSG)%-VuGS60&_%^#wlN~7lRqldcHn%S{XzrbsgR{CP@wk=r!UeVNa=-agh{EIO z$-Ql)`g|Uv6R$KSeZkNJB*WF-jVamw>+nVSd0s+w&Dp`nD#S25GiXimdG~GYwIU%$ za-y!gX0gQw6*tmc0!=X@RDsmbKK%5~c}rH#HSgyBs`sNrZJ)18v98@50p~aPJ0%Ct z^mKm>je9=xtErZ#Nq;IX9O7jsYjGpD!eX>azl;)&<#*0SL*$zu6)k z`jm_O?+Mx9+^mqM?r-hOzNEf%r`F5O zN*d2QAPii8ZS-% z@}=qW2<{~jW0Y_}7sv?>u!I~tZ5Qm9vF6`^^AEE!)`P5(A|=(nds(uw?2LT((lPvp z+g_npMzP1|{`yT{3<+~eV`^vHEnGkldYX__YNL{T`v zK4Tg+sJMWP7UNED2uV8CqPddOs^~83cFMEd68D}`Lv(uXzSK)y(=?o?UDWMEB09Hu z`*9j-2hS8(TsVqZ#ofc=T2qyC@kj(sj?Tdp57>BS>lRDog4r-ZIJLO}l?WMX=yA$R zhhw47kKQu^@(nX8Nm<gb#?v^QvIy^d=Iq=ce#s3Z{?&E~m=9tvd FzW^*H3-ka0 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_app_mainmenu/00002.png b/tests/standalone/snapshots/apex_p/test_app_mainmenu/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..25bc2a57f059b7bdc1fb7050f285bd0e063c47ef GIT binary patch literal 3343 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_get_public_key_confirm_accepted/00000.png b/tests/standalone/snapshots/apex_p/test_get_public_key_confirm_accepted/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..21874f575fba1c68ab25500762bffcd5d027dad3 GIT binary patch literal 3197 zcmd^Cc{Cf?9`-o3RV~%Am6}0^PObIqiA+l^Q>C4$K`SEGR@BxuL`XUn4aPE+S38+L z2Bi{%ls1VF+e0;@RBB7a7Of>Dwvh1BH+|>4<w zc)K4{)KQd@k~-$;;rgwV)E`VG<0pA(Nu*SBKr&Hs^>jUdEvamEdNScdoAkxu-`*Y` z4whjzpO`?xgw>}VLIL5;dZ9|{{SP~q#i&Cmhr=p6sRKu~3q|r@cwtn(ydbas1twFK z?kW#8z*zqOh7YUl?xzM3ne+KO`+DQY2_Z%)4-mylt{B5JN@a9l#|&IX^`^F z^VP%77zeA7!a+v0NdwwoWx`iMTNWANIPs`7=-QQFZZ?K$QZsvzCTD#dzAD&WJ}Su? z(#@k^YdsbO8>}$rSDA&Xcd)KSiEr7jtxb4(tE0m2O1!gj>EpvzqoU#9A^Kep4C2Sn zsBE4!_Q8N|Mkt*^0woa<`=q&kIaR18A*@^?Kmf?d)v}L*JmMd^Q${240PWl1_zbvm&^Apz7@); za%!DJ%QKgjBscvlFpXx6u{8Y8IQwcx{eUY_d+98b-@BK!zTZ{F45Ivt6NGe z2Fff1sex7wz5XI1$tIS7zJ1iE&f#mbsh>)^R_Gx+W+}TJWJ;F>sDkF1sCMc*E!(p+ z=JPkj+zjh&R!0v6LDgtKtl?{OJ8VazJARlX?UFSK =IN>DR6KsaMhD`X$~wN?Gn zUwOOf^n!6Zzp@#{d|YT6?E>w$Zmn} z&XSzlT)*JLLQtL1mc5rA3+C6v5Ux6`vbU1tKUmShxtC3m!X_oOCc_*6rtGX{{m3|?E|Y^3yZJvYTM!E0RLlCsT}o|;FW^)n1?iVIk1Jr_vUB1`V-mB)X#A4%kX296^JfCNL` zwECAkat<%(5P>sWL8oEY*B`}wJHtCIIQqp>zahu?Ij`n}^^xQOe4~r`M)Epps?2og ztQmw)r85|8Uk0&0;T!-RRTTR*;@D%R|1O(vc72Ktb_&~AD}p3(I9(>Eob|+KlvB47 zd$cuIox5vuSp>htPi4m(w49Z2aQ!JYw;Tsj55n-!s&i~dZ~W#uFbp9E(G7BEeXCUfZ#4E<8>iOaDCjW%~=t! zrm5{AiJQ*1Sp(k~(pcMT7}85f%F9`k?6auQ0b@cAxQsXN2Zk2xES^G8yosnW^dj?Y zEN{-ZRt0@z(HW>4$5&F(S9pT{-GYQ(_}7>8zh_Vm5Y!+VNZ6@@`ip2CMMK}$9l0v6 z4mHHTkn_rDR2xB!Wk^ifyNvfHuumv?5YgRt|77zCC1%Yw#Bo696H0{Vq?KNH&L@7YW27FhGwlm}Fa~6l~6J!c@bS?#gK3o$i*B5X08uzM{ z=6=sAAZ1R8Fz(QF_91E8Bq})JttRV9Yc>Yf=~cl%)zv&p$6d35EkQ$`b@W`aCDzu9 z;Uh^!0H>F>t2aH94wzgrvRm0V?<+E~j@fTY3oCL|Q^ck2VyaK-ce zBpdroz4(1APW7OE`4)Hldh)xuYO1#)Wo{vB{cg*mkqw}&17GS!XCSKjwX5g~rALX> zA=1iLV{@e$klcZnHRQ}H zf)+c>z4dL6bioZS`+a+}ZDIP4>yu*|t)#e@EAMVkQVQtj%ov3Soz0a3s^hGBVA?Kl zqpQxgiwFvT;LB`({X$YVQRn+5>*)5Y^8g7k{?=IjUf@iLFW8<%|Lw~$>!}jf8q2nxUKytIA>#ex&~Fu`F!q4GLh`1aw3KjmW%A6W|GW0 zP+7%YdC@8LVxUPg7tj0*M;T(FiWC;V*v=p>c8B4Df)2wA4jrvTc4|iiJNs3{Grs@h zQ8|Tqh)xlwJdcpY5?2y`=9QJ)#?hJ&V zxK<+2o94gQ)Xh*+;(WEngwTQFad5(x?X~@+$4xq`@D7_UfqZ~OiA!y1dp^{5rJESUChyV|+ZyK3V{!7b6tMU{rn z!54QCIF8DKu|)v^dH{tq+6psDO6hP*V|oQR0>qJi@LQp`K4X}1lRxQsA5G!XnJeg7 zI{_8%%Lo89Y^vsL@qTAMvS-XE0eE~s2mN;SUS?=RSUp|^AaaLQshpX~e?~m}U1M>I zLYv9efI#{c%A*Eo;SBuwkQ%ZOuh}Ubfh)koJoc!_8(-KE-C#^}N-WnPr<&Z8ArEIv zth&Bm{hDR&ylYb4YdofBvQ-vt$kV5twb2UAA}};)i1Nx#szaHR7a{Far-;kQA2v= zMtIE!mDMNH6z1MEl~@&pi!DzjS2OSA@Jz&E$A#C2Xweu8O=WsM4a>ntq%;|8$Z#y$ zHqu@A`8T6km^OnhU9QRdi2WjapDU}ry~+MDH+dH76W^RZ4W~~_)L~o0fI}0%>(r#% z;*Uy+SgbRgd!=yvkZ)l*e%~`I_Z_h&?@48D!S@^kW#HM)d||{$=en(rt&Ya#r%F_5 z6m0WqqlxdwD!}DU4LMmH9fYUma$^=h^J@RCiNpy(C)q4vSsWz5*nz*)W`r2NZPzxG z&unAZ{5^}7<&TJb@~HljROd#3pKV;oyw(PTsRpLwM&ne^wW{?G5)XFQ#MSVG9LPt( z_8WrJmcW!gl$#)_+TdncUuoRdV=Po>hPhktnWCqr0?pKPX)YJF?>`M4&>5#*5@lD_)`OSw9AEf$tp?A}#X+PW;!MVm`B1(`L2rB05OrNwuRmIxOvJTSmU=mxYTv z79-Bd4#iK)agOErkEP9={iks*Ilb2;&TrJDnRQBj?Bd(W;lR??L!K2bHHDk0EhE&O zNns%g_6H-kX2wjQ`Xru24eHC_Bkfv?ZOIf(PSv`AcrRjh7oNZ;h_r$MDUYl-7ylS{ zLNqlY{HQoJ%o-X8kn&qrnP;ODBAIWxH9xi_dkk_%Lx25JGLyquCD(1tI4uV8n!F7b`fbNG3#MF$ zOqm({1l4p!WuRODenRQ7ugd&rd%YXE)~i+1bai|7BBnvN&Ls~5)^1SK;$apvRqhIi zE*u}~Rn<2`TU3TCdAN-wdPG9hml53~J|d)(3oXLt&`?J2h>tiI3x%<`jp$# zN)Zm@b#=>tpX_cpDODfSJ7BU{eGNkjn^)lKaG$bjVcwf}tQzf1+wzSdgg4|LoLlpt zhPRA|hX2IJ|MY)kZY(-jjN~)grlUTY^sB{m36<@|c~623bH31lIJWW%#@w?6e%X|k|yBh$iwKZNb7Mm7BzOM)L18nO!cc$ ze_FP_w9Xjg;-N3Wb;Tdf|32s)#03{X?>P*1DDfyNjoye_EQE z3r4*v&d%_mTdGJ$3AVSnD}h(_m0mz!u)U{P?n0M2iYb|8Ei}bzj81UJC{Oleg#%8# zwNlA3l9GQ+@JFdi)H0>UuJpj)hpZyvn{a0MlMxlE_=Ph6TX%HUJ8IW$Ywl-buYe|0 zc&&f8R2U)ojaLH(4((Wl|c*Ue@I zK+D06W|+omG)v3Iee7+Y8K?L#ymNBUMagkPaAbi0M-Q~7curhB>Q{!a;W{JMB{^?X zQK!)yR^GYGj!VN^tT!bPK37{v-9U6yW{t-bhOrE84qFv-1R7a@OO{DthUzT?Px}t( zUaF@w>OMcDJyUn^0o;@1Ok!-_{Isih75Mr9-%;}_ZmOiLv^u!va1D`OTD9r0{PO|I z7eA=q6UJvK;4UkYm|&!^@}>Wkbtct6WSrl*ltcd4I_?;}mXHh@nkX~4DP!@iMNjQe zmm{vf(%IVU$ZuxA{Bu`i)zg$SEhTs+zv78`Wf561A;V-ic2|9l#K)#BGNrdP+>}oq z)01)C5NM1m+bcOO3fd0Sm^f|8Q6qiWt51$mJQ>fHTL>wLO0ejkaIRsPTMX`$l8=fC z8jsVomMwF^b2yYO{yMaJiDO50t#oLIeB~cF+CV4At)9ql9&!ZMh0nq_Y_F<6KDfeD zWd^GP-0EC3Q3NY3N>)Ni?=UXS@odL6Mgo4xArgRL$B0`93Le{8q(uvq|NiSRRF?j4eX;k{ir#l`L0*y}pL zExDbcz#>xjL)cN0r2265@B*UWfUA`ydE8{VFq<1w+ zdRVt)S6P$*aDh(396SAh9rgENN7^0t@~ZXRAJ)-)FG!FIJ1_BAm|#=|>@Q-PRK?sD z@%>WcbzbGO#0sO5n!idZyXwJ-A=9#>x!?YIlLEP-f%Tp{68K7%>|1To!*Z*I1|34V`Z!;4Ai-P-vuh|6R!7^!lS=3Ng z)Y3<6pn)E#NW=u`pUN9UvO;4~lbc=XER!{h!Lbp!AY+OG6>Vi(yW{Gqxs&V@~`iWkagURe5#lW@k{I=(y8P$%~~$v5f<|hF;W1av#w# zFo0*xL}s=8kee8)gLo@0D(R0u<9qs-!kg>6$sQ z_M5h`(#%7z^{f%czdM3t*W>FtB6^i!A3vr+>~*)~&e zAdu_A5)e#zk9}r{NDU!e1^PBEWg+YN%-3DN)_Zed1@KspPuuE}DjZDMrGei$W0xhi zBt(-!^9y|Lf>O51bf{_0Wl^$Ipl=mO(w#aT<06Irpjsk)tjoy<3pKXL5i7rEWc7Om zQSxldJ*qLOMsuB^?U2_-G^b^B2(pUy@WgkFcx8rv7c3omH&~T78lmCR{p9E3JAaG> z#XoUBNM_gWR})#D+<&v@(ck-t&)E!@jzhvH0{0aOHTb(mVv&{Pnf<2V7m`yw{$Azj zvtrr|yqQWiO{bDHpsw>lgaVwebLOs0;_P&i&H*nI{WnnKd^7YHiT;Ce)Q%K-SmCy& U9XiJLeE&pcpl5WuM8`h*?|EMDu>b%7 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_get_public_key_confirm_accepted/00002.png b/tests/standalone/snapshots/apex_p/test_get_public_key_confirm_accepted/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..6ce358d61ed066536602ed9e9e72d9825a5cb664 GIT binary patch literal 2030 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_get_public_key_confirm_refused/00000.png b/tests/standalone/snapshots/apex_p/test_get_public_key_confirm_refused/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..21874f575fba1c68ab25500762bffcd5d027dad3 GIT binary patch literal 3197 zcmd^Cc{Cf?9`-o3RV~%Am6}0^PObIqiA+l^Q>C4$K`SEGR@BxuL`XUn4aPE+S38+L z2Bi{%ls1VF+e0;@RBB7a7Of>Dwvh1BH+|>4<w zc)K4{)KQd@k~-$;;rgwV)E`VG<0pA(Nu*SBKr&Hs^>jUdEvamEdNScdoAkxu-`*Y` z4whjzpO`?xgw>}VLIL5;dZ9|{{SP~q#i&Cmhr=p6sRKu~3q|r@cwtn(ydbas1twFK z?kW#8z*zqOh7YUl?xzM3ne+KO`+DQY2_Z%)4-mylt{B5JN@a9l#|&IX^`^F z^VP%77zeA7!a+v0NdwwoWx`iMTNWANIPs`7=-QQFZZ?K$QZsvzCTD#dzAD&WJ}Su? z(#@k^YdsbO8>}$rSDA&Xcd)KSiEr7jtxb4(tE0m2O1!gj>EpvzqoU#9A^Kep4C2Sn zsBE4!_Q8N|Mkt*^0woa<`=q&kIaR18A*@^?Kmf?d)v}L*JmMd^Q${240PWl1_zbvm&^Apz7@); za%!DJ%QKgjBscvlFpXx6u{8Y8IQwcx{eUY_d+98b-@BK!zTZ{F45Ivt6NGe z2Fff1sex7wz5XI1$tIS7zJ1iE&f#mbsh>)^R_Gx+W+}TJWJ;F>sDkF1sCMc*E!(p+ z=JPkj+zjh&R!0v6LDgtKtl?{OJ8VazJARlX?UFSK =IN>DR6KsaMhD`X$~wN?Gn zUwOOf^n!6Zzp@#{d|YT6?E>w$Zmn} z&XSzlT)*JLLQtL1mc5rA3+C6v5Ux6`vbU1tKUmShxtC3m!X_oOCc_*6rtGX{{m3|?E|Y^3yZJvYTM!E0RLlCsT}o|;FW^)n1?iVIk1Jr_vUB1`V-mB)X#A4%kX296^JfCNL` zwECAkat<%(5P>sWL8oEY*B`}wJHtCIIQqp>zahu?Ij`n}^^xQOe4~r`M)Epps?2og ztQmw)r85|8Uk0&0;T!-RRTTR*;@D%R|1O(vc72Ktb_&~AD}p3(I9(>Eob|+KlvB47 zd$cuIox5vuSp>htPi4m(w49Z2aQ!JYw;Tsj55n-!s&i~dZ~W#uFbp9E(G7BEeXCUfZ#4E<8>iOaDCjW%~=t! zrm5{AiJQ*1Sp(k~(pcMT7}85f%F9`k?6auQ0b@cAxQsXN2Zk2xES^G8yosnW^dj?Y zEN{-ZRt0@z(HW>4$5&F(S9pT{-GYQ(_}7>8zh_Vm5Y!+VNZ6@@`ip2CMMK}$9l0v6 z4mHHTkn_rDR2xB!Wk^ifyNvfHuumv?5YgRt|77zCC1%Yw#Bo696H0{Vq?KNH&L@7YW27FhGwlm}Fa~6l~6J!c@bS?#gK3o$i*B5X08uzM{ z=6=sAAZ1R8Fz(QF_91E8Bq})JttRV9Yc>Yf=~cl%)zv&p$6d35EkQ$`b@W`aCDzu9 z;Uh^!0H>F>t2aH94wzgrvRm0V?<+E~j@fTY3oCL|Q^ck2VyaK-ce zBpdroz4(1APW7OE`4)Hldh)xuYO1#)Wo{vB{cg*mkqw}&17GS!XCSKjwX5g~rALX> zA=1iLV{@e$klcZnHRQ}H zf)+c>z4dL6bioZS`+a+}ZDIP4>yu*|t)#e@EAMVkQVQtj%ov3Soz0a3s^hGBVA?Kl zqpQxgiwFvT;LB`({X$YVQRn+5>*)5Y^8g7k{?=IjUf@iLFW8<%|Lw~$>!}jf8q2nxUKytIA>#ex&~Fu`F!q4GLh`1aw3KjmW%A6W|GW0 zP+7%YdC@8LVxUPg7tj0*M;T(FiWC;V*v=p>c8B4Df)2wA4jrvTc4|iiJNs3{Grs@h zQ8|Tqh)xlwJdcpY5?2y`=9QJ)#?hJ&V zxK<+2o94gQ)Xh*+;(WEngwTQFad5(x?X~@+$4xq`@D7_UfqZ~OiA!y1dp^{5rJESUChyV|+ZyK3V{!7b6tMU{rn z!54QCIF8DKu|)v^dH{tq+6psDO6hP*V|oQR0>qJi@LQp`K4X}1lRxQsA5G!XnJeg7 zI{_8%%Lo89Y^vsL@qTAMvS-XE0eE~s2mN;SUS?=RSUp|^AaaLQshpX~e?~m}U1M>I zLYv9efI#{c%A*Eo;SBuwkQ%ZOuh}Ubfh)koJoc!_8(-KE-C#^}N-WnPr<&Z8ArEIv zth&Bm{hDR&ylYb4YdofBvQ-vt$kV5twb2UAA}};)i1Nx#szaHR7a{Far-;kQA2v= zMtIE!mDMNH6z1MEl~@&pi!DzjS2OSA@Jz&E$A#C2Xweu8O=WsM4a>ntq%;|8$Z#y$ zHqu@A`8T6km^OnhU9QRdi2WjapDU}ry~+MDH+dH76W^RZ4W~~_)L~o0fI}0%>(r#% z;*Uy+SgbRgd!=yvkZ)l*e%~`I_Z_h&?@48D!S@^kW#HM)d||{$=en(rt&Ya#r%F_5 z6m0WqqlxdwD!}DU4LMmH9fYUma$^=h^J@RCiNpy(C)q4vSsWz5*nz*)W`r2NZPzxG z&unAZ{5^}7<&TJb@~HljROd#3pKV;oyw(PTsRpLwM&ne^wW{?G5)XFQ#MSVG9LPt( z_8WrJmcW!gl$#)_+TdncUuoRdV=Po>hPhktnWCqr0?pKPX)YJF?>`M4&>5#*5@lD_)`OSw9AEf$tp?A}#X+PW;!MVm`B1(`L2rB05OrNwuRmIxOvJTSmU=mxYTv z79-Bd4#iK)agOErkEP9={iks*Ilb2;&TrJDnRQBj?Bd(W;lR??L!K2bHHDk0EhE&O zNns%g_6H-kX2wjQ`Xru24eHC_Bkfv?ZOIf(PSv`AcrRjh7oNZ;h_r$MDUYl-7ylS{ zLNqlY{HQoJ%o-X8kn&qrnP;ODBAIWxH9xi_dkk_%Lx25JGLyquCD(1tI4uV8n!F7b`fbNG3#MF$ zOqm({1l4p!WuRODenRQ7ugd&rd%YXE)~i+1bai|7BBnvN&Ls~5)^1SK;$apvRqhIi zE*u}~Rn<2`TU3TCdAN-wdPG9hml53~J|d)(3oXLt&`?J2h>tiI3x%<`jp$# zN)Zm@b#=>tpX_cpDODfSJ7BU{eGNkjn^)lKaG$bjVcwf}tQzf1+wzSdgg4|LoLlpt zhPRA|hX2IJ|MY)kZY(-jjN~)grlUTY^sB{m36<@|c~623bH31lIJWW%#@w?6e%X|k|yBh$iwKZNb7Mm7BzOM)L18nO!cc$ ze_FP_w9Xjg;-N3Wb;Tdf|32s)#03{X?>P*1DDfyNjoye_EQE z3r4*v&d%_mTdGJ$3AVSnD}h(_m0mz!u)U{P?n0M2iYb|8Ei}bzj81UJC{Oleg#%8# zwNlA3l9GQ+@JFdi)H0>UuJpj)hpZyvn{a0MlMxlE_=Ph6TX%HUJ8IW$Ywl-buYe|0 zc&&f8R2U)ojaLH(4((Wl|c*Ue@I zK+D06W|+omG)v3Iee7+Y8K?L#ymNBUMagkPaAbi0M-Q~7curhB>Q{!a;W{JMB{^?X zQK!)yR^GYGj!VN^tT!bPK37{v-9U6yW{t-bhOrE84qFv-1R7a@OO{DthUzT?Px}t( zUaF@w>OMcDJyUn^0o;@1Ok!-_{Isih75Mr9-%;}_ZmOiLv^u!va1D`OTD9r0{PO|I z7eA=q6UJvK;4UkYm|&!^@}>Wkbtct6WSrl*ltcd4I_?;}mXHh@nkX~4DP!@iMNjQe zmm{vf(%IVU$ZuxA{Bu`i)zg$SEhTs+zv78`Wf561A;V-ic2|9l#K)#BGNrdP+>}oq z)01)C5NM1m+bcOO3fd0Sm^f|8Q6qiWt51$mJQ>fHTL>wLO0ejkaIRsPTMX`$l8=fC z8jsVomMwF^b2yYO{yMaJiDO50t#oLIeB~cF+CV4At)9ql9&!ZMh0nq_Y_F<6KDfeD zWd^GP-0EC3Q3NY3N>)Ni?=UXS@odL6Mgo4xArgRL$B0`93Le{8q(uvq|NiSRRF?j4eX;k{ir#l`L0*y}pL zExDbcz#>xjL)cN0r2265@B*UWfUA`ydE8{VFq<1w+ zdRVt)S6P$*aDh(396SAh9rgENN7^0t@~ZXRAJ)-)FG!FIJ1_BAm|#=|>@Q-PRK?sD z@%>WcbzbGO#0sO5n!idZyXwJ-A=9#>x!?YIlLEP-f%Tp{68K7%>|1To!*Z*I1|34V`Z!;4Ai-P-vuh|6R!7^!lS=3Ng z)Y3<6pn)E#NW=u`pUN9UvO;4~lbc=XER!{h!Lbp!AY+OG6>Vi(yW{Gqxs&V@~`iWkagURe5#lW@k{I=(y8P$%~~$v5f<|hF;W1av#w# zFo0*xL}s=8kee8)gLo@0D(R0u<9qs-!kg>6$sQ z_M5h`(#%7z^{f%czdM3t*W>FtB6^i!A3vr+>~*)~&e zAdu_A5)e#zk9}r{NDU!e1^PBEWg+YN%-3DN)_Zed1@KspPuuE}DjZDMrGei$W0xhi zBt(-!^9y|Lf>O51bf{_0Wl^$Ipl=mO(w#aT<06Irpjsk)tjoy<3pKXL5i7rEWc7Om zQSxldJ*qLOMsuB^?U2_-G^b^B2(pUy@WgkFcx8rv7c3omH&~T78lmCR{p9E3JAaG> z#XoUBNM_gWR})#D+<&v@(ck-t&)E!@jzhvH0{0aOHTb(mVv&{Pnf<2V7m`yw{$Azj zvtrr|yqQWiO{bDHpsw>lgaVwebLOs0;_P&i&H*nI{WnnKd^7YHiT;Ce)Q%K-SmCy& U9XiJLeE&pcpl5WuM8`h*?|EMDu>b%7 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_message_accepted/00000.png b/tests/standalone/snapshots/apex_p/test_sign_message_accepted/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..8ffa04b788282a8053717840b1de58c2060e1020 GIT binary patch literal 2965 zcmeH}SvVW$8ppLgRcepc9$J*src|vJp<@l&Mym^Bi!c~vEUmo+ZE6{nv`X!D+8m)R zO>v4uNROpj6~@-sA`Om+orFjvF*+{K#d*#%w{!7beDCxBZocRDzV9#lDhw)fRPCsk zn3#-s*nzWq=dr}Wy-KNa&)!AK$Hl?+Mnc&#Z6NRE1+k2QxG?%|0Zl6G^d$*# zlt8lV?#RrE!Re5L7iMO7$)W?6yZ^KhTY;hE_3R`RPolEr+Z`kj+9)FhyCR8`m;WmN zuRqzvS)~1?r@fe7^@0M@}?`DKe__6IBhra^D&^;twNhpmjncfGmrvXar+$>`}fu zDJsbjO?-h0pLnYMiN?LyDgRMPg{{TK5nkaYVojLI%L6Z^E1Hyp1+&bV^#q#=y-FZ} z;lBVf?#Z2I)YjRPxh5Br&H~+%4s=@Tk#Ka3ey9_QW*MbsX{OisJbSI)Ccs=e?n`!Y zn+DR{F;u9CprTzr8I76@4WP?nuGyxSn*g=~tdA=T4SStO-?L_@M~tPnoKU{o;J_Pw z53}FFwY11Ks3I%fb`n;!40*6IHUJYMU58u-u3fMKXOyIxdNvpV0f?yp$9^We(B3vk zw(~r~kEKPTCJV;bXAft+lY%-}J-6wp;0R!IexM-^mQ)pxC9mW&v3v;8Q!;@*-@6`>qgUB9n=QIMo zvF3jjU(K;5Z5pD9AS_>i*~zG3MaG}q63{W;&4G*v84box;=o|T#pTtmL!Y|rduj{+ z77uY?QOEerT5?{*=y5DW}#)2HZJsEoTleJTu~H>D(8O5W;{lO8<&&U@AUN$tmY_$`Y0J4naM~v7mcI z(;rJjTiuycTzQJ0{bp&a$UA=}c0nn^YkN(`YNUE-K(4ZQ%JeiiGIbcz*-eL)dJ$XG zdqU>cy5WwTofjM(wfibHG>pRqAd0P9FhMuu;a?{U#1uzRy~om3#3S@i}M%dl2 z%cSwizQMwnq&640N4>~qa~%}vdy`_oji$5a=?lMk?7CM!3K3!!)vq^*O3a2QEA=wE z$m30~OU&R?SE{f>>O8*xO`?YoOF|ZDE~Zrb{OI47he3o4sVP~o3JZFdJx9Lkv)fm! z05%o<7;5))c5&hxwzumdTtGmk;~U>17K4*XLCNJEskG-bx4HMU7~Qg7XafIPII~`0S#|xUzDA72ICRGcJ zw5REl@wzBj)*l-cEqSun`LD(LhgB?9bkD5wKg%K4?B_C>Y~GRCBJ`eZs29&^uGyk; zi?*(7@3{y<2ZznidZ#dS&GoyHgm=c|0~E{yz^>Wfy(G5??XKPKbQyYjuZObtQ=?g| zzn}W9F8e9<^T0|6)LPeAgUa^`xSEQ#isgRK4k)xX#rtIjI&5#llkA%dF-?6>{nB@z z*A2RaVy#q_aFnoj)|l=QQT%87=dD~1=TK`c{L7DSGi;tfMNW>M*6W zJqIyK^H=&b<`1^i4E7i2R`Vjh&32v9+R|a8dfPndTiZMC5Zglez zbLUP_G4DM0)f0F)*o)VaADmazKZb<#?Pjiyx~S zHrZbWC&{=RY%oND6cK_DX%iYg{YL z&m|YQG4{n=>st*ygN)_Q5hD8+sodLdTic$EMHdzXxk^noJcZX_Zshdu@aPz}psvik<#= zZ>e}zlrhI>zV@f9cn{hud@Dj*gZP2G-n84-Hx(bKq1gUV#sq-w+o$ED?f*xMyxu-j l`|#~`?mkod@Y#)~`luU5H$ArJ?CG|cizCe8t)2h<-vM6=ScL!p literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_message_accepted/00001.png b/tests/standalone/snapshots/apex_p/test_sign_message_accepted/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ffeb31d95d3d2833b54452e7accdb4e95dedff9a GIT binary patch literal 5003 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 H-jDq|=dE*Y literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_message_accepted/00002.png b/tests/standalone/snapshots/apex_p/test_sign_message_accepted/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..fdfd96e951db2edec14fe90343e2ca5c4205fcfe GIT binary patch literal 3007 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_message_accepted/00003.png b/tests/standalone/snapshots/apex_p/test_sign_message_accepted/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..25bc2a57f059b7bdc1fb7050f285bd0e063c47ef GIT binary patch literal 3343 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_message_refused/00000.png b/tests/standalone/snapshots/apex_p/test_sign_message_refused/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..8ffa04b788282a8053717840b1de58c2060e1020 GIT binary patch literal 2965 zcmeH}SvVW$8ppLgRcepc9$J*src|vJp<@l&Mym^Bi!c~vEUmo+ZE6{nv`X!D+8m)R zO>v4uNROpj6~@-sA`Om+orFjvF*+{K#d*#%w{!7beDCxBZocRDzV9#lDhw)fRPCsk zn3#-s*nzWq=dr}Wy-KNa&)!AK$Hl?+Mnc&#Z6NRE1+k2QxG?%|0Zl6G^d$*# zlt8lV?#RrE!Re5L7iMO7$)W?6yZ^KhTY;hE_3R`RPolEr+Z`kj+9)FhyCR8`m;WmN zuRqzvS)~1?r@fe7^@0M@}?`DKe__6IBhra^D&^;twNhpmjncfGmrvXar+$>`}fu zDJsbjO?-h0pLnYMiN?LyDgRMPg{{TK5nkaYVojLI%L6Z^E1Hyp1+&bV^#q#=y-FZ} z;lBVf?#Z2I)YjRPxh5Br&H~+%4s=@Tk#Ka3ey9_QW*MbsX{OisJbSI)Ccs=e?n`!Y zn+DR{F;u9CprTzr8I76@4WP?nuGyxSn*g=~tdA=T4SStO-?L_@M~tPnoKU{o;J_Pw z53}FFwY11Ks3I%fb`n;!40*6IHUJYMU58u-u3fMKXOyIxdNvpV0f?yp$9^We(B3vk zw(~r~kEKPTCJV;bXAft+lY%-}J-6wp;0R!IexM-^mQ)pxC9mW&v3v;8Q!;@*-@6`>qgUB9n=QIMo zvF3jjU(K;5Z5pD9AS_>i*~zG3MaG}q63{W;&4G*v84box;=o|T#pTtmL!Y|rduj{+ z77uY?QOEerT5?{*=y5DW}#)2HZJsEoTleJTu~H>D(8O5W;{lO8<&&U@AUN$tmY_$`Y0J4naM~v7mcI z(;rJjTiuycTzQJ0{bp&a$UA=}c0nn^YkN(`YNUE-K(4ZQ%JeiiGIbcz*-eL)dJ$XG zdqU>cy5WwTofjM(wfibHG>pRqAd0P9FhMuu;a?{U#1uzRy~om3#3S@i}M%dl2 z%cSwizQMwnq&640N4>~qa~%}vdy`_oji$5a=?lMk?7CM!3K3!!)vq^*O3a2QEA=wE z$m30~OU&R?SE{f>>O8*xO`?YoOF|ZDE~Zrb{OI47he3o4sVP~o3JZFdJx9Lkv)fm! z05%o<7;5))c5&hxwzumdTtGmk;~U>17K4*XLCNJEskG-bx4HMU7~Qg7XafIPII~`0S#|xUzDA72ICRGcJ zw5REl@wzBj)*l-cEqSun`LD(LhgB?9bkD5wKg%K4?B_C>Y~GRCBJ`eZs29&^uGyk; zi?*(7@3{y<2ZznidZ#dS&GoyHgm=c|0~E{yz^>Wfy(G5??XKPKbQyYjuZObtQ=?g| zzn}W9F8e9<^T0|6)LPeAgUa^`xSEQ#isgRK4k)xX#rtIjI&5#llkA%dF-?6>{nB@z z*A2RaVy#q_aFnoj)|l=QQT%87=dD~1=TK`c{L7DSGi;tfMNW>M*6W zJqIyK^H=&b<`1^i4E7i2R`Vjh&32v9+R|a8dfPndTiZMC5Zglez zbLUP_G4DM0)f0F)*o)VaADmazKZb<#?Pjiyx~S zHrZbWC&{=RY%oND6cK_DX%iYg{YL z&m|YQG4{n=>st*ygN)_Q5hD8+sodLdTic$EMHdzXxk^noJcZX_Zshdu@aPz}psvik<#= zZ>e}zlrhI>zV@f9cn{hud@Dj*gZP2G-n84-Hx(bKq1gUV#sq-w+o$ED?f*xMyxu-j l`|#~`?mkod@Y#)~`luU5H$ArJ?CG|cizCe8t)2h<-vM6=ScL!p literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_message_refused/00001.png b/tests/standalone/snapshots/apex_p/test_sign_message_refused/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ffeb31d95d3d2833b54452e7accdb4e95dedff9a GIT binary patch literal 5003 zcmcIoX*3(`wkA=es8&B36jftS8>)tyX?&=fstBc|sCjBb%|mI*S5>rHvnbj|g@l^N zC`FB_8bXLUH4`y32syrU?!9N-ALsnJ-~I9a*!z9f`>yq@z4m_g^Zd4%AMv_6RvXf}))?R04zAIN!N8YJ??> zxdv}%{2(j@rFuVQ82u=6K{8 zl0@NzJT&CuP?UG;m2Zq8uDlJnY#B;3!12*D>&-^nLjfR$vLM81XZ|G{0RA}u$^zG% z1pHeTLv`%+&Y{TkVD7kwWVzXh*l}G?3s+JFSXO7Nt_zjdpU&H!4VMi!*b2KINK}V6 z#q4^4fE!p3{;F*YD`0K@1JovXyvOh+hnc2N;b}RNNY7l@{Zqh|oGlh>!kp8Fa^dHd z2XEljo@g|7)IaE|G^)I(#l(kMZAV&8S}gsL8!Jcp-U)blK}6=r>}RO99`P#>UDwS9Myg{zy_5q>nT<#$pc<+v9&weRDr zlw#0?WZ&k18c|G3fncum?)fqJ8At{5{5*gCjr4eGWtKFrB+z*Myi$**@z`zBtbFb( z<~ypo5)cTvv3f^RYjKGVpWF7?DFG5{ce#Cuw0@shq@dcIMQ%y(${W4!GAn%aTMf2w zhnvSJ^NuHjO98{sw<2l_Q6;&r7An7MGfMsLr}xVqI3Lb~@6+!a*>st|u5K*mAFpSO zj&s@Pw%9;9_0;n$@*{UY-G6*x8PP{jdV1MyzAiCve~@uXdgxVyKE&MXRc&u<^1}+3Va1BpoVpKcZdUY^nm|3zL1K#WqOEiEzD>QX8}G*!`@^0O zsuovYgJ)X-J&(dT;cMa2^Q9?`fNzfuVg#qxkM`BXFBtx>M$;p2@rIb&xenT9j;QQ9 z>wObR+-(mg6qMFVTpH<3&S%n-&-y*g{a*W}caO_ujl3QgK3q)^G!~cSbh43vHJ$j> zXj7)V$-tS{dyRka9?;x*B`e%A$jcIpp~k7G%TyjncJj(=_zc^Vouf|)j6SWuS7}ct z^Sp0@EGD^4ncIFKvs1Jhf_&RHR^LqhElgAQ9_%N=d3b+w!zJ}a3ZC68NKK|!P5F8~ z4$Zsf1+JRY1J*-aEKyODMBC;lT6w8uL<)A}Ci+qE8FhVDL^Q5{k!)$t^BQW{#?A@|*+W17x_HP$JR z*f#G$`mAmyaM*Y;lC4;Umg-kN?Qjv!r(PFS3>Opbl*faGQ7~V5=1|rKrC=-)i3kI^ zb4WJg0)s0cPSaJ_4sfMfG$qrzSAgr|1>$Ukf-0W|OBf-flhd#oVN!)mMaLTUDGqgASx}3WMibs@#Wo?6WR#+;1Fj+Y`D6`|M!;7Cd z-&kzI9+5Dr9b`EskK9{U|Mr-Yzmw10qP2CAPTlLx_~hG+O@N3rH(xqzmzqus^%8VnAbe z%ZaJ;p?I)wULAj#v_HT-D>$pS7%gx(P|mRuEq#T`5(;rzy)1AH0DH?@Y&R=^5yj^V zewBa-ifA3x{0eJAKi^8;OtD|}H!=qAjIc3#tj!dcv$)>1H^{P-3&RUoP%(dv5crp} z@R@%+Rx0x&UbFYWo}N$uFm{}AtkQq?EiI)6#{x94YsD>(r%!H-rQ4Ti><$*+H=h&N z+>6j2KBiNdgzMbN{&_47;$1z5iTf}eO@5C?zyNlWFKYgAq) zb2twb{2bM+v3G5{=eVoYppQFOFJM-#)vompX83OnB`zFvufk0TBSf`GK>PM}_vi-Y z!-u}%m!FK^je0&?+iCR+)g!QRE@RM7ojNj*S-;Z^t>xa*{S%>KH_8`Px_*OSMj|RF{cD3f!JXGkw!9-`*>%&#+bF{|6mb;QeDt!XtjjIIJ6Vg|yatBm* z%!#yBwTmVrnhym)Rd2!EGv&#SYj5In&WPYA4?>E{Uq0$IRh_2AFiZXWDy`a%e<>aD zG4|N*DZCYg?KU+ajPz-_*A?^PpKGa{=)ag>4Fc2`Qo4+G+OUxx7|RS;2tOyzL18TY>55g_0GC~I;_##%n6+O53nD-f)0`q2k;T@%K`P##{JdpaZ}Ey`TDM8&1995A16UC1XW+?e711p z?qxxYiBC|e)lP3=?*u1CeAnv$sDyRdze?TmsPmg3ot53 zw$Qz@QEHOzPf#-}+s0A2D#fU7ViUv=W7|jt>y;Cmu3}aD?Q_vDe+|HohMDjMnHKe9 zwX9~gbvXa4^-+VT5Pjv-JYwXio)tsMJ?q%~bAQNF$)YOi)FSRKkbu z=>cwMF1LXZfWr;u;@@_8g&N;>HS3VK zuVLz!H}Wi|y+V~?t<(puC)m?^LMB#p%jpSANu+FXJnL#?+_TLc+U9|UMx+(5^D0=O z;@%P4YxU$O@k~+X%*3U&cm@{J(n~Z?4iUEf(V||GL8I7W(=%IoPMY|wpzV$lGx>R8 zv^RoPO=|&oCl@I;?cj*0y0CDfhf(BrOS(a^wvO8Xwyen3JSB;X|ERG8OQFH5WKyE; z71YACuPflqtx;ipI+$p;x^K4c8q=sBWq_%;FPv5)ndkk$>2gHVnyOol#u)*K+I7w* zk4~YYhiVyWg_xYVh?iM|WtpnV<{cjOQX6 zcP-q!4P0z)XiDM3rKZUIq;QR5V3N zgsjdZs@%G(4p@yAki!8Pw6|e4g z|7%44Ma%d9$Ajg}rm2k$Je`9%EtVA>p`CY*MWnv)*gr6#t%S44Ag_YRQI)6v^be%- zH4+4%8OU{6yMH(fsozEPxx`JN!M{QNVJsLeCKWvUFVwN+&?*^dH~{7RC+gUYaN?^k z^bkk>6Q#}Cw|WO-BQI|9*-tOZSUUcNWQij*=e(=2zt&Po=fx zb>Z%r&FzJ~EAmU+)hrVNM<+BxRlZP6Y-}rOHQoZD-d7{>E}=VMm9m>{PuX5ecziPn_TWvm zDcqH$TD{C`+4oUU-+xT1(ZpMBMSM`VN|k?@?K$2S!-i5BoR4rnDOeq7lpe5>>qE|;Z?N-gLIkCi zh53IMAwNJ0+0L_zv!T|^$OHCsy#kQqqSHF{*B2eYnaOcQyVuPrB8`4*vauNHoBfW3 H-jDq|=dE*Y literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_message_refused/00002.png b/tests/standalone/snapshots/apex_p/test_sign_message_refused/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..fdfd96e951db2edec14fe90343e2ca5c4205fcfe GIT binary patch literal 3007 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_message_refused/00003.png b/tests/standalone/snapshots/apex_p/test_sign_message_refused/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..cf109394fc99ce37a7ee71bad616b979c93dbe8b GIT binary patch literal 2879 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_tx_accepted/00000.png b/tests/standalone/snapshots/apex_p/test_sign_tx_accepted/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..e682e4d04f43de2c69d826f3b4784881ffa3b41d GIT binary patch literal 3134 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 T;KJU&K*rVi61c|c+E4!gsfxpd literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_tx_accepted/00001.png b/tests/standalone/snapshots/apex_p/test_sign_tx_accepted/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5492a6582c7c631ba2cb5b2c384b95176e133e5c GIT binary patch literal 4940 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 JHaJ|!`6ql0Q@Q{E literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_tx_accepted/00003.png b/tests/standalone/snapshots/apex_p/test_sign_tx_accepted/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3b2ca00e8a1506ac1d0b4d5a19b12a4faf9b383f GIT binary patch literal 3045 zcmds(eKZsLAIHV{dC1cpT@&F(9*U@&hY(Kklq>WonaxrZVvgpB8k3p+?mVG04rFQVG+_b>o()yNm2YQDl9ni$OF_cIE+I z4{Ek^sBf{!-<*p*QZw`eMdu!m=`&_~)$>mN`U~6py!agAx=o9TAH^Q;wPS8qu)ELL zD)l!NPyo@<)tcqLc z4vMh%!aaT^!ZckEv%F#mD_^>HBC+l1Ki~E4)`)nC|0N%#8?z5KE?!;M+^rg6L9s&O z4lmZv z26O66w4nxRUyC(>onk{gYtAhkGxbAn@0S{r-*fZSNsiioj7V6RCU_&w>t}U@Q$ecL zW5wwExP}u@CXv zI1al(X8veXnqos>$mOS!3Ac#tj%V?{t*sI3WthcFv4E9kXF$b*n-+EUU|pva^kg1Y zCznY4OGa1HlQmsdYLLQ4GLvBpKc;J(GK@1t3{>hv*+jW(6w1UK2y~TSc3|;)9W-&_ zlkJp|m9`BPTpO>pkJUkI)K8S2?$C=BRanB8S4)Y^wH%XfK~)iAlGV=h_mE9TZh)I< zkwYige)i+3bE>Jw^k^(cQYjwaz90F(!AlI9;4%>#&jxMV7fx+}pZ-=>TPrgMA=`e6 zIsSs|T@^vflBTd=&zwo5HAJVh+%6niDEz~F+gIFDdbxjjSQekjBO%=?B1vx!Ocs_z zfS~b+p@DTH_C)`QZqp+7FFh5hYvZL0lFW;(Xmo4YrDvUF`QL>bI?7( zpFsauEPR^0>YV;+?#br(pe=Hkw6eVx+q_!#NeBM`U1hD8Mn3mjL)(I}E9od|peVaGfm~hX%sLhIn7`8(CLAMYk4&xi2`iFUyK0RDY(*}!>HW^Kx~KJ;uiX5 z?Q3am!N?W2z>rJ!0{-HsFX<8BVq~T|tpj`VSLZ0p%n$5^w~Fhuu&#z|#+zZu#$=;Y zMn0V|T~W{>D`tIHaUnA-(d`muZyS&w7H4=T&V6~>NCP@?6B3@#S-x8%b_+``6up}z z`m*Gbw=?D16W}!7)Af}4o`~S=%r)lLDNBn9(N8H=;{bclrq}y+GLrg>Q)8$)4v3kT zcJ_~{36@9xIG2s{ zmeUH+YOE_&`CJbZBz^CPm)ba145N!Tj=yoYXSFF$Sq^&K+Rceyve=;=mtf$g$96KX zt~vu793S{Ct6UjS+1VS)n-Prdu6}T$tH^!ff=lGATQwMM$sgcNoO9nbnTm@p4!L{# zI2~vUo`Hz;kHmUbrlYjW2qHnVi-&=8`_OyGHFOxh0JYscI(vqm{OMWl5_2pSMh&)~ zpkZ>RhiUrYEo{dvU9=)EV8i!OigvmTcm`QSpZ7-8V~|z7eTR zg)w|C_GjVS8PBOGOj8lAwwf-wIaZ%dHx9jmM7TCrRGjDZFAb9cjXa!jCTSS9wcaL% zl-&nru!$~Nb`XZB-Qz}#+h(qQU7bM&@7a4zWKkgf<7z)%CZsOF@qJvOJ-|VrGnBEb zZ`jjn&mCxTtVlAj)X;oXg$bTtPVfx5KDp`H8s|3doij&2f7Jd(f{;}f#orb^#t^IX z!dD{a-^KBTSmljPB*m=sL*{FXNz}qE1=Ss*TW5m$ z#W;e)@jPZ=V2wINzB^kefdxYfDI=wJH=s??tLc^9MApd(RV^O7XVr8l@5i%Xo4t5lF4CeSc zClb?gJ4E#dVMs|2xtv!#QZ@-x`6_@07Nn?QtB2WTTz(x zp#@P>_tE5(D+5M=3zvJljJ`;+?O~Iv557?$%nz{z&3@nbzpa)`Eg>8DD!%8=nnK@| NPWlG>Gv|8HO)l{`=N!o-U6*W?w(n?JkLeWka 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_tx_open_covenant/00000.png b/tests/standalone/snapshots/apex_p/test_sign_tx_open_covenant/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..e682e4d04f43de2c69d826f3b4784881ffa3b41d GIT binary patch literal 3134 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 T;KJU&K*rVi61c|c+E4!gsfxpd literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_tx_open_covenant/00001.png b/tests/standalone/snapshots/apex_p/test_sign_tx_open_covenant/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..f61dea27b043881641184794b91301b5d41dd42b GIT binary patch literal 4247 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 NPWlG>Gv|8HO)l{`=N!o-U6*W?w(n?JkLeWka zj3rtmmXTCcnFOIowAR?tY3v$Q5^mbLKkl99{+N00{J78ap7T6sd(S!FIp25QbKCQz ztFnT&f{cuevfDA|Gcqz;%%tfaKvr6lugR1alsInAPTp}3W`}#OmDy@+?~eOTtlHhVe=qG<7|MAGCJnU}!0! zgMWVN2%DBsN>FkqQ_#`s9g;2&$PxDY!xuSH)*w;erT1g#vt7L^{Wio z0_hNAg8OUKuJ`UnghQZEOWj+Ki4a}x+lKF@G|dMe#$rwZKpn4??#Dw@9mBC0j@}T<`Iyb9C%C3nw_DC0LjHdHSjsrr#Ai|fX?RH-BAonl*yGhb| zczdXlYjW2gcT*JN`b1)C*!sAr6t|y*yQ>Y-g?eo!XX`?d)l(v4$%EpQC2U%)ekFGf$Rk`#vLEXwLK^1Ph zC8QAodXODDk_r*HBD5%-+srwJ&nG?1vBoAA*8*?9ftZ0FxQ$}@ zyIY(9ygHlFg3Yt$Df6&$eis|1ID&Ni$bkJR zhE_Vd?QTf$v9U34#_6ob;~w-qUh=nA*4JWOnPZm;C_uj9(O>H=Kswy<32q=@`3B(- znTzFK1&{nIjjWZDj!J5as^FUyh$V<7sI!o_A<|P;(^05kH%- zBqyb6f{*XCumUoin$kkNw8U#CE}~Fy+q8+(J1K6YT&-hXX<5yKQoDQ|iQP+B1(EIp z8J_@yodDi-a8ZvbsalP(ziCHD<8rk+qdp$HA*DP=_Pbnj`}&L9$HpGG?wiMbj4VRJqIKrMP+n}7pxtera5ikIwCuX~$JY)OW>09H$M zW@_J2Q(N7xPZAty!Pbu>Gzbg9Lhd!|&6uO7G@^q1=kZtjYl4OI?-VCpE9J2XP`$+y z1;VG?21G^1OwOIz$H2MM@$#5tE{D5p>gqT~K`y?4;dzLMK)q{kZr38yE?bb|oqH2T zs5nWtL~3aRk79gIGhZuj%;Jp*DyG`eXWjf(Oh_ux|24TF2*(CDkZO0Jsx z;}XLN#NnqYMC{ABr;dmo>6N@`7=D(a8xWGCLZy(Q zxfORsdINI@d$YrSCRhixNYA_teNKZ>v`G&-SfnO6@u^1+ ztjNXIZJejrOi!hP#I?2{aGQ&!Ev;TqEE1@OMO?reHyD@K|x+ zoQ|#YHws|4_p3TXF7-Q7N=JvNtpb*?Sp^x3?)Qj4Sq832UK_W!Hm*TXZUBlXW z72&(#3ZNxTcyXb0Yil}$+TuW#*BZ5xFXlXzPV8(nc}4$V3OoH(YyM!fHHh%G+J=8dbP5OQB4e$tgEg}GQHqZ$3${A#Y!ucJCi)n0B*2+JZ-q~gOE<{ zT_5E7bJE4v6}};FCR*=XrT-GyR>;NFhNA_-EbNt4tdn0sf~*d*`(t2*OLdTIIUj{_ zNF5P(1l2q7%AzY+cyTAhnx*$!{Ay>v?L2CB}CY;$g z+}%chMZAF3C<}<^-OCmQ`%n<A5Il4A0*!6{xMh(6rpu8)mh z#`uwcabq8^bF9nP1t$&8Ub6PvcfCIfJ>}tgsro`A4*zD_Ca~(ZP=Qz^vxA5ZS!8;B zTR>f>owZB+HVk_ge{QI$jCHTHF|SayM0oxjZ7;v+XkZ4q9(QwFw7LKMD>d^CXUR+= z38wdc!W4G)5kIMIJGm!w0@}47lVAkJFC9?9te)BVH?1i) zY6v3Gv@c=4thLyXSnK#5l&I3)*nCN1Eb84g5Z7XPcbBo>WoB zKa!Do&P=F+m;Am4M*B^)!FMi zzE_y5niERk5O+aS1BV+oRYo(!qC{~?7W$<}ZXf^3Gl^U&)CupjSJs^$qZIa>1vPrf zTiML__e)YE?B`-vMJ?m1$=hQ2WbOa(kH1mx{9jS66tzt(itg)+$8L3~viZw9+NHwr zU$5}*$NCrZs-!o%4<};~P)KW|1qj+>3O~4``s@4DP}_tbV`S-)A7Ceqpsj5`2t};6 z$GlV)cqDjCWk|AH?r!>~AJy#eW$hsi?Iiz8iCfn#b($VAGZ)4o_S)SydG8O82+nvY z2Oua!0d(NTgg2uxe&dt}t5r3Y}0hIxQ`;kfmEUp#s~kx{)rnSPg*S>nqJ+r#}) z(^H`& iCLH>#{r@^P6wUMfesfM82$z0zWZYa%I#!g^A6Ae literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_tx_refused/00000.png b/tests/standalone/snapshots/apex_p/test_sign_tx_refused/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..e682e4d04f43de2c69d826f3b4784881ffa3b41d GIT binary patch literal 3134 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 T;KJU&K*rVi61c|c+E4!gsfxpd literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_tx_refused/00001.png b/tests/standalone/snapshots/apex_p/test_sign_tx_refused/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9b1ca7643797d1a80d6cbfb64e30381129fda5db GIT binary patch literal 4483 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_tx_refused/00002.png b/tests/standalone/snapshots/apex_p/test_sign_tx_refused/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..dbffa935572352885e2c21fd3cbdc17f217e0079 GIT binary patch literal 2156 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_tx_transfer_covenant/00000.png b/tests/standalone/snapshots/apex_p/test_sign_tx_transfer_covenant/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..74ee5ee3425628dfeb3b83c05c7c802430a16716 GIT binary patch literal 3151 zcmd^?XH?T!8paWq0Y$1nC<03x91C5FlxP5hBZhJ43PC_%QQ8n#YRE8#;(#b3O-gi8 zK*A)HF_Hj@^JkDwMiGLBg+UB0gg_u6fs_sFe%d|zY0rMy{cz8D?t9C*=e@u4-sj%= z1_o6+tb15SMn>tPm&dmCjUwGOKzt8Jmiannub1TSFdv8v+u z^afo$Gr(R0e(z0qk;k-E;MeT)XeCv8@0~XP;T|Q!DH_g-Feyu^Xqe8_K2-CwM7H>n zBUd$ilBaT;y|dS;>K^vOWBNfPxXwX40D|UT6{UzHGqjJ1t;kKvw|)n_pD9!Lf*eXW z&i1RH?kni|!b`8Gxk4oHy_lJaoHND8T|;)A7Eid5UPY1*N4bq9XF- z@+@gdB_Am7`Y?vfHzxCVGLHaEJl&LBb&R?i)IW1@DS*ZCIq4B}gL571Qno@$NIe%+ z5}vB5xr*VASKoNyv!UDAz^s5a1q7(Y5WoXo{DIY|oq1MYa1>adc8AKxk8lm zk#_L?mC7JGceym_Ee9X)lP>!L-6GH~h8s(kkfO76jR9}~zOdvp+aG*+R5`>m$r82b zNWdtVpIX}%{krlL*?U7XY;Tv=q>D(y4s1MELgD^=oBAan(NNCE8n&t=3b+fu0RDcr z!hHv*Z{BV9e;QJbOWJFT(f51C-c-Sev&8vLFZ(uxapg zeXYf2bJrbt8~xBgvA@O0T%>c(Ab+p_FlcY$gG1bEM_K(|q-*BcU2bnBBkZ<-dwLy= z%vgb>jzsovWCah?;2onFcmZ&?c6*`@)8`fR^b<2CfYP(g)T`E74@sw%O~IF& zXSI0}fLC`-8h9kkuTi=M&JME-ew?w0_vjjF&k`iropg$!Z%sBjJ6DH1-i)t-Vvep` zi(ix7l_h0!ijEonef_WLR_Y0xsj;7?^X`F7GDMPB>8l@z^`%LbzIxhWf|(v3u{~w$ z56Q{7bgevvlO49j?OPXCP6lRXH8yl_2g=^lm){*);zXdXX3g8E%y|Xq9Fq9D9Y!J@ zbKb#&_|D&fe?rpP@5{6EgURPA?j$Yb*oxQIo3RaLfs#t_i4fP+nYK}p-bEt}7E)FE z-+eU1mlMyu%|#`OI-9q|Yn$&!<{kr=Z@xo70lX~uWpN_9(>29(EmF^5a7Tmx>cD)i zkHC~2Lw<<$eg56Ek(Wn6(-N1~%pM#tw88()YW91EnRmk5RY=7>-!LBm&9i)lbBtP7 zLe?rEb3&h3)iWd^vsDimm8YJ3GBUIF7UScKP6TsUt|@0f7!Fp-V~NmmJY&n9f}8(_ zm{hO{A?Md&Dy)bXv$Sjo;a4c+DhJ+7X&aM-7e#V_(XPqO(})p_kSJ8f=7a+Hn$6U~ zpt?SM0(B9zHEVEIo%h_*tLh$i#Xk!i9W(kW9L=MiRO zhFv=4E)9z=nWiDV5l(JHUxAhMFoISbk}CIhtaF$#w(O&LN%@*tk*>H$(#kiGE`-7L zSrQuUbPX6*wKo$N&N5RJhJ5=d1n}wRERIcgHj6N0GgN6JCokmYgrd{(ud z!Tc@btpT5{qsSVIPciF*P%=Pq)IH?O#7dV>lX~k$3ygPdl9bS$GX~N+GwQ{EWzE9L z8N9gvC=Am%&?miVxWq0$3>+dR(S*vbzb#!B>KfZ$Ln3aa@A&AeSpL}Nurq!)@tE7t zP&Jj~9>BJBTXN%$k>98Myg|(F6+Z__RF_hN`tz!RQz+zMet&(FxUO}EAZwoZ)waPj z0qtIEXW4reU^p}~NsM-!&2k2^10$$Ybcsgc?@^PXxYDv=8` zBp;_?LHJ~(r8RTar=(vI*wIhah2mYe7z2dK3!j)#h%(`l1ZF8kdWRA!dcx zsXt5VpyBfSdTqf2hYP}1USj{Ei=HqK9OU{B Fe*=M4w-W#W literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_tx_transfer_covenant/00001.png b/tests/standalone/snapshots/apex_p/test_sign_tx_transfer_covenant/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..4c0b236168d72f603813e34408f6a5488df4df85 GIT binary patch literal 4207 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_tx_transfer_covenant/00003.png b/tests/standalone/snapshots/apex_p/test_sign_tx_transfer_covenant/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..ffc30d529fa3e6a1da53180454acf25ee7c92ea8 GIT binary patch literal 2896 zcmeH}eK-?pAIC+9dCBr}jFx%uh@=h`(;ChxS;d({A!SB+NqO19vx(V~mBg&bOD3zt zDvT$@Fmtx9kSSAf z2T#X}wC@vno(M!z=4<1Z-QT=&`Bf$-g)z3Pv)xqQ%q(srBdMAdBXhHcj>bsg9)^i} znp0O<9kX>)iRh8hPH3#Wq=akQXZX^1)S1KHFj;x{at?0Fp?KZkTdGVb>mXeshMHQ> z2h%(;7sJ`lu(RfJuhU~xqKlSIgg8bR$5H7~yP|9^>~H(lV&gzl>*SC3!jG8rqLzYM zM5=l{2W(ZK7XQhI{ix;UvdllvPDMw0@%+3z&8wyTdlkA_^C{V99F^4vvpw}DTEi9IF@a6=S`Ypt*O>!e#=3A#dU^utZ^}LsD5U ziVk!l0w*-4l9K3G4^Q}Qwqg$mCccXwxMWo$2lyDLV|X_VD;xTV2HKZ*;r2RhBBaiE z-`0BLt|@MuLQAOOS#uL{9HBpOLz|^qa{S_y-zRv_hBxX!96pqnODqFQXQgHDp(vX1#dGxH$%ny(lVA>?$yMl(IJNuIXDD8 zCWnH5JU`#ME=UEw&{C9nQDxuf2yyKMUoEon`a;*HwJO1Ic_XuEBg`Y@q5w}0+=!6i zVYf0DhSbj9Engu?8UNPiEzAY>sx~^>N}$WST|(S1;=m*qamf_%areQhdi>ymyBB4n z;=$rk$HK_%@(=t4q?<`MDEfjAJLJToB>N)UNRMCU2Z?X|Fuy4H*`ox&(4pwdKVGiI=KBNz@W1)xJx%-cW|RlxCEa043%*Rtz&vMzREq zZK&1LB$k!f>l4bs&aS6A_a7-Q^jGwt{LcmU66K01es?CJK1S+ngn!ltIWA3QgeW*p6TkFgtd4vwCSBw3t!zfvtrtXrnO;8H#@2NwL!OGq+fvKxoe_w4QR zh{4s5U9Y_8J2^g2ObT}LF;OF{Pq7F@xTp2&<@=t4&aeoVfM2hOrn!3<`{8;cqeM`& zFp}gB@_SM%gFrg6O6z2%YDKt-zP_f};V7(QlHrRfy_2!F9DdZ#38AIOel9Q2r04{)qeZ9w%hVb4}%)H{xGH6ZmzXTH9P>W z3z7H7y=yOKTA-Md<~Kxk6b{>cn!kW~)MNcoPb9rzXdHwJFzQ3Yqe|a?g|L*^Fxc)5}tR@Cl z@utx0LX-7dvNrkJx=O4ELh&*(ehOl1#&PqI`f$2~#h3K@b=Mc=2jViY`-OUGA_8&hp&bFWbd{J}^_mqjJ1*T3(5>a?;dqN6` z!4iu1vg&7jKNHx9cftt@)kvL)@kqLm!V~ydieH)6wQ(EGg*++Gu$a(*Crf3+51(sR z1WW2)t{3{WaouzXWWt>)5ipJYezq%oZ3nf}L&_{~>GESmI_WQ?P*=}!`s1Qkb&F0` zarbC<>4!0;JJjZ%6}Ra(@ZztU5Yz)z=ro>A?qq4Dc>wX4KrCH3R;F zTsRsHZ+;Ih$RBAB_MzMuNH#%j;HyG_@|vy`YK2Wr?f0uJY(AtI-)?9xx2`a$aK>2r z3=5~<4kV?D&RZfL-OmQQ0(!7?(R3xhCNv!Y zwtE+p{<{q&7i2wk{lcv~6uLzC|E^92|4VglsF)-~lROM=YAKwu(y=2*SH_{BE58AS CR~l9T literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_tx_transfer_covenant/00004.png b/tests/standalone/snapshots/apex_p/test_sign_tx_transfer_covenant/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..7e47ad0cbbaa5de52fa3de7cd9d56cc037a34dd0 GIT binary patch literal 3058 zcmds(YfuvC8po}6jl683b+EjUs9CG2?P^|wtyM7%tn7%U;*z&aH_Mbz5i9XRuDD(@ z%L`pjqGh6Dk)n`bl9zDRR>2FdX_A5$B)p+^XxdL_=FIHOe%lZ4f98E=-kJBqf1clu zbP@^I*4U$=rlzKS+{5*>n%X8y)%g{$Sv4sJb*L_y4aZ%Np23yOjEv+xa8gS^y;gzk;EPQjsbLyiKHDIR{#b=v;iI~ z0vMn8XN{#XiCYAdD|n>U?sVfivyxXHxUH11ULbHWG)(U;hV3e-MO|NzlmeKC^oN#@ z*7wm_j!^ohE|ZEFRF?O!bAsamQ=xOXKZw^Q_I`*sFwzf zIpv06bxOB5$}F7~PO32%vz%jWqKSYZg<@powgPi$jVrc`7i=~U-xI&u-Yu3pYNZ~J zOm!99S-AO2Y%?w~GWs_e0h(iUn{0k$(>nuQQJ-x5_+udE3bMqVrLP;%>52=;FVaqZ z6ML@wAeDkRbyn#rsHf|Er}exmuHG2bTzT(h+wN@vwPiQ$*DrQ?2HYXKyMVTYrk@9qDvnP%{FqJh||wCC{R7FL3gWudNn0 z_s64Q*w#ZBQ7=g31trYj7Svq@L^?!felF3JGBBpnJi)9hap`^+l2ijb$J`BEq|V2D{FV-aNP8V@=J-oUVzPX8O*^v&HCM}b zt-lJ9771osmbMvpdHlT|GUcP@_)orp?EYFi>>EECaP?W=uzL#7YJDVa37kM)y(&NGO%HPbDy4NFe;=on6Vhl z_w-`ai$Mf~72-1x6gN6FAXE}9QVM9Txu`dJRE6?xzHosI${eHQ1q6;ZDU#MVMiC5j z9UqbNaE za%1Th(KElxM)i6jUHVbw&qT-|Ui!emTLA|jaIE>vG!aYu>_U{Uh^ zImN`&=bQlRK=Fi=*&L>jHhL;s1O#mFlp*`gH1poboaKxB3q2_vH_7={-o24f=3x&Lq`tJk8zFpB-%Rr1@gF zJEuLWt3QbuB5Q}xQV3SKP;US2Ag2rKffp95qtAET zE@&AX&Pgs-vbt$tY}Lf_9%S&$Y?%E)T#q5Uw*ADI1kc*|@obFg@S)#k{J7un?4uW* zxG*N_wZHG{!0Uo%X+tyqU?ol z-t%_Q@*{#ME-J-)*4lY7O_;@-fkr7g_Xk_XSl_!_WZW>b?|5XDm?g|E$hV2#VY_e*RZ1qTxAsdQGlT_1hR--1>aU0TFNPH`UD?L^ZTx>3jwmrEGZIMseeXl|O_zTy8vi9prC44?1&~%mNR~Xke?9)|4xw zmLw4F)j>j#IGeKNS0seyJm5%WPOFBR+iKQ~Le2eCpmJEG2zJBV(V4fScYEk2AVy~77&8vTIWI|ER&&Ha{p<~iA zfvo6akf~ryR$OL)q->PI#}4DsvGH2D`cEr+Jp`}twB&r=Jkq;0*f-u3&%XACb#tyF zP6BE17M0jt3gdBKJ9Z6G9DaT${m?nl@J!J))C-|gFHAej9Cw1ZGYCH^3bwxxE&J3B zu*lVHHY%35-pD7r`Bu~8(pcyyAAOjzqI!6BKyq6vE+D4f8u1H}o-?_M32ldX4fwM; zZpaiFGCLz6$HdBM_66d44tgUzdET%3a?tk4Cfh?g)lA{0mkp=4IGa!J^Tvd9k>J;1`@+JRPvuZx6 ZVZ59l=wj}Us9av{xEs>7`q)o5{tL2&gS`L% literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/apex_p/test_sign_tx_transfer_covenant/00005.png b/tests/standalone/snapshots/apex_p/test_sign_tx_transfer_covenant/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..25bc2a57f059b7bdc1fb7050f285bd0e063c47ef GIT binary patch literal 3343 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_app_mainmenu/00000.png b/tests/standalone/snapshots/flex/test_app_mainmenu/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..e784bb12cb5faabe7887818ab0904691f64dc9c5 GIT binary patch literal 11523 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_app_mainmenu/00001.png b/tests/standalone/snapshots/flex/test_app_mainmenu/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..ecd73bf86e07011e20c728c5401dae51e834890c GIT binary patch literal 7997 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_app_mainmenu/00002.png b/tests/standalone/snapshots/flex/test_app_mainmenu/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e784bb12cb5faabe7887818ab0904691f64dc9c5 GIT binary patch literal 11523 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_get_public_key_confirm_accepted/00000.png b/tests/standalone/snapshots/flex/test_get_public_key_confirm_accepted/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..8702346a3ad90de8c1e9497cd70cc0cbb0ed75d2 GIT binary patch literal 10457 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_get_public_key_confirm_refused/00000.png b/tests/standalone/snapshots/flex/test_get_public_key_confirm_refused/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..8702346a3ad90de8c1e9497cd70cc0cbb0ed75d2 GIT binary patch literal 10457 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_sign_message_accepted/00002.png b/tests/standalone/snapshots/flex/test_sign_message_accepted/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..41a522bfab244fbb5be9c28feeb23fdd9e8086a9 GIT binary patch literal 9271 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_sign_message_accepted/00003.png b/tests/standalone/snapshots/flex/test_sign_message_accepted/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..e784bb12cb5faabe7887818ab0904691f64dc9c5 GIT binary patch literal 11523 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_sign_message_refused/00000.png b/tests/standalone/snapshots/flex/test_sign_message_refused/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..0e4dd3935512c0e8849e9c7624fedd2cad0a7b19 GIT binary patch literal 8958 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_sign_message_refused/00002.png b/tests/standalone/snapshots/flex/test_sign_message_refused/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..41a522bfab244fbb5be9c28feeb23fdd9e8086a9 GIT binary patch literal 9271 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_sign_message_refused/00003.png b/tests/standalone/snapshots/flex/test_sign_message_refused/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..315d354c9ec111d5b3b8cf3156a1958f137d660c GIT binary patch literal 9996 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 K)LnLc_qaonTY}CDZx_= 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_sign_tx_accepted/00002.png b/tests/standalone/snapshots/flex/test_sign_tx_accepted/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..131050323176d9e845ce31428c65c4fda6efba10 GIT binary patch literal 12075 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_sign_tx_accepted/00003.png b/tests/standalone/snapshots/flex/test_sign_tx_accepted/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..2084d609afba12dee798185efa4eee1c91b6110d GIT binary patch literal 9428 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_sign_tx_open_covenant/00000.png b/tests/standalone/snapshots/flex/test_sign_tx_open_covenant/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..2e82d018ff94308cad252f45c3a225d0b4a9bcfc GIT binary patch literal 9894 zcmeHtXIN9;vo2LoX(|HJEFgj)U3x%Nz#zSd6hT0$^eQEQprBL*q!XGHLk}fCNqaonTY}CDZx_= z3=Ev$dv`4u7#Qan7?>WiGXZyQqRI^z7$khbcXh3v6;Wnp+RBX(iO!K3s*D;e57-5m z65}pEW*3Z4EWPZ>em4HarOWr&W7vWl1;4T8uuGmpHYSMH9zADT2(;kcC5CmeGB7~s z{^S!33z>i2Q5&2_ zry0{o8@br`O4=tF)3A4q7MXc)c>=>8(cDaeC8ZnFmz>i+h?Oc_rH|C>+}C#`(WE>+;1!Egr6oRUb38$?|xRtN?Di7N};HJMIfwp@~XL&(LZ?U`(I za@LfV&9vNEot3wo2LVznjyLy!6=iC3;t6WBv2ga3>f!k&ddZnC?lZyIErb z{ETTCn^qdk!)I`2zkTnlN|u-L^^xVl2tvJRF$nE};kzxwBq-QMa*{CJ*Z{sgg35^U7QB1PkkU=5<}x zw2iita|r9UY%DGzF44mM6>FPP44ujUXmYxZYvT4TS7q#=8?i+A zkV@n}lPXotEm*N}{HC4iQ}SY|3Y#Yh*eHSS7A?Re=<02IH+*fHU9v>MjYU~sE2RoO<_(~-=)@R~mV{G{U9=aQ7bf&r)3E&=y3q_wf)o1B zQ@QnTxqcR~OTy~kTI_m*$>Ra07 zICxRzoZgssTc=~=4dSaaV*?7l5zxlT)sm7DEiB6KbZ0HhyZIr<&9@j?F#o$(KJY0rI?SLKmw&3s8^CvF2w_NB_KNp}Sx^nkoy}ww1+W>LLP6YoHt}aATo=j81($*=s>s^FLkv1Y>z5*<|i;v++ z=OX@jpAa6{AL!GlfZYN;5~lIOWuA68;8JDNv52{KkCuF5c@HH_vv9PCje^?|4k54& zVZdmc)?ujLB0CE)4!LoYmJr!6H3T22qn1mO7vplscF%g}f@$mLQja*FyPI0$Xi(DE zR3a5m|EJO-OZQUkx8WF=V{@d$(;w=7HWl3FT17$BjRdJbtYqH_o4L z)pFqHbJF$3~k2R?G&y&ymYi?1*uu z+L~q)e@v)R7$9r&VAa@;KlezM`X4tS2GOUF7%5wShKO*y&(zMZTjv2ux`}vv)B$qL z3d$4l<3!Xx)K>G%bc;3gg>Uzj!7maA+4GjUnwmE5D9W_`DXikujk?B?q})hVDE~WC zc{IGbCre&~$xe#+i}1m{1^-o!A@D4Uiyhldc4Q?=nRfh+{eBJyvUh8|K(xy9!n(I8 z%-Lg9lSCduJ0{z@HHSeI=6#y~Da{#P-?ah2Zbz<4nc`(tP!?cmT!Cim0m`O(a{5hu zU-AB+oA6$x$#b|Pd$)1aN!x?%s)BZc`_6N%D08eP^VC{1+8dm5&Swi zCN+W164a4wX-2rVfgt#z!RpoY78!fl+|6((G0ggDMy{t$_OqG?UoNplO(Q^;`enx{ z3PPAl;TuFp{zPZ=Wob(8SdRD?@3zdHVMzAxVl;PtS(KjnSGL0Ygyiz3UXD`Ck2xOC z?>&xP;We|*2FYdnQkt5t$uS(7^S^_8ZFITEuSZ>}viz1k;{Gc!B2DV!kuNO@3%+f? z_~9$mh|!$)(Xm?zrxL<7oZ}|PcP`H^Zs=)3| z?NY?ii&Y<%xqWT8Rp7PDK-d_9q2c79jvp6o5rP-jb@@@sYLlSG2hs*cpQV z>&1VTKsu}Zet?I|UeyuJfcq128?-{}QD*gq6ISK6^m^E^!-~)F6KcUxOs`!%S^Eu` zrFGhNj%CHASpcT#f*^d6t7p+Q%W*U3jgJj8E$A?Rt0_HL?QwDXz>=Mu|E{%z}L`Sso|mjs8juCL_Tikf^s zPRTWkkAup08QwIgQ&Czempp}iB=>9056XW}F6oeR_y^U(2(qdr|Cw3ekti*0zEBl$ za5P(2!sRRaHrT-SSbB7hUij*PbtN@XJRt4S=L%c2^hrwH2X6g#1I_-x>1PhH>tP{W zU9t1C@=ppqgtyGrjZO+nYtz*mF1&oNJn2zk@?BdgoLr{NW&@W;F?trj=z#K zSJ3bYlDO0J$<^&>ZOzM~IL3M*#(JxR!mD__kVR=BHg{$1760)*X|yl*IveO-ZP8_9 znrcB!c;qfW6&lFA|2-rtZT~4$#2qv6Vt9-V6hVuz&vAo1TqT7B#W&9GNxRj>>SJ)N z;^6%vZ=v_rCc7#$W;GCI;)vCLuk6C{)1PWF&&0S~5rmC|)v2_9#jF|bDbgjs=utn! zQ!RdReinq!yCePMuBpRv!{Y~d)+J7@!SzGh!Sz8C8&UW0tz8ZF$-IKvAS^Mu-+zE!te_j1Q z2lH)Oy@JfUXK){DdG$7S*5~j(w4HS)7eSGL7V&v&_m=!GZXK4?e<+`R9jb;g<6iE8 z%?^kT8}8Akp545@Lizyvy*}5w8J;Q59ea|s5w~nPM2&8KIE2jOPU;JZ9bt7Xi$CFb z6`Tp=8D3Vz7Xwumg)4`$fbK z^_OjS^}l$(2X!d>cRR>#lXBfU=GM{hY$x{Y5;mjE{yk?Odvo69@c!_wV&Nflf@0j| zbXTv3g|5+F?aG(f<0X@Ss+ml*ZX~%ywRZ=8*E7#{yP)^B8wAeW$M^b`+|F@>R@TV< zV}uG`3;c1DyHfw?i=7tg*jxha;^=i;LnDR2xc>xIMI#-J>y$fpgb1`$43WAWiOiLv zJCU@DO`!5{e&3oLLJRG#M~+)U^r@YKzXA7j%sLT~WJkrN#z8av#&BvMKSJv~=Gp;k zMrIY|{V^pvTC`qxbym;(C=Fug=zk0f6y7=J70f*fP;0gQGngv+Wb}@@$yt-vWNZX< zeJ6^j%dIZX9m8FeaH$419P`OXB}?pSgmFPtkY@?81M;S4#;-+&%JM0!>m6x`H$FCF zqw?yu*cuGBOzqh7&lImRmB0oojlyMe(Un=%AbTjW!&Y6F=Y_Lpr)6@vymW_T@_>u; z_h5u+nTfg~c6<+{p2{aN*A)<{N6e3j} z4WIF|$rviLo6TEC#2z>ny&_-0g$+Q~DKwei($)V*j+PMT(TH539M$Zn23r=ZH20gB9JQ4CEuAR*wsz;mht_AP2X538x76Bx-XpmgCyld~Tbw4FV zUE7j)k!;$nkMzSEstAQmr~7aMg)6CVA;2?OqZ!nar59 z9U3Rk2KYlm1rn<#zK9N8wkgg#cDG&b7_P8KQ}}yheG)*)%L}Szyn61!=%de znj9NrV`6?8w(qylSMetOkWHL}UX4=W>C}3$`9W&0G^otenitlrQ8&)3d+T4$XokklhY-+!) zkjSqVcSAJr^@=vAZJ!8%#H!S7wpPgZjSsfFM89zrY_MrY5;Bivi~maL#_<~ExX;~k zacgOKIjV2yaOd`^&h}|&9pn>YkvJKNq^T}S(Qs!DQfvBRelJ9RBwjA9My-7!M?9Nd zen{wX>YpEmAMWktV~OacO-DnO^nX_7f(~x~iE`o&%PJas2GU`TT3g-j3_R0Ls0TR| z2pz{>W{S)-(y+2_bC4Z{yeTP87YQa%zDq5^VDQ-7{qw&t=uHGid{~Z4?;JtOt5b0w z;oxWTgsxeFrMw2WC*e6s7V#T=VJc6nOkF8&Mt|$!>liJ5 z_43g$YwymBmi4#(9-fc{FLg02@9!O$iYj_X=J9b(%KjhkuBfSA&m*0e`-&RAd>Fmi zJM|GOC=V6uZO8%Men5ymCmp!vvECj2CeJfiXJwx<9oatp><41iwt-&qxi3AXZvnTf z&$KUu8&I%T?EciStuZ(7Gg`aQUY_t%t;a#ue`P;=j( zxg!YNN?=ZE>;o zesQfxg;?o37|d{7J-Pgw_f?V)6o_$dwtRYTiF@-iB3&~LuR3dL#g4o>ew34#_zl{uBi9cC*zt z=hYkQt4=OwuQPc!$d*zrpV2C{kWwy*wz%Fe4xYO9c0|wHL*0`-2AloeNk*;)c0IX# za2x0D=zgJcM~9k^+*M5X08Ic$o!|u_MI^JBs%Wd>8HcQuKIO zoCVgxx&|-cXS%ix$ZQkJ@3{D)u0UrO2B}5cF@^fp);Ds|`-|JGBqjbkISR%TlF1`d znjVffJj6@%c=ZZLtF$ZNG5|pSvmW`>fg<8Q70Vna8WJdZbt#qC7~3-tG0i(=ZLO}^ zVfADg>3i?g3uggTbA%0)C^6=PS`6%+E40nqG&}p-xdhIe7e**|+F8EhuMli2n@h1N z1-6@WmE%q|i(jwWrff^(YONmKGwU@Lv-M4gVfM8wSLL|!JCHBZ5mD!tDgO46xwk6y zA0$dN!ywASebP6g%G`0i)uU_1Fe52=5H52ce5Lx0^7edKm#>Vx?DS^g|_yv0h%{9F@jpC_aAvg{3@y}oGDwUc$)OWH)87WPbEy-qx8t`*G)gtsj`dJE#t#COk4LaLD!6QHF0jq}ImQUA}FrW(pgo){R75 zD@2Xb<<9N&zv)=3TB;Mu*Yiwmnm56(Og^({?)#Zn8qOv2e3wHQTPCIVF%I8shUX1>2~j=AvQ*zuyz z#lZr#H`VXEGpk2LXRETKV9uC}+$gW^uV!;BGkgZ|5A|J!cC)G#n+Zm!83uV70HiCG zQf5yZ^}aucQ~Y=z*1oS$_e&3OS1Bk=0pyxoTs`u{$*vSc9%?sG+bS_nA`P9&edoHb zYUg-%+_y?@2Jn-RK+kOAUQ91y-QC8cyt*eLKkIB(*U>EM z@fTk3kgaO!QWIn|5K?r+wZz?sNL;-sVWnEkk4pXYrlrgDW);=QsgrTOnBBAT3HGhh zuE{=m=U~8PfpkmR+TN^ol6-4tdYA~6=cw#d%>W!qRxM0WjBRt1DQdUAL%+ita^RY! zwtZ%F93d?|Ec<8al$RIv(o9`3zk#-)B|2OnlukBsLNLyct|UCTj#gBcZGaheYW{8n zXTEP{$}DaQJm!c&*|8RL`7f&Fh>mDsi|KRX;G&2x18;&Jcz4ZwKS)_>zw5jFR5m(y z^#nzFl}xP+@GZ_?TYbf!ROWL7_B_9{r&@Rn-RAO+K_yQzy87J2RV~H*g<3m%W;ecIjoD( zG(OZ(c%q%FEgF&E|asU2}7&!8^&j3zL5`Q(xxzgk@iBV6@&&6U4GZZNd=gKq@2K;I+U&DL;CxorGo;~U~$B$6xsG1AfWO2tV} z8*^Ua)3Il>FuFYbfm(j9A(_@&oO3|NdtxgQ3p{Zw)WujYoPiod_5Cg9lFN0MEv&x* zsJLRDx;KJ3WGo61^|p-o0E2C6amQZ*XUcOpX*8Bg(hiUx?)_AAtbZUE0>J%Yh9E8d}(#;boeg(qU{y;ZHP zj}8xq<`SaukAp}udMlcyu766GPKeAg7dU7TUIu51FR$lj8aH@cD?`Gn-OgSBHOHA`_LCz1 zHw9CbLyUkDA<0gpyQ>7lRBvEff-et?Ij^sZ(1kO*?HxPh<(y6R^hLPLHJc|Z*uT>k z-=#%s=N_-^91O`hP)=*cm7>;vno*aCx*@DZfSN7o>d z&l6jfd#HlC=P=m&(+9Ke!iNuV5d97xgnj;ycblDTE~HTV#L@-OUK|&lBG(X`bTI=( z30oC@IS|-QpcIWZ%b@W-5&%J{sU%FqlLQo3;PjkPch@N&?APx5qCjg1)_(p-q5u;p z%pIh!fu$~PtdN<^dFvlYYgVO{H$|n@!W54ounX?Ky}ddC4-1s``%t<-TWG+=d|gaB z*+r#rMhK}o6q18piq`gzMn`L_5!89)_w)bjyFp>dW7v%fkyGlnzozOA<;X!@$yZ zGU~fZVVc9?W>aoOUkF)3UCe0dnORTeTtpQ;0TMw04urKe9C=eT=*x%C&W*ovAOYE9 zHH}sE>ClI_*m|GVzXh>RiDsD3c~K@J^~|4{IELq?i+soA4_;yq>nc|NaW~cpig~_m z94jY#wKPeP*~5_UJcvPV{>j!qDSMZ%oy-#NaF7jiD1akm&^kAl;mG+pS#l@WM6>k% zWj?My3fE4oBR@v_a|Y#?M_-JlOfD1}H^%2sg+BFGwifxeIDLW%~4gsmO$m%kxCd02t1R%2OeY28niImiyHvM2UsBBQ*@erED7R)QMtH! zt=T~KX3xiL*fS%WRBp>zNse8N*48z-yyZ=1N}od%m!XFbxE$-Uol zbFMD%d#Fg27+bi-7!U@PjYoH{9WdoYZ3C4oK&g1`Eo<1RjA>z4h2C|bBaT<0PsmiH z$AJS)QKOh7Y=n&GioaxRNezW)iBhgiz6iC=0rZwK;DQ8Z13I%8vtYj3uK`O%)e@91cRQXYl;il76WGti(l*^*5c+n>^~YX^2(RNJ|5@LZ5Hk3`?J@lP1>Xi^aiY#8*LEu*4pMno9bo%?@WFIhAa8 z=nZpztw$k(b1rLaM}Gz;Ix$Pnw0>)a(UHsa#;D0qi5xoOgTAE5LK{>)4{oiAA{FU0ex|_rk+b|eQ3*W3Edxi)h>lk7f$~V$r zELq1G5@Q>K2{D%6t><{&<9MHc-rw>3@q2&I{Np&xHTQjA_jO(8`8hwI&-v=UsR8?G z{?i~3h~4n+9SabMZWaWhf5bu${O5X4u>lAKrZ>E!`ylKsnLy4h#)wch4+ggVV`MK` z(p%DJ#az9~`iTCG=v6OPi)X-}yQ~OiB2vR<{muiH{iqugK4SuRc^7Z9TsjCv6SzU0 zH;z4*flIfZ8wAZt(({7^^=>l6l(2Y#o^sQ%gHkRR(RG?Ls({oJVwgY%|1$>tIL@*S zK#)Qlus8(ilx`8qu~LDfa8$Q_fv=%YIxQsAB&?DGdxDE8_Qf*`rupC^ z8D?n{EN_@jfRw-a-q6PpuzX?2Hq=orBhTz)$Q!t;_5SyrDSEbl zioI-AbQ&%8ZaRz)f9}`2+i7x4fHdSnm0Mu{4kBmtu>CEtAjjfY^_10CNNAE| zDRA`$V<{AoasyYjs+lss^O$Uf9eyUt(xre^(g@_$J=>`D$k8swG{ga~D^)ObuR_dl z-BC=iW4Kr{rN^~|^Nvq}7^@=tCyz2Y4%W|#CU?2?M>IA0d4%0dldai;CN|*2$Rf$p ztkd4Y*KW=yQXH2z!&FKH7Ni?2TEg(^_vs!@3pxmvwX1r3dUTdiiNz(*@x6B?6Ta z0{1&Yewx@TZi|MsjBnntB-rBPkAt>GpT8> z$Es?4G-g8(7jq(9v@5=MGUr?`D&Q}~j}wP^lQ#K`<1vC!Q}4%251)bh&JC8$fww5p zh#X$8^5_}z;^G%)BJ&ze!}A(fOoRvfQW}HudRZ?RQ>oGNXN+l3)siQkZy;nhV^MST zXY(-J$^$++#PTRHm)@3t$jXYqPS3iTwo9mxFzsc={25fT9+G$(>fBdy#ShfyTo$7` ze>ILm*GskEstGvdFY4qdJXkP3GGiX2k=y#4T|}ih4reV6+U*X3)1sLwoiQ^!Su{0_#DQ!Acfv)OPTBkQS z7^E{J&bW_p&=juhMoX81ajOC^n4Qlln`F5KYny)cB9c@O^r}(DVegLytlValLKX7O z@}|`?uI640C}A!M!o26X=$sTUZp7a*+)Za#236A8^@D+oa%u1C4by|Q$L|RnO?>;* z%_G3&x{uL03rjcIN#Y{o-g`fR48H!5-UA7laru)%-!{E*@44vRk;WS`@GvaHqwmwQ zUim7{J$=7DB7)yEzNl?KJ@PC|v}Se6xJk{U9>?R%6l$&MH_wnWl1|tDMjr@)`HSm6 zL7=2N{}~N`7;`3vB#h-%NPs?31mw@tcU~L(O84Iiko{`;1&5KtlMkn?&s*kDV6&Fy z+>46VTa4enMxP5R-hU9CIoi?xxPzE~9bsAydl=p9jE<7vAi4Y9UBJ8I}i z{wZeHoxg4mko{BLo&1msI0sZ>mB|Y$x~^zJ??nu&$^^yq7{8xL~xKS^n(f} z?!t-3amhEgD~^~S98(!u2~V4jSO3&{HeeSXTWcf~1Ak`x3ilmq$4?p20v{BvMC)(s z=oFFF$7~BtCD7LoE9m?v&&;_Ahe~wxk@7HO4+u_#> zH{sC(KidUH%l8Y-53h>w+i`yd4tbYT@!{nWvsRdH8mtBuh%!0Ohv z?{nmqzni&h9E5mmUu%t~6vL+;%fF*mRvm87eVHcztiyF^o(a+}6v(gN%vEfc+!+h= zBA1VNhmpH###f^{nvZ?O?WIu1;pHKh&4K+myn^%2jae5A^YY(^Hot-AkPr6vB2$XJ zI*3G}tAU}+4LXC9wQwKzU|0G2UF5*k34!)!WwPjrt}2Ik_7V#f!zzuOQN>;YwYAYM99|@{Y1=}W>DkW_ebVX&8X1( z#9cDo!Ien^aU6A@Y0nZ~c?=sZB+~P+GRL7OI}qI=pa>QR!5)Tj5rn5x{F*>(Ig@np zQTvwj?k85uqn&?kJ;+KmUcfp@Vz)>n((Z2PfkH`lX3WU)54H4HEBS>LQS*e%htcOC z{meHMAVWu)05F*Jjf#r;sXjnGK;=(3PHjXf9Mlkg`LC7iTo~#u<&7YBS-#^C)X;P| z(iG${OwTcqjad1{fPmB8Fd2zex(}x+k2Vu+{kO9f&2AIcfATJ6Hb=XVl}mQE>Fl`m z7zpQ@=HxhNVvs*;y_kg#Y6kpp5!%4{W3v}Ubm#G(4IZtF)?zq(P=GDpUks`2=w6Zk zT7B_%ohXZ3wh@uB7KS)JI+`kXra*VgdN5o!g8p5v!WxZ5jYoB;$)>f|AY}yp)ZJLW z?*msCT$d|6nIvWpmOSb-m`87W*zQe(q6NmAIZRBH5PpS?Ak|TzGKU zi#E82TH8T`O#HZZ99&89X|Z)yDSWK*Z6 zsxbops~u5U`K0LFjYS3L?0a&lIf-KMao&E&6OZTN!Q^55mALY@dY|##_+|p6zh^2m zjH6^9TERW)WCvU(FQ%sQp2x%rjnL+;9g88>8>2!(%`p_bL^yPgwm-WD4|TRppX<84 zH~#bzIaI4Q3BOB7S&M80_O`rEZT-G!4$1acMv3}bVpBno6G4Ca3}m|9yfh%&nKb*l zd((N=B5;23!<_B3V?eWyD=XZtWOH{6Q}x|(=$AC%RfW-d$Tdjbd-Y4R>$Z(lH)F6X^L3xbV;_+h@zzsvzX&_u zHblj$w+Zix=5bSzL=lY0Zp|EDNQL&Oll3;CJ}(ACK%2YIHjgR)x9v#40vv6koB!IN%(%-*b69)?&Eg?vsg*^P6-$i!)*b+Ip5LHST~8mR`yCBVWm<$dWV=goeZYQP!DYLE zfe5iclK*(5oE7P{rtC5E9YfIxVpG_wL7=-vca{djaa2ShgD?Moj>~wc%n?4irsdv~ zG@jKq{-gw}n;f7A9tV?o+2Vut=<(D_$62}? zgqt@*IZA{(l&=fF({i42`$W+PvdQ?vV-(BMG827kz(o%aL-;qs-2Olc7m)goeX5Ra zeS|znED`(vb}Ml5jg=sTpIUIg{P;DAI$|5|vh)Xa4w%nq^TXqpf2*{vHPC;l&_19B zzSe&%mUL?puSQKT9v=kFTE76+3RbBzXH(O~0CszPHp2KHG$;DJQ7Y9gBevIc;WNsJ zXQLf>?n2~#sy2Oq`ruUPrPIn0b@?ny_3NhIAJ%W22^c;3zGc7m^wR2fc<42BTI#tR z5xN`qBA7D`Kj29QT#&p#5nxrR*2h+K1XGeI%T%?unliAtY89Jra_jAg*^w=EdPIt; zlE4(QE05e6wR-TW(SF9|<4gTs)0ykDKa3cE!*}G=7wNo2pp`~I^uUfb3w$HjJk^TU z5_#pRlN{dn;)C*)A_`L8Vi(>WbvF-d7El1?%>A#=TR z9L%|4h}46p+{fS?| zOpl$(2oek-!S!!r4-;_oiMs@*%Hu&~#aa)lQH0Tv`{f?YxnB2dj@d)2g|SXFEQJBi zX-;w5Wt?;pT)NbdI#)oFf}aAajM`k7`<58egOwaF2&5vjZIS9Dhpv9lz0SGX*nt4_ ziyBmsLr2D7)IYg!uy0+V`IzZ;#}Td$tGf8v=Zg8^fRzf6D5w%v z$2D_{NQ>{gha0uA${_S8W$I3ua!A0ptd)r7npI53xfZ-Zle0PZ*6i<{^K0Xg zQpB9C4>k4#4fvx8+V-WaIJ{lgYkz{4mP@*g}HsROvo& zMnWG(cW%rkZ?4_Wd)~|~Co;GrH=*%xdIqPdhhfzxlqnIxLD!zKViXUe;n>E17u-_Fw%ZAa0izA z*Sc!oE)fXRJGE}JPj4s;18|KN&7RuTjF*AOhXUKS;^@T+5#gh)HayvX30DA=wG!w; z$T4DRvZD^;q6tO2PCbItZtZPAT!_D>_S9}~1F5CZ{;;>7v|UE^8;EHNeQD5BDv)fK zx_*Qy?7*YyUtrFNCihSqY_f6a$1-4F<*R>~ewpB@F2B{vH2o#cUleUepslryWjfHd}nh$6;1(`P(|LY%%*r z;K!qdz*of|g1Ui+XMzg-{YB#nzMo_;LS>*2FVkKc-{0F)&mO^Ch9^D#bq z`47`cp$BB9g0W5MWpJHY4(y@S1;$wWOBw~HWZg8#02>ggPqG@eTC|89kjDir>rO^6 zOuyB637qTNYVC(-2a}Ns)!Q%PnTbL*$9>OZi3$Jl&6r}JY23DCDME0}lKZ9o`7|H# zhDHT8p$^qsK=9umTZwK70r|E$OVvXgoKavVX(Wdq0SS%&A=R_7rm zGI8D!uvjwg>r6{P^h z8X1ZY!$^RV3`BkhlY=>)6%EB&a)0$e<~G}dv>EAcm}j|*7of(r#O6nq#e(7{Lzgb< zrMXYu`pQ`MnDO_WoxV1*cS%B4GBU}jXcItA&2MwQ7Jjl{7(D++RZX?)d{Gn0B!9uI7w z&Wwl;>19GG}NGRU&khgrJ_rHb=!_Phr!#F6ENIhfI!1)NbLj^CDp z`FZmQdvA!;y~saRLCIg%U#-i4L2OSi7YQu;>g4yV_mbb1w+#ud8%JwJ3-~AVF{mwW z-YQsQ=(?H0aI<`Yp>>E6qNCxbE-B!`ALla9Fusba)$r}OO8Kskgk5MLQpk@AH`-Vu z<}$7bcdFT`1J|9NK75*+pBC!Djd8K&=4GUv^NPWF=qpf^Blc7fam zHd(-{KiG}b4t3N=X4C|@-X%FiCU2hKv0M<~`MqW)ZaD1tW9})yUv?06!qsLs!`dQj z&V%A)FAlof9336y9Sd{BV{|#7l{=>z5C8eu?P+||r}_p?K+=q+N8H_|!GW6T_H|7j zcabpu)J%q$v@F)8%1Zua@L>0EaIJhKzH5uW(3|ZML}pT3?B9TCwW{vh-6CP2*%Vl~ z#oEkFchI#SaOni(MIOWp&Cq&C+~L6sO(!S5IH8AsdpFivr3@``Q3Rp%pewRx2ieI1 zJbuuP+%pjI$o}(FHol=I!E&%qK>(w&IiHOqQ8O5HK%GsIH>(1Ym!L)YDk^Dy`-a9N zA$=~hfh~;@I=%(Fl`5|XK#q{ym@!*5#}@p3lvaiR@s4SZDW`I=X}3^l6Pg)dFEFdI zU3~C%M?+7Le6#UQY$9}VraiMuct9r9wz*^CE_nd4nl?ZRx>5mz7?K1q%)g;il7nk3 zzU%Xyd~meetX=YFsK>uA30gzE6c_!=oSb#5zi1eh5B<_RVNXhGR*6I>7NuE}eG+FnZ2$#Qn99+Ov-n!1|( zef6)T#moObrF+7^)m&!MeX3muyxPP+l(9VOkcN1gO^1@1OBS;;(!#e=p6 z=68&xOSiz;!4H9)2q!uVY&0YRIel41zRdetK{b)jSkL_KR}`?D zFR?r;HDYvjQAQOd7JsO`2jnANr{7_SY_VQQv*kSi>c@Zjo#0iiC7<1kE-QI>B+dN1 zvhr8QaKUg(V}ne;G~7MHkB;e%`R_=T@eqfsQs0f(dse_FlR{hk^vEjHz7AC-Ren9h zp_#a1U-p*Oa2!UA7nwqA-E$cCi0$fV@NCkVeRB+H#RuTxc7rKfby#<^s}x~nl8o{opygejsLoZ1N`3iDGs2>pbEIC-l8QyNIT~DF6ae-g#{c=+pdZkPDz2I zB4%VONiY}Qyc|T^Asuu7k7ugYE$G7EaHsR{BokQu3`g!OUAlTq_N^d8wO;8}hd7LH zUGSD|dOk07$}2Kpil04Wxk1Io84!qyX2?+QJZO|T#+}Db)9zQIhxv|Oa+0=iYR~+T zBkH5I+?jIk{mQYb_eh!QBWYX^j`~YM6-Hy=$h%Tx65(lVq`*SovNZ!?N)c038Pwn6B>iOT94i>>Mpo}&pj{7Unaw%a@F^S z;d!a|-kddedE=C_+5)^3Sw~^pqf{{3UDlfZm#0l044d=~a`5C=rzo~wpi+FdG>vAz za8%fRt?z1bZ+uXv`+rJ6liB=n@Af00I%bNFS6Q9`)VaVBLr>d|{MWYOD6GshV{x$3 zg#Y!6S96cjlP6*3Ln?23y&@4d3{w@l74SpZViSQEu7 zt>w$$&U~JNDRfMBP6_AK5f?vIO$X;Rb z06_2Wl3}K9&fS+wZ3zJ!PkW5%fbf~-7#g7=_HPey_j-%`l`hxV7AmNc&?|Pjd@s2aB+N9cqv@a9?jSOv%uZhZ02B+Rc$EuEXug!z9$E!_O*xf zHoLJ(s4ZT;wc`dIPapT-qQ3mH1o^UFEo?7cs?rB18RfwC0W5%9f%` zg(~N}fB#3NCH9d`KTec|A1*_Y?DXlCy_9YMK$V&_1o|F~o-a)N7JNj?ia{Do=&r4Ej3`W3%(UTZc?N_7U*|Peg>S%9^{^ ze(7_N()H~=-Zn8i*rIRCU&agNr0o%WM2>ynyLG#J%{m*`jF^5~@B^AXBoCd)08%*r z|H$`94rI^^W8ubNDFEO2x7}p{Ro&!a{%=Y8s9(NNK=(^E2tV30UTg{4%J~tGDL&F> z-mgC6o005{5Rt^Y^d*2IG5GW8V#_kdXBmOIbV{jqyvinpLc>LWjT)!6rG2dnikx*N zQ76H(C|y7;?)^mu&ARpxzM5N&;&5hJ?gf;KdYdF%VX>r#+^7SfgEZr{ zuNO7rs|yCoN0y;zhogqu*HY#+&ZrJUnj^N%Wo)u0a|QH<_9C;Ap91>LUty!U%L6$# zC*Qf7SFOAdtU0-wdG|>jQpzwrKI?c)+v^I;vpIK;U0r-4KxQ(8<@%mC7en9u^3zv!A-mW?4C?K4UJY;qz14T+}jS1MhxZ9-*N6X>rk{ow)5`FFWA7S4yfy* zmo6vK$x z`qJeSP%4+mE~wBA@EM@T zA2T6H+w3Sv4pa-+b%yERLfwV0YBd-r-QNA)AanHOO|=ZRTPO#F`37bWK^KIDUN)h1 z&0BAd*|lr&c%`yTQ+Bt0ep}Y3HB#zTjF>k3JXU^&c{#`Vl&tPgR4=NhI4RAF{Z&ZS zjtOlGLY-{Ds%$nFPAIA^z7ji=o(r%GPU^5u6zYA^(6pS%n6?`w;!z+TeP(b=MIsEq9luHidw zbK=K_aSXHYMF9`baz7$SDMIYFtB01SceTNQr`zrX8;-%N2v)Iwm5g^E;=c4+|IDMCd6G2BmU)GPMT&LDy082wRan7$#hokjf z!Fw|9Eshi)r3I#({^JouT!Dx3pRNv>r)%&zr#D1^@DX<@5IWZmV(qF5eWy>q&>({3 zAeW8tJTGpjq}?H?QdV+X{O1y$euc8JvbwFg1qlHau5{qrHytUKho#51m10I|QKZ%y z_lH(EY9x`AE()r5yU74zQXokFx1!kpIg8VWV_DQszy{HpRd@q;=Gjf3_6IJ455_~x zx$jkovVd`Rt?H|FCuW?}&qNc7OR@BA|DUM4>VB5HmDRn9Vo4US$T%CcdSzw8{KR`C z31;h)@y*JL3`K)+P7O7H(T4zWLN!jF78UsXUU_O?^&^EASowLAO~e&*G1y_;Cd;rn zjzTj`pP($l9J5L_YNIiy#H5wlC8_!MLFhR_Mmj};w{zF}F0Hj@`P`SDoZ3@wTuzvi^30EY@Ee0 zgngOzg*knTV-}~j|y}ZkH9jinOG0!Ru zcDcUwLlDFd*J{|Q1U^bmxlJyGlQP3#H7BWrThM{|&2Nv+^*N_pZ1jdC3C{cGUHcCx z&OIac&w*iWqIYo~w)%@$MdOiXhgOv3xAQ;&XY?B4KB6`Ky39L*`E^Yy6o+Odl4^N% zkT(2Iiq`kVn}uWI`!qTB-^CzwJ(;WCC)p$O%6a91P$oF6DR8t1$;RAEp5_KNhU#^> zP1YbSFD)xt&9_s!z!g1nodVxRc_4!weO1^!mH3qbyB3dN=JZ%-!W3^({Y7yutrE+_ zYHL!h^Fi5b)LrWklJ&mD_PggbZ1K^(cXvEhjXWd1v@QJ@NHV)_Akx@wmb!Plz;j$g z^3_;)2>D9TsgD$fosbs&-$_JnaTP7*2OmD8?=k^p3xlG`^Ia>%q)g|}6Q@^(*z{pZ zUQhh>G{hvr!?H0tEIn!63*aygx9Zj#|3H}7a+dWk@QH%UY@W!C%V_`j-E|aP$f|{u z>fug24g5#7M&nKe6)Kjm8F= zx7Qsl1bB^`Wn0z=XJG749wIk)`=1W7rKay$tZ5l^XRlns`CfDmP(IbzvhKew>7yLf0z-^1 zRjTg7uOE5!i?NObr$k*>yFL-!=zp!#XPZ61@_69o@E##8|H}(+rZsN?u2y4E7iFdW)+pwgIDTiLAkZ zw!ye*UUA@XA0m>?Z2$m{?d=y*`uB_W>u<>eD-`f~GB9zeUlURybyXhg)GYi#H}}L$ z<<9C!1}!;UiYsV4nfiYq{)>(P;x8$KqqAR2-`)B;zv;#AW$Tl>P~KhxSc^Cx&G-@b z7HOEI^>nT9%+WVzo)w)_{CmsXcw@~=Jb;Sv5!PG_;`BS+vT2r5YmDXMT|$HXUr{@ue^9oaoJO2W}ATHM4k zsPI|tz61bY>SO-iDj7!3mx^ny4u1+9`g-QBUN;_2lzxVoBH1fqltKB}WTGxZ?M&Ur z+%f^OTiF-b68(Nj$@>M|jH8~b#XaStTI$$LD7Uk)t12ZU|JGrFCTw=*OZ>g6egD(` z`Ash6I(eiPg=*#By3``EQ6c!_IM#^JO?ofIe=KCgER^awB`{Z~o( zf6E#C;iV@Mpt7UDNbo;i2VEI)g$5Fw!tlULeq@8IxmT0yU0qAT5v(_x@wWiD3bXZk z4vyOkY+;k13vW-UaORDR@0#mGMlrH=6Qv!e-eDf8JMn`N+t zg@t@d`+rM=brk3i6Vi0TX?z=pOFd-agdrM%)cD=W$_haOxQ-)ZZavx|CdfPb=pd~S zPSg?PNalRw4g&*BNXg;j5=X{G&%S&3^aTCi{p==Os@R;)5R)TS1ShIJ=L6_}BKu(_EF(j#1%GCZc7%;c7*UZ; zxD{@CGSp!LROE4HsoObe)7&T3TmaJERKBM+a*Ug-9)hY10`9I~B=r>XX97q8aN%-1 z>zqFQi2LiGe;XOXXAPw>ltLWI^WGnATc44kcW6}lsf$6zZpvRb)9eBskKkNAm0Oi`vbw+1iwM{YOBYlkGs`?Tj z#pATDnKhs80tmTkRA0_e&bZSdK9&Y?4UaEv9LbWuqPau_DSSWR41j&OkXzo)KR<#56qzU|0pG-8ugQQ((AeYHn1=wG zqG1=#1HK+v0o}9jy~Eobbx=KH2nBx7{z-#DmaMLo6_B%=Kaya`5H*IF`7BN^(9Lpp zAjE(||7Wxl{EzK}_&@yMKaNv+=7-%upx{4%k|XQD^l@S{jIHbGvIVH{l^nzH0Q?Vx)4f!1LUCwMu$5JE+^=8P?*W7iAa!8vBJ}tU zSx@pSuw;O>0z7%$MJ?CUr|qBCn&X3oBk%ERA5{wAM9ycOYY8w!N5saf_DtZ?b5C=i z>z`^4p+Hq%T(xaCa}@v`A%|c8vUMZNDzG`*RqCF7R_Td8fhqcwS~O342|N!F z4m6v!E&{JIn7<9xBC0i$;qY=e`mps@zsm*kQs$}Pvy91z_+rT>eD#`}9^mTU?3#%MAGj1&0u%*B?@c6Go3`YX_P)M;OyMrf^BaG)k=bpOtzV;IW>I)C;?cdwsm z92>c8me&~K-~*^!6nyR|@nR!^F{&{+-91-E%rIR&MMQR`K@hhz%G|i$-0`VhS|qhc z2Fp)!!cYJkdw0qst5FK2_P{sP{6?$bZ6=4Nj`Xq$DP+3^RTk!cVejXg(Ng3|Lr-gs zQ`pQy?w3hS^?xhO$34L|S1Sl(GH2A6{h}9=OOtd@I zH}0UQY!tayA=TUA47M7P{Tp1igUN(}0~tTZJsTe(y|lLqi!eE-Nl0@xc41vu!$kuC z3Fid$(kL{gsRxd)<{vS&J^?%wnWee7a_>qH5yOTj(k3LAGW{#a+RAI*(kfF}fag1D z6Y`e*?&+qMIR7YbgG)8fyE3|yDYQ`tZpUCbrND-#Oz8qCwQp5i5l-}v{MzO&zY*Ay zv#_>H>&3PZAdCK8)Ha|Kq4rCgd-Othd!7}bJ9U=X2kZPI4k-@rRZIjt(_DDJo9Fe8I{v(ZA6W6fVmdI<9q9%iDeCY`M$J_<13)etuXbqN;Mgc7a4HKkPLHF44T? zWUdj()1sp%m07m@$Kjhj?;0(}+mVg3aiw>&b3sE*yKA3b^AHid~a}^y*KRuE8}fb8f&~ zbyvp2W^BT`ajY!#ahN@6QM4?-)z4(ylH+W`e+>X-X~k-;l)8!jTkKPJsYyQxy&05*0>e)C9qFeDwMSeud7n; zw5qJ6i3?)Y=HokD8h5W1xa&fD^8JU>5%O)fP#wEC+B%qZ2o?O$XYFU*;V z9!W(G=-?xE5%kwzEKEeW(cWvN%mXMM_;j(n~UE8}W?R5{9!7ONu6exX__Gbn+M9p_(ovWMpf*yg(WQX00!X1?eI-1N3V zQkCm_s;1_Po{NTsG06733>b_fxGsGW9ZTbgf6gWu)zD{{{yX`(HsE$r#QsEG$+p(y zm_p6rx)adqcX;Cvq~2V@W>{lSpAZMLcj?2E>cbWC0Tr*Bs$pvSDCI`F|O#Bu8WK=wPqp4ZzwPSMR>Qz7z882j7anh%HfykQ2q4TlJx4RXqi$0-Y48Ceaf) z3)TURwW7vqSh25)@2=PSW$yq6mD(Zfaydcmi|A|bu^ExW6R9BI+CVKd6a$!ex$X4Fr?da2%Q?gzLT}@d{$f8q(_o%4Fq1mSfZ*T79gfX=14_7p2U%Q2g*DSsnvEMgjvTATs;3?7D>g z^p8xvKxS<$+LRsJQhOC@H-xzP|8kxE|K1b(;rI++9&2aDWyvQ%Q!vO-&-6~sE$3(d E3kKdp@Bjb+ literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_sign_tx_open_covenant/00002.png b/tests/standalone/snapshots/flex/test_sign_tx_open_covenant/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..898539cb9c3c9cd8794b8f9b73670bad271bc3b7 GIT binary patch literal 11850 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_sign_tx_open_covenant/00003.png b/tests/standalone/snapshots/flex/test_sign_tx_open_covenant/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..2084d609afba12dee798185efa4eee1c91b6110d GIT binary patch literal 9428 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_sign_tx_refused/00000.png b/tests/standalone/snapshots/flex/test_sign_tx_refused/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..2e82d018ff94308cad252f45c3a225d0b4a9bcfc GIT binary patch literal 9894 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 E0B=)mBeL~I<+LS zPT{2LH*YIDX(q$BN7bBflTxHo=#dCU&#Far+i#xUo&N{33(FNN+3AG@@|6_n26_F% zbf2;S=6rfg0lO-r^uBLJy0-ABBNEw(MIn*4eZW*Z7jMP18NlPc0h&9md@&R+{8QEs z3jdx*uppAjrU7E_@9xK3se)|jK&{?<=}(_2*9b#~iEo#uOE@E0D@CYpZ}a+XSyD)@ zsmU;J;ijQuuXwl%r^by14SwIIT44@bpV?b;k)V3_U^WF#6>vfYT*QlwKQ3fD-Ry}y zvC3QMmeEv7eq>TLD9dAX8KWP#2u~h4EG&#S(ERj7Wj&?BnQpnQI)|gvaCKRi?AMFOx{TSa30w%2D2G z9uy!Rk`>WzkOZ)910s>x+}!-`?8I=6f9{Y(B54ws-yY#q>>XwE*z5vYvQe@&egHm>`{KH$zSLO z27?LKF=&yNkHKJ8c9$!0oSs-XzlcJiG%6eRt^0k}!z^#M+>=@Msp)h(QTF<>Oe_|Y zia_@Ez^5q=n+7L#J)RRgugQp`8FmBOl=k(+YG!7-;Y(axTm%AvVw!F8=>NvfQBX4unD%FSHN>kD@wrl>;toX?pyCia;R;yKC z_~QE4nq?(B4n(7KBS#Nnl1Q{ag6!(1V`W4tbDaQu=x(423TTFL|iwj&pN2v#g_XMT+UhzefLme8Nk3TiYtE z3!#RZu{(L1CVqNufP)2tunQF? z%cV2-NMBFdp(~wRcF2zjPhCvSVpq}Wbbd1bW~oyoBLs<5e!28lN=f^yk5ve#lO^aO zln4tA{mAo5PQfnP8IGvqsT;9vQOdI>)N63w5&lSPL`wyfw=7xRWmMnNBvHWe$?-uT z5Gb2}>;6$kofa9&v9k7!v8wvypu>!`fd&6u;DEAaVVQ9R?>n9`g*Za^WlX>+Gs_Z3gnwG z)qDdK_A`Sl6KV$#uugrel_tmnM^>zK0qcqzG0uLhlx??N@HYpaUSAhespuDi_6TH? zE+H2`7F%?Hj8VlC%L=!F+bXD}kAl7t(1!_!-fapzdG3{^kG8oTiweEAi0>I!qPKL- zl9iK_@y4r+p~N18YIY2Am{V-c>?6M^UGuAX-aBGWHI>pDiTR>iVeqv64DkYF7!(ww z6g9h?k)R6<6Y59l>1n$K=7mmp3)CE^UcG&zf_}D}Q;T|9>+IK196)|EJcBLK*_gJ$ z*;5;KE^bd%1$}L`3~@Uq1f>oO;*)fu07$6`%;s{5@ug)k1;${GbBiCTd*AJikTybI zDv!k)fqT(n3V<+(LFMbdIGsi#tmw`7Vwjz*K=20= z%f^n(b?A73@Ch3B^Q&7z!I&z=1d+qiH^UkPgM))1rV_aNJ5r{6d6J^B#s6*uOFOT2 z|1L@^yfAlNb~6ZWUNoHydz!cW#d7n-Q_*h8z)-s`0aDXf9aIwN2IRveQpJe>sjL@l(HgVo|_+CpSRv0&Ah-^5)t%?CL?Z02gICF{VR&*j zlCkyX>6+lB(NnMUDrx6xf>(Lh1UoNmk526e+(be7>a+&C{$?S=Ck1=Q&ClcG?WQm2 zaQX+pm?JodgB{-(3A%S}rcchhFO|!_S_A&LHBy*)c+)WN~Q8nC~yn{rd>uIqS1OGHr_QSpQ+Sp1j~!mdxziHr!@k=J6i<)X*zON(g|fOQmVI~5rq^7Z6L?)YH!V_j;Mcz1n;f1Bm~VosH4-W5@2_737*HgV z7&#{Pr4n&2vjOHb40xm=NLK0uctKSs`0Kl9H{JV2G1_%-{CSmPp4FZSTUfOx=v)pF zgAp1N7(ET^+?k$Xepiix|jk@mkKIT-`8qV9Tpy! zogjELT;7=3JeVO`Rky#lJm$|@yX!* zsn`YXQ2?mtTwSki8US9?$z1%#E|2=~~Y61UnVi~!Sa_u01NB}uC z+T7qsRDe_Fb`sFFMVgK}FenjNG4>jL_j3sOG3?TZcIW$i*?py^-|cp5Y@H`iy74<%lH6F4c<`OWx^`1x2Vdc=${ zpnWo($SMSKY9t9#q{(iyuFD22Z#ozTgK?QJH32pr@c>0C-Sy2cnnEq_;GC^uEhM1# zYrJa!G}FG!D3!Zpi{qG*x4MhI7g(q2xA0T;wj{j7={SF!+Mx~e2Ex@a|H!B$-jKTC z`k_BYGI~bnr3K|N*=#WABM&)Kcm5~#f~&t4_jTvEXW0jrWQd}a#|++WhUvBGIcp8f zX`nvcVLo%|_C<81ZwnR&d?X;UFopt%4Lv<@@*DtmOfj&sKi!gSwA#ek{5_k}*{LmU z)XDvX%r$bCo%u(*6j(%wq?%c!ARA|8Z_g;$@D*~)dLgKtTCewCWy(S^*Pf{fE}XFC z63&cqp-Coa?`kTwuT!J-n%Dy-r4Ky&9LyUfPmcY$n-Ju__w&sC&sUX6)(Kxpzp8%z zEqT%~39zGBfpap`d#S~pr@17^c= zePa~q+OK@dL_TV?9y13%C{oSiUcY}rcKWwKJEEbf_*?7ec~W{4B`+Zc?Ordt05UBH zCL$lO=gEr&GJw5+LD=&B#5$lb?=Mu`7svpmAMDo}FGjM2X#Ujjh8=sAL$ETfQX-o~ zD8v?BET=U7GB!e4jXzHw6QggM={%$e z7v-niFvRHjIzB#rv7^mhJ5`B8RTuTdb`_%u&%f20^a?_q3qp@^Sd)4xGI&s4>nyh3 z)kCSdfS{b_hEezAK=Y64w$O1{UU(q+*D;7qljm>=|25FZ0eBP`larGKyu3Kqfk6Vr z$y(DrJUklq2`vhia`8@OTj=8bGA+bXs z5Ji!ychLvy%r7)pLu(#MPE6IbZop?%8NLAVE@`#`zfNxk`@aoStbtP88#c?>Lil1<9)dizo>EV@~XN*5W7nt%oq5zG==9I9Qf1 zLoGF+83kE7ivzzYM{RC1nMKwa4^KTjN*3}?UJHI6&0{7+e(m+KAaJf_t?*ohS4H-5AKoH4Zn}yIYF@7o$u>qEz^>~^N54i^1ehquJ~f#b$ewmiMi;A&PR}V!jP`UA12d) z*EL}ws`Jsf?mLH;=G$McE-J%bMRfX+@o~{W0*hk|186@43^(I6fc(@QtkIFlkrC$- zC@?)rEe?hIDM_E;ieEJIqaU1Ao^j2PxN&mjZw!c{$5ql^`bRwgaf>mHp2h70Zg%Cb zYOg;^{-gL#8TLG)v+pCp-Ps5T>;tSg%tIm#FtuTc_TBDa9(RmBr!u9MpE1sgB>$VRu1q~)s^;8fhwBaD&U_wzZr%n)mMh4 zGdPwabc7a(xx}ufcv%nd>OaL$W4z^X$5Er>mio;pvfnpD!;n6fB3;v~LE0srVlh)0 z0;juJA%o$(`ae0ljq#hdZHEc$uk((u6^zBr%#zg7QqT97ywE>2zRL#y_Yg;;UDN~p zaW-#|E-NT8b(24J)2kjxudlwL7-}wQekUv(l9$*u9iTblQl-U3Klj`v2tV1cf}Lc< zR@TVy0*>?^*s06QlVY-G{azL>%(maFxN9l0#h}8G>f)Uq<8s~g+iXVOt`>j0idm^Q z3Hi(6&wd+nUY*zcW&X+H2CF5%mJGa^lMG0u%j63wqwvASS;pBtm@(*q=NIUmlmre1hjW0gUV?d7Br%>!Z!4>p( z$Xz$Jvu6EUpqlPvsl*r4Prvq#;)c}Btc_1<{D}SlZ`tWfSg2&c5-3)T$!KKHM=E^f zIE7ajej)9g+0oZdP7N(3Six3&Ie`az1{{(zm&8xJM&yvN|p z{yxMZ+SofD3VUbk7^bmpViy@Hy|Am;W{P^`}PnySKV*AYE3va6RLFVq>I%l%hd$ep<+Z_r^0cqD5n=3P2;Eh{OsG5XxFMaX3T@9>h{ zn2fxw3!m9L?Nj*&##E=uyq5bOU^UySC?N@lY_am;@>l_dTUqDNKBe^psR>fT9u?aR zEK6>LTpUHC>F3(Ofplkj-7IOoU$9c{l{|Zbf#h(d3jA5b+;Q?nVV6+0vp@59BaUvU z2$8+pw7`R^-)8+hch|cey^uOu)sR}J0SR)rWcHB%l!XHK=qkO~IDyu^>X4oUHP<T6sbTYo%y2jxYTLX+l1TrW%J|4dRh?SxhqPTdsIk#%u1eV19Yj1j>94J*kLU>MY9_(^}A@D zzT$?KB8EHr8?lEqa1eUDzqjd;VY&m_aqKQ645xj+xc1EtGWqHPFll&XE12i2J(+RVEGXW3% zVXD+ON~2u#;j7m-8fT|uT`uSgEhL)d&W|W@xI#=l+AG?Yb%q^sm4YU|)q`0NoLv_d z~&&==f!431&g4CtB**C_biFaC!U_ zu^Wd?Y`t()fzUV6aykK1n^;MYjqqmGogw^QVNUv7!`kB@NgQ}Z>-=>qZ#%fs1{GD6 zV!N{y@U0{ZTdEP()`O#w=n)e~fuhXrr6V}i8y5+EigoBopJAH2lgWd(WuM3YtUVdb zSPona3YwUCfSLMwmM&sgXIphG%Pd)zVYN2QL*1#!uqy z_n~Z0vOk6LKmY5e-KF9oS`)5OUrKf|JBbh9keu8W<{>ec;~;q?U0q$1Wbwo< zS(9s7@#gd2b>+`Xbl00Ee_vY_MaI$W$WY3W>w(}VD+J0 zhY&t3_ZXadOewWuXvd+f#Sd_d$F2>v^wf(o6MmEqMAt4y*F8zwxts)DXUB2zBv3l~m?feyca4in28@OGhYMUmjaWNEYZC@4>%e)NYed ztopq7>1nj!YmP9qh+)Dd4;v}Q^~@6BIJ;T1SX$YqvxV?W)YKKEBEf1;IA=asUx*)F zoCj$t-WyVO5!~{FhfwcIwb!mk9Aarjkz_?pM-7zLF(bdBR696~`8yoFKAymc9C^d$wXt+ z_A!QZtqpIZdg>@NkzF5ta{$MFs&2C%#r1%n+g2PMZ}28IYZ1LaEgs_G3lyWoN-I28 z>YZ}!6B}}&8?=OUU@6k}2v%52KszGrC>bOz;vf!ua0!5}|LfcTF8&{n#tsteSPJI> z{fy3=XKDnV27#2w9bEqn*&hhERs(@{H<(Q3yej~o`4mp|lh*DX{KTzd@~C;=^V3`c zdaqYn?A0by&gOHO`ut;Go#ikNytO4N<|<<_kq};$2+ugFo)6F)Qd|PgPx_4-%z{8y z1;sv<&Ae+69?H;^_W+$u%8t4E=Jg@5PbXzd8>fBKDJ&5B3hl ze!u@5SeAY_sB-GB7UUAhS37*$-TO=Ge>jz%?g=Qw%eqPoxN_jIxx07raoK;fExr4( zN_kDI_uoY92Nm#nfO0}jHY?-X>i;7Gc`z!v-Mxu-&;R?^IWxhKz+({|VvPIP*g|r6 zQ0{#2gt3L?txcS+{hL;BTSth3LGFB3PYL)oiP@(j5b3;h!sUt6Fy19DC7WcaEqR3b z3Mg6YDT&$U7aF$v7YE=nYz`GH`>HU^PA)s=n?alYYoDJ_g}t*CwkHQFHtE%riruq( zkunLwAfhOjPH{cBd93RHP!eOo7wrhlpo92}c9*3&=O>fn_=1$J%~M6;84*UeT}}e< zNt+ZU{pbA;q%$A_j54*A_}k0vxY}UyeW$7ZF2jHsTUtEfkW~5R79S(61e%w}O>Tgjx7$z6Nl=ntXAN2;u6a5m2OFt>xWm+%&)Z&t4Nsx2i^033F_6uB>u zX*ToTcYiFu8gT`I(Wt-3-wrUswU+`fMzC5t$9X^h?I6S-J0;IuhNm;HC6$z;rdXva zBN2=bxeQKg(_9+BeiXJ57#+z(WRI854PgiMjfwB^Bclb)%r=aAHH8*}{XiqX0uzR4 zfzUL18lDPgb9M-rbvH5kiLo#FUYTwqum)eH&?Z}S>u?W@38x)5T($I)pymE0sk@Ed z58j7}lbU&Kds<`9lKhp8%r4Gy!o<5;e{|OqLp=gdjKiBP5~CBliZq_zzZIM-+Eu49 zgmbJ(-5)yR*J3m339mdIU`D8K#CrzpMM3`ngzx(U5yNCzgbNL!E!hCBXoT+NxV>Fj z_4vp#JzXf*H!n+{I9_a%EV~}4r=XaVn&~h40!_5j&>ONq>V85$-wo1UJ`#%M{0hV0 z7cS^XeZHZITQ*v7Govokfh3LB?5?~_74WE`5Y7)8hibK|rwpEZI1X3ia0LX!nF^Fs zE8@n#A(cjJ4$6BtECkyB14%F56Kt<_90|@vVyL@2oYFlMB=5)z1LheTkba)u(tJxz zRSZr#!R@(YLIGtUm%cFjmPDBKgXHP9l6xWGpb;4Qt~s;nzAl(A@@IhNTmLv{+S@}C z4IA5&y`loQe*z)IA%z&uv|>zTaBY5u|pq+Ss6`97~infrPARZKym;sG|HnBihwYRC_kfe_^iJ zakG`DIgD}rv3v1=?1h7@kq_q+RnEFx%Cs({1Ho7P%?2>?T>(q=J&V~5)9dEFCc2F>zPA~mcAhi9dty) z8(SymwRvGakM*+e8tug;4Vj*Ls9bj|X~I?GQ+6#GRhw&OM)Scd4|d6-r;cDt;J^`% z936k?gr9dlQvK9Pf1)lrqdUW3WPDT0MKiJXDC`t@Dg3~Fb*nxctw_dqV@+aS-uR!4 z0!pLYAvE?6CeZUr3K`yT>Wo!yt>l3Lj)>z^dS#DlKHY0#12~~qdvXQ8=twvJP&|F9 z|JF&9cAs zmsICl)R*}OMIFaTRdFU|PEqbo6?2?jKtdsII3EG`>tftjS|=GS7k7Ht;8;SNdIE!u z!k&|$4D_rVDJMZ~TW)c}@c6chu!}IXtebe(i}ueDo{`_Tu6JplX3QP@%r`(e?Rqxx zw;1X3TvT=XD;$G@a&~gu+Fo1o*E%fEJm;Bew`>wVx^JEE*_$;I-C9|0=Qbq6vWucP zt@iT=Iwicri`XgIpUuB86XcKo%6B@r+CkhF5WB?7^HN*w6_w^eYuYtosM)7Dh;bsd z)K^`+)#)%&GiS;20i$c7z68Ey>g@KNCHPA{A&aE?KF7Qid0%!hi4qr;+oVKV@Vys4 z!Bv%VtAE|ErENKI@ZwMPu0VBh^U^o24>GFP5EzGZx7G)d65*_F^4W9C=|Lm2RG^Fm zkUBAuYW(eE^bJok=!4c{i>2l<<7+{RL`2bzctp1U%m> zg;1|TN9tA*GFwNYTjqnK%+m`jESK7?{wgnqhG#>0Fc5uNiiNh8NT^us%yG;*95xJ{AOCKrY$m`wdM~^ixkQI`ug)>sKrq;J)Vp_pKlAR{mF`gAfZ

{_pzHc?Ds(dZ+S?x2R!dM(^0h1FGyLx&_g|K`d?xq)N}vsZxvqF$)QMgA3&cFP zGjc5#{^Bq-b5oMy3b17)f6@TcOoLl2;s*6i2-g%a)yjBwJ{a4k0^Fb{*Qx*CGvwNH zsG*dPfj~i1^P8dO)cwR^R!DrI$I?9z;fCme|B?|D&M?i*T8--uKUaLsYuWFx1`WwX zYc<|umtOt)iHj)q{8KpIv)&8vu@_b zURkV6(G(Zd7cw1_tONQ9Gjzns8Bj?ioKKwE0fvwsGa*=987m! zP~oA;qWQ@`fW_#Bij7FeW~gAKG+!hR;qyY9M4E3Xza1&<(Oh5zM`*RWlq6hh{-%-` zF#&H*Ks;u72y(*N8fg>zMQmZ#F^N%S! zCc=EBY@%CN5^2fzmn z3$zU5ecnO2?uFKDcGew5f**!j;yD^Jg=0*@o3%+gq}al;7jt2e2@J^|wVXiX-x)P! z$hHKB=xH?!20GBIe0bq9|0SIx&@}I6JM0@bXqp=|{nveDUZD56^Qw~p_wa!pLcE5S zaho~xV8`@Qi^1iD8TWM}cdNPa2CSiXPbZJ0#A7Sf0n98crg5m#rpJM40>RWDd(LZ)GA(*mXov4!&*h)uWWKCMZx6&JdjJa+iwHmgn^6A2V`o)U7V2Kt% zMkGl7;NFHP1&^(v&{l&g#l!dMKh?~U*Lr9vLSxzP0kZQib$GM*Swj8Rr!i?h!52}U z4LgN%(5j20?O}KzQmlzOZ4!mX!t|oBU}LA&jkSweJ-`HR>naTh0hSlXK$^7DSdaG;7xl|D zQ~s*bUmN?ayos2`A9 zL;#g|dIAkeWgvHiHxj5@(Ocdh1q1x&DF z1S%bATbBvN-}eI^#Pi)C@E&@wP)&WeH>5pK+D7POW2LM$ZDjTbc%8UbcF6zXZz>OQ4W+>|biZNh8a@KDUGFpCKDKO^$%tObEbQgKeHo_ylQ{%FodksoTzUG&>e180Oy26mY6_xqCjVsuY4tMgN>EJfa`v^mxwlDz6Ma<2v-H~otq zhT)y6?v-?V_<_eCYHUzCVGYn43Q$I|j#(x-@)mW3crao8E4d*H@9U>rRm3S|m(_zW z-4CSE@PofP!E8ehdSyyxpj4x;W)9J!dYO%~E?#;YM_jjM8R+iZ-J4&t17F}b;9O)K z=Iv9dT0XF0n=xX2LHDJ$mNGqYC3-&CSDeYKw)e+L3OaiGf3@=bj5e0m&Plb>wWxT393k5LV$4B@bWUzDwgQTJ(wS=)VUPt~DeW4XJ)k=fi{=3K zt*Du^Xc!}bZls`PHWw??dOLc_c|H+3H_E>she}}snC?Ai(q}nyIKg-iM24Yeg(_MYcNKrC<1ark}ptmf;QuC7hg61R}v#p~3u6&@E z-*Fq}2K^zIbNqN?0V!bd^R{*KJ{{%2^{J;nhZnLICqssmc?cHnth+_(mwD@o)R)GO zh4XOtc0BXZ*K|byxaTim`OilATtl&&K3NCcEBgeD>a4Two2-+u^-cMt|J6(7?75N^j2==IiIWvv-?~^w%AnSgM!jjgK7DJqcxs!Sx zXsFL~fe$X1Cwpd6qAKuz@jc`x@c*5b@Z`3wZ2)G@r)1`s@%YyuB!1tW!(+nK7`-*- zc2(7^=sMJr2oikQ9qz2^HK}V9zI%gc{=*!$^N7sx4RAxa!w*oj>0=f=^Z<4I+K|pH?zh}y|A(!mtP(h zX>g27{Gp9)vkRIA)?U%=Y{}h(Di2+}C?2vdce2#moT8PMg31m0V0`?EL$_gi6^bP%TucRd_wLypbOH@+m7B{xo>>A}G8G`KFY{ zXq)jLwnHg2G=yj{D%=|&?v7_5PZRnwZdGTgr_lRi9d)Md)RkJ<5lV<>q1JDvDI^@Nt^Ra@Ymi~+zq+a zvaM_J1;4xIq1{>tE6_j>gojambf&K5t03uc1JUBktUhlHz|Gl&2j%K6XnW zKcVl`-eu~A+$i5ty&AorX)%K-_1SuU7Pil?XpnIt1zQ%|zfRWo9?MIJuw^ zFG!-OT6Qp0nz`M%gQm4%=2r5W9netv(eu@lgOa_$+Jz_u@lFj_H7@a#H}Fdh5Q$jj z!1t|MfD#8{78Ox#uyxzL$*ZZ`*J#)&TYcP6_@7bx1K`wN$wR#KE&?t5CwSa6!#=&z zK9PIziWqNp6QCY9Hlb*RkOH&w8~)^X(EEXEcqxg)Q=!NonB|yeuGo^RC0K zwaEFEh<4(th$hppz~ryFUoFB>fS0py-FOak<5)|@M+UhIe-a)O z{t!;=J8@~S;d3CSdXhSjJ4%mfoblIq1z&4f+cviPXH+;b;R)nii3A0OzYwce#2XH` zu?>ex@BU^rx}YVB^orDh~W;BE~y!YHMqnA!m9qY;j4J@1gAd#mM>u*5R@H zc2pi$1jW`i%fn}c{G+W78~+iFU9dPj29iA%yY~Y=2)g{|=)X~D9HhrAp8^#m-6I#3 z38-W?Ky-GfZFRIZxibAhL^Rg*{XF=O+b zz+1qQ#Tj^-11xF!@jDy0r|BK|R(%g@gp|Y z6>126#ICP<{+upSS0rcJG8fR#g`kxAu+LMbKNSgwF3mjD0H!VA1n|TzQQ02&y5A=} zzjGVbe=%Dx)iXJ1VLkb(qD{+F>8lY#NDy%Cy>BQ{<~d>Vq))uHuhU_4k;!_CjBhb| zG%?LrBP$WF>fN;kd*)VdWtUN+(5q`av)qO^ju|5;*fjyD&`3+@@h25{Q?ZMt8JswD z-Bbf4z29B3f9Pe%b@TYk!|(hZ!eTZ>jospIbk*rQ9&;R%ArsRd&cpzj zl$qSF+4a+?1b56b;FG&)s7h?Y%$s>#C7OGTvzQ4+mJf=MO+NjeL`n$*5KO*lch!BCS2ta;k$8)kZ+AD0QxF!!>Q2 zn?x3kAjHQ-MmVKIy-?L;RHgDi9uECJQvJbX-;oy9_Yj}ko}crZSKVqEKTU~euj1A| za_sI*8RVBU<_xFu?_r#nXFn{5`9d;Uiy=dS7^gXp&n-O8MN))#6V7v`*4AY)DYM3q z+2j`<4$L%CAf`|Ax-DI5SR~D%vD$Nb{ZR)%)78^{umM zesdFB#U8y^nDE&Q)SJiIeWA;F8H6E{=SFeN@v+6Ak~FD%!%L>V*hda6%FB=BkpYVi z9)*dwN^ndLe)(m&Pk#B-!SC$v1gSAx4a>#+C?UK=LA&sJ1%7~iIY94pXzOi2_nNzV z$0`E1(I0BS&I1UFu~jKMXg2L3d+}AdkJT}tt#3g@{8MV;9hRMqC9Jv{doJNia`$xAki0^0nDSp@&lN*6FSJpL{*jO65R6VJuIF2x_%|EQ+-`_GUpTUBg z80fcp(pRK#PhJN;RuMeIy+Ln$ky|K7*0}4kK2R-=e6hTUZ!~o+Mh{K!Q+?OmYp$2pO&^1NiUcCo z!t>tMQAhgUu)G;@U1 z-G03yGj3@nW@kRQ;NK9}P2{qf-g~4*`=v&fUozcKakM{H=f|4FzP9TgO>8DBW=hrA zdog}8hR-^HJ)r)|lygB}&CByP2b{{v>pz2|15Okt${4TPW&b^pqx*6(YMK~)p;GnR zz^UcU!HRiU)YF8Bf-XBGmKxFS%z2>1xmSIHQF@k86K7%NtV*;C-)%P-x~O+Q!!%^r+(XmWFjdse$^rN;(*fs|nKa)Kf!J+*%<#L7L38WV->BC9RsDJ0h z>9thoN`5?hw(jeU@YwFn%*#u=Q_4cL1)uhuw=U?&b|SoUhs9cMT|P_jZ@D;ovG=nS zZ4NbaL!2`L&&X1U#rj3=dJ;1S8*bO$dNtySnQJb)>&{%FpMe1`*NM>OeCLvMdYg^! z($}$C!4RmlUG-!{yU2Z^P}0IDI8I;_;<8XsFOO3K|cOAL(Yw`yJ4yLW(`mc~Jb2R4PH~TIR zWGE`@z7$fdz^32I%jz5WR({aiuOu~dHx|k@I~6Oc(eenAdh|O~aB19cN;-ls;8uuAWxhH0z2B>75HS};&(SAT6QZVm`^QjkV5u{}Wx|}*Xx6wTAD@1Y-#~H_6Kw8+^ zvImUR&0f1}aR8;qL`sjIQ}G^2y{8%fF>uVjvZ`t#qUeO7`heLn&i$vXn*QP8VzD~f zW{jD4#vd)6Vwj0WLC@jnxHw3)1XwrI5Qq>D_5AQuom-Cs$vjFx7-h&Uet5>MmY{ck zV*7gy#q7Px@7X*UNbs`E#!w!3CCVk+WAEzHLaycUC#9+hJKly}w=?9-4_a}pPyGRA zN{9Y~&;ElB|3Cb6k3iwKSuBS(K9Fco7b!>S{f9U`*PLs2LE%NhfottT-!3NT&1-$1 zuUi77;CbcM`N|JhR1+wj)=Qnn4$nM6czF8KQ5Q4RiEbL7kij?^Y3c=1J_Eh`xCNO= z5Kj;~t;&CeOL*iHxGkcGlVS!c$*%d10`Hd;ho3;cW#aDGr)Mb`@Tt# zF9dfa?(gws>3M?;N<6so7gZB98*J{L7ajv_1JigdXuKB;x;!E^rd9;*c+DcGhyv_E z-Om6Y!?Ql+dFX;8kgrX|fGy}Jx_NU|2mcFCs9PK0yTD)Ehef@ckPkeuYwdOIVSlYp z?v0y$0M0DW(I!r0gI=;9s5C+e+qQyq8A~BSQW6{o2B!g>Gbfqz=8UtIh!;Fx8wO zLj+}6DjnrLYSCU7y{(u=zNDF2yvT>U)B=9-No}(KlM~aE}3B_MaAw1xJc1q&oB5W>yI#&|Rx$4Ph8F(ZPy_d|Cn1Ko5LPMa#V6I;j**~{sol*mFSZ?lxih>zu$ z4dQh|KRmpyrfM;)Q8*y^#ma82Q(e+9T z)h1^&o0_My`Ag#P8&*l1^aa*0YO$ItETGAd}k-;f1ec9&>L* zM;%YFyrXmoNZ)eFnlGWaIq4r7CR!6F%DF;UX=g^nEGzI|gYNedHv7C9OkTE(KV{^~ z7*psoa3I|R%zba8Q!M)W^P zqff%g_L#$E0cv-2;dN(t2HYgM#CI=BjPJpgC&*P<)x5@c0T?HmYIm?CiD_%!6*!m@ zTvm8jcadU^V{*w$+q`r2aG+|eMYONje==in;<`v{Jt{UvTEkC(Bs*uQEIL3nXOqQP z!fXgdc3&}YS0PHP=_s+yGp=+g3ijZaOY;ldj#u&0^*i=z@m z0LQs%BPNXIrU3OzMP1Y7uZ3+umG>BV?MX?~j9iX1I#)LSicf`OdLEf^@IJ5ubz#0txZSkyxNJ>0t>v2MfKh0cOw`ZTYxFCc&XSLxStJ;nZq;nVJL6lPB?xwxRUYCq4;N6*y@#Va5w-`J1L z=H84JM|0NCPlaY($CsXgzBy&x?^X!l$=xNRDf&?J+V-MdG%&d>NdH$8wbBM{ykFc* z*}H7h-A@td&?T2@kttG0>+M->Y>$fC_EjvUzi)o1XDM15oXTIh_Jb48<0RDR=j5V^ zfsNmfv7bd0>xZEWyEM(C)7nCJsjVTy{(sy~w*efHY%Cw5>XpuJA+ayVt3IYk_Wbzh zEm$_2OYJxFoNuDO8{74Gd{KPln4fA4pYYgmvqFuOjm~^Z?WGd2Kc8u>*b5-%6~jQ7ue#oc=w!x+}ms)!_0Be{KuOw z06qxfYqtN>P*hZ~`i#@qT{Y0x?9|tZ?OGqbL3hqe-xy*VD!c3l-8g$PKU>J#yoDY-X=H8KwFNehu3Zx=)AAu>BhVeHEiGl;!Q&k_Hp<6VIVpF z=*zV}bGL6aMqgZqt4mej%cPta@`GrTeCq-z2K4ph>9+l~<1cwsYMD>57=^OSfA70L zuah`0k!5?b9Q>Rf7tD+}Gj+`u6x$Iz*m-YUJwx1pc=que?~g}`9Xwb(Z}|*m4-sik}7%SB>(O?%tg`lhJ**HzG2 zH9LS!P@;xJc~k-N-RV*-aMA)V%a^S*uGv~5pN#5j`vqMK)9wtz!=0>-b%q&nM2w5g z8B}7Dflog5sH|X5Sqj~GX<@4jGBoL1Ch?rnwHnbr;;90)iZIHuSGjZEL(7s;-cG|E@wpy(48qX&oB9JWq^{dax+%q^vcMyb zIn|V?fa*44pxg1O^n1YS+@4wPD$gyN$2{W{t82rwD+DPF6Zs;PjP1}(({C!oT$D? zWryD$o%2)3)wfjbj6F&tyiI0@aBpySqGhc*EeJ_bovn2e{Xf5lJR?tc z)UlhuwVAdIPH(V(V)Nvf%C7j6V&CKW2bFO2*-b)lfkHAcXW^!_h+AZakIVGbAT1Cx z_cf?~Dqagf-;Y{P;|Oj=2PbvVlKuP-W%;-|BOg&4v6q2$FDaLSaiRJV$bQ>?)f1Fow%jwu~^A;{3Vw5Yh4L3}7% z8L1P29(2S8KwLBA*dzwREOvjsSZ(Y0h-b+?HcTn!HR5-iv6S9~u0PT%HlKP%Q?uCe zJiV6~h#{?Q|CkW$$8?=dx5FiK_56^eFkkC0d>eZ(8F98h+_`yn2S1|50~6+E=hx)W zWAv(7MpaeRX#q|}(&;AZuotAF@ccKC@U0un3UeG=ZBl^rRtG^zbgRs0s;UB3=0nwM z+lIoA-KOo|s7jJ{5KtFg#RE-9DGIX!GXt`kV8VN;akjfEyf-xKy0G7jQYn6OyaTM5 z9XbUUh%wJ7g$%8lZ@BqHUrfU4t%-zd%_7;7CPd3dmtp$v`_MW9Z6!jd4Qee#3Phz5 zcuxa8M;g#Bu=2fBl=(SpNtA`Be&uhT-NkzAU8$d2nJAhVDeL+APx&%Xrj{IHe9LlQ zeILJRM4~OJPmaMD>@%k@{lF ze!A6PO_k#FWTvp{YuF~S4U0)kFKQWaC8Bx~C{->e&06?EQ7qxqwnww>Nz(U?rP5TJ z^h^|ne!)BCP46%&65YHvqbr}kqHk@UrQDBw+uN7^(Y-mpMB$S=qY>g4on~~wNqDhG z%(I9w7Cbg3t3mhKAKK#Gc=BG|pk$h_$lI0h#`86r<646NLd(6P8*Q7T3%D@ zqm6_rFw%}iLPd}3)@$j!lyper0oOy%)aQ1n!Ef=)K*6@=USWV(63t!RB_ZVTC`*P&`liW z@W!uTNetr=p(xyc`}PHN0L@t{^Q65%PPRRH*P$tKe7fC5K}!PlUE1o&j6FBGFU z2_&o3tMUEnGmT9|LROwsY@9GHq%}9SnXMeH3riwOP>+s1qK1a8HjQZ5-2-=QZ0R|; zb1;_;($_=L7GwJ?(l3QOM~;nnGy00xd`r#_$G$BUU%U|J=oO0nGM*?|iu<@=N?ji~ zIZUR8DlmRLo5in&j0WwEauWp#eER`7fv?;^rpDK= K)LnLc_Nr zF+k`&M1;@-LLf1OGRObFnY)?0`Dd-~=H#5ca?alS?eFvKmv=0T&Ya{w2?Bx67~j5m z7X)JZ1p+bKu`>fBD%esZ5J)n?_@@57u(xEw-0M;^RD#>$Cp9KX*3(QkzMNHHWoI%N zIIGNhM&IDoS&65TtQ{hZplbdv=eRt|XuIw7p%dcCW~|e&6_~DvPPH-EW(fPzScx`H{Eu+^NemU*3xq zD+=6HXg|Z0g5V2z^a^n`SB05hBq^wShHD^~DPe35>@UyJ`x>LS;i?n52p&~aE{;nG zN#m%F=rVaiyHu=biqFBv9PX#{RM;gruqxlne-|0u_4SDkyVvq=OG)q|dPD3@a(4r; zimc~D7w@FTCftP!I2duAY2<@Gw{LN&B`-(TM=tt^Hi#CNSQQ<5Z1aeu0Sna{o_nk| zfG%NcDBOIDE#(7qY_H_H=8?J#n3uoM?_AECg3lue& z`H4xG*9O3^L+dqZ2G3v?ejwH@7??Z7(TxIdQ$b@tE1_p2(CXf>xt!(F& zE5@ZFi8iBmb#8Dn^PA*}UKr{B3+zU6Oe%&*CEUxx-+30>oh971LNR5@3QAA~r2Qn7 zBT|%^KNHaq8SQPvMpEK=kSipqq|RM*!dk|^mz^oaa()@TSQDJf`|n@Ma%?fAUx4mj z-0$Uz8pus%BsB=cL`k}#SCpWMvE56>F&9M=fJwqH490`iw0?T_USvvnX|7It8k7*g zs+@J*a7T$0Sk%Gn188PeBG6L0s6?b|z4+_eV&NSf_jbS%@|sm&{L}la^sB8-cCTK( z8*6_i0m<_YT~spAn;&k*dEUPTjN4%Zpua{Jj+_NbTk>3YhUF`j`6*jX;!^?X%IyB}CPhKn~=jsbEX|w2`bvg{z zEU2nm*sztp^2ha)}cAO=y5ViIzw`T|xw=$w^}_$J<9bwSv*Z#vL= z*)`;~T-NhDt;h81rpdiAMjA%lPZLY|_Qj?efsOkM62lkf9xLdIq+#8vx&#z@VboIT zlW}^tTzg_G9a)+ZT^E6ceDj~7|0Rd`-U`a&AXyZo$tHenrDRI@pCY`Z-2~V;eTJ#J9z!S(ZS1T$qm5q^Gz$q84Mhd*$fYWr zCTlO+wU;Gzxfo{REYOvkg`q8 zk3V^64?X(m{8{sY?}P@-wru0%UY-p))O7w&>U{GSC;~g%CKkH(vi3tUNiF0_q-Mbs zF344)!L|MpyJk-8MbYBdt0DvMhkLeeV+{P*NO*kOL2Nhukl?~$Bu-#DFsoWmW2L>f z@=TnJx|HhAv5^vGrRRD?fENs(A}|q_=hDYLkdr%`Jx^p<8}62!Mk0x1)Gccbg9Vtt zItgq;c=1chk#u{a|Ds}wU%mVZ9c2PqQ3<@hG-jjTGzfExIGQO~B_N#dxpYbx3-6hI zU10Yr=jSC_T+8pP&}Mp^B*YE ztEf^w>BA5^48f4mAG*trB#eiYUl%2n)>Sz~wB9@_`R3kea$I9#zMae@8j=o6oAfdx zEu*QbfHQO0uXLm|Nhj9JW-k4V%9<*`h31t+c-S|w<(p3btZ&dgUEDuXbar{H!vzyu zIg9wdUPHYM2ESa7J`Mgg<=X+#PaBen5UsEt&FY0NBp{Nnd?7pviNG5gI4+fs9G(w) z-`%D@#kf$Zz!82t?$Td+PLxXTOlq6kC%3u~y=e&Y3Ral^P|Kuhec`(K_4r0}4S2MI zxr(k=zV<{<&6{CmA&>FP#sO%j^&CIDlr&m#lDjZJr4T8L#M@D{;I0@{(YXXSd_;7U z6zr*+S4DbH8fS9Z)=iz;`4d7hszlDG-H$N#OTc)vsgvO=40QkZ-;!EFg~P(3}UGI79yN)VkE zoG-@uKs=8c-8uQX7QM_yzl&%%w0PliNQ!7%f!Z6d(C}t8 zO13x4-c)dA3e{a$2-^S9fV3Q6sLhCSgg_$f)>eXiSY0s`+n;u{ME)DYrPASxcc-PR zeV)QSb@j@yh<4)rtFFrP(Pn%Jq3~~R>mlIw$Ih6Kx}pQ*5{AB-<_oY0a+<7Jd#vZ_ zufpp3qUC6tBKSQ-J0zqt%(p8dq@JjPICc#XpC6vDA@p9h2g`B(-v@_Ijs-z~?_V#u zk>Jy#$9{&TKd5PyWhB@++rxQ00DBH?D#Hi?N(|7QM4f+^*yEt`|9bjA-u!A5B=WN~ za}9i{%JQJoHi@JF;OhE-pXD)9;uj{)v(oOC#)||GWttZ1& zWR~e4*Y-Av9os;X3hg*?tae}t0wm)$7hGE|=ku<}j^1O|C2_}HE+>}aNO!X@qk6DF zt@FpAebZXqUE!8LDE97-KHm6EMd1KN+$C3EVAlvON& zv`Z%0LK=yiRh1cV_N-dAtW&3C^HbcM~={c@HK?w?{%iW^-x5_7nKzK^r zCH5|b)cJn-?5KKDL6sb?zOwQX`@)J9Ph;)jnTYcl68?UM5nUb{slI9R8whEY72C1j ziW@oC6U8XE8K#Yv@2w+ZZQXlxb#*0eGzojDk0K10DDT z3K*uZWL`=9DvPYFR5lkt>^;OKl`4R-6fGjnJk-QK8!DCKfp)3wix#HJH1s^^i;2Ia zkkY{G0vQcJ1Cb}SFwreSSV>`5idC3Op}4!WJ1!ljTsjr^D@cQWje7{BzQDSvHt_U+6Pwd~KBDlX|K^Oq-J&m4zStXVA8!ZH^k!2)@fN#YSe+ z>R2ifVba!RVcrAEjO?aq^1Fc6QNqfP&hEsG!emt7Kzr&qeTPDSE71c(`5Gpo>#$FgUWca)et z&3jyE%{)UQbzVIcd&Vo`al`!l@T^9D-{RQU=VZh(R(%;yTex{biE0`x+$6@GMZP?t z@6E{?S%@Jms@~c_OJE2akJSY^p6ldrGnDeL+&BT(?&a{p7G7)u_P~2$E3Ku*L$+>f zmGQ9K->+r_0%>%pUU*P(dY&A^UHaSs_I{M%xi{$>3NJ1oNUZaU70)3GZ6T1trE`zr zE{&TEpac>AA&Ru_5YIMhjN;*K`Q7%?+`t4{5`e(fsBy;1TK za4#JB`xJM(z=e)&tx&ajQR)B}Bhf4V;5~-HRP;QyPz1w9=^3WzEKN}l#BSL_Mjw2( ztG4leGi%b*&&7*J%@ndnug!PD?z$__X4b~FQMK@3H8%`ls;eBmbp#0Av*+Cn=W*{h zZy1+!TLi(2P1BFcvZ~gm4qaAlUxDRu`0MN~pU*Q6W-W||UvEX?NQ*ZYJE}&1y1ZDo zqX-ab({0lD)|2GMX_{)ru_+ZsY`)?gx0&{9t{Xui=&8VT#>`8*iSoC!2upQ_Fg+xp zi8HtGYJhA>RIN`SG7@`ShZry@?D8no5~D_@1J00=qMFn#vH6**wKK1hUqy{z3_5-n z*x0=4J%exGnz4FNia#ixMg>OHle!7*&e#y`Bbga;Ghm1XmJ-DsOwNLVm%9Yk9pHbQ zW&4+q=wrxhr@L^Z?SvXj`s^!5am7+;%_4jO>MLJ4DWE8&|5MuhgkpTRz&u2~zyb(3 z$dA`!p8LiVlQ$*awzbrh6Df2zJ81X|?eY1(^%CCpP2z#70p-(@BWz=lYd?G$ZP|XZ zJ_PxyP#_h5OOGY?ZqUCl&Z-QOHvISWKkeqooB)~uyv&Lx*g2wbi4lF4)rzML7W~ik z&Kp`~NYpx>;-4UUF#_9M-osd6GKs&#v`m!MT9*r)vPmJB*F``gTgDklg@84!^w)qC zlvMhvDE`u)C?ch`rKYNKTg%dCRTkIn?9G?ZzBwK&lrYz98r_Yx&Cv`6OB(52g^V}8 z3;fr(8f)h3K0-}bR{pG)O?{~#Z)H(AHW0{JR{gUx2iEr4g`*#b z=r|xH!uPWNc-Y%OE}wtEV|b8xdrYhm`Bpis!`5V)Gn;KBScp}BDS80JvT z09yFA7@Fe}Or&mTi4(M}&-?uD-TvEyJImJm9cs@)oX1nt(DxoLqN8q~{M#;)P=c_r z;*lKm!_ND65c46q+jq{b!iws7azm!$Tv20UmWsZ{!wp9qJP=4v)8BTY^b-a=RSUO1 zONFJ2>^=Nlb~S33DK@k;>BdL(R8m3q5(2*}nJ9+1YC?ua!#mv5uw`x1lrb`*+)9|} zg$EQaoYs9FS6M0XlKli9oLwCPam@UZ6Ea$uP_Rm_o=jpJC83W`dR`FptF@ui$=Ze^e*O# z1LNWE8&{+7z;?uncN0s!P}6y8X}wZr!^-BvjxXK&KlQ;EJc+c+5P>J^zYZqtai(@7 z!H=@x-M*;Wx}FMS>mtEt5Bev;T^4fZ!<{`3I0|?tkNc%68_RW0a%QI~u80Sq9)2+) zJ_h|NVD}nbaAG`G&kZf3fp3PlxuAxtog4EyM~2FLj)K3ekgG%M>1~K3+*cvRhl_+A zr(h}Mi2|-gg0uiZQ(lH+LXdkWh5OXxQPf`K^XicZ5>u>N8E3fg`UZ#6H}h351_1zX z_J@MlrZ3+;%Q|H3$7{{$EEJIZf<5j_|1l-NW%v@*hGw_}-3A6_=p}>Kzd)`+oVeU%=|CSs+GkR=Kbp^m2BJiNAqY58|BxZT6IZnQ_{72IROWGb#*bz%D+v7 zy5H<6`URTdEz7*f8p~l5ChxUD3UV^b_8D@9XsF#0Sa(7vMaBP8Ovbj!;ltUvC=>K^ z{;|Jv8|o=J{A-!_Cl+s?#oa!AF=qRYB!}Zl0~@H@Q17b8@diS8>`IOwYs2Y38I{#h z99I!mJkN|1pZl0$bANXi^*(TQC?=49G#RODb(AvU(uL%}*d6%J+jH0b%H_2|f1pAB zUibc0d8ke3IJETr!Eq&C8hO}}VOin6GuVtiKR`|jhL+2>INo*-Cf5kNLGS6JOFQ%3 z)8LBMpIzIA#)Uv(O3V)8l+>2j;6fFLH5N z7aLbqzym_4ZS;3q)W?lJ_$tugrV6B_b0ZM3+WTX@Ry7gC!wCtCh?~eA^3T-zQ;~V1 z*B%L%=Li2;{9)?tLuV@M7ja%$;{df@j2bYxY%I3)J=oba)QF)7L}eSjZOQe>nD7qw z>Q?>tC^tS6PN)@6${|rYk$)|t=T!j22SaFLB$1kKMveJOw&Pm$BcKIQZTA*K@*mNn zJ^6H6@(PZ_Q_&YY)IOYw_+sK33i<^A&bvUAHO}Y{O_#`;cgRFIHgV7Fdr$0t?t{8R zV{!+KGu|PA>GQmYsXr9Z@LNY;ZJNg0@!i#pVMo!>^$-k~eB7B?!Qm#R#(lu0H$Y#& z{+L08f;dw+M~RU0d_@-24}RnZ3Q+yCtPveAk>$?WO5W%$^Xr$jNj$+du>1^joMqF9 zm+gPci{BN%JLgzC?P!gl0dC$C03X((4*Cx%_8&s<|B@Bm+YHmPARGtjJ=Yyy3tm;d z-<^te7sOhlnE#snkEz1u9Y=z-gSm?h?6a-aO5~aOT}vt}OQkC--?WJ4PK02b<#K?| zVl`n0phhSV$YsOfWD}`Y11laxVMJlh5?%KCn^>3(E+cTx^1;v~rB&hd`$x$Z^-1k> z!&ehaC5#uA>>uvLSgRH1%x_K5BZ##4OYCv?vl>T&ffkb_`!`aD0zCw!1PQO*L40hf zNhM9 z_ESBerFoYuUZ>ZfAMW%rPtl^d3xb`e4}bt!JH9r&q8v7-fA%eYsa`gUm^L5wbWtZR zb(5=4u7LbiBT+0=U$WzXtb$Dz(T0((l~P$q(8dK=KPb}$awm5OoopZ?J` zM4AxXfzr(pS4=s(juv#>z53VVsIkVEUPVu#C!);Qf|RdX9h!gMz z8_f}S$vEQ@`?@b_ZFesKJ)#)C!D5^;a5KNtKoFBmh&oD-}Mr+oo*3*0P~Qom3zJ#X<^?552jFvpq#ce{srjulEX3RGwm4?|AgPM9T=`04~P#wlDC`e(oS%Nl(F*N(&}454d$ zHD)y}(F=FyUMQiXh&e6bRCgq*kCcbT{~5|2R66B_uk@T=*B_vUB~$aq4qwURhPLu_ z?`wqEp?tFmFi#8BtyXzUPyF7y4wW!h=J2d1RDZ$Hn#;KBfnr!0MN7>0Z9 zB#~UY9Dtti_x?FsS$Wuy>m4!M;XLt(CEMM0$K6lxS3v0fdiqTGin1YviOw{BdN>yhXS>_7P58>VOA18`8y1Q*l@unNq9r{x9-@o!5ibL`k>!{}KI#nHmZbM* z(nfn_iyvJ-)L-?w=m+044~+Z~jPCTkSSM&*_d~Xmnr`w^yG9=Gr7^DQ6t*rNH7q<~jYrg8h)_wQZc3b?H z-+8~OSP4Kk)NTj!*9kHbNL1&atuaz{GnLqj(Q3VFo(+Pf1xBf899^1H*t`C%|4RKf zP9rsbEU$l-jWtLRD|to$XfZl;;^&eF{D~g4YL9?Y*|tN z?8!jdh{gr+;l2JtFCr~dB0a+Y2jZQXlwypKzp_ELN5*&T{O1FgJFj6;UKXC4EHYkr z%5Qbm_wdEB7O{Uk?M#i3L?FWw!C&`Q!dNcHlySvh&{ZynN{0$!pLca`NbeUiKXxM8 z8yQ(Wv~*Nik!}3?LY%yiyZN>OplTO){Xb|GXygAIDd@`o5%sohnr5FZ48UVin88Eb zN@OBhWQV|p_btS2g+(5r@H<<5)?Y+4XA7OuPp{_AZ;S%F@C@?b38L}Uv&rn{0=`+lUSE8E5!Q_Tohh(2br zEQ4j2D3Dgzj!wPx{$e@O=osMwYp0Uy8IDK%!8;8poek?R+4qJg#f#6N(|*rAUZx0L z&E?G;e9IT5adGW;pF}}hE&ul?ws*jZEY07ePK7~$QwEVa=yymX0K)-JVEk`I>;F4c c=ZHmNN%@)WE9(Q`U>eBS(Bfu|!Tq@Z1vnoRXaE2J literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_sign_tx_transfer_covenant/00001.png b/tests/standalone/snapshots/flex/test_sign_tx_transfer_covenant/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..dc5763b55e41eb8b78e573bb01d703c266abe4d3 GIT binary patch literal 15585 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_sign_tx_transfer_covenant/00002.png b/tests/standalone/snapshots/flex/test_sign_tx_transfer_covenant/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..ad73497d7bb39a63c8ed0b767e90369347415105 GIT binary patch literal 22673 zcmdqJS6EX~8#RasDj-#Q6#?l*dhbP=^xlO~MFeS~3JNGC^w2v20qICD0#ZZoJt~CW zTL^Uy-#7Eme=!&H{4+N*;ezLZWS_J5dH1{5yWX|(P5X@sJ}xyb1_lPc>T5+^42%bV zFfcHUpI`!i5$elV!N4#!R#lYK_s!hPT23yLdWraXJ00zCgknuMHet)8RB8Y+E zi;G2#fgy>FiI0JijT!O?14AoB_94cnV%gjW7{BzMk6~c^VJC9Lz&IrR|KZ!w2uoJ! zoKcI}afA)!OH~r3am(bRxQd}zY6O@)ea%!VPO8V|5 zqf38Qh>Bim9OESX|rHjpERdJyCcTPn{aiWmry%)_Dz(086kbml3 z7weJ7Tj>)RmG8*?@VA@a+zlFU)VtCV)_1?u);a%7rwQ$|sx-QkfY_$!gs7f9_|@Oh zejp+`yycmn(NxND6)*Y4x5@mXd-dq`L_y1n=429x3QNwwz=qP>!bg(+>@BjSq>fp2 zLXaDtu>S&hJW{`E-eX6{y*>(Nr=-J@%ie%|{_@T!f%&?<%Ry^WKLsaJf}NWv^{w{# zantxIv9+!LBRTC^p_tME!UDFzlO>%Z?lYXw=bDp(nrBv;{9;c+i=6CwiHXA*I}W*j z5Mq!EZ3G+%j9T-HF;yl2R<|jk$E7?(7*l;H8(L>8EyGwMNUzAAZNJr^e~x9M!Ucfu>Ol|q0xw8M+$?=AO z#!Mas(<;s1!b=Qm2fdJ$SDYpeY%BT9wyku%#m|F9{cuDd+iqIJS0|AJYJ=+T!Rn0r z7CnxYPgSC!*00iX$S+0z?rcBAs8xDuTKX9-)vC!_KgArG-?6$?=cpGXplcxgKt0(vRhjS3be=t<)nN1!)xgBJY(e zGMJW1_rcVh{M~l+*ep&(8nJ&Q3?Ifk;sr5=0^SW z@8i4#k3;8+ZMTkhf8`Uwn0Z57Ut~Y0)Qmr8MA=@^#+{&tzG)tRg#Q}f#vDdJCiMQajR()|3h6w)Q*uK>x-vA~0OZ~)*A~9Nm-p-+tk{gU6 z+ZI8I?1vMA!$692NV6mZ6Wf94u{z%ynLt~){7j%A6M|*NfC|P3_}$uRVMCP_AyC*= zB<^lh-Rqzr=^U%JufkG+B|kx{hmvmTAx)Ry;&e&U?4oZ)aztNjE_NPs{Az#KT%e{y zDp(9vH1RQub{WG${FS-PGoO4O`NH(@wTw}Ek>|-|!)5DFQ3(5T}Pt=Krx_uq0xI^RM=ga&lDhg0pM&*v+gx zdpeP0(bAT_UkzdnYyFo)$@Dafe!@-Ck){05cHCd4@9LJm6I*83C$tC(si*IAf^jX$ z6A(Ya)lw+1pgPAN8d@`>Y}rNG0~TmgSfzF80KY0}t^P0jUG_2my!+GlVqk`m064lK z|MTITQ8W+6ERU}B;l{wQ{?Z}(`UwVx+XH#p|7QpHpp`k-7KJPg5*v}hvTu<^aqPo& zhAY^@+8QA{IydIFLarC^!cF9zG<|GcxoB_#^T3|B0KG=bzhiof1Fu@mnmQ-ym7Yjp zoeUeN#d`fWhi%=vQ8l`UlV=ysD)-iWPobI_ulliEFPfWttB6(7xR=4(1El1Jrv=ZbsYC^}7 zBHruFs@bC(kETDkozqb@8_N;dnbd14xIV(VyjyLO-H~8Ru!W)e$J@vY*gSUoTK+h0 zouJpan@1n1b>qAG9z`BwX^GzlO!MY# zk9#Kbw|#BI0V+@4a7#Gj=n>{J>Zbca$*Mc;s03chpFG(XVf360BZ2Gpa{1iRZ>le4!`5he8YNc2G-KqY~Bx$zQ+!{EHh7I zvdzBlT>7=?rW1tWB{IKyR2$vFa*@adpAej`EorV`nzYORd*&xaAA4;z0}|$_62=6@ z>V(t~h{G$VqPUW=O&@8hW;R0@E znNFSB#a&#&eClv(0*QAm+gPudaILq87k8eZH72KY)4(`V`}-$x?|R&?1ElGsHW&Bo zo9v;iAKiwDa5da2Cn{gPuysA|t!hXm#k3W5L?`=|z))8=$1xyMb<6iXWC_K!R{Sk7 zcx8;MH0RF75Odua)nOja+Ij9@RXk?B4SUkZ$2&iz7IEs_zxz#)QFpz%d}ov?3bDZQ z>(9`RG~H?7C2_o3ygBAPb5^H|A7w;_CmnS4qHany(v9%9nquw8kK#|>7W6s~IiAP3 zJ+Qrr@YM6(o!=UQ{&!e@%B&6ap0~dwy@3JygcB_*Ro8f+VZa98(-TSF$b2?j>6U;h z8f;UlQJii*cugtr(zSeZmcwZ~=1yy5;MKDHz9Hi{sQgJz^|jhBmBGi!ZMFkUUMjYK zlNWyJQtU>)yn5JRphH?is6Aw(>y~MX4`x)>V$J~dIBPhcTfBd8v(YPILC+@<<%$0M z!9tkC5xpiTT+u3@nCVD?LZbr)83+0mr`z5Sq(>G3>sG_%*dq1qv zy-g8NuUS6k{22n{>7NMHTXPi>2EUF1lWA{`v;EY)@$g-$ez25=0>mWwq)GuF)z^-b*IS2rk-!(c^(#-_#WqI=sBjO+ii2K~l%h zRHiIFB&W(eb=FiaVdBWUe^ zPMx}tUxPgYMQ+VS-KLmDN8@Z8K1lt$!&n+7{^e~@REr!@kIh;x~i^l8)D5#4emlN_1ndSbIwV| zy{JOtn&2h8@pw*=LGhNmK{{&Rzs!bemxho$s*1ZC6vN%DB|eJtCk&>XUWC5BUb`D4 zww4$?eEzY?Tv}Rsb31X5$E13H`p=hBBfb`)=-nVZw)L@7Y}2S@=rm9W1Of1Rb~Z(Q zZP56*E8H}VJLgesACsnD3Tef7{?f7oxNw=Nws5{_qinm;hx8kNB>zBVohbDhFMJ|; zd>U-z?600&3&&mLO`I}8ErC;BpB6f6P@^(PtFrZDR`TY3Isr5f zyzMC-7!Y7yX;c9J!}hpF@ODw!OZ%-%Pn6-N)wqJ^mtIt9X}*(%;KMk~AD$Tl>bYi8 zS8A?q?304Se?R=e)wAyNXcg?-=Na%1I+b!$6;d`EU7pQ0jWMciwXO1@#gc=96a-|D z9@c_5GnPNx@L{z&UspZF2aIUatu>E3X_Ny30z{#PvqA_CeF)MTOgP6o7j>${VNKfy ziA_X4)2QX5Nf+k|Q+8@&F>>ZrZ>h-e%NQtKU|8G_>W+5)?asye!EAjDJ|ae)e5~mS z^?BM99TEr&ksO`(Z?UX|s$SCzCxy7udVzcMNG(tzqJ86bT`WEkRagp3c-2PMy^^YJ zaY&c>Dz=>hDfNme9w^5NJ)M;fNIqHW1EbX__gR_|KB_T9J$+%<`IKO|{eb&9%L+YS zO=Svm+1f|D&-3!RAl^E2dX*6GSZM)>kx~2hcHk7~Rr&44#Ps#w-Rxn}q7r3gj%S1hTB)Ut14u9oxaD+o91qCe`iZu zlYXWP=2ksEH_<)r89Z(kf<8yoa-ow^S8b&ns}J;8ON~9cxXRdhI&>F}2UU2QhLtzU zi3?nmd4Ghr(kf(4A_sYX^iGwO(jYJk@T3F^;L08G;;6+Zb*-?7=3J7mv>eXiS4%Fn zSTQvf(WF$x)ev%i!FkiPBS+5%Ngx+4g!ssBq4PH;3T-aHH8M;V?vh5R8qz#}=CkqJ zlfx}vO(Dn)ZR@PqL-{=|$PK$;^FFQENvbOfPJaf;#R^&&d@Dw7?4KFfm2Ej0T=I=; ziwP__+(ZnH%*6I7RDPAeU@a%?Uz#j3=W%itY*tYLFAcIc^zqet+~<#-!S@GzpP8&U zgD0MPa;$pSQ8VkV{$ap31C z%02wIMx!&~{zxf9IQhwbuBv?8<|mZ&=~1^_?5u&U^W()^a%%u`x^F-9a#Pp-M~8iB zbtkaf_(0HI`XU?aC?D$M$JP1YF89YvxPPiVEsW+kKpzS3{x)Q}Tvx_~H^q)^L_c zNZ;z2UvdkGRkbVX<(oEI$k@rJSrot?t-=bLD{K=TeDvEb6LIr?Hu!oKdgXjQ-#N=K zYr?+bDcT6Fi5Z4^yLvk}rHyUAjU8Nhra{|xzPCV5Ui03CRLQ2b0YKXgZ-tc?!R2r- zl=i{TW#yztIn|A5$s~Lq^O{eC~l(zs6~{_M$iF3Wpn&&burKcdZ}a*Rl_ACEp7j$_|zl4DD5<{vXZxl2iI<( z=>6jP>Z+~HauBz_3}dFR=<}PF5()DCAZH3fQ+I1*QQ9Rsl+hf?xseGc8vf zVRO|D0D6C2b(urbaoLVC!>v0dve>Tmn+2g);Zj<;NJy>;RJEF(#E}Zz;M-TDKIEMr zTrGPLXFprNhYl#R%c|IM6sTraRet=8>mJejd%E;DS5(fHEva(@B;M2J%aWD~iJVbd z3|LZ)_)9eKNF2K`NFG5tor`S^$bss@?kyg-xR4(_Srn(N=aTI95O z)*hBARb~GP@Nj{$r?fN)kFO+zHqaPMgC$24ZUY4w054c8W3x&LtyZ~YMK{3swz2^L zf9}K9><(EROO-X55@Rr#QhWmQVWd2?p_lF0o1cJWWdC(9+yW=s>(BYO)kd~RIPwMW zlDvQN)Dv5H<$vx(Smvq1zAz6ach1atUx%b_up)Oypm0lir8QFsbfs)Oh)O+uO;N(n z^;md}_wVXa++$I{V4h;b{a@pHG_mn?-w&>ULe;$_oMhLK-Ok3P@wr=28#P>FVoFY4 zo`OIs?0rJo=tgZR2Y4&Sqvpsm%%cQVt*dA`Tujq9$>^;~TJ>ujGVtN#Bu!noeW=&bD&yK4l4Rni&9 zAQU4#vbK5=HlnAB<~P0W6pkf=4DsVnX6e(Njan-u-{QeU!W_jz|#%o3Cquut0 z4EEpzt+!`-@a$3)Um$;~POBYi;vm8R_tn1@YI0Jq>^92@$NPyuCsk7r$R_%yd}c+( zE20og?#hx|9wgh?pb#>IA)U9IPFH%FECkx&CFrc5%Z=1%OQ)$C^(e5IJrYm+JtcN4 zN0bB_2sR_(2EE@h1w+bm{3e>C2K(s&Fz!2m?X0U_T}CP|S|1)($r{?%3C>IwIi(kg<&2(|0dJ6&2CBohoOjl|Sz$(RtBZ#gzpWa-)YN-X>+w_* zb$8HlchPY@&G|mZt8$(E9a_*=lHMu3dF^QoIdcD}CO%Kc=G6Hbk$-mFuE_rUOyp{< z8lyMOM$_ov2N+z)bRym`N40S*U@K-&q#XYRbr23uG6tK}*YCQy zEK8eN4o}a&7iyW@Iz2jaZ?lYxvki=-2z4w7Df?j2`er=iKH8-PJkdr$OrS;d|eGd%_ryQ9FvV_kClnA_;q!l zEL86gFa~kyNw%>1NoJY@mtxJ4&J{z#kY>r%v8d#$DW<+^i?_=?j+UOzSBsgnEmeKA zYgN&@BOGCD8qWCGpwLX)QzszwssGJA|MXI;I69oW!N^ANH}Mdt9?dlvxd$v8jn%N% z{EOd=S)r1nDO{1H8mNUe9=mf2Z?W^^NIkRcmGhnj7{Q>BW3-Uqt#i42Qn!5z&^ZeX z3i6O(RsF|L9J~x!`+Czg0M!quI6+^dV{R@9#NM~ewUBR|pjT<&9Ixwi7;nlISAZEX z*H*5-e|Ja}Hwt6q{Uv4Q7(TmR!{x>s5W(2z+*<<5p-JBq61OPzvBaEeZ{Ft!qg2mW zljdx%y?T*Y=2=MPN85BbA-nm3_Va|{j8yqc&f zTaqp_A8wliDi8*0XHbtG4TrPk$ft>KDvyg|=zLa6lDAZQ^*ABjn?av+NU8i|x%!N| zfr!{krxr~w9=TDYb6U|q7{@CX3Dxb_4om*&Z-;piDMBFN-x>7HmONrg(^g*-YP*Z` ze_TlB(M^E#8EP}n!`|QZl0>WqQ>}Eexfm*=U;ipdlD>IQp)^l}F}}s1Nej~)7ROSa zrzr2(NsXsQ2lXigW71tGQ4abiA|TRdpAYCJa}WTmzrlcgL7sEGV;@tSyVBYIycGw-Zbv(N;11K9ekeBHp?US(_KIW`K&KVtFJLN z@aYFIW38F3GJWRw0z?@&o1SH$(VMvsw{2(q}r~*(<-lQVqp}4-tAz8QJ>) z`zxJ8AFBcdDJKuqysL|20oI9kED(V>@R1sbfUbX7Vt+fZS9>|Vln{IqI@AaL@HR%H z9zkh2Y3*oz>GeT({P-jRr_)D$-?*P=cOo8u&NmnvS@GiZ2W+Ax4=+Bfa((eIX0H>i zJgM}(!iuU~f3$nw6UQ*0d(VAO#V3CHU+CFm}b+ODDNmd`= zzq4Bj~Y-KZ5|2C z*`4O?EA-z$)!tzGDd|x1I+H5#xKKSClwa3KU{=7RAO|CYI;b zwXdWy!$R-kuQLB!ALBl$$b21e)-pBczdN$Dh+BFAjxiqpL>eCoU<}BAJ zdD+JV=F2wMaYvAX<37t}MDq(@FTzbtIm1o$1hY4Fg+ep`xGVafM*HK=OFpOc+R+B*$&JhJ zb&I%T%fia5aoyaNiry|g=B>i5BO%lgE*f8@zif$T&8nqnF`Ovk_O_qu#KbbSkqCjd zO*UGb-UKxuh6d?(dq)__Y#fXIBy`=^#j*=fpX$0A_u~FRsWV(MW~xqjjO;iR##y82 z2Xdb7xv<6_)qgzC4}Q-ZPvjUDgJl|72{Kcjzwf5SiA?VX^xB46ABM=1e(?%=_d!s{1-S~t5p^}VY{{U<=T1n784@o4H@73H^E z#J3-~HJD{@ROgnKmVmjIcI}c1WE~K5N-|7`>CkqbUY zo8s!t(y$m4^hN#}+#V!yo>sVUcHzKGOJWyC?!a2>Kf70!bH9fGJVw4YoV(dLG)(KoaM7>&*%m?{*|wq6p(CF5+aeb< ztFNp%>x^$p5DwA#bKUfUXTX)`)dTR~i+u~7TnCx&m*wIPceSrzZTkwL>f*^S#tH_w zp&aGYoaa4EA@zvfn$Hk#QZPR4=>BFN+vv&vAiLW|))W@$|5bGa!kLnapAS-4^@@JmUkU6n_BS|3Ku?82=b+#KbM7Ef(eQc$H8@1@P-ZyhEoR)F@F9=$crC1G17 z7lmVj7+9#d*IQ&K^G1tdiN8D=^X26zg*ONL*q7VVJO{yThqNiu#llC!-2i+(;O{LA zQ}y5*XxecAvq56tw|(q?$QAM$Db}Hw8)5qS%jez?;fj-QD+!Gh2Rq|F?Lf1yikbt)qqcapKm&8=)iZS&5jWqX0GtSa~nf zQ%rA>+W8fBKRBhU5y8iIk@pQA%}G*BR|TC7#yfd>0n>G6vA9v)tK0_+_6(sZ$Ih*f zNfX6ny<3*o)O05zEwC1{yLP9^s{2x4>M)sG(%;*Yg{k}d9hsi)tp4{_BW&kD2Kfw zxl~<7n0d>PLP#)`vXr3G$<@pyV*B@lc5dq>GlL1b6O}%T=TabzAi0Dr} zRb>I)HIoZBRFN;CcYx^9flrCVIYo?WfyVw{9Unp^dM5_7SDNM`>gFbh!E_&b4cgLV z%U+Hw2Y8MNL9c#QYidAh1`8c_dUgr5afhCx>R(12E9(Cuu=}w3Erm) z$L9Me2`_%9Fx_?2a(D480QOhRmK{-EN!4GGxm)Q6eQmBlFSEdFj3mtYLFGHmI+ek| zWe4LP(s1qQll+)r*!@|6+h){U_K^t7op#nsGkDg^6^xy@+_OTq-MmgwAqv?;6>|;p zh$MbdFxiuPVf84vxqO1Ucv96FOS2bNjD7Is_~_`B{_(z%;>xci4i_j0Ist)!MFe^qviXP0|jO4;z^%CmN-hy&HYAGXOeam&_@iv1+%hue`uW-|_l6_mE;Eww*t1E1_z zh&vn#{9-Y4QZ7z+_}WT~XH<9`Q;uz_v!UuFe!O5t@KHnEgYfXx1gI8^2>B=6U8rS~ z=4xBXTg-TldLkgIdEU0K#VS6m;VmBpGE#dtG{vDNQ^(R!Jqxv+S?3!T#n=m}Zq;Kq zp(R&XqsicxU#+RJzWey#J>2H1<_v07JKb~#&LOl2npfI|OKTi!Kbddho_w)en@Z~< z+Pt~kH4|qwY{~A4;(U?F!&QrQfC7q{%LnlfJGC|yEOOBpE!l&(W=n@{;>D{cwvGc! z$SgHtNA+g|-CQL*JS-QIi~f2cmiZ%X-cDzbGD!@s(L*YFwaQ^D{uME`_i;xH@QmM$ zKGC~23iv;(gw{qQsMS;lOxp+&z($H`AP3LJB|VpzMmu-5VoH8JlS>CSWH4fcy)s3| zj+-J7Ts%?i7fYQlGVa*0Tl}N3iWfNG`3L37a*X-J6$fAIXK#3F>5Bi}d@5xh9+7{i zJ@0=7(0i&y1$g1ua&gQ9H$la)=VzzJeHN1Tb>Y|L6Dr9pTwjf*I_IhqE54qp+PW^j z15r&-6eW#N{|3^>S>Yq#MCz7OHjb>TL-{7J{o6r^Wq&8`FQ-!Aae75|w z$^Z)XgNw@V53AQAPm7RDY>}nGqCeMy)adK3ILM)196<0vTKs5o8u28ONgdN8T`ND^ zrhd(kcVoy|-nga1_VfHX&lb7lR!D_svQ-wU8kzq=qrSn#lQNvg%WRI?TT^F7B3Os+ zvd8H6W;(mE;P^=4Hx8ar3s9^zwwCzDX0)36R}a-iWith?->uneH%j%4V1YT?UTvx0*w$`6FW?(c-pt*7Nrdv6jTo6d)0GYVImBIY2ChIrHm@aSY?noKyj^4bv1}bf#i@^RTy{<}ohdt%$vApM$TkRJPU3+FvDl01i94C`EZHr`IsK2?m@bzNE zz^EFBa1cH&EO1?l8NS`~NOHAGa@7QQ6#cn8d|rSed-zB0;UAgBy=|$;rE68hXm4Oy z_WWxbq28a#!>H&hNTqK7BR~#x$Y3Q;3y4Gsq}*wDB+lBXsghnN{H9bS=+Z{Owhf{G�v!z~l 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_sign_tx_transfer_covenant/00003.png b/tests/standalone/snapshots/flex/test_sign_tx_transfer_covenant/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..b55b84e7c739018cf5851e294a23df48b0df1631 GIT binary patch literal 9633 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 S0r>O^WMOJ^t?KH%Xa55kdG8(o literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_sign_tx_transfer_covenant/00004.png b/tests/standalone/snapshots/flex/test_sign_tx_transfer_covenant/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..1651d581d2336eb62f039685bef00df7beb8b4c2 GIT binary patch literal 9492 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 N8!N{PjpwhY{V#uACu9Hs literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/flex/test_sign_tx_transfer_covenant/00005.png b/tests/standalone/snapshots/flex/test_sign_tx_transfer_covenant/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..e784bb12cb5faabe7887818ab0904691f64dc9c5 GIT binary patch literal 11523 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_app_mainmenu/00000.png b/tests/standalone/snapshots/nanosp/test_app_mainmenu/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..5f594e086006ce847d5f824f5cc0853eeeb4c01c GIT binary patch literal 537 zcmV+!0_OdRP)Q@-BUF>M;JrwJMAIeNVf_AVMGsOq>G%00000FhdAITZILDX)7>^ zw7&OVQIiiPI^cpJ_|{fnhL-g&@P`3H2&Dt6gC?+d4|p`Oty_Yz6x6c5_deR)mi3); zKiUesOf+%k33HhzVJQV&mV6?{QcyCn|HIj|d%{u#IOjqL(%ig`DP#1}Q(`OyNiMMd z4d4I(0001hAru~+Q^O?t{ZCP^9-W)HgS52aH(}Fw@1qZt`vKKzTCBLGLvnoNbU9u& z56YTdJX&34Yk@EB@n{5;Q7@~?S&ui{d}gLnNH#LEO6zZH@>=2^k48Y%&?6`Ir*(WY zxJstjfqO%`!ZcHmG~C>tWu_{FW_p#~tp%y7jhk@CB4z%Wko*`!Ymp0SIv{O+@JP%6AsU4Ip9z+t}L>*IsxUN6q21=Em@aK46f*k zie9V0XP9cqw?EjQR-MqFJgCE&m{5p-RRSNcO%q?yoa+ZH>@g)#eIJxZ5A?ZS#YR7% zitNTL7ke!GpNoJ_F7EWx`=a`dn#Z>OCKuYEy7MEF8%U%K&2OBgYs%)dM)JI`CuB_ky`Hvj85J*e-)F^#G>WmAmD%22|xP&8LmQ zXfZHrLD2$-f3gl>4Fn+O6u^_6-Dm+wUI8r0=`84Gy!Lt>{wdA?my?P?iCwDSDYZ-W zqb*R6<*;94cKinxa4$R67a{{Cx{%T$>#!+G4gAnw3E$@9Qa+h;j>mi1u41^toKW5kt!g?h@!*HuZ;qcV+wm=mDzgLQ zekuL!=<3yyR<}BnC2MzAWuR|CZ+=oNn*p)^4&HA_bG>L!ySr)`5VxS%ovUA+(RtcG zec7`krS2_$)BFAp=@;QQM*si-000000000d`vxX6uVl&lQM&*D002ovPDHLkV1n-7 BwA}yz literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_app_mainmenu/00002.png b/tests/standalone/snapshots/nanosp/test_app_mainmenu/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..f265d6944bdb7f43c98f3d49248a6c765708c4f9 GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-#ba4!+nDh2lBHtkep0-4j zdo91^SC)TlmlR6jIJxc9#_vBn^A1i6OKAh@fq;f!+db+A2hMzp>oSb9oXl*ySG}NI z|2-#m%kI4>z^Euw`3@=e4c*D^?vqz zRgHODeb-hT`ue>w{Bcz5j9IRr^>3i(Z~n ze8*ksSt(3XIhX7FpFd!o=H>9p<&oC)78&qol`;+ E0P0De2mk;8 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_get_public_key_confirm_accepted/00000.png b/tests/standalone/snapshots/nanosp/test_get_public_key_confirm_accepted/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..aa0b6bc0790544b5550818191ad0c6fd8601b1ff GIT binary patch literal 545 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_get_public_key_confirm_refused/00005.png b/tests/standalone/snapshots/nanosp/test_get_public_key_confirm_refused/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..03e5ee2f423da64edfc808f2ad92be8722eab226 GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9dba4!+nDh2#w9p|19*4kV zh3aqWJ>MMVKi=V>$QTvy{%6+2OH;y^U$g}3fq@O}0!=TMd;R4;QqHe4kV{;{vd?^v%r->(H{F06>!`7Kg?o_Ub_EU#DIzkjy6hd=F?Ic^!e zkE!dpZ0pGeQ}LP494_zs=T_V5+a{{;c>bAIyQ8W>Gv6;;rsh^^c3aHEaNm;R$#WI& zYkcwb<$SYg;*ObFzo$=LWO=J~@}!SnxAVW{@|YJ{ws22>%*w}FqF?kAQ-jr}dbs@g zHm@ic=;l9a+1H8_k6rkt*!EH_#hE>H(!_Vgd1^BkC2c*G9%x(tbNR8!6OVp+x8&v5 zYwH_stgN5?#`6AmDTeE_d-m96T5;ccr`Hy~m|Qwx7)YQY0000000000fN%G+JAe~X zO7=3wShd)PJ`$0G-`xRRl)E^_DAdAb-iR-EBwusQuwoE1+u8EdsFwSfig~&u52=Z~}DKfXOx@K8GCaM-FzP_jjWA zccS-!gWFcb<(&XdQGD10FvqRC{XD>K5m$q~Y_65Y(UV8_LsNO}j&#+sc-d_kz3LIV z72tBGy>Ke}q=#Gn1QQk3kb#vAh;;8@}eeE literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_message_accepted/00001.png b/tests/standalone/snapshots/nanosp/test_sign_message_accepted/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0d43942a6afeea4d88c5b98b70840318043ff3ed GIT binary patch literal 780 zcmV+n1M~ceP)i zwtTy7+jSPbiGAN?13aG3)dsYY5n$UUhe!#OBw|HHQchVdq<*h9z$XrZ;ydYU<?#pF5}EHy>@*Tt{2>ft@%rd!?J6;1;&ZCcD#^go@QqI8yJ8@&$t*j*7&u9 zt;6X$`IyNZxporR2?w@fZ{Q;7FbCIIZ?RWNw46Y`J&A92QKsNjL8w)Ao zk>lVqIh@T~Aa8q1xM|&79zb z`I0R<^lGB@#Y?;sbBGfc>Qa$ZEVOO+Sxk;YZ0O_DNR=>uLhoE64l9MnYgb+f=<@^Bz^ea|79FkrD0000< KMNUMnLSTXfvuxJ@ literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_message_accepted/00002.png b/tests/standalone/snapshots/nanosp/test_sign_message_accepted/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..95ba65eed9588a7fd798eafe51c63f00dd62f4b0 GIT binary patch literal 498 zcmVF_KXInh(lq0Ak?&kA8IB54YR=Q^a(pLg~R;Kd4eWZKvl*_;> znxDG000000PsZo%DRjZYNEf`Tfm9_7O$`q{f$_Ioj8Sd;&XT> zLj4$Kw%TRQ@;WN1+{~7}tW#ch)bYH#pE+Z5qO}m5r#Oz(8N6tnMR9y{u(K z#Y);`Sw1g4&C~PZ1zAxaZ5o7>IbJ?a0mn005lmVb!ts{<;v6QppK^ ztOszqU+V!l@4blJ%RjnxUtimzuOuq0R$gh}9dLz4M6!{Jf)$p?i%a4j*3r9I#(oE6 z-LX)1MmPsyNn;%KE|xK#fbj6i9z^L%4+D2C-ZYe@nMh|Y{c*7^j-YDXqg%@Pql-?e z4~IF$rbm!_Ep}y5Dw{gwth%uP+4aeDr<&2SaB zx1T;W>Z8q_fJxi4JDvZ2P#;+KWQ(2}_0dlJ5-z=vGvleMi8~<5{qL@mY6(O(UX6WK o+wU7T0000000000007`Hf6!%D*5|e@3;+NC07*qoM6N<$g5N{N82|tP literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_message_accepted/00004.png b/tests/standalone/snapshots/nanosp/test_sign_message_accepted/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..55bb5c8745117e62fcc97b45b7be669531949e59 GIT binary patch literal 422 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`Jkba4!+nDh2l?4)J|0k=RS zQ|rY4-mmtaVV3N=(BO7(+uG`TYE}#X{S|0hD+VDkDGlb@G3 z_}L%Jh&~xUr_>?8wQyEl!F5K@tL$}``QKS7xX*DepIgWAFg5moV3lYQP|}=vl2+dS zm%pFAn^=E%vEH+LQh}5I9kpXpuN8iO!}GpCZ9-@038C+a-Y&d*Scd;&-P|#yl>6K*=^qv0{HD- zuGPA_-E?-r%3aTP+isXO<@u+%A125AUEOhy`M&R+JvOi~dvHm9rJ;b0+_Z3MkdUXV KpUXO@geCx;w7IST literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_message_accepted/00005.png b/tests/standalone/snapshots/nanosp/test_sign_message_accepted/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..5f594e086006ce847d5f824f5cc0853eeeb4c01c GIT binary patch literal 537 zcmV+!0_OdRP)Q@-BUF>M;JrwJMAIeNVf_AVMGsOq>G%00000FhdAITZILDX)7>^ zw7&OVQIiiPI^cpJ_|{fnhL-g&@P`3H2&Dt6gC?+d4|p`Oty_Yz6x6c5_deR)mi3); zKiUesOf+%k33HhzVJQV&mV6?{QcyCn|HIj|d%{u#IOjqL(%ig`DP#1}Q(`OyNiMMd z4d4I(0001hAru~+Q^O?t{ZCP^9-W)HgS52aH(}Fw@1qZt`vKKzTCBLGLvnoNbU9u& z56YTdJX&34Yk@EB@n{5;Q7@~?S&ui{d}gLnNH#LEO6zZH@>=2^k48Y%&?6`Ir*(WY zxJstjfqO%`!ZcHmG~C>tWu_{FW_p#~tp%y7jhk@CB4z%Wko*`!Ymp0SIv{O+@JP%6AsU4Ip9z+t}L>*IsxUN6q21=Em@aK46f*k zie9V0XP9cqw?EjQR-MqFJgCE&m{5p-RRSNcO%q?yoa+ZH>@g)#eIJxZ5A?ZS#YR7% zitNTL7ke!GpNoJ_F7EWx`=a`dn#Z>OCKuYEy7MHy~m|Qwx7)YQY0000000000fN%G+JAe~X zO7=3wShd)PJ`$0G-`xRRl)E^_DAdAb-iR-EBwusQuwoE1+u8EdsFwSfig~&u52=Z~}DKfXOx@K8GCaM-FzP_jjWA zccS-!gWFcb<(&XdQGD10FvqRC{XD>K5m$q~Y_65Y(UV8_LsNO}j&#+sc-d_kz3LIV z72tBGy>Ke}q=#Gn1QQk3kb#vAh;;8@}eeE literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_message_refused/00001.png b/tests/standalone/snapshots/nanosp/test_sign_message_refused/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0d43942a6afeea4d88c5b98b70840318043ff3ed GIT binary patch literal 780 zcmV+n1M~ceP)i zwtTy7+jSPbiGAN?13aG3)dsYY5n$UUhe!#OBw|HHQchVdq<*h9z$XrZ;ydYU<?#pF5}EHy>@*Tt{2>ft@%rd!?J6;1;&ZCcD#^go@QqI8yJ8@&$t*j*7&u9 zt;6X$`IyNZxporR2?w@fZ{Q;7FbCIIZ?RWNw46Y`J&A92QKsNjL8w)Ao zk>lVqIh@T~Aa8q1xM|&79zb z`I0R<^lGB@#Y?;sbBGfc>Qa$ZEVOO+Sxk;YZ0O_DNR=>uLhoE64l9MnYgb+f=<@^Bz^ea|79FkrD0000< KMNUMnLSTXfvuxJ@ literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_message_refused/00002.png b/tests/standalone/snapshots/nanosp/test_sign_message_refused/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..95ba65eed9588a7fd798eafe51c63f00dd62f4b0 GIT binary patch literal 498 zcmVF_KXInh(lq0Ak?&kA8IB54YR=Q^a(pLg~R;Kd4eWZKvl*_;> znxDG000000PsZo%DRjZYNEf`Tfm9_7O$`q{f$_Ioj8Sd;&XT> zLj4$Kw%TRQ@;WN1+{~7}tW#ch)bYH#pE+Z5qO}m5r#Oz(8N6tnMR9y{u(K z#Y);`Sw1g4&C~PZ1zAxaZ5o7>IbJ?a0mn005lmVb!ts{<;v6QppK^ ztOszqU+V!l@4blJ%RjnxUtimzuOuq0R$gh}9dLz4M6!{Jf)$p?i%a4j*3r9I#(oE6 z-LX)1MmPsyNn;%KE|xK#fbj6i9z^L%4+D2C-ZYe@nMh|Y{c*7^j-YDXqg%@Pql-?e z4~IF$rbm!_Ep}y5Dw{gwth%uP+4aeDr<&2SaB zx1T;W>Z8q_fJxi4JDvZ2P#;+KWQ(2}_0dlJ5-z=vGvleMi8~<5{qL@mY6(O(UX6WK o+wU7T0000000000007`Hf6!%D*5|e@3;+NC07*qoM6N<$g5N{N82|tP literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_message_refused/00004.png b/tests/standalone/snapshots/nanosp/test_sign_message_refused/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..55bb5c8745117e62fcc97b45b7be669531949e59 GIT binary patch literal 422 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`Jkba4!+nDh2l?4)J|0k=RS zQ|rY4-mmtaVV3N=(BO7(+uG`TYE}#X{S|0hD+VDkDGlb@G3 z_}L%Jh&~xUr_>?8wQyEl!F5K@tL$}``QKS7xX*DepIgWAFg5moV3lYQP|}=vl2+dS zm%pFAn^=E%vEH+LQh}5I9kpXpuN8iO!}GpCZ9-@038C+a-Y&d*Scd;&-P|#yl>6K*=^qv0{HD- zuGPA_-E?-r%3aTP+isXO<@u+%A125AUEOhy`M&R+JvOi~dvHm9rJ;b0+_Z3MkdUXV KpUXO@geCx;w7IST literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_message_refused/00005.png b/tests/standalone/snapshots/nanosp/test_sign_message_refused/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..09a1af101c5773a5140650e5f8ce3caf554d7fae GIT binary patch literal 470 zcmV;{0V)28P)>;NV+V3QIv00000000000N^FY7-Ky5 z?q~Ym-GMW@QI-pRB9?#ib! zn{EOgLp1^3Ls*Vv0?MbZw=Pnlmw-5k6UAk_8lnn!mbWF{5;2O|1A z5&iwh!G7dmKXL%z&&}=!lsBluuRN)+_BSKPwvU$gyKma~_L|+k&wh6Yey%ssPL67r zbZ5_CW8K?y3?alA)8Bm9ZMl4_?9%wmOvk()j;}s&H34OZ4r7`|Q~NQ@nc9Prxj;Ud zTF!@6daCkX-N}wsZ%tmkYb^oe5$ct%3S6Jjr~mgk9xh9*b*rCvHmoI}&2~P2STVnT z*DdvM@>L!1enqkO8FOhrU@7kNwQf>wpLqqATDwv`TTVbVYRa2?cPMoWv?t3mUiCrC zhuyBOHFLRf$Er|#)|z`VC@{G#$>(|VFXQIdzW@LL000000095RFRC+k$On9+FaQ7m M07*qoM6N<$g2|K6`v3p{ literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_message_refused/00006.png b/tests/standalone/snapshots/nanosp/test_sign_message_refused/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..5f594e086006ce847d5f824f5cc0853eeeb4c01c GIT binary patch literal 537 zcmV+!0_OdRP)Q@-BUF>M;JrwJMAIeNVf_AVMGsOq>G%00000FhdAITZILDX)7>^ zw7&OVQIiiPI^cpJ_|{fnhL-g&@P`3H2&Dt6gC?+d4|p`Oty_Yz6x6c5_deR)mi3); zKiUesOf+%k33HhzVJQV&mV6?{QcyCn|HIj|d%{u#IOjqL(%ig`DP#1}Q(`OyNiMMd z4d4I(0001hAru~+Q^O?t{ZCP^9-W)HgS52aH(}Fw@1qZt`vKKzTCBLGLvnoNbU9u& z56YTdJX&34Yk@EB@n{5;Q7@~?S&ui{d}gLnNH#LEO6zZH@>=2^k48Y%&?6`Ir*(WY zxJstjfqO%`!ZcHmG~C>tWu_{FW_p#~tp%y7jhk@CB4z%Wko*`!Ymp0SIv{O+@JP%6AsU4Ip9z+t}L>*IsxUN6q21=Em@aK46f*k zie9V0XP9cqw?EjQR-MqFJgCE&m{5p-RRSNcO%q?yoa+ZH>@g)#eIJxZ5A?ZS#YR7% zitNTL7ke!GpNoJ_F7EWx`=a`dn#Z>OCKuYEy7M}2A00000RQa%0V1tyByo@nc z5_wBSqc`wrt-wvPiDQh8Y~97H1Hx-Uj3$8>Tsoi(|E}B@{v434Tn+ymi&9D+ec*&i8Cv)>6%@|vx1^zc3JP7byxkaLU14#-NBe2%n8Ti_i% zEVHEDvhZ&7Q}9aBQ?(-2EtqWe_MT}b&9$X`S@eG>(qguy`P3Mbe=w(dX=AO%{0ssI20000008ID><%o*8 TqUL7b00000NkvXXu0mjfefaT4 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00001.png b/tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4dba295f5fa9b752f6d80c026ce473fc9ecada GIT binary patch literal 660 zcmV;F0&D$=P)G%5` zRy3)@Ek&1jk0~ZS`9Waz;P>k{G-OoL+sbm`b63HMWE*n8FC}sl>KREXrP4{3lsI6l z3>pEaNROR{3rRnlQA{ai5iQY=84XaSU%PPS-Zog$06Vdy0s6USuH1VX7-WFtQqz)y zJXnm8yL+-e5xs#WqrGl{&G1H%&AE4_*p($+&`!Vr00000cqWzi0c4w_+!j2xEiPfm ztwb!_pW`0ijgpJn5+e2Y0o;rvMKo_-TDu%%CYEImE&r7nOqVJT~~ykeo~U% zZq?P5KIjxF@w8gpDk2HGD(UCYiMY~V>~+{itk-$2fQer|GmrzDDM+A@kZ; zq&5>71Rj#)h=kvEEXqVyNL+?8V znr~(sEVB$H+aK{5UEZHkyYt^r?&&j|WPuTIDyk($X=Yx|FJJ)scXlq3XYdcvy;Osj u+;L6I{r|AZ5gvf-7?K14000007x)7QaQ9Uz-@^w00000vln`X+n__uZwGe#VB9L~hgvd#R8qY!6hcGy;$_=f>*H zvO~2+j#BgN2HC^;1RPRgDvyh5KRU45qAuCzGVh)IATOoY|APiKyb)xND-y74>|wJ0 zbFY5o;WkAA29htQ=vcZ;k$~9Eva4Sik23+~xGWF5Jyq>NsZNIKlioA1Gcd>P?B2-0 zMI(JutZz2O5%gpv00000007{L_ zoh|{LHR7^!W`A?ARppqXt5KzU9zhNBY<+g;1boDsV6G!b{T`^=;+rrXe7gVu00000 f000000C3tbCHg)JXjSv(00000NkvXXu0mjf{_x4i literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00003.png b/tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..943f4af548eb65330a1b02325f32ebebe13fdf91 GIT binary patch literal 579 zcmV-J0=)f+P)ge;`JX6~#B$_fwB0rU0001hC-O5U3=yRtLkMHy z@)H;zdOk#y3Xpv~Y;O+4>%|7PM9$bd#RfYeKB+iZ^)0D!s_jzGT9a_)1d4ix-_wSE<8)SH=ZeM_1=d z^X{469RvX?jL-lAl=$iybkksj4u=NAKvx3*)}Ub)5Ux(c@2xARWiC9*73Uxsr%`X| z+~i=3{;Y}HFOy~y+ZkK9^IYpl4t+X#W;mw@jXatCe*SH>s zJ)YrRfGb=SZw$T!XqaVO1z!Si#5Gg7kn(28SvJ7)d}089RWKO{0002b#!002ovPDHLkV1iB<{DA-f literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00004.png b/tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..cb8f1b932138a2a44ed7a6f82e20b7cf4bd98fc3 GIT binary patch literal 441 zcmV;q0Y?6bP)E;YTlX(s)edFZA+<|G+ z+7<&~Q>sxIl}jwnTMWRNN)4&9PBLxqi~|tn%5bOaDOJys`nQwL+!Gkb>bFWEou8=r zS?b|C{3L6;Oh>N7ytkO0001hJL2!jX)>jz`jh=BIMrX`U3RL!5M!_sv(QSc z!z)p06l8a_Rrcp*4@>7u`H`Wk+1x!?+9_1Yu!H}(D?)F;-q!f-=_ei9;eE8qJ$u~X zoSILv6L)hBkk1nwNwckPj@_rAc&GoUgriaovHJj=afy{+uQedltMb^;A^Q0tb1DD; j000000000001kQrnAB%1{t-=-00000NkvXXu0mjfJ{rrG literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00005.png b/tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..37cef67c8224fe56e2399a2eecd2216594b017d1 GIT binary patch literal 458 zcmV;*0X6=KP)Xc?84&BKvM@A;|;#zeAlrX!pK004jiA%qZu_AFlKQ+omr zIwF@}+7svrA$ado5WV-YQTCCIsk1z*Y)NNXVEqY*IVjsNBbYjP?`7xgP@VMzTpC?u ztgTDOC*VGL@d+4OPpqv!?%V`aZ{h5Pk>1a-bNJ;fy@bzWZ4qB|>J#ubNB{r; z0002MfAmiOVl=K2YNG#Qe*#YQRs4jV=qn-znplN2@gCMhsL%IMX+l=e>DF$Ra*}si zs@HAJM;^+umuICio7P8{=U#rg{x!-;cCuSuu9JZNn4@N@qgz!?@;hgh%<^!kTshTR zRXbNJrTYV}i!H1poj507*qoM6N<$f^B-y A&j0`b literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00006.png b/tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..e59cc9af03c1a4d7bb7d8f937fd62260ed568af2 GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{6&ba4!+nDh3wH{T%x9@mRa zH#)!XS9#y+sNmK8JGABPmwAE0iXyh==Nb%rfx61Se26;`xat<4>yd2L+P!nkzXr6C~&E+-vmkF^KOd7P9+u6(#{O^A* P6~y;+^>bP0l+XkK3_wvOm78$?BXO53NGJ>#1I8`n`ft?(gAfM0=oSG000000000000Ce)+d+)WQ z81Stfz)H4KAG~J*V)mVLx{(YqHUVcljM40ixd{leIk203F*gA*#WCrovo9iF+5yZc zcOj$M7jr8h$kJ^$`?i^Tz#E!@7W(@w1$1z?@&}_;e~^m z--6EWY}GQIS8jU2o_#eDSha4}W|*^{0QOu-2ibttpD%Z2@;Bi(dFo#g<#YW*9RUCU g00000008Xn7n^AyatI|jEdT%j07*qoM6N<$f?M^(F8}}l literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00008.png b/tests/standalone/snapshots/nanosp/test_sign_tx_accepted/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..5f594e086006ce847d5f824f5cc0853eeeb4c01c GIT binary patch literal 537 zcmV+!0_OdRP)Q@-BUF>M;JrwJMAIeNVf_AVMGsOq>G%00000FhdAITZILDX)7>^ zw7&OVQIiiPI^cpJ_|{fnhL-g&@P`3H2&Dt6gC?+d4|p`Oty_Yz6x6c5_deR)mi3); zKiUesOf+%k33HhzVJQV&mV6?{QcyCn|HIj|d%{u#IOjqL(%ig`DP#1}Q(`OyNiMMd z4d4I(0001hAru~+Q^O?t{ZCP^9-W)HgS52aH(}Fw@1qZt`vKKzTCBLGLvnoNbU9u& z56YTdJX&34Yk@EB@n{5;Q7@~?S&ui{d}gLnNH#LEO6zZH@>=2^k48Y%&?6`Ir*(WY zxJstjfqO%`!ZcHmG~C>tWu_{FW_p#~tp%y7jhk@CB4z%Wko*`!Ymp0SIv{O+@JP%6AsU4Ip9z+t}L>*IsxUN6q21=Em@aK46f*k zie9V0XP9cqw?EjQR-MqFJgCE&m{5p-RRSNcO%q?yoa+ZH>@g)#eIJxZ5A?ZS#YR7% zitNTL7ke!GpNoJ_F7EWx`=a`dn#Z>OCKuYEy7M}2A00000RQa%0V1tyByo@nc z5_wBSqc`wrt-wvPiDQh8Y~97H1Hx-Uj3$8>Tsoi(|E}B@{v434Tn+ymi&9D+ec*&i8Cv)>6%@|vx1^zc3JP7byxkaLU14#-NBe2%n8Ti_i% zEVHEDvhZ&7Q}9aBQ?(-2EtqWe_MT}b&9$X`S@eG>(qguy`P3Mbe=w(dX=AO%{0ssI20000008ID><%o*8 TqUL7b00000NkvXXu0mjfefaT4 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_tx_open_covenant/00001.png b/tests/standalone/snapshots/nanosp/test_sign_tx_open_covenant/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4dba295f5fa9b752f6d80c026ce473fc9ecada GIT binary patch literal 660 zcmV;F0&D$=P)G%5` zRy3)@Ek&1jk0~ZS`9Waz;P>k{G-OoL+sbm`b63HMWE*n8FC}sl>KREXrP4{3lsI6l z3>pEaNROR{3rRnlQA{ai5iQY=84XaSU%PPS-Zog$06Vdy0s6USuH1VX7-WFtQqz)y zJXnm8yL+-e5xs#WqrGl{&G1H%&AE4_*p($+&`!Vr00000cqWzi0c4w_+!j2xEiPfm ztwb!_pW`0ijgpJn5+e2Y0o;rvMKo_-TDu%%CYEImE&r7nOqVJT~~ykeo~U% zZq?P5KIjxF@w8gpDk2HGD(UCYiMY~V>~+{itk-$2fQer|GmrzDDM+A@kZ; zq&5>71Rj#)h=kvEEXqVyNL+?8V znr~(sEVB$H+aK{5UEZHkyYt^r?&&j|WPuTIDyk($X=Yx|FJJ)scXlq3XYdcvy;Osj u+;L6I{r|AZ5gvf-7?K14000007x)7QaQ9Uz-@^w00000CQJ&)T2DVeuAT;?}FdpzB>{5?Hh_@wNW3+LrGr3dPg-%C4l_OTcdg9 z`~f%NBP4kI+i9=6d*QP<>({haTXvgmua$>t7^GWs+GZ<=`9@_19RNY?u~RD zG}4)3{jw>RpgW@g00000004Ky-;=`_sV4h_y(FCMhj^x)><6L-kywQy@f?mss?p%x z&I#41wq}~A9o;L3w`na~@-xj%N0aCMQoAC`eb@8rzde0`qgig*-4^AP1*p6zuuTGU zbE8CWLN#4#396Vd^_vS8;9O6FNtYn?VvxJLSnnPI0000000000001z=AMU&=MM8*@ Qa{vGU07*qoM6N<$f@Rmg^#A|> literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_tx_open_covenant/00003.png b/tests/standalone/snapshots/nanosp/test_sign_tx_open_covenant/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..65133d9d5e45bf64a5a2b50f568f228a536389fc GIT binary patch literal 446 zcmV;v0YUzWP)K9w4%oz=+_$^ zeF8ezle0`^nY<`XJx}Y=IVHNzp#i>(OV_SW9C7|DXw!+SSv{3Fx$*|PA-c}gfOJzt zb)@3a%a6~Gsb{vFXv|H_O1}!_GA-kJ^nvUu=tCoRb9eii~q7yeMj`b6K^3;tizrt^+2qWX4JAc+iJwoCMRYT)W8+LBq@-cE+Jv>|$zhe8{!#SX||Z@$JQ^4gazbT^%V+H?g= zO=#Jb;ZuSR-S9D{(vXTxfUG8YO0fmhmiy?DW_2;13A{4eyr>?Zxb{5omd?3p2^t3z z00000001zeG5;CqVkOmNzp=lBlYJMzw3B^D%z-DWkSD%}J&|f$Q|XWz&U#YbJ2;xS zb0Art+1fh%e8WR_y|R^Os}^-sqdMCGwWHeWU;;wcG3H(>4=3ZC^|1pE*M9VKqSap) l0RR91000000002c))$(A{6{J$Xc?84&BKvM@A;|;#zeAlrX!pK004jiA%qZu_AFlKQ+omr zIwF@}+7svrA$ado5WV-YQTCCIsk1z*Y)NNXVEqY*IVjsNBbYjP?`7xgP@VMzTpC?u ztgTDOC*VGL@d+4OPpqv!?%V`aZ{h5Pk>1a-bNJ;fy@bzWZ4qB|>J#ubNB{r; z0002MfAmiOVl=K2YNG#Qe*#YQRs4jV=qn-znplN2@gCMhsL%IMX+l=e>DF$Ra*}si zs@HAJM;^+umuICio7P8{=U#rg{x!-;cCuSuu9JZNn4@N@qgz!?@;hgh%<^!kTshTR zRXbNJrTYV}i!H1poj507*qoM6N<$f^B-y A&j0`b literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_tx_open_covenant/00006.png b/tests/standalone/snapshots/nanosp/test_sign_tx_open_covenant/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..192361ea8d4e0d34573f74d0113b6e37da774202 GIT binary patch literal 338 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|^K=ba4!+nDh2_AYYRK&#{l0 zdpzIQFS&QLed4kmo(ERsKKx(Z2VtY@n|2l5V*JajRbWyQ*ZV-2d7kcffG@ z$-5%68^r%@-LP|}*yUaB{0}5Tx7Pe_?D#U}_scCaA~)J5{F;&P{ZHshT+=P9_}NpR zEUZ2{O~JT#N5H#fuY{g-$6oZ602&Pf>(u`5FJErhIqS>+98rsx?GZ`pe;v*^s)Q}{ zcyoAShZOVu;vM^wzP^09d)M7A^}>g@t!h($C+w-%Q}lbDs=T$#UmP9l;wYcApO=2>7&*C{3_wvOm78$?BXO53NGJ>#1I8`n`ft?(gAfM0=oSG000000000000Ce)+d+)WQ z81Stfz)H4KAG~J*V)mVLx{(YqHUVcljM40ixd{leIk203F*gA*#WCrovo9iF+5yZc zcOj$M7jr8h$kJ^$`?i^Tz#E!@7W(@w1$1z?@&}_;e~^m z--6EWY}GQIS8jU2o_#eDSha4}W|*^{0QOu-2ibttpD%Z2@;Bi(dFo#g<#YW*9RUCU g00000008Xn7n^AyatI|jEdT%j07*qoM6N<$f?M^(F8}}l literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_tx_open_covenant/00008.png b/tests/standalone/snapshots/nanosp/test_sign_tx_open_covenant/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..5f594e086006ce847d5f824f5cc0853eeeb4c01c GIT binary patch literal 537 zcmV+!0_OdRP)Q@-BUF>M;JrwJMAIeNVf_AVMGsOq>G%00000FhdAITZILDX)7>^ zw7&OVQIiiPI^cpJ_|{fnhL-g&@P`3H2&Dt6gC?+d4|p`Oty_Yz6x6c5_deR)mi3); zKiUesOf+%k33HhzVJQV&mV6?{QcyCn|HIj|d%{u#IOjqL(%ig`DP#1}Q(`OyNiMMd z4d4I(0001hAru~+Q^O?t{ZCP^9-W)HgS52aH(}Fw@1qZt`vKKzTCBLGLvnoNbU9u& z56YTdJX&34Yk@EB@n{5;Q7@~?S&ui{d}gLnNH#LEO6zZH@>=2^k48Y%&?6`Ir*(WY zxJstjfqO%`!ZcHmG~C>tWu_{FW_p#~tp%y7jhk@CB4z%Wko*`!Ymp0SIv{O+@JP%6AsU4Ip9z+t}L>*IsxUN6q21=Em@aK46f*k zie9V0XP9cqw?EjQR-MqFJgCE&m{5p-RRSNcO%q?yoa+ZH>@g)#eIJxZ5A?ZS#YR7% zitNTL7ke!GpNoJ_F7EWx`=a`dn#Z>OCKuYEy7M}2A00000RQa%0V1tyByo@nc z5_wBSqc`wrt-wvPiDQh8Y~97H1Hx-Uj3$8>Tsoi(|E}B@{v434Tn+ymi&9D+ec*&i8Cv)>6%@|vx1^zc3JP7byxkaLU14#-NBe2%n8Ti_i% zEVHEDvhZ&7Q}9aBQ?(-2EtqWe_MT}b&9$X`S@eG>(qguy`P3Mbe=w(dX=AO%{0ssI20000008ID><%o*8 TqUL7b00000NkvXXu0mjfefaT4 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_tx_refused/00001.png b/tests/standalone/snapshots/nanosp/test_sign_tx_refused/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4dba295f5fa9b752f6d80c026ce473fc9ecada GIT binary patch literal 660 zcmV;F0&D$=P)G%5` zRy3)@Ek&1jk0~ZS`9Waz;P>k{G-OoL+sbm`b63HMWE*n8FC}sl>KREXrP4{3lsI6l z3>pEaNROR{3rRnlQA{ai5iQY=84XaSU%PPS-Zog$06Vdy0s6USuH1VX7-WFtQqz)y zJXnm8yL+-e5xs#WqrGl{&G1H%&AE4_*p($+&`!Vr00000cqWzi0c4w_+!j2xEiPfm ztwb!_pW`0ijgpJn5+e2Y0o;rvMKo_-TDu%%CYEImE&r7nOqVJT~~ykeo~U% zZq?P5KIjxF@w8gpDk2HGD(UCYiMY~V>~+{itk-$2fQer|GmrzDDM+A@kZ; zq&5>71Rj#)h=kvEEXqVyNL+?8V znr~(sEVB$H+aK{5UEZHkyYt^r?&&j|WPuTIDyk($X=Yx|FJJ)scXlq3XYdcvy;Osj u+;L6I{r|AZ5gvf-7?K14000007x)7QaQ9Uz-@^w000000TeV<=jRz6G$&g?`H004j|`f~SN*H!R!Hm-O`0G=w8`4r;BXi+yR%QHKpy6wO{R6Y{|Z|`*Mq&{-D2-{r^El*1fXG79$dHs_$X4 zzPM)}dALoHfR6OTDS9nUrbs|+u@x2LK-D6^BHxYJuYHZII@JEu3& zaneYiwAPzVaRfaX2><{90001ZB7UA6rVwhPKiDqdL_fq|*ol51auA7AC=$=%NQ4^4 zY{A4)35C6^-Y)w(8Wh+d9);Dm=qroWM{~yge^y1<0_j=`N{r63A-{1~&C7`d5coNKY1ljk5vNwdTvab-ihXMcq00000 e00000;G$pAvpaJ{a)J2(0000Xc?84&BKvM@A;|;#zeAlrX!pK004jiA%qZu_AFlKQ+omr zIwF@}+7svrA$ado5WV-YQTCCIsk1z*Y)NNXVEqY*IVjsNBbYjP?`7xgP@VMzTpC?u ztgTDOC*VGL@d+4OPpqv!?%V`aZ{h5Pk>1a-bNJ;fy@bzWZ4qB|>J#ubNB{r; z0002MfAmiOVl=K2YNG#Qe*#YQRs4jV=qn-znplN2@gCMhsL%IMX+l=e>DF$Ra*}si zs@HAJM;^+umuICio7P8{=U#rg{x!-;cCuSuu9JZNn4@N@qgz!?@;hgh%<^!kTshTR zRXbNJrTYV}i!H1poj507*qoM6N<$f^B-y A&j0`b literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_tx_refused/00004.png b/tests/standalone/snapshots/nanosp/test_sign_tx_refused/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..c61de7b90d3bb65750e442ea50cca745ddf5f90c GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Wh_zk%=YZ)0B?p#!^VvJt7YQM%IR8UAfnE%P9V} z*QX16lcFa`y2WUe2bXexI=b$KA`j3(AW%N}|MlIcC0u-esYkQ;{Zh2sIJr)tN}w}V zL+E*d%A#X)=! z!s_6#t2vvCwn`h!IkR>BzDM7fUsv9mkj-u7IPb-7ZSw_3JSWt0ZxZ-lT~y1j^{*OY bKbQ=-DgDoEg=3_QHkj+_>gTe~DWM4fi{X&6 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_tx_refused/00005.png b/tests/standalone/snapshots/nanosp/test_sign_tx_refused/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..c1d53a3b0b9248751f3cef7dc56adc4873b50864 GIT binary patch literal 438 zcmV;n0ZIOeP)3_wvOm78$?BXO53NGJ>#1I8`n`ft?(gAfM0=oSG000000000000Ce)+d+)WQ z81Stfz)H4KAG~J*V)mVLx{(YqHUVcljM40ixd{leIk203F*gA*#WCrovo9iF+5yZc zcOj$M7jr8h$kJ^$`?i^Tz#E!@7W(@w1$1z?@&}_;e~^m z--6EWY}GQIS8jU2o_#eDSha4}W|*^{0QOu-2ibttpD%Z2@;Bi(dFo#g<#YW*9RUCU g00000008Xn7n^AyatI|jEdT%j07*qoM6N<$f?M^(F8}}l literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_tx_refused/00006.png b/tests/standalone/snapshots/nanosp/test_sign_tx_refused/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..09a1af101c5773a5140650e5f8ce3caf554d7fae GIT binary patch literal 470 zcmV;{0V)28P)>;NV+V3QIv00000000000N^FY7-Ky5 z?q~Ym-GMW@QI-pRB9?#ib! zn{EOgLp1^3Ls*Vv0?MbZw=Pnlmw-5k6UAk_8lnn!mbWF{5;2O|1A z5&iwh!G7dmKXL%z&&}=!lsBluuRN)+_BSKPwvU$gyKma~_L|+k&wh6Yey%ssPL67r zbZ5_CW8K?y3?alA)8Bm9ZMl4_?9%wmOvk()j;}s&H34OZ4r7`|Q~NQ@nc9Prxj;Ud zTF!@6daCkX-N}wsZ%tmkYb^oe5$ct%3S6Jjr~mgk9xh9*b*rCvHmoI}&2~P2STVnT z*DdvM@>L!1enqkO8FOhrU@7kNwQf>wpLqqATDwv`TTVbVYRa2?cPMoWv?t3mUiCrC zhuyBOHFLRf$Er|#)|z`VC@{G#$>(|VFXQIdzW@LL000000095RFRC+k$On9+FaQ7m M07*qoM6N<$g2|K6`v3p{ literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_tx_refused/00007.png b/tests/standalone/snapshots/nanosp/test_sign_tx_refused/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..5f594e086006ce847d5f824f5cc0853eeeb4c01c GIT binary patch literal 537 zcmV+!0_OdRP)Q@-BUF>M;JrwJMAIeNVf_AVMGsOq>G%00000FhdAITZILDX)7>^ zw7&OVQIiiPI^cpJ_|{fnhL-g&@P`3H2&Dt6gC?+d4|p`Oty_Yz6x6c5_deR)mi3); zKiUesOf+%k33HhzVJQV&mV6?{QcyCn|HIj|d%{u#IOjqL(%ig`DP#1}Q(`OyNiMMd z4d4I(0001hAru~+Q^O?t{ZCP^9-W)HgS52aH(}Fw@1qZt`vKKzTCBLGLvnoNbU9u& z56YTdJX&34Yk@EB@n{5;Q7@~?S&ui{d}gLnNH#LEO6zZH@>=2^k48Y%&?6`Ir*(WY zxJstjfqO%`!ZcHmG~C>tWu_{FW_p#~tp%y7jhk@CB4z%Wko*`!Ymp0SIv{O+@JP%6AsU4Ip9z+t}L>*IsxUN6q21=Em@aK46f*k zie9V0XP9cqw?EjQR-MqFJgCE&m{5p-RRSNcO%q?yoa+ZH>@g)#eIJxZ5A?ZS#YR7% zitNTL7ke!GpNoJ_F7EWx`=a`dn#Z>OCKuYEy7M}2A00000RQa%0V1tyByo@nc z5_wBSqc`wrt-wvPiDQh8Y~97H1Hx-Uj3$8>Tsoi(|E}B@{v434Tn+ymi&9D+ec*&i8Cv)>6%@|vx1^zc3JP7byxkaLU14#-NBe2%n8Ti_i% zEVHEDvhZ&7Q}9aBQ?(-2EtqWe_MT}b&9$X`S@eG>(qguy`P3Mbe=w(dX=AO%{0ssI20000008ID><%o*8 TqUL7b00000NkvXXu0mjfefaT4 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_tx_transfer_covenant/00001.png b/tests/standalone/snapshots/nanosp/test_sign_tx_transfer_covenant/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1ac92dab21f46ac7310725772592fd9044474257 GIT binary patch literal 580 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 A&j0`b literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_tx_transfer_covenant/00008.png b/tests/standalone/snapshots/nanosp/test_sign_tx_transfer_covenant/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..bafaedbc648282a65dfaa63508734fb66e8a7c69 GIT binary patch literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U| zblyH`>Vj3$g^TX2UZZ-VOw5x%5$GTg_+kFBes8p!de)`?8)F|VdH+b*`lWReuT5a9 zO(9>kQWnpO!WVD&-kG`o{r0!quSzx7WO2l8IqOdXzh3YPrtFn0_j5@)c9*N%yyR8g z^PE$wPQ~u@zO~CRwCRnrwa%4i5t~`&c5Gt~i)#>3cU)tgTe~DWM4f+VP07 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_tx_transfer_covenant/00009.png b/tests/standalone/snapshots/nanosp/test_sign_tx_transfer_covenant/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..c1d53a3b0b9248751f3cef7dc56adc4873b50864 GIT binary patch literal 438 zcmV;n0ZIOeP)3_wvOm78$?BXO53NGJ>#1I8`n`ft?(gAfM0=oSG000000000000Ce)+d+)WQ z81Stfz)H4KAG~J*V)mVLx{(YqHUVcljM40ixd{leIk203F*gA*#WCrovo9iF+5yZc zcOj$M7jr8h$kJ^$`?i^Tz#E!@7W(@w1$1z?@&}_;e~^m z--6EWY}GQIS8jU2o_#eDSha4}W|*^{0QOu-2ibttpD%Z2@;Bi(dFo#g<#YW*9RUCU g00000008Xn7n^AyatI|jEdT%j07*qoM6N<$f?M^(F8}}l literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanosp/test_sign_tx_transfer_covenant/00010.png b/tests/standalone/snapshots/nanosp/test_sign_tx_transfer_covenant/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..5f594e086006ce847d5f824f5cc0853eeeb4c01c GIT binary patch literal 537 zcmV+!0_OdRP)Q@-BUF>M;JrwJMAIeNVf_AVMGsOq>G%00000FhdAITZILDX)7>^ zw7&OVQIiiPI^cpJ_|{fnhL-g&@P`3H2&Dt6gC?+d4|p`Oty_Yz6x6c5_deR)mi3); zKiUesOf+%k33HhzVJQV&mV6?{QcyCn|HIj|d%{u#IOjqL(%ig`DP#1}Q(`OyNiMMd z4d4I(0001hAru~+Q^O?t{ZCP^9-W)HgS52aH(}Fw@1qZt`vKKzTCBLGLvnoNbU9u& z56YTdJX&34Yk@EB@n{5;Q7@~?S&ui{d}gLnNH#LEO6zZH@>=2^k48Y%&?6`Ir*(WY zxJstjfqO%`!ZcHmG~C>tWu_{FW_p#~tp%y7jhk@CB4z%Wko*`!Ymp0SIv{O+@JP%6AsU4Ip9z+t}L>*IsxUN6q21=Em@aK46f*k zie9V0XP9cqw?EjQR-MqFJgCE&m{5p-RRSNcO%q?yoa+ZH>@g)#eIJxZ5A?ZS#YR7% zitNTL7ke!GpNoJ_F7EWx`=a`dn#Z>OCKuYEy7MQ@-BUF>M;JrwJMAIeNVf_AVMGsOq>G%00000FhdAITZILDX)7>^ zw7&OVQIiiPI^cpJ_|{fnhL-g&@P`3H2&Dt6gC?+d4|p`Oty_Yz6x6c5_deR)mi3); zKiUesOf+%k33HhzVJQV&mV6?{QcyCn|HIj|d%{u#IOjqL(%ig`DP#1}Q(`OyNiMMd z4d4I(0001hAru~+Q^O?t{ZCP^9-W)HgS52aH(}Fw@1qZt`vKKzTCBLGLvnoNbU9u& z56YTdJX&34Yk@EB@n{5;Q7@~?S&ui{d}gLnNH#LEO6zZH@>=2^k48Y%&?6`Ir*(WY zxJstjfqO%`!ZcHmG~C>tWu_{FW_p#~tp%y7jhk@CB4z%Wko*`!Ymp0SIv{O+@JP%6AsU4Ip9z+t}L>*IsxUN6q21=Em@aK46f*k zie9V0XP9cqw?EjQR-MqFJgCE&m{5p-RRSNcO%q?yoa+ZH>@g)#eIJxZ5A?ZS#YR7% zitNTL7ke!GpNoJ_F7EWx`=a`dn#Z>OCKuYEy7MEF8%U%K&2OBgYs%)dM)JI`CuB_ky`Hvj85J*e-)F^#G>WmAmD%22|xP&8LmQ zXfZHrLD2$-f3gl>4Fn+O6u^_6-Dm+wUI8r0=`84Gy!Lt>{wdA?my?P?iCwDSDYZ-W zqb*R6<*;94cKinxa4$R67a{{Cx{%T$>#!+G4gAnw3E$@9Qa+h;j>mi1u41^toKW5kt!g?h@!*HuZ;qcV+wm=mDzgLQ zekuL!=<3yyR<}BnC2MzAWuR|CZ+=oNn*p)^4&HA_bG>L!ySr)`5VxS%ovUA+(RtcG zec7`krS2_$)BFAp=@;QQM*si-000000000d`vxX6uVl&lQM&*D002ovPDHLkV1n-7 BwA}yz literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_app_mainmenu/00002.png b/tests/standalone/snapshots/nanox/test_app_mainmenu/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..f265d6944bdb7f43c98f3d49248a6c765708c4f9 GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|=-#ba4!+nDh2lBHtkep0-4j zdo91^SC)TlmlR6jIJxc9#_vBn^A1i6OKAh@fq;f!+db+A2hMzp>oSb9oXl*ySG}NI z|2-#m%kI4>z^Euw`3@=e4c*D^?vqz zRgHODeb-hT`ue>w{Bcz5j9IRr^>3i(Z~n ze8*ksSt(3XIhX7FpFd!o=H>9p<&oC)78&qol`;+ E0P0De2mk;8 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_get_public_key_confirm_accepted/00000.png b/tests/standalone/snapshots/nanox/test_get_public_key_confirm_accepted/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..aa0b6bc0790544b5550818191ad0c6fd8601b1ff GIT binary patch literal 545 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_get_public_key_confirm_refused/00005.png b/tests/standalone/snapshots/nanox/test_get_public_key_confirm_refused/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..03e5ee2f423da64edfc808f2ad92be8722eab226 GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9dba4!+nDh2#w9p|19*4kV zh3aqWJ>MMVKi=V>$QTvy{%6+2OH;y^U$g}3fq@O}0!=TMd;R4;QqHe4kV{;{vd?^v%r->(H{F06>!`7Kg?o_Ub_EU#DIzkjy6hd=F?Ic^!e zkE!dpZ0pGeQ}LP494_zs=T_V5+a{{;c>bAIyQ8W>Gv6;;rsh^^c3aHEaNm;R$#WI& zYkcwb<$SYg;*ObFzo$=LWO=J~@}!SnxAVW{@|YJ{ws22>%*w}FqF?kAQ-jr}dbs@g zHm@ic=;l9a+1H8_k6rkt*!EH_#hE>H(!_Vgd1^BkC2c*G9%x(tbNR8!6OVp+x8&v5 zYwH_stgN5?#`6AmDTeE_d-m96T5;ccr`Hy~m|Qwx7)YQY0000000000fN%G+JAe~X zO7=3wShd)PJ`$0G-`xRRl)E^_DAdAb-iR-EBwusQuwoE1+u8EdsFwSfig~&u52=Z~}DKfXOx@K8GCaM-FzP_jjWA zccS-!gWFcb<(&XdQGD10FvqRC{XD>K5m$q~Y_65Y(UV8_LsNO}j&#+sc-d_kz3LIV z72tBGy>Ke}q=#Gn1QQk3kb#vAh;;8@}eeE literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_message_accepted/00001.png b/tests/standalone/snapshots/nanox/test_sign_message_accepted/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0d43942a6afeea4d88c5b98b70840318043ff3ed GIT binary patch literal 780 zcmV+n1M~ceP)i zwtTy7+jSPbiGAN?13aG3)dsYY5n$UUhe!#OBw|HHQchVdq<*h9z$XrZ;ydYU<?#pF5}EHy>@*Tt{2>ft@%rd!?J6;1;&ZCcD#^go@QqI8yJ8@&$t*j*7&u9 zt;6X$`IyNZxporR2?w@fZ{Q;7FbCIIZ?RWNw46Y`J&A92QKsNjL8w)Ao zk>lVqIh@T~Aa8q1xM|&79zb z`I0R<^lGB@#Y?;sbBGfc>Qa$ZEVOO+Sxk;YZ0O_DNR=>uLhoE64l9MnYgb+f=<@^Bz^ea|79FkrD0000< KMNUMnLSTXfvuxJ@ literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_message_accepted/00002.png b/tests/standalone/snapshots/nanox/test_sign_message_accepted/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..95ba65eed9588a7fd798eafe51c63f00dd62f4b0 GIT binary patch literal 498 zcmVF_KXInh(lq0Ak?&kA8IB54YR=Q^a(pLg~R;Kd4eWZKvl*_;> znxDG000000PsZo%DRjZYNEf`Tfm9_7O$`q{f$_Ioj8Sd;&XT> zLj4$Kw%TRQ@;WN1+{~7}tW#ch)bYH#pE+Z5qO}m5r#Oz(8N6tnMR9y{u(K z#Y);`Sw1g4&C~PZ1zAxaZ5o7>IbJ?a0mn005lmVb!ts{<;v6QppK^ ztOszqU+V!l@4blJ%RjnxUtimzuOuq0R$gh}9dLz4M6!{Jf)$p?i%a4j*3r9I#(oE6 z-LX)1MmPsyNn;%KE|xK#fbj6i9z^L%4+D2C-ZYe@nMh|Y{c*7^j-YDXqg%@Pql-?e z4~IF$rbm!_Ep}y5Dw{gwth%uP+4aeDr<&2SaB zx1T;W>Z8q_fJxi4JDvZ2P#;+KWQ(2}_0dlJ5-z=vGvleMi8~<5{qL@mY6(O(UX6WK o+wU7T0000000000007`Hf6!%D*5|e@3;+NC07*qoM6N<$g5N{N82|tP literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_message_accepted/00004.png b/tests/standalone/snapshots/nanox/test_sign_message_accepted/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..55bb5c8745117e62fcc97b45b7be669531949e59 GIT binary patch literal 422 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`Jkba4!+nDh2l?4)J|0k=RS zQ|rY4-mmtaVV3N=(BO7(+uG`TYE}#X{S|0hD+VDkDGlb@G3 z_}L%Jh&~xUr_>?8wQyEl!F5K@tL$}``QKS7xX*DepIgWAFg5moV3lYQP|}=vl2+dS zm%pFAn^=E%vEH+LQh}5I9kpXpuN8iO!}GpCZ9-@038C+a-Y&d*Scd;&-P|#yl>6K*=^qv0{HD- zuGPA_-E?-r%3aTP+isXO<@u+%A125AUEOhy`M&R+JvOi~dvHm9rJ;b0+_Z3MkdUXV KpUXO@geCx;w7IST literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_message_accepted/00005.png b/tests/standalone/snapshots/nanox/test_sign_message_accepted/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..5f594e086006ce847d5f824f5cc0853eeeb4c01c GIT binary patch literal 537 zcmV+!0_OdRP)Q@-BUF>M;JrwJMAIeNVf_AVMGsOq>G%00000FhdAITZILDX)7>^ zw7&OVQIiiPI^cpJ_|{fnhL-g&@P`3H2&Dt6gC?+d4|p`Oty_Yz6x6c5_deR)mi3); zKiUesOf+%k33HhzVJQV&mV6?{QcyCn|HIj|d%{u#IOjqL(%ig`DP#1}Q(`OyNiMMd z4d4I(0001hAru~+Q^O?t{ZCP^9-W)HgS52aH(}Fw@1qZt`vKKzTCBLGLvnoNbU9u& z56YTdJX&34Yk@EB@n{5;Q7@~?S&ui{d}gLnNH#LEO6zZH@>=2^k48Y%&?6`Ir*(WY zxJstjfqO%`!ZcHmG~C>tWu_{FW_p#~tp%y7jhk@CB4z%Wko*`!Ymp0SIv{O+@JP%6AsU4Ip9z+t}L>*IsxUN6q21=Em@aK46f*k zie9V0XP9cqw?EjQR-MqFJgCE&m{5p-RRSNcO%q?yoa+ZH>@g)#eIJxZ5A?ZS#YR7% zitNTL7ke!GpNoJ_F7EWx`=a`dn#Z>OCKuYEy7MHy~m|Qwx7)YQY0000000000fN%G+JAe~X zO7=3wShd)PJ`$0G-`xRRl)E^_DAdAb-iR-EBwusQuwoE1+u8EdsFwSfig~&u52=Z~}DKfXOx@K8GCaM-FzP_jjWA zccS-!gWFcb<(&XdQGD10FvqRC{XD>K5m$q~Y_65Y(UV8_LsNO}j&#+sc-d_kz3LIV z72tBGy>Ke}q=#Gn1QQk3kb#vAh;;8@}eeE literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_message_refused/00001.png b/tests/standalone/snapshots/nanox/test_sign_message_refused/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..0d43942a6afeea4d88c5b98b70840318043ff3ed GIT binary patch literal 780 zcmV+n1M~ceP)i zwtTy7+jSPbiGAN?13aG3)dsYY5n$UUhe!#OBw|HHQchVdq<*h9z$XrZ;ydYU<?#pF5}EHy>@*Tt{2>ft@%rd!?J6;1;&ZCcD#^go@QqI8yJ8@&$t*j*7&u9 zt;6X$`IyNZxporR2?w@fZ{Q;7FbCIIZ?RWNw46Y`J&A92QKsNjL8w)Ao zk>lVqIh@T~Aa8q1xM|&79zb z`I0R<^lGB@#Y?;sbBGfc>Qa$ZEVOO+Sxk;YZ0O_DNR=>uLhoE64l9MnYgb+f=<@^Bz^ea|79FkrD0000< KMNUMnLSTXfvuxJ@ literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_message_refused/00002.png b/tests/standalone/snapshots/nanox/test_sign_message_refused/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..95ba65eed9588a7fd798eafe51c63f00dd62f4b0 GIT binary patch literal 498 zcmVF_KXInh(lq0Ak?&kA8IB54YR=Q^a(pLg~R;Kd4eWZKvl*_;> znxDG000000PsZo%DRjZYNEf`Tfm9_7O$`q{f$_Ioj8Sd;&XT> zLj4$Kw%TRQ@;WN1+{~7}tW#ch)bYH#pE+Z5qO}m5r#Oz(8N6tnMR9y{u(K z#Y);`Sw1g4&C~PZ1zAxaZ5o7>IbJ?a0mn005lmVb!ts{<;v6QppK^ ztOszqU+V!l@4blJ%RjnxUtimzuOuq0R$gh}9dLz4M6!{Jf)$p?i%a4j*3r9I#(oE6 z-LX)1MmPsyNn;%KE|xK#fbj6i9z^L%4+D2C-ZYe@nMh|Y{c*7^j-YDXqg%@Pql-?e z4~IF$rbm!_Ep}y5Dw{gwth%uP+4aeDr<&2SaB zx1T;W>Z8q_fJxi4JDvZ2P#;+KWQ(2}_0dlJ5-z=vGvleMi8~<5{qL@mY6(O(UX6WK o+wU7T0000000000007`Hf6!%D*5|e@3;+NC07*qoM6N<$g5N{N82|tP literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_message_refused/00004.png b/tests/standalone/snapshots/nanox/test_sign_message_refused/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..55bb5c8745117e62fcc97b45b7be669531949e59 GIT binary patch literal 422 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`Jkba4!+nDh2l?4)J|0k=RS zQ|rY4-mmtaVV3N=(BO7(+uG`TYE}#X{S|0hD+VDkDGlb@G3 z_}L%Jh&~xUr_>?8wQyEl!F5K@tL$}``QKS7xX*DepIgWAFg5moV3lYQP|}=vl2+dS zm%pFAn^=E%vEH+LQh}5I9kpXpuN8iO!}GpCZ9-@038C+a-Y&d*Scd;&-P|#yl>6K*=^qv0{HD- zuGPA_-E?-r%3aTP+isXO<@u+%A125AUEOhy`M&R+JvOi~dvHm9rJ;b0+_Z3MkdUXV KpUXO@geCx;w7IST literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_message_refused/00005.png b/tests/standalone/snapshots/nanox/test_sign_message_refused/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..09a1af101c5773a5140650e5f8ce3caf554d7fae GIT binary patch literal 470 zcmV;{0V)28P)>;NV+V3QIv00000000000N^FY7-Ky5 z?q~Ym-GMW@QI-pRB9?#ib! zn{EOgLp1^3Ls*Vv0?MbZw=Pnlmw-5k6UAk_8lnn!mbWF{5;2O|1A z5&iwh!G7dmKXL%z&&}=!lsBluuRN)+_BSKPwvU$gyKma~_L|+k&wh6Yey%ssPL67r zbZ5_CW8K?y3?alA)8Bm9ZMl4_?9%wmOvk()j;}s&H34OZ4r7`|Q~NQ@nc9Prxj;Ud zTF!@6daCkX-N}wsZ%tmkYb^oe5$ct%3S6Jjr~mgk9xh9*b*rCvHmoI}&2~P2STVnT z*DdvM@>L!1enqkO8FOhrU@7kNwQf>wpLqqATDwv`TTVbVYRa2?cPMoWv?t3mUiCrC zhuyBOHFLRf$Er|#)|z`VC@{G#$>(|VFXQIdzW@LL000000095RFRC+k$On9+FaQ7m M07*qoM6N<$g2|K6`v3p{ literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_message_refused/00006.png b/tests/standalone/snapshots/nanox/test_sign_message_refused/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..5f594e086006ce847d5f824f5cc0853eeeb4c01c GIT binary patch literal 537 zcmV+!0_OdRP)Q@-BUF>M;JrwJMAIeNVf_AVMGsOq>G%00000FhdAITZILDX)7>^ zw7&OVQIiiPI^cpJ_|{fnhL-g&@P`3H2&Dt6gC?+d4|p`Oty_Yz6x6c5_deR)mi3); zKiUesOf+%k33HhzVJQV&mV6?{QcyCn|HIj|d%{u#IOjqL(%ig`DP#1}Q(`OyNiMMd z4d4I(0001hAru~+Q^O?t{ZCP^9-W)HgS52aH(}Fw@1qZt`vKKzTCBLGLvnoNbU9u& z56YTdJX&34Yk@EB@n{5;Q7@~?S&ui{d}gLnNH#LEO6zZH@>=2^k48Y%&?6`Ir*(WY zxJstjfqO%`!ZcHmG~C>tWu_{FW_p#~tp%y7jhk@CB4z%Wko*`!Ymp0SIv{O+@JP%6AsU4Ip9z+t}L>*IsxUN6q21=Em@aK46f*k zie9V0XP9cqw?EjQR-MqFJgCE&m{5p-RRSNcO%q?yoa+ZH>@g)#eIJxZ5A?ZS#YR7% zitNTL7ke!GpNoJ_F7EWx`=a`dn#Z>OCKuYEy7M}2A00000RQa%0V1tyByo@nc z5_wBSqc`wrt-wvPiDQh8Y~97H1Hx-Uj3$8>Tsoi(|E}B@{v434Tn+ymi&9D+ec*&i8Cv)>6%@|vx1^zc3JP7byxkaLU14#-NBe2%n8Ti_i% zEVHEDvhZ&7Q}9aBQ?(-2EtqWe_MT}b&9$X`S@eG>(qguy`P3Mbe=w(dX=AO%{0ssI20000008ID><%o*8 TqUL7b00000NkvXXu0mjfefaT4 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_tx_accepted/00001.png b/tests/standalone/snapshots/nanox/test_sign_tx_accepted/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4dba295f5fa9b752f6d80c026ce473fc9ecada GIT binary patch literal 660 zcmV;F0&D$=P)G%5` zRy3)@Ek&1jk0~ZS`9Waz;P>k{G-OoL+sbm`b63HMWE*n8FC}sl>KREXrP4{3lsI6l z3>pEaNROR{3rRnlQA{ai5iQY=84XaSU%PPS-Zog$06Vdy0s6USuH1VX7-WFtQqz)y zJXnm8yL+-e5xs#WqrGl{&G1H%&AE4_*p($+&`!Vr00000cqWzi0c4w_+!j2xEiPfm ztwb!_pW`0ijgpJn5+e2Y0o;rvMKo_-TDu%%CYEImE&r7nOqVJT~~ykeo~U% zZq?P5KIjxF@w8gpDk2HGD(UCYiMY~V>~+{itk-$2fQer|GmrzDDM+A@kZ; zq&5>71Rj#)h=kvEEXqVyNL+?8V znr~(sEVB$H+aK{5UEZHkyYt^r?&&j|WPuTIDyk($X=Yx|FJJ)scXlq3XYdcvy;Osj u+;L6I{r|AZ5gvf-7?K14000007x)7QaQ9Uz-@^w00000vln`X+n__uZwGe#VB9L~hgvd#R8qY!6hcGy;$_=f>*H zvO~2+j#BgN2HC^;1RPRgDvyh5KRU45qAuCzGVh)IATOoY|APiKyb)xND-y74>|wJ0 zbFY5o;WkAA29htQ=vcZ;k$~9Eva4Sik23+~xGWF5Jyq>NsZNIKlioA1Gcd>P?B2-0 zMI(JutZz2O5%gpv00000007{L_ zoh|{LHR7^!W`A?ARppqXt5KzU9zhNBY<+g;1boDsV6G!b{T`^=;+rrXe7gVu00000 f000000C3tbCHg)JXjSv(00000NkvXXu0mjf{_x4i literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_tx_accepted/00003.png b/tests/standalone/snapshots/nanox/test_sign_tx_accepted/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..943f4af548eb65330a1b02325f32ebebe13fdf91 GIT binary patch literal 579 zcmV-J0=)f+P)ge;`JX6~#B$_fwB0rU0001hC-O5U3=yRtLkMHy z@)H;zdOk#y3Xpv~Y;O+4>%|7PM9$bd#RfYeKB+iZ^)0D!s_jzGT9a_)1d4ix-_wSE<8)SH=ZeM_1=d z^X{469RvX?jL-lAl=$iybkksj4u=NAKvx3*)}Ub)5Ux(c@2xARWiC9*73Uxsr%`X| z+~i=3{;Y}HFOy~y+ZkK9^IYpl4t+X#W;mw@jXatCe*SH>s zJ)YrRfGb=SZw$T!XqaVO1z!Si#5Gg7kn(28SvJ7)d}089RWKO{0002b#!002ovPDHLkV1iB<{DA-f literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_tx_accepted/00004.png b/tests/standalone/snapshots/nanox/test_sign_tx_accepted/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..cb8f1b932138a2a44ed7a6f82e20b7cf4bd98fc3 GIT binary patch literal 441 zcmV;q0Y?6bP)E;YTlX(s)edFZA+<|G+ z+7<&~Q>sxIl}jwnTMWRNN)4&9PBLxqi~|tn%5bOaDOJys`nQwL+!Gkb>bFWEou8=r zS?b|C{3L6;Oh>N7ytkO0001hJL2!jX)>jz`jh=BIMrX`U3RL!5M!_sv(QSc z!z)p06l8a_Rrcp*4@>7u`H`Wk+1x!?+9_1Yu!H}(D?)F;-q!f-=_ei9;eE8qJ$u~X zoSILv6L)hBkk1nwNwckPj@_rAc&GoUgriaovHJj=afy{+uQedltMb^;A^Q0tb1DD; j000000000001kQrnAB%1{t-=-00000NkvXXu0mjfJ{rrG literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_tx_accepted/00005.png b/tests/standalone/snapshots/nanox/test_sign_tx_accepted/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..37cef67c8224fe56e2399a2eecd2216594b017d1 GIT binary patch literal 458 zcmV;*0X6=KP)Xc?84&BKvM@A;|;#zeAlrX!pK004jiA%qZu_AFlKQ+omr zIwF@}+7svrA$ado5WV-YQTCCIsk1z*Y)NNXVEqY*IVjsNBbYjP?`7xgP@VMzTpC?u ztgTDOC*VGL@d+4OPpqv!?%V`aZ{h5Pk>1a-bNJ;fy@bzWZ4qB|>J#ubNB{r; z0002MfAmiOVl=K2YNG#Qe*#YQRs4jV=qn-znplN2@gCMhsL%IMX+l=e>DF$Ra*}si zs@HAJM;^+umuICio7P8{=U#rg{x!-;cCuSuu9JZNn4@N@qgz!?@;hgh%<^!kTshTR zRXbNJrTYV}i!H1poj507*qoM6N<$f^B-y A&j0`b literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_tx_accepted/00006.png b/tests/standalone/snapshots/nanox/test_sign_tx_accepted/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..e59cc9af03c1a4d7bb7d8f937fd62260ed568af2 GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{6&ba4!+nDh3wH{T%x9@mRa zH#)!XS9#y+sNmK8JGABPmwAE0iXyh==Nb%rfx61Se26;`xat<4>yd2L+P!nkzXr6C~&E+-vmkF^KOd7P9+u6(#{O^A* P6~y;+^>bP0l+XkK3_wvOm78$?BXO53NGJ>#1I8`n`ft?(gAfM0=oSG000000000000Ce)+d+)WQ z81Stfz)H4KAG~J*V)mVLx{(YqHUVcljM40ixd{leIk203F*gA*#WCrovo9iF+5yZc zcOj$M7jr8h$kJ^$`?i^Tz#E!@7W(@w1$1z?@&}_;e~^m z--6EWY}GQIS8jU2o_#eDSha4}W|*^{0QOu-2ibttpD%Z2@;Bi(dFo#g<#YW*9RUCU g00000008Xn7n^AyatI|jEdT%j07*qoM6N<$f?M^(F8}}l literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_tx_accepted/00008.png b/tests/standalone/snapshots/nanox/test_sign_tx_accepted/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..5f594e086006ce847d5f824f5cc0853eeeb4c01c GIT binary patch literal 537 zcmV+!0_OdRP)Q@-BUF>M;JrwJMAIeNVf_AVMGsOq>G%00000FhdAITZILDX)7>^ zw7&OVQIiiPI^cpJ_|{fnhL-g&@P`3H2&Dt6gC?+d4|p`Oty_Yz6x6c5_deR)mi3); zKiUesOf+%k33HhzVJQV&mV6?{QcyCn|HIj|d%{u#IOjqL(%ig`DP#1}Q(`OyNiMMd z4d4I(0001hAru~+Q^O?t{ZCP^9-W)HgS52aH(}Fw@1qZt`vKKzTCBLGLvnoNbU9u& z56YTdJX&34Yk@EB@n{5;Q7@~?S&ui{d}gLnNH#LEO6zZH@>=2^k48Y%&?6`Ir*(WY zxJstjfqO%`!ZcHmG~C>tWu_{FW_p#~tp%y7jhk@CB4z%Wko*`!Ymp0SIv{O+@JP%6AsU4Ip9z+t}L>*IsxUN6q21=Em@aK46f*k zie9V0XP9cqw?EjQR-MqFJgCE&m{5p-RRSNcO%q?yoa+ZH>@g)#eIJxZ5A?ZS#YR7% zitNTL7ke!GpNoJ_F7EWx`=a`dn#Z>OCKuYEy7M}2A00000RQa%0V1tyByo@nc z5_wBSqc`wrt-wvPiDQh8Y~97H1Hx-Uj3$8>Tsoi(|E}B@{v434Tn+ymi&9D+ec*&i8Cv)>6%@|vx1^zc3JP7byxkaLU14#-NBe2%n8Ti_i% zEVHEDvhZ&7Q}9aBQ?(-2EtqWe_MT}b&9$X`S@eG>(qguy`P3Mbe=w(dX=AO%{0ssI20000008ID><%o*8 TqUL7b00000NkvXXu0mjfefaT4 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_tx_open_covenant/00001.png b/tests/standalone/snapshots/nanox/test_sign_tx_open_covenant/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4dba295f5fa9b752f6d80c026ce473fc9ecada GIT binary patch literal 660 zcmV;F0&D$=P)G%5` zRy3)@Ek&1jk0~ZS`9Waz;P>k{G-OoL+sbm`b63HMWE*n8FC}sl>KREXrP4{3lsI6l z3>pEaNROR{3rRnlQA{ai5iQY=84XaSU%PPS-Zog$06Vdy0s6USuH1VX7-WFtQqz)y zJXnm8yL+-e5xs#WqrGl{&G1H%&AE4_*p($+&`!Vr00000cqWzi0c4w_+!j2xEiPfm ztwb!_pW`0ijgpJn5+e2Y0o;rvMKo_-TDu%%CYEImE&r7nOqVJT~~ykeo~U% zZq?P5KIjxF@w8gpDk2HGD(UCYiMY~V>~+{itk-$2fQer|GmrzDDM+A@kZ; zq&5>71Rj#)h=kvEEXqVyNL+?8V znr~(sEVB$H+aK{5UEZHkyYt^r?&&j|WPuTIDyk($X=Yx|FJJ)scXlq3XYdcvy;Osj u+;L6I{r|AZ5gvf-7?K14000007x)7QaQ9Uz-@^w00000CQJ&)T2DVeuAT;?}FdpzB>{5?Hh_@wNW3+LrGr3dPg-%C4l_OTcdg9 z`~f%NBP4kI+i9=6d*QP<>({haTXvgmua$>t7^GWs+GZ<=`9@_19RNY?u~RD zG}4)3{jw>RpgW@g00000004Ky-;=`_sV4h_y(FCMhj^x)><6L-kywQy@f?mss?p%x z&I#41wq}~A9o;L3w`na~@-xj%N0aCMQoAC`eb@8rzde0`qgig*-4^AP1*p6zuuTGU zbE8CWLN#4#396Vd^_vS8;9O6FNtYn?VvxJLSnnPI0000000000001z=AMU&=MM8*@ Qa{vGU07*qoM6N<$f@Rmg^#A|> literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_tx_open_covenant/00003.png b/tests/standalone/snapshots/nanox/test_sign_tx_open_covenant/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..65133d9d5e45bf64a5a2b50f568f228a536389fc GIT binary patch literal 446 zcmV;v0YUzWP)K9w4%oz=+_$^ zeF8ezle0`^nY<`XJx}Y=IVHNzp#i>(OV_SW9C7|DXw!+SSv{3Fx$*|PA-c}gfOJzt zb)@3a%a6~Gsb{vFXv|H_O1}!_GA-kJ^nvUu=tCoRb9eii~q7yeMj`b6K^3;tizrt^+2qWX4JAc+iJwoCMRYT)W8+LBq@-cE+Jv>|$zhe8{!#SX||Z@$JQ^4gazbT^%V+H?g= zO=#Jb;ZuSR-S9D{(vXTxfUG8YO0fmhmiy?DW_2;13A{4eyr>?Zxb{5omd?3p2^t3z z00000001zeG5;CqVkOmNzp=lBlYJMzw3B^D%z-DWkSD%}J&|f$Q|XWz&U#YbJ2;xS zb0Art+1fh%e8WR_y|R^Os}^-sqdMCGwWHeWU;;wcG3H(>4=3ZC^|1pE*M9VKqSap) l0RR91000000002c))$(A{6{J$Xc?84&BKvM@A;|;#zeAlrX!pK004jiA%qZu_AFlKQ+omr zIwF@}+7svrA$ado5WV-YQTCCIsk1z*Y)NNXVEqY*IVjsNBbYjP?`7xgP@VMzTpC?u ztgTDOC*VGL@d+4OPpqv!?%V`aZ{h5Pk>1a-bNJ;fy@bzWZ4qB|>J#ubNB{r; z0002MfAmiOVl=K2YNG#Qe*#YQRs4jV=qn-znplN2@gCMhsL%IMX+l=e>DF$Ra*}si zs@HAJM;^+umuICio7P8{=U#rg{x!-;cCuSuu9JZNn4@N@qgz!?@;hgh%<^!kTshTR zRXbNJrTYV}i!H1poj507*qoM6N<$f^B-y A&j0`b literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_tx_open_covenant/00006.png b/tests/standalone/snapshots/nanox/test_sign_tx_open_covenant/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..192361ea8d4e0d34573f74d0113b6e37da774202 GIT binary patch literal 338 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|^K=ba4!+nDh2_AYYRK&#{l0 zdpzIQFS&QLed4kmo(ERsKKx(Z2VtY@n|2l5V*JajRbWyQ*ZV-2d7kcffG@ z$-5%68^r%@-LP|}*yUaB{0}5Tx7Pe_?D#U}_scCaA~)J5{F;&P{ZHshT+=P9_}NpR zEUZ2{O~JT#N5H#fuY{g-$6oZ602&Pf>(u`5FJErhIqS>+98rsx?GZ`pe;v*^s)Q}{ zcyoAShZOVu;vM^wzP^09d)M7A^}>g@t!h($C+w-%Q}lbDs=T$#UmP9l;wYcApO=2>7&*C{3_wvOm78$?BXO53NGJ>#1I8`n`ft?(gAfM0=oSG000000000000Ce)+d+)WQ z81Stfz)H4KAG~J*V)mVLx{(YqHUVcljM40ixd{leIk203F*gA*#WCrovo9iF+5yZc zcOj$M7jr8h$kJ^$`?i^Tz#E!@7W(@w1$1z?@&}_;e~^m z--6EWY}GQIS8jU2o_#eDSha4}W|*^{0QOu-2ibttpD%Z2@;Bi(dFo#g<#YW*9RUCU g00000008Xn7n^AyatI|jEdT%j07*qoM6N<$f?M^(F8}}l literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_tx_open_covenant/00008.png b/tests/standalone/snapshots/nanox/test_sign_tx_open_covenant/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..5f594e086006ce847d5f824f5cc0853eeeb4c01c GIT binary patch literal 537 zcmV+!0_OdRP)Q@-BUF>M;JrwJMAIeNVf_AVMGsOq>G%00000FhdAITZILDX)7>^ zw7&OVQIiiPI^cpJ_|{fnhL-g&@P`3H2&Dt6gC?+d4|p`Oty_Yz6x6c5_deR)mi3); zKiUesOf+%k33HhzVJQV&mV6?{QcyCn|HIj|d%{u#IOjqL(%ig`DP#1}Q(`OyNiMMd z4d4I(0001hAru~+Q^O?t{ZCP^9-W)HgS52aH(}Fw@1qZt`vKKzTCBLGLvnoNbU9u& z56YTdJX&34Yk@EB@n{5;Q7@~?S&ui{d}gLnNH#LEO6zZH@>=2^k48Y%&?6`Ir*(WY zxJstjfqO%`!ZcHmG~C>tWu_{FW_p#~tp%y7jhk@CB4z%Wko*`!Ymp0SIv{O+@JP%6AsU4Ip9z+t}L>*IsxUN6q21=Em@aK46f*k zie9V0XP9cqw?EjQR-MqFJgCE&m{5p-RRSNcO%q?yoa+ZH>@g)#eIJxZ5A?ZS#YR7% zitNTL7ke!GpNoJ_F7EWx`=a`dn#Z>OCKuYEy7M}2A00000RQa%0V1tyByo@nc z5_wBSqc`wrt-wvPiDQh8Y~97H1Hx-Uj3$8>Tsoi(|E}B@{v434Tn+ymi&9D+ec*&i8Cv)>6%@|vx1^zc3JP7byxkaLU14#-NBe2%n8Ti_i% zEVHEDvhZ&7Q}9aBQ?(-2EtqWe_MT}b&9$X`S@eG>(qguy`P3Mbe=w(dX=AO%{0ssI20000008ID><%o*8 TqUL7b00000NkvXXu0mjfefaT4 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_tx_refused/00001.png b/tests/standalone/snapshots/nanox/test_sign_tx_refused/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4dba295f5fa9b752f6d80c026ce473fc9ecada GIT binary patch literal 660 zcmV;F0&D$=P)G%5` zRy3)@Ek&1jk0~ZS`9Waz;P>k{G-OoL+sbm`b63HMWE*n8FC}sl>KREXrP4{3lsI6l z3>pEaNROR{3rRnlQA{ai5iQY=84XaSU%PPS-Zog$06Vdy0s6USuH1VX7-WFtQqz)y zJXnm8yL+-e5xs#WqrGl{&G1H%&AE4_*p($+&`!Vr00000cqWzi0c4w_+!j2xEiPfm ztwb!_pW`0ijgpJn5+e2Y0o;rvMKo_-TDu%%CYEImE&r7nOqVJT~~ykeo~U% zZq?P5KIjxF@w8gpDk2HGD(UCYiMY~V>~+{itk-$2fQer|GmrzDDM+A@kZ; zq&5>71Rj#)h=kvEEXqVyNL+?8V znr~(sEVB$H+aK{5UEZHkyYt^r?&&j|WPuTIDyk($X=Yx|FJJ)scXlq3XYdcvy;Osj u+;L6I{r|AZ5gvf-7?K14000007x)7QaQ9Uz-@^w000000TeV<=jRz6G$&g?`H004j|`f~SN*H!R!Hm-O`0G=w8`4r;BXi+yR%QHKpy6wO{R6Y{|Z|`*Mq&{-D2-{r^El*1fXG79$dHs_$X4 zzPM)}dALoHfR6OTDS9nUrbs|+u@x2LK-D6^BHxYJuYHZII@JEu3& zaneYiwAPzVaRfaX2><{90001ZB7UA6rVwhPKiDqdL_fq|*ol51auA7AC=$=%NQ4^4 zY{A4)35C6^-Y)w(8Wh+d9);Dm=qroWM{~yge^y1<0_j=`N{r63A-{1~&C7`d5coNKY1ljk5vNwdTvab-ihXMcq00000 e00000;G$pAvpaJ{a)J2(0000Xc?84&BKvM@A;|;#zeAlrX!pK004jiA%qZu_AFlKQ+omr zIwF@}+7svrA$ado5WV-YQTCCIsk1z*Y)NNXVEqY*IVjsNBbYjP?`7xgP@VMzTpC?u ztgTDOC*VGL@d+4OPpqv!?%V`aZ{h5Pk>1a-bNJ;fy@bzWZ4qB|>J#ubNB{r; z0002MfAmiOVl=K2YNG#Qe*#YQRs4jV=qn-znplN2@gCMhsL%IMX+l=e>DF$Ra*}si zs@HAJM;^+umuICio7P8{=U#rg{x!-;cCuSuu9JZNn4@N@qgz!?@;hgh%<^!kTshTR zRXbNJrTYV}i!H1poj507*qoM6N<$f^B-y A&j0`b literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_tx_refused/00004.png b/tests/standalone/snapshots/nanox/test_sign_tx_refused/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..c61de7b90d3bb65750e442ea50cca745ddf5f90c GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|Wh_zk%=YZ)0B?p#!^VvJt7YQM%IR8UAfnE%P9V} z*QX16lcFa`y2WUe2bXexI=b$KA`j3(AW%N}|MlIcC0u-esYkQ;{Zh2sIJr)tN}w}V zL+E*d%A#X)=! z!s_6#t2vvCwn`h!IkR>BzDM7fUsv9mkj-u7IPb-7ZSw_3JSWt0ZxZ-lT~y1j^{*OY bKbQ=-DgDoEg=3_QHkj+_>gTe~DWM4fi{X&6 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_tx_refused/00005.png b/tests/standalone/snapshots/nanox/test_sign_tx_refused/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..c1d53a3b0b9248751f3cef7dc56adc4873b50864 GIT binary patch literal 438 zcmV;n0ZIOeP)3_wvOm78$?BXO53NGJ>#1I8`n`ft?(gAfM0=oSG000000000000Ce)+d+)WQ z81Stfz)H4KAG~J*V)mVLx{(YqHUVcljM40ixd{leIk203F*gA*#WCrovo9iF+5yZc zcOj$M7jr8h$kJ^$`?i^Tz#E!@7W(@w1$1z?@&}_;e~^m z--6EWY}GQIS8jU2o_#eDSha4}W|*^{0QOu-2ibttpD%Z2@;Bi(dFo#g<#YW*9RUCU g00000008Xn7n^AyatI|jEdT%j07*qoM6N<$f?M^(F8}}l literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_tx_refused/00006.png b/tests/standalone/snapshots/nanox/test_sign_tx_refused/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..09a1af101c5773a5140650e5f8ce3caf554d7fae GIT binary patch literal 470 zcmV;{0V)28P)>;NV+V3QIv00000000000N^FY7-Ky5 z?q~Ym-GMW@QI-pRB9?#ib! zn{EOgLp1^3Ls*Vv0?MbZw=Pnlmw-5k6UAk_8lnn!mbWF{5;2O|1A z5&iwh!G7dmKXL%z&&}=!lsBluuRN)+_BSKPwvU$gyKma~_L|+k&wh6Yey%ssPL67r zbZ5_CW8K?y3?alA)8Bm9ZMl4_?9%wmOvk()j;}s&H34OZ4r7`|Q~NQ@nc9Prxj;Ud zTF!@6daCkX-N}wsZ%tmkYb^oe5$ct%3S6Jjr~mgk9xh9*b*rCvHmoI}&2~P2STVnT z*DdvM@>L!1enqkO8FOhrU@7kNwQf>wpLqqATDwv`TTVbVYRa2?cPMoWv?t3mUiCrC zhuyBOHFLRf$Er|#)|z`VC@{G#$>(|VFXQIdzW@LL000000095RFRC+k$On9+FaQ7m M07*qoM6N<$g2|K6`v3p{ literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_tx_refused/00007.png b/tests/standalone/snapshots/nanox/test_sign_tx_refused/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..5f594e086006ce847d5f824f5cc0853eeeb4c01c GIT binary patch literal 537 zcmV+!0_OdRP)Q@-BUF>M;JrwJMAIeNVf_AVMGsOq>G%00000FhdAITZILDX)7>^ zw7&OVQIiiPI^cpJ_|{fnhL-g&@P`3H2&Dt6gC?+d4|p`Oty_Yz6x6c5_deR)mi3); zKiUesOf+%k33HhzVJQV&mV6?{QcyCn|HIj|d%{u#IOjqL(%ig`DP#1}Q(`OyNiMMd z4d4I(0001hAru~+Q^O?t{ZCP^9-W)HgS52aH(}Fw@1qZt`vKKzTCBLGLvnoNbU9u& z56YTdJX&34Yk@EB@n{5;Q7@~?S&ui{d}gLnNH#LEO6zZH@>=2^k48Y%&?6`Ir*(WY zxJstjfqO%`!ZcHmG~C>tWu_{FW_p#~tp%y7jhk@CB4z%Wko*`!Ymp0SIv{O+@JP%6AsU4Ip9z+t}L>*IsxUN6q21=Em@aK46f*k zie9V0XP9cqw?EjQR-MqFJgCE&m{5p-RRSNcO%q?yoa+ZH>@g)#eIJxZ5A?ZS#YR7% zitNTL7ke!GpNoJ_F7EWx`=a`dn#Z>OCKuYEy7M}2A00000RQa%0V1tyByo@nc z5_wBSqc`wrt-wvPiDQh8Y~97H1Hx-Uj3$8>Tsoi(|E}B@{v434Tn+ymi&9D+ec*&i8Cv)>6%@|vx1^zc3JP7byxkaLU14#-NBe2%n8Ti_i% zEVHEDvhZ&7Q}9aBQ?(-2EtqWe_MT}b&9$X`S@eG>(qguy`P3Mbe=w(dX=AO%{0ssI20000008ID><%o*8 TqUL7b00000NkvXXu0mjfefaT4 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_tx_transfer_covenant/00001.png b/tests/standalone/snapshots/nanox/test_sign_tx_transfer_covenant/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..1ac92dab21f46ac7310725772592fd9044474257 GIT binary patch literal 580 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 A&j0`b literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_tx_transfer_covenant/00008.png b/tests/standalone/snapshots/nanox/test_sign_tx_transfer_covenant/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..bafaedbc648282a65dfaa63508734fb66e8a7c69 GIT binary patch literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U| zblyH`>Vj3$g^TX2UZZ-VOw5x%5$GTg_+kFBes8p!de)`?8)F|VdH+b*`lWReuT5a9 zO(9>kQWnpO!WVD&-kG`o{r0!quSzx7WO2l8IqOdXzh3YPrtFn0_j5@)c9*N%yyR8g z^PE$wPQ~u@zO~CRwCRnrwa%4i5t~`&c5Gt~i)#>3cU)tgTe~DWM4f+VP07 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_tx_transfer_covenant/00009.png b/tests/standalone/snapshots/nanox/test_sign_tx_transfer_covenant/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..c1d53a3b0b9248751f3cef7dc56adc4873b50864 GIT binary patch literal 438 zcmV;n0ZIOeP)3_wvOm78$?BXO53NGJ>#1I8`n`ft?(gAfM0=oSG000000000000Ce)+d+)WQ z81Stfz)H4KAG~J*V)mVLx{(YqHUVcljM40ixd{leIk203F*gA*#WCrovo9iF+5yZc zcOj$M7jr8h$kJ^$`?i^Tz#E!@7W(@w1$1z?@&}_;e~^m z--6EWY}GQIS8jU2o_#eDSha4}W|*^{0QOu-2ibttpD%Z2@;Bi(dFo#g<#YW*9RUCU g00000008Xn7n^AyatI|jEdT%j07*qoM6N<$f?M^(F8}}l literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/nanox/test_sign_tx_transfer_covenant/00010.png b/tests/standalone/snapshots/nanox/test_sign_tx_transfer_covenant/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..5f594e086006ce847d5f824f5cc0853eeeb4c01c GIT binary patch literal 537 zcmV+!0_OdRP)Q@-BUF>M;JrwJMAIeNVf_AVMGsOq>G%00000FhdAITZILDX)7>^ zw7&OVQIiiPI^cpJ_|{fnhL-g&@P`3H2&Dt6gC?+d4|p`Oty_Yz6x6c5_deR)mi3); zKiUesOf+%k33HhzVJQV&mV6?{QcyCn|HIj|d%{u#IOjqL(%ig`DP#1}Q(`OyNiMMd z4d4I(0001hAru~+Q^O?t{ZCP^9-W)HgS52aH(}Fw@1qZt`vKKzTCBLGLvnoNbU9u& z56YTdJX&34Yk@EB@n{5;Q7@~?S&ui{d}gLnNH#LEO6zZH@>=2^k48Y%&?6`Ir*(WY zxJstjfqO%`!ZcHmG~C>tWu_{FW_p#~tp%y7jhk@CB4z%Wko*`!Ymp0SIv{O+@JP%6AsU4Ip9z+t}L>*IsxUN6q21=Em@aK46f*k zie9V0XP9cqw?EjQR-MqFJgCE&m{5p-RRSNcO%q?yoa+ZH>@g)#eIJxZ5A?ZS#YR7% zitNTL7ke!GpNoJ_F7EWx`=a`dn#Z>OCKuYEy7MtcqPkk29TmYMX8O?fDt&88j!<-YwM<4==K2;Moj*@Gdjd-xU}iZjxc~JvUd|@r2J}LwkX1*zI{hf^`Xm zeM0HE95nrGY-^I%bbvG)@KvhJNb=|NLExCjYD4ax7?Z3Gz6_l7SbJ>~y$_I|5ShTv z$6DUJCt}flmTX@44`rh<5iZ;JDj)R!J^5JY_6yIDOg;RTv26-Wd*?bjItGsj8@s$& zF6&Z<<(`(qlNt&9PNa-F~ zK*(-$^X=7(pt$4j+}hMb+Sq$5;BXPmGHf{c$e^oP|B1cPtd)mxi%PY7m(u^empIaC z&RHrK8X={-=sS!`alI)Q|7a`43V-%_RkZ-){9i6L2hnI&!r!w*{bTN2rbZpCVRne& zZ*@ErvFNvHK>qD!q3tQ$z)nz-qh*IkE~?`>Yju+9ccBSW*U1 z?U}JlN@{O50mx6JserXI`YV-QN|_T43m@NwM+Cx-xAYWb6I?ej!W3`8ROCtpNvq8P5 z%;|*3L=$_F*>qj{PobL)XRV&fViT%DlCA-|yQbibvAt+rkTkTLaQuIw%AtYyCqv7C z36ypwaG$nYTQ%-K%720_IJQQBvY(t-&8*rRL16dVz}T;xzqBu0 z$r_!)8-+SuW#B1U#=a&tx$y94IXd02V|(buz@u{swt0<#=W{L|Z=`7oia~d+0&B#g zyO;wZXwRP@QQ|7{)@h`D15v0!ZlcV|sjL=!9$sU5pvb`En(NU1`}c3ygSWD=@ysB$ zE!gT97Y{p_8Kl-|Z~2Fu&y&kZgE1FsY7$M{8QJbS&PSI9L0-dR%iVLe zKt77p<)vqhjQe1mc0Cl3!fdeRRyd!pTIvhw4^D4zh)AvcmF@*xC?F3eRf{hPeH$gd z%lJMlR+Jg^A@sIL%zVm1s)Yd zbnH=>lf$1Qr%s-+3PnGtBX&l@4YUV=gE?GZVZFC~s{3ozi6iIsj@QSd6+o3qjlsue zmMyzA&%z7>J*{R7Wv6FFYS}o^)3bWcZ6D?BT+cLJ~>OV?J_ z;x^y|VrTF=j!sSwkTt^etOgfTYOcXAf4Zh8T^Y^)FUQb-?$+&*#u)c}A=U#&cTGO5 zeL@Dc*eyPZxv&}eg!tCGDIau=Ifn7ncm?8`b>Rlp*h+{e_-5e`E8Q%JtEOf_v&1R6 zpW9)Pw|^34L>mYjZqftq0t9=LGO8Q|d$D#xSv{9U|6|JV5qujmP}gQBZEoJL*)8*O zp?O=Q@cvbtUUy@}LyeaUd-Gm(bs$V###pRVj#&R@cnlOyf_e{}XNY#+{1MV(x22Yy zIbi3+rvW0NXGS)HQ9>!Y`$yIE1n(v_>=LnLgPJ}bd$rl184lSv>uQb9ysi(EFI5U5 zEb7>MS|-3%AtXvmP*B|m8tOUtBR7Lq0ImS_yo#b@GHO0ti+WFzb^?zF%Qn(Z>BBx$ zOC~S0R-;ZOyyvu%w2`T49p<{kcE^oJwI=LlaDyv;KjKHZEVuSoE-MbtJHz&uj&vyrAB;Sb!5JeseP2uKVfWQm%M|TJ^i9)VsF_B4&%R}8PrJBZy}Fi;PBsOhJN>~e zb~f1d=pipH&YTeo^XA-|r&JDDB;u&{oTfks3!xC4 z@JL-MyPd9<3$blfM1tO#suu#hpq)f==pH6WxmJ$K8xC0<9USENIh+nJlJD%1J7cwK z_##DkOCD+MPj)9X=#=YtDduZFp?xsg91M3W4o-@E(=_8cArxkC=i3muuI& ze?}6bzLY{y_#du-JnIp*=9%(kK!`v%R=hn;o|z==xYp~#?&g^w5I2QWMwZ+r2Vuiz z{^}AlG6aG1 zPYq9e<hSuTWvIt*4M*P>coJvr1!_QU#EBU)Ph7& zF*GZ6Fcs`QyoBw030Q8@Ziz~Z>g=>f8Z@|6)!MFcKDIw_wYK2a_Pi*rZ#u59%Q?O? zwtc`oo2oW?yxOV^T^g%fdOrxVR!-n9&__CIV5Nj zK0#@#)+{Z)61D8#5(?*K&>~w*t1bqk`ZcM$=J0QZYmp9$<`m5f_igxYg!R}rSxFBpx13~|+0z1;JrG!X|a0#=P6Oo6jR zvUBOa4qkF8{{l;N7r9s8Zc20DnG^-*$}#eXlvy5){M&ReTJ zj3S(~;t26Ec09fB9>=SngypCNFv$d+TL-n;>+mVk-l9-D2oBfkXWvS!VVA7jg?Fo< zPQ&Z&Tp?+4YWgrDySsN3B`2%C3HsyoJh*eH5?75jBgV+p+Ld8=Wd5je& zufp%%88;GW4lg~FFHSrbxsrJKS%C_XLUc0W)+WPjks5ict=_ZoS!NiGu=_0e)|bTf z$!RxTzFWvzlYhWKGH-D8C**GJBw&QI`yMaDl@|hy{`MquXK@jVkIJU>A^%jnqsh3(N=vtZ}5D zYkEs+$_tc+RO9x%p{q-wYYE7u&$&igjs5tk^VI&RQ z<=%8V=E94&WgyIuE0?wjU!0#{N_$bze#P$!PjFR{u1TPpFsAMUm&fR*p{-DOHVG4f`m$%_^-)Y{qHlEl{qrkR~>E zgTM~RaS&!PWn|uW!n^4(AQRFuy^cWKgT0eD?N@mk{F4 zFEa4zDsNB8n{cXTKkz=(_Top?+UrWKIEjzA$BIy=4dLVRQ9)i)ly*SAOEpvG=0R%0 zg`GxPoNVq~nLha>IPTrdQKtMKj9OpXp7JZyRy9DteM`pJHZX83a-z#`I9kYlPo;Ba z5&C{{2LfRi_NdO2otI_235JHg$sPRFrL*0?LcP~75)jp%xw33`!tM8c zJa_x%)n}NDzL_ba>YLlaL+lUL!J+rXU(XAKi{NlG_d&ZWI_GE_3rzybKI3o3*kWYZ z@(qKR8H2=3-LJmBUxbt-;lQ#%ZPmYZMiBezwl)HyIf#3ZJWgep39$*9gJu z%rW?QNhbKYlS(@@rDs2OsoicYg+0mF{=Ve!I~5YAp!8SRx(}nC98E86n@20u=-EU7 zIdFS>AKZD1>u5x%ywm|=ZvKRJz!GySxr=s!PsdQLCNy1F_7T|T=(FO``6?&J`Eh|N zr)JDj-Q?pg8F}NK_HP0_?iYSLsVnY>Moygi!57qs6&dwPE2zs>42}*M(DVfdH2QV5 zL97)w1oWum6?v~_YxDxXEVF~0>n9&K*^)GfOa5uL{?}LRXn^q&_<3qxDkm=$o^f5{ zgV&Mjxa34D?dcf4%$7*(Y8jSY|HkcpM!xmrpU)KkYYvnRsH12H z`xFwk$dY$)Mku8h{*(0vQ}ozv9l@xetM=tV9E(tC=e}j3GZEHR;rcqaGDFrK{nQTD zU~gjHO29;yqux}jr|Q&#r0Okk-;ylgnZ0m5yn>z?|pPyE=I?cpfz{*?Qk+==4TWEu=hB`h?1I8$AfcWIZdG| zZlh>(!qIM(+%RG(Lb#4854kFX3AC4U_8I0EnDuzIrToW__s7{o$n1{=mn@3#Ycc)7 z45O~woL18N)JZ{cWA?kqb?_ykB&sXuh|0r7l_%T0C`cdTtpJe4GUMIjjtyh0hW#(l z^jDQr$!}=ta|{+_a@(Nog5f+bVN*IOyA;#C@M(WQ{z$=q+*W+Q4rb7J_sLqa zX~n*{Npc&JN^5HjxuL?E9d2CJlhf!iSzVnC?|)ydzLbhywJs^xAC4WV6PW#=1N}Wd z7EmCc4azK!r|#2~`U*5}Hxo8~b@P{27=9qRKA{{EiLE31U*J|(Brqc@zeWrE<`7GU z3{}M#xKSw)#TdVAU1C>u6RBwx++Ab_cenB3&M_Gi$+FN0yvLe?dX8y5Fh5j)n#e|k zTW5_->e@g3hC8u3k622F#CQLI-gsM3&9#G`IPHK^!?CsC#QQTz(E3Z&8IyJhKBi?t+bjU@FowdR!CiThMibx4g z*lx{lp%f1;FIi``1a70+8=w2U0Or~y$mbgo-`z1c?_Ky>4r0)nlV{;@2r^dvvAetL zTA%AXG*N$Fe}u)*^`z2)`;xV>vHOzE-pb{Xr{1U8aU5ma6ud3bpJ`yl&>5c4KxN3K zB@V^*vAF+$ViXDkuqY@dVh^$LjOz4i>SXb6b*bigFwb@4Y?j^xv5d&i4LjYkDW+el z-Xx$sMB^(1d6zdxQmd_56j8Q2sE{Da;`tzW-?``&gPAGYFkl_8c61^9$FWV|O9oz{ z*$M+V$eP~>8>qAt1-23Ixxie>1C$I4p9?7JOy3Wqe0H1%>h62oOh1W{j(ZgO&U+3q zBpVLDT+qm*qmF8tiwm)CQ&X4Z4=Rv9NuJ#Sy}7%Nes$;-Y93jHK95TBj=-Cm?v9Viv7W;nF`hz>*IFF!Kz|qE>P>UZB33b zTtSAW%}e_<*&cantV6@)!H}g;xuEe`PosuNag#|LU6$hvn$D(S>mENzIL^ z)cKPI1DiEYd|MZhUmtbneTmD2jc{DcWjN4C$D8^q)dHYC@Yh>bZ$5*?KL&#OUPqR=elQ2V3 za|3Vbh`2E&^WUCrJJU<0niiOZpJTu;qh(8VxwYN%uIN9sk9cV8nruSxm!e8340~tu z#)jch_Aa^pamvw`Me?!-a{8k{P8)?ppOhtl3D9}BW?=La zDsNnC_$!EHO3no_)};7DpIA~J1>;BRgC{*o^JF5D?yI1NE2`ZyzC9V*ghDau^g8~3XlRtz0BfTQxV+8X(@c9*9R zMK{06sTrA;qCSi-P{*x{cD_S`||~S zt1FKce37?(v%g^K2BBW1e#(OHIzw?w$W>%NW9qbRl~7^+?x|=0TYeofV=5TL<*~;D z#m!vY;B)02kOv zFt){%Ng)se&-Z|=bNt@;gn(p~o~&NhrFIFiH{X@BE+j2jbp+AMe(g3f$Dn_yLapMW z!_Nf@3YCH|Gv1cw<}fjUb=;2m7H{JmrUFZLy2aIJyR;EZ zKD+3Ty)w=|{8f-4n!CJ02k*Sa)8hvswV2hDCk4})ldOETT}?({5ZLgjJrEY^ox_Yz zh|OJLLw{+o{OR!Rvfvnp0s9q_Mz;Iq!r<&pjS`Wph~;m39>I*uEmBLs?c#%b|eu)Nzn@_L`iVU6(YoUZ?Ad&z-f+Kk9Zw^7pY&YgQOKUWZ(Dk@72Fpec~@t>$wU%1 z`5uCRPUKIe;*Ky8vun45L?&^Op^h^G;bRAezn4ya<+Lgm8B!_28cpBLf|y>;6|~w- zc4M*S1u`>S&d3qyP4Og$=P0nWyD+}~XirJxXS!LdwQw)s`w`kZQ30!WcRMo&T+dZ* z`^42xL}Sk;pQ6sM=)&9@whkJY{2|K^%UTLn0ERvd8z+D;J=Cb|J=)uf1SBMYr;uOP}=H4 zI<)ftVlXRm*S`Ye~qhN`sUq)S=w4Po!k8lu%GBH>1+e*EOT=pM# z&>mvyfI)E5WqlZA@_>=v`HYpwdjz7Ws7MW4hy~b%gNz$VQkap5P}B?pv88sMnVzsq z0*QnIxi{ADuUZp#U(!!axU;j91kyCbU0_~(G8iA}pHPM6)!D9dM#%hVAkIwk{xuhe3;5 z`>)mm^q5An&NAUPv;}wxiW(MVN1NRCI`aR0T`XS`f$&I6cr(2c*m|d>wR(ud2B6mD zOW@~vYxlo=@R$@iRgbPtK-qj+ZT)f8BMaihH-(FLTF#gRsp!L6tJha9CyN`itpj^A zl+4^)HLJqqkejP@s>LS&xSbhZ;R6J1oL>JK`nV8+nwi2`nm0^7=E>#bKVwydE_km# z9=2oYucBxs*c*H@_n;o2Mppid$QAhP^h^ui0k3IIDZJhnWM z@P<2jn`MyYYRJ#l93Ng55Mj4iLKc%T0DeNY$}53+>cjRrL>RQPAZLBSVAFb#0q#L7 z?3}if#kh?Rzrqdqi#3~KPJ93jf?JVq>(^warzXGKpc0FQ0tFOqWPF#N_xaT|?FKY% zuoTSF#oevn#h={ayOpfd#Fxca;!GLv;y`hnHxfR4AD4~}4_s=7Z)|Ls7}APkGL6_e zPh>wYLO+mRQ&tvE0qBw&k%V>CgzG9zA*jL(EopomC|!eTC@<{>qP8GwoA8t$FP{3@ zr~DRx>??U0V){Tih&qhW$k%nVp_Z$$^q_vZL$_+(l@6k_xCi3Is zWw5(IuO!{D6sP|daGV_Y(oXu*E6Of`Oq7 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_app_mainmenu/00001.png b/tests/standalone/snapshots/stax/test_app_mainmenu/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..69d2e7583152cb1f27325b4e38d9e065f7fe7318 GIT binary patch literal 7387 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 X-Pyj?Wh?m8Qp4HN^(XQP|C|2-dKu|X literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_app_mainmenu/00002.png b/tests/standalone/snapshots/stax/test_app_mainmenu/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..8228ba49a71a20b036be0641fb3793dd7dff876d GIT binary patch literal 10331 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_get_public_key_confirm_accepted/00000.png b/tests/standalone/snapshots/stax/test_get_public_key_confirm_accepted/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..72a01eed3a7a7955ad14f4ab414eacc633219931 GIT binary patch literal 9766 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_get_public_key_confirm_accepted/00001.png b/tests/standalone/snapshots/stax/test_get_public_key_confirm_accepted/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..066528a1e01d8a2a917343bc0bbd2d226b74dc6b GIT binary patch literal 16508 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%0AthJ% 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_get_public_key_confirm_refused/00000.png b/tests/standalone/snapshots/stax/test_get_public_key_confirm_refused/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..72a01eed3a7a7955ad14f4ab414eacc633219931 GIT binary patch literal 9766 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_get_public_key_confirm_refused/00001.png b/tests/standalone/snapshots/stax/test_get_public_key_confirm_refused/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..066528a1e01d8a2a917343bc0bbd2d226b74dc6b GIT binary patch literal 16508 zcmeHvc{r4B{H{uAv9u_Xr9vq~wm}SiRT3IPma&V$jIHd3Au2)?Dby zkukQxd`nDdh%qLn;k4ZDu5N zP~spTAD@u%&FhwYe7m0W@$G)Ke>d=pj(IDVkMEyr#@7w*gy%7*moh7F(W>20&$M>w z@aymk?z+}_ScPB6;Mx%I#{q+@&kxHz+K!%bpTQQ~mF;i*!TP0YWNxT%SQ(qNyM0*W z+3fh92R+=FATd6^=Cd_?+7CN-|0}rr&;#}TAihth|DXEd7yV7pl|pg>qv!q)?zX86 zh_n{i6kd=e*H?3F&%LoHu^~;4bs!c54xev5ysPct98OPr z+Y(o;Nh2*Z?8x+{QNHB&n{dU7l5e zCgof!U>xn@o!|4bpmwW94*FGFxcg^dQ-fr;p+z3qD=1DO>7B|C_4^j0T;2?aH|-w= zk(N(QmrGk;|1%oartb~s!~DkS{06Rri{TLaK5;_}LRiPF2QVD@n*KTvX_$jfOh3Ip zspzev@_k7ME0enL0tUDJk)f&I_tM12C7H*s!C}js$P2GqtudtoQAAqyYPo93rTGYD zucHGhi`pk26x=uf@)PNg=~l_`sMt5U8lG`rfbxVo*?;O-WWo8gj50)sJ{)Gxx?D(x zVe-ig%7PsJCifGom9kJ$ewqcjBAp7uAdZIQ3H}pPyzXZF0y=BF{T!KfIXhU|xO*@P zO{7`(Dzs|U>PQMxH$@GP@W+B>5F!}(1+c7B^6C8pn+a~=+L8l@e*lBoju!zzPt>0| z7vtcxa#V=wFH81zXw$0wiSEdOE3wkV2<>G!GwePubmN~WoN6~#sPK4vQ?i%Zn0x1K zgY1-O{Oi%+nU`-L50on$M7Y|}hmo#_`G>io5b4t0*0e7AeKkIwkc{2%^?p`V%d~xf zF+DV^ve&eGlrBCybN^e{mwV6isF`aQ^S!6f?-`f>OEKExuVeh>3Q1f4v#I>`|GMEA5<3nibQ-p zVJ{U~;e4*Rp*7~3qFgF6H^J!~FfGpLPM7vDz=HY*yKk#q^>G_MV@=b+dJdT$BYJ0> zW8j`Hb|KFzIr!dw^~w+_U_kWevGT?v!-n!9LW5$7HFY4|c7Rl_Kf00oUg@36h<+d| z0wk+qJB$&#$WVM$?u zleHCNXN)ZF=tg}hO?3Fx9-}P@i~#t;XT*-eHUo9?gYRJq_@5SiZv#T3;UR<-skc%4 z@t!H?g>$QRH{bWKp6LM)UwBf&ZN7W^V)u5Q?tJr_Xkr@|z4+X_5q=GlSCqf`k$QUnSM7prS4|liS`3=ZsE5Qt zo$$61lAohHvb?mHLtDDP3lGP}!*n-OyQ8Syl_C`&$Nws%%_CQxa#o)D?r zykR`OHaffd(zCl!tjzc@|GXFb{>6tsqR}R5=^9X}%Z6~^fhr(jBe zwRk*-i+;t9{IuEGJnc`#yOqERSDY30$06D;qXlt`$Lu)V>B+FiX0ME%tZ=W1?i|>? z#9WgUPADUf>RXJ9#=DW6*Vnu3$Cg6!G8>zw6G9-;bFiUf<13sjlHm@PeGlgg+<|VD{c%MKpBVM)O5Y;do$&!ghmgI5>bI=E4F4nB`VWY*43D}q#->|>!_x1OvlrSLx44w*(TO{L}a;ec9 z3;f*@ZN@JdO`16+?OW>}{d0k;*jEICBU%eeu_ar5%oeUVU`o9e{pwo?nN_5qcIX1Z zWwT{6Mou{4VdKa*1e-w0gq|tC9n#c{u9~x1IGZk)IQzEE&%5AeIz;bJLd}Gq?7c79 zTbC9>U4x8$FcgosPhX5`9=KwBl;wNJFQ`u8Ag?IIr$Lcqd1#_7QRlufQmc3vZH}?d zua9;lcV)w|(=>Qkx`?x~SUtqh!uw>7{aZJ2leBe63(S7ActKo)G10&fL5xV)Fimb) zjI6JgJ+owzqao5Z@~x&q*v5nzE~mI80M=ol!yv}o1ilk9`rIiOI&wjS2afJ95ud;0 z;Ub zDNAfrn==ksPjIZ42X&0EHBWr?*<|sC*)A zu+m<@U}z1R8-i6x8rI01>o*TR%nv2urfYK8(|b(kSGduVz2%gJV4Xhv95b|K+TY&l zc`f8!-WN(IGN*$uflCd8`H(33#T)uneI|FK!8W0GP6w$j%ai>nW^~J|to^8kSDG=t z%`uf*_ldgGJ{^Lryf}8XG?hvn#nU-Fj7;Z7r&`CSMWX+SDxKK&=r(7E5A`E9r)XI| z%ywvtyPsc2q-zAO*ta0G`HE20#^%_l%fOZyv%Io7FWpC^>Vj#}8E@!qra`^_8+@*S zXVwYqX5>^st7WWqzL|~NjJToq@(kW)X-567E44a?ve3BUhwh*k`VVe&4&&<=6tzy( zKx5(2T^6D}_kFDimD!~vzr`l?7N^{e`bo`M(^%@Tzm#0fB(0~}4}Qe6uVp3L$*fOL z&r};`94xUEiQkCHCHWzp2|GV{Hv3u{1TeN~a(${4=Phqy7 zP>O|bjA^i?avbQt+i^Ztl>*(ft12Q+tX%ahT0=fA?I86)PAG3VmfCL26&R)92P7?D zmMxrmD58@Rj?!WDnOL?IE_s!Dy=v~(K#z6o;Qo;}F6y8Y7-`NzRVsom%r-R+?SjDj zr^oG}$CH#h&J3SgLw4EkCJ7c}T+%03Xa}px^c?n#-C9gJ?{B}M9z?9EoSNQ)ooo29 zayXW%ALG{8x}Lh+v1lH%-!O|Wr%bNn!&s$D-m*x#Fm-Tdp%@}e1hjr zB{efrz|TYavEJp<+LM81uQx!i1>Y@Ne#CSxYB%C4SX7WXCCuHkX!(^?7A+8Sn_gKE z5WN6$BMox}YjM?Yg0hbRc`uaH^bUt{a>t~!`$k#<>5 z?`cud)oFIz%L|80CVWao8fg6lW@AEk*OrOLb-HIg3}$<~0v zchfoDDiBHG)Lz*X_n-lWDVO%;-q3(fA(?3egJG7~_MD$(yW(eIqdjCxtIX%=x!d2z zPK$YMv^Koec}_gkbZaD1FKoTV*TtXNGXKxw>HXi<++Q@g_gUke85WZi#iVxo4)edsze@|IwdFkphwG z%0Sg+R1YGb73m-dz@5v74J~{%Px1OwduLBY;+kLp=%4O~!!&zL#N+F7)Bd!WJ%66%cr=JyF(|v~fTW=C zBgn&5V@oT44=U2S<#fHiKTo;Z28;iDl#x+V(TP|Dd;Np1JM3yXmlvHy(#`qQ8hjE; z(-$^n3 zR+(W~Yf^n11>K*%-w&ZF)Jy3$IRA#Z5v`+d6&AnvbF4fJ^$Q)EkWJr_mg+wD0gE|m zM-cF1%PN)niGWz3f{?Q|TOhq_1i|@KB>SCxJ*iVC!Xu z4W=j7yJD&7dzsWl&P6cwVDhJkujvXw3HUb0&&@MfxD7KEgp|3;ZlL29U`H>pt9Edm zTRff~P$})9ad^r`fxWsZHVLSn9qDk&TqSR^e4gK6Xztu^L{2~MEr8n_U$<^o#KNUr z2?Ezh`~kK|7lAitfb1v3Q1SV zMmNoW|C{^ z^gBuw2@Sv#q3_J=Xw3C@IUrJWbhJihRdUCPaXpXGgL95uPap4sAnlF~(TK@kWzh0T zMH>Rv1IkHfmz0M)L2ul6G4ltu-560i`2ZS&G?IVZ%|epYTB-ry$_x#>QYW8qVLL-! z*oW_dy~crE{}YD9?)}X$^hl<@yJZG^bGX~eA^s_2Cw#}hfX3_Bj<{Mhb5$W_whM15 zeGlpr(uy8Fdq{B6SL3C?OLq09c;+JIIlWkA} z;lC$C%kQ$WX)j)`CB3h1y^DL?uBd3&l45A_eP(>5MyUIC|LDv!_Tom&O87~4*{7;x zi>K?3??Oi}XK`{K*?)fHmkL4q(((7>Nl1^73GI2QXFd%29g*SQ)53(Zuc0jj2$oP` zJnW^&lW^f+m86y)5?Y|lPp_={Wq%?Ik6f^tS>a5E(RJIf5ubybf3`7qW>(cc+<58J z-QG_<_l06&#JrT=2a)kG^WAiqmCI`{ zJD}b0oI6;?dq}lbPP(dz*Jpl4aoS#>=O3#1(9r>0ju!B& z!0vY6aS5B8vV?u}T>+0*Pl2nHGllDSdhEZ>t`4o;F*>kNZhujDegNm^y-YDq2Ud0O zteajKaY2=|f~#oqo7D#DK_ZQbYU_^&({a_GX$}ixZ1%$? z7>(Tc83_zxe-){M>d!k<1<8H{HJBz2-7(x~vU?b{s^c1{zyvb zoJQ{u{V0NiI;ND19krQNJiB(slQo`$l@e3)Uo3KWL&3VNhfE)P^w=%TB-oP5d@g5f zB||?=qpz?3nNqjv-MG1DYYO)LG>v5sKPdrN0{vID2w~5?7mbhVz40eH5X7!=uGafP zxx|P(j*Atm{4L_iZ7!J&1bH>w8)EI{Gpd25w@mO=DAg|?g&vQcl!c|{O-|%6jFDoM zm8Z@Kc27Q2`M5!Z=>3T-#dm!BhRj0yv_B!)|G5_pVf2G?#F)XFkZ1>G6)g4)1Wp?l zFsQ0i0INW-Ux=#I`;N!~hOq!2(Hr>T>#yVF7kaDz@~plO@)HhGa+AA1ok&by;Zm8N zpL)3*1)GzXoLde;u`=;)Ok=*F1*MgZlHT%y)sHMk<>;Cl%^dnRCMzXNRrB32eo&ea zPaRhGTXgPL!=7hS6@z+{ir(1MRZ|PgWXNTg%trwh16`yfa1V!3?~)oDnR=(>P)w?c z=QLWjlqe>1iawk2! zvq$$9*x(0Ve*xyDgdTwGI!Y!#FS?2AOQ&i;yH(cFE;pj3g%f&bkM!1VQnofyElG%f zmwhHn1)(b&bQ9)!y_w57w6^5>6Y7$p(u!XUMZA~9I9Y4_ChM2!`I|c@`^9B8ThN_E zFUPB&0~=OCb+d0Ne|m#!CJLsGcKFc1PLmzbXOFW+?=*c5tCtxk2;l%$wjR7R{5_O7qUr&TtOmg#ptz_z3w0rm zwI10wvF$E-sSx?Av)NJElj;7Z?3XE8XC8-f2oIq=#~!ikzf##KCUIlq z&jxa)CO+3mYxJ4Upahg1i7p;~U9b_Q=Rdy7YaT;T|M>9i!k$2j^XTqcCL}|Ob8;R>p6J?G)_L2YG zumE!8fKC&fNSpR2E*|YxxkYK<{R1#Xr+cO}x+k_ha|+K~H>^7 zTY4z=^4G4+^6EW>$oTq4o>%+m7NYXTciA2Rnz_nZD?qWm@Ph-n1f?uzzw0yTysWZ)~ZjRW5eMpGX7PaWzFnoX+S+2nx@qHF(T!^5h-)OsPIlQ-68IRuDuQ zj1x|{#%WlC1k_J_l(~cFO8~7#+Zm^O({9W51pr1Opr7?S z9HP%V4V>+y&OZtiJX?PbWW}-UEdEim!~C&=zb2WXld%N)3eD*1?Y7-{n%7(r?H({s zXZtFELkM*Wso>AndV^RQC_?Sk_KWXSdr_pLvmV&=(p|V&(B>!l3e<`hVAZ2UW@%O0 z&QnvI_SNkcCqvM7IhPDA06qW+GBZ>$#@jyoh2HVrRm!I-PJCnTHAd;9D_5=vPk%l6 zOOC~FBiTDYZgKK-4xm?vB`n+SJ&08&Np!NE*(N4;%`WX(uR!jqf5`;7rON>&qdg^U zk<1K@oHcQ;SNEx(c*%aHZ!0VhEgy0mw_hExQEFUhLhD^5QoPK8r8_Ca)z2aSP z>KE)pfmMIv)!i}!)YxLa?bH89g=g_!O^*P14rIDyNaq-#ZF~wC06h7lPio9qVw%<$ z`uYL#-q-c;9swH+oZ7htSqW_7H>ja8qv$fBiSt)k5RvYCKR2-uG8#yZ1X0{4Hat#D;K8fuhgk3db`x7qef`d(llO-C+K;HD(Tw&y;6W1iMuP zTVc<&E7Re=<)p1o7O$Q(1t3=16#%}4j%Dot^fshZybt0eM#BePWn6VfMDUMj z4a3QYTn>;A5m>0GJ;8`5kghg3oM%=(?e8VsIn%*HJ2ej@`%H|lk)xbw4+CvJd*IrC z6We?SJo4wB?;~*NIX`L?eZaOao6H(Ig&BBjWIT^kVA#->s4lNZP8pG|MTJ_n5pSQ72{8Urz#?kMzinu*2i1SA+UZxjCmNKkQ}gX- z&Bia)$s?A2s^pvfmQ~KL7h&o=SMqKRcE4$l(IQGuY_)RL=ETbn5HM)THKoY=X|fRD z6Zm59Cf*+_!5@3_7$E%3|REhqg0KRDsNPkx)!sDO_M8>A~93wcrj(n%^R%K)f!)EgqP#G|yNpfm`xTI(*k zsW#wbmT1xi3?v?xLagib031F}pHjUnLSoucO%)X3`L84&g-jD*>V7*T zz@wicfn~{@*HM|gR9c-MU6RQC{?eeh8l-Yj`s%L#uDAOyMT50}?!r(L9%p@&a-Ub; zt0IN`kE`(UFNj&6y{y?$WuM+lDs4Eq=% z6=`)>$b_i{vDL0A+QFRDV@vFX_lO*O`WB#9ty7K zOr8h0STsbMN&Tjs;={N+7Fh1`ULXiBV(OskBoQ{+{ndrank_54n``dmU$HT!2{>~8 zXySA^<98|<=K;fv7vlDR7r)uF>dIRcn1DZA=d+eS#vg!o3y1V4XOZ9?bO&;p)2Bd& zJwfD)jgYD0US`LOcgVrSWpLH9Ow1N#+R_*IJ_IJ4+|&!`qL{U@(Hji=;KD(;zTh8A zPXLVi0$DL{zx+P=mv72m%yy$4-8*x$+kg9Ph+tKg{`UG!?+cCX)M4v8B;O%0AthJ% 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 Jd1xE?UjR|5cZL7} literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_sign_message_accepted/00002.png b/tests/standalone/snapshots/stax/test_sign_message_accepted/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..179e6a6dee4f3a9e67073c41bbf1b276c4611e40 GIT binary patch literal 8704 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_sign_message_accepted/00003.png b/tests/standalone/snapshots/stax/test_sign_message_accepted/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..8228ba49a71a20b036be0641fb3793dd7dff876d GIT binary patch literal 10331 zcmeHtc{tSV+qcAx2t~-6Qj{UtWlLpCxRKphVhGvSu@!|-ma%W6QkJodCF@uwl4USu z7+VZs218`BHH_!${@w3!JkR^b^Bm9n`#s0;zQ^(Y$9JynT(0wTo}cqd_|r)D^eO&R zbaZs5_4V$W($SqrrK6*N%}ft`xoO;1K}RQXQU9*igV2KY8FDUS03YY{8)ZSi#+f7P z$jnDCL?3r6{x$IDS^DR%MfI5ZVhAatcqPkk29TmYMX8O?fDt&88j!<-YwM<4==K2;Moj*@Gdjd-xU}iZjxc~JvUd|@r2J}LwkX1*zI{hf^`Xm zeM0HE95nrGY-^I%bbvG)@KvhJNb=|NLExCjYD4ax7?Z3Gz6_l7SbJ>~y$_I|5ShTv z$6DUJCt}flmTX@44`rh<5iZ;JDj)R!J^5JY_6yIDOg;RTv26-Wd*?bjItGsj8@s$& zF6&Z<<(`(qlNt&9PNa-F~ zK*(-$^X=7(pt$4j+}hMb+Sq$5;BXPmGHf{c$e^oP|B1cPtd)mxi%PY7m(u^empIaC z&RHrK8X={-=sS!`alI)Q|7a`43V-%_RkZ-){9i6L2hnI&!r!w*{bTN2rbZpCVRne& zZ*@ErvFNvHK>qD!q3tQ$z)nz-qh*IkE~?`>Yju+9ccBSW*U1 z?U}JlN@{O50mx6JserXI`YV-QN|_T43m@NwM+Cx-xAYWb6I?ej!W3`8ROCtpNvq8P5 z%;|*3L=$_F*>qj{PobL)XRV&fViT%DlCA-|yQbibvAt+rkTkTLaQuIw%AtYyCqv7C z36ypwaG$nYTQ%-K%720_IJQQBvY(t-&8*rRL16dVz}T;xzqBu0 z$r_!)8-+SuW#B1U#=a&tx$y94IXd02V|(buz@u{swt0<#=W{L|Z=`7oia~d+0&B#g zyO;wZXwRP@QQ|7{)@h`D15v0!ZlcV|sjL=!9$sU5pvb`En(NU1`}c3ygSWD=@ysB$ zE!gT97Y{p_8Kl-|Z~2Fu&y&kZgE1FsY7$M{8QJbS&PSI9L0-dR%iVLe zKt77p<)vqhjQe1mc0Cl3!fdeRRyd!pTIvhw4^D4zh)AvcmF@*xC?F3eRf{hPeH$gd z%lJMlR+Jg^A@sIL%zVm1s)Yd zbnH=>lf$1Qr%s-+3PnGtBX&l@4YUV=gE?GZVZFC~s{3ozi6iIsj@QSd6+o3qjlsue zmMyzA&%z7>J*{R7Wv6FFYS}o^)3bWcZ6D?BT+cLJ~>OV?J_ z;x^y|VrTF=j!sSwkTt^etOgfTYOcXAf4Zh8T^Y^)FUQb-?$+&*#u)c}A=U#&cTGO5 zeL@Dc*eyPZxv&}eg!tCGDIau=Ifn7ncm?8`b>Rlp*h+{e_-5e`E8Q%JtEOf_v&1R6 zpW9)Pw|^34L>mYjZqftq0t9=LGO8Q|d$D#xSv{9U|6|JV5qujmP}gQBZEoJL*)8*O zp?O=Q@cvbtUUy@}LyeaUd-Gm(bs$V###pRVj#&R@cnlOyf_e{}XNY#+{1MV(x22Yy zIbi3+rvW0NXGS)HQ9>!Y`$yIE1n(v_>=LnLgPJ}bd$rl184lSv>uQb9ysi(EFI5U5 zEb7>MS|-3%AtXvmP*B|m8tOUtBR7Lq0ImS_yo#b@GHO0ti+WFzb^?zF%Qn(Z>BBx$ zOC~S0R-;ZOyyvu%w2`T49p<{kcE^oJwI=LlaDyv;KjKHZEVuSoE-MbtJHz&uj&vyrAB;Sb!5JeseP2uKVfWQm%M|TJ^i9)VsF_B4&%R}8PrJBZy}Fi;PBsOhJN>~e zb~f1d=pipH&YTeo^XA-|r&JDDB;u&{oTfks3!xC4 z@JL-MyPd9<3$blfM1tO#suu#hpq)f==pH6WxmJ$K8xC0<9USENIh+nJlJD%1J7cwK z_##DkOCD+MPj)9X=#=YtDduZFp?xsg91M3W4o-@E(=_8cArxkC=i3muuI& ze?}6bzLY{y_#du-JnIp*=9%(kK!`v%R=hn;o|z==xYp~#?&g^w5I2QWMwZ+r2Vuiz z{^}AlG6aG1 zPYq9e<hSuTWvIt*4M*P>coJvr1!_QU#EBU)Ph7& zF*GZ6Fcs`QyoBw030Q8@Ziz~Z>g=>f8Z@|6)!MFcKDIw_wYK2a_Pi*rZ#u59%Q?O? zwtc`oo2oW?yxOV^T^g%fdOrxVR!-n9&__CIV5Nj zK0#@#)+{Z)61D8#5(?*K&>~w*t1bqk`ZcM$=J0QZYmp9$<`m5f_igxYg!R}rSxFBpx13~|+0z1;JrG!X|a0#=P6Oo6jR zvUBOa4qkF8{{l;N7r9s8Zc20DnG^-*$}#eXlvy5){M&ReTJ zj3S(~;t26Ec09fB9>=SngypCNFv$d+TL-n;>+mVk-l9-D2oBfkXWvS!VVA7jg?Fo< zPQ&Z&Tp?+4YWgrDySsN3B`2%C3HsyoJh*eH5?75jBgV+p+Ld8=Wd5je& zufp%%88;GW4lg~FFHSrbxsrJKS%C_XLUc0W)+WPjks5ict=_ZoS!NiGu=_0e)|bTf z$!RxTzFWvzlYhWKGH-D8C**GJBw&QI`yMaDl@|hy{`MquXK@jVkIJU>A^%jnqsh3(N=vtZ}5D zYkEs+$_tc+RO9x%p{q-wYYE7u&$&igjs5tk^VI&RQ z<=%8V=E94&WgyIuE0?wjU!0#{N_$bze#P$!PjFR{u1TPpFsAMUm&fR*p{-DOHVG4f`m$%_^-)Y{qHlEl{qrkR~>E zgTM~RaS&!PWn|uW!n^4(AQRFuy^cWKgT0eD?N@mk{F4 zFEa4zDsNB8n{cXTKkz=(_Top?+UrWKIEjzA$BIy=4dLVRQ9)i)ly*SAOEpvG=0R%0 zg`GxPoNVq~nLha>IPTrdQKtMKj9OpXp7JZyRy9DteM`pJHZX83a-z#`I9kYlPo;Ba z5&C{{2LfRi_NdO2otI_235JHg$sPRFrL*0?LcP~75)jp%xw33`!tM8c zJa_x%)n}NDzL_ba>YLlaL+lUL!J+rXU(XAKi{NlG_d&ZWI_GE_3rzybKI3o3*kWYZ z@(qKR8H2=3-LJmBUxbt-;lQ#%ZPmYZMiBezwl)HyIf#3ZJWgep39$*9gJu z%rW?QNhbKYlS(@@rDs2OsoicYg+0mF{=Ve!I~5YAp!8SRx(}nC98E86n@20u=-EU7 zIdFS>AKZD1>u5x%ywm|=ZvKRJz!GySxr=s!PsdQLCNy1F_7T|T=(FO``6?&J`Eh|N zr)JDj-Q?pg8F}NK_HP0_?iYSLsVnY>Moygi!57qs6&dwPE2zs>42}*M(DVfdH2QV5 zL97)w1oWum6?v~_YxDxXEVF~0>n9&K*^)GfOa5uL{?}LRXn^q&_<3qxDkm=$o^f5{ zgV&Mjxa34D?dcf4%$7*(Y8jSY|HkcpM!xmrpU)KkYYvnRsH12H z`xFwk$dY$)Mku8h{*(0vQ}ozv9l@xetM=tV9E(tC=e}j3GZEHR;rcqaGDFrK{nQTD zU~gjHO29;yqux}jr|Q&#r0Okk-;ylgnZ0m5yn>z?|pPyE=I?cpfz{*?Qk+==4TWEu=hB`h?1I8$AfcWIZdG| zZlh>(!qIM(+%RG(Lb#4854kFX3AC4U_8I0EnDuzIrToW__s7{o$n1{=mn@3#Ycc)7 z45O~woL18N)JZ{cWA?kqb?_ykB&sXuh|0r7l_%T0C`cdTtpJe4GUMIjjtyh0hW#(l z^jDQr$!}=ta|{+_a@(Nog5f+bVN*IOyA;#C@M(WQ{z$=q+*W+Q4rb7J_sLqa zX~n*{Npc&JN^5HjxuL?E9d2CJlhf!iSzVnC?|)ydzLbhywJs^xAC4WV6PW#=1N}Wd z7EmCc4azK!r|#2~`U*5}Hxo8~b@P{27=9qRKA{{EiLE31U*J|(Brqc@zeWrE<`7GU z3{}M#xKSw)#TdVAU1C>u6RBwx++Ab_cenB3&M_Gi$+FN0yvLe?dX8y5Fh5j)n#e|k zTW5_->e@g3hC8u3k622F#CQLI-gsM3&9#G`IPHK^!?CsC#QQTz(E3Z&8IyJhKBi?t+bjU@FowdR!CiThMibx4g z*lx{lp%f1;FIi``1a70+8=w2U0Or~y$mbgo-`z1c?_Ky>4r0)nlV{;@2r^dvvAetL zTA%AXG*N$Fe}u)*^`z2)`;xV>vHOzE-pb{Xr{1U8aU5ma6ud3bpJ`yl&>5c4KxN3K zB@V^*vAF+$ViXDkuqY@dVh^$LjOz4i>SXb6b*bigFwb@4Y?j^xv5d&i4LjYkDW+el z-Xx$sMB^(1d6zdxQmd_56j8Q2sE{Da;`tzW-?``&gPAGYFkl_8c61^9$FWV|O9oz{ z*$M+V$eP~>8>qAt1-23Ixxie>1C$I4p9?7JOy3Wqe0H1%>h62oOh1W{j(ZgO&U+3q zBpVLDT+qm*qmF8tiwm)CQ&X4Z4=Rv9NuJ#Sy}7%Nes$;-Y93jHK95TBj=-Cm?v9Viv7W;nF`hz>*IFF!Kz|qE>P>UZB33b zTtSAW%}e_<*&cantV6@)!H}g;xuEe`PosuNag#|LU6$hvn$D(S>mENzIL^ z)cKPI1DiEYd|MZhUmtbneTmD2jc{DcWjN4C$D8^q)dHYC@Yh>bZ$5*?KL&#OUPqR=elQ2V3 za|3Vbh`2E&^WUCrJJU<0niiOZpJTu;qh(8VxwYN%uIN9sk9cV8nruSxm!e8340~tu z#)jch_Aa^pamvw`Me?!-a{8k{P8)?ppOhtl3D9}BW?=La zDsNnC_$!EHO3no_)};7DpIA~J1>;BRgC{*o^JF5D?yI1NE2`ZyzC9V*ghDau^g8~3XlRtz0BfTQxV+8X(@c9*9R zMK{06sTrA;qCSi-P{*x{cD_S`||~S zt1FKce37?(v%g^K2BBW1e#(OHIzw?w$W>%NW9qbRl~7^+?x|=0TYeofV=5TL<*~;D z#m!vY;B)02kOv zFt){%Ng)se&-Z|=bNt@;gn(p~o~&NhrFIFiH{X@BE+j2jbp+AMe(g3f$Dn_yLapMW z!_Nf@3YCH|Gv1cw<}fjUb=;2m7H{JmrUFZLy2aIJyR;EZ zKD+3Ty)w=|{8f-4n!CJ02k*Sa)8hvswV2hDCk4})ldOETT}?({5ZLgjJrEY^ox_Yz zh|OJLLw{+o{OR!Rvfvnp0s9q_Mz;Iq!r<&pjS`Wph~;m39>I*uEmBLs?c#%b|eu)Nzn@_L`iVU6(YoUZ?Ad&z-f+Kk9Zw^7pY&YgQOKUWZ(Dk@72Fpec~@t>$wU%1 z`5uCRPUKIe;*Ky8vun45L?&^Op^h^G;bRAezn4ya<+Lgm8B!_28cpBLf|y>;6|~w- zc4M*S1u`>S&d3qyP4Og$=P0nWyD+}~XirJxXS!LdwQw)s`w`kZQ30!WcRMo&T+dZ* z`^42xL}Sk;pQ6sM=)&9@whkJY{2|K^%UTLn0ERvd8z+D;J=Cb|J=)uf1SBMYr;uOP}=H4 zI<)ftVlXRm*S`Ye~qhN`sUq)S=w4Po!k8lu%GBH>1+e*EOT=pM# z&>mvyfI)E5WqlZA@_>=v`HYpwdjz7Ws7MW4hy~b%gNz$VQkap5P}B?pv88sMnVzsq z0*QnIxi{ADuUZp#U(!!axU;j91kyCbU0_~(G8iA}pHPM6)!D9dM#%hVAkIwk{xuhe3;5 z`>)mm^q5An&NAUPv;}wxiW(MVN1NRCI`aR0T`XS`f$&I6cr(2c*m|d>wR(ud2B6mD zOW@~vYxlo=@R$@iRgbPtK-qj+ZT)f8BMaihH-(FLTF#gRsp!L6tJha9CyN`itpj^A zl+4^)HLJqqkejP@s>LS&xSbhZ;R6J1oL>JK`nV8+nwi2`nm0^7=E>#bKVwydE_km# z9=2oYucBxs*c*H@_n;o2Mppid$QAhP^h^ui0k3IIDZJhnWM z@P<2jn`MyYYRJ#l93Ng55Mj4iLKc%T0DeNY$}53+>cjRrL>RQPAZLBSVAFb#0q#L7 z?3}if#kh?Rzrqdqi#3~KPJ93jf?JVq>(^warzXGKpc0FQ0tFOqWPF#N_xaT|?FKY% zuoTSF#oevn#h={ayOpfd#Fxca;!GLv;y`hnHxfR4AD4~}4_s=7Z)|Ls7}APkGL6_e zPh>wYLO+mRQ&tvE0qBw&k%V>CgzG9zA*jL(EopomC|!eTC@<{>qP8GwoA8t$FP{3@ zr~DRx>??U0V){Tih&qhW$k%nVp_Z$$^q_vZL$_+(l@6k_xCi3Is zWw5(IuO!{D6sP|daGV_Y(oXu*E6Of`Oq7 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_sign_message_refused/00000.png b/tests/standalone/snapshots/stax/test_sign_message_refused/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..aae3b98e911128a3f68ff66c82cc316791c22ca2 GIT binary patch literal 8349 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 Jd1xE?UjR|5cZL7} literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_sign_message_refused/00002.png b/tests/standalone/snapshots/stax/test_sign_message_refused/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..179e6a6dee4f3a9e67073c41bbf1b276c4611e40 GIT binary patch literal 8704 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_sign_message_refused/00003.png b/tests/standalone/snapshots/stax/test_sign_message_refused/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..abc9677f73944caeade633a6929fff70cf6b8fbe GIT binary patch literal 9127 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 U=TBka8W5YI{=HkZHyvaD3vw{q^Z)<= literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_sign_tx_accepted/00001.png b/tests/standalone/snapshots/stax/test_sign_tx_accepted/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..20a8c71d82a6f87112443c57c76f7d0f191c51f3 GIT binary patch literal 18917 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_sign_tx_accepted/00003.png b/tests/standalone/snapshots/stax/test_sign_tx_accepted/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..b347aae079c15a74df41c1bf2d9b3793b307745f GIT binary patch literal 8907 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 CIsV50 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_sign_tx_accepted/00004.png b/tests/standalone/snapshots/stax/test_sign_tx_accepted/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..8228ba49a71a20b036be0641fb3793dd7dff876d GIT binary patch literal 10331 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_sign_tx_open_covenant/00000.png b/tests/standalone/snapshots/stax/test_sign_tx_open_covenant/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..5df04152272fc629d30afcfb690cf7997ebf0ff5 GIT binary patch literal 9261 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 U=TBka8W5YI{=HkZHyvaD3vw{q^Z)<= literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_sign_tx_open_covenant/00001.png b/tests/standalone/snapshots/stax/test_sign_tx_open_covenant/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..04945b55d129e5e3876acc993132321a712e3812 GIT binary patch literal 18608 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 Y@I&BL5rqrzTR|X2IklG+GG;;lA00CC3jhEB literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_sign_tx_open_covenant/00002.png b/tests/standalone/snapshots/stax/test_sign_tx_open_covenant/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..c99604681520a7c82edeff5748f42934e282fc0a GIT binary patch literal 5783 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 Gv;PAn09)Pw literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_sign_tx_open_covenant/00003.png b/tests/standalone/snapshots/stax/test_sign_tx_open_covenant/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..b347aae079c15a74df41c1bf2d9b3793b307745f GIT binary patch literal 8907 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 CIsV50 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_sign_tx_open_covenant/00004.png b/tests/standalone/snapshots/stax/test_sign_tx_open_covenant/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..8228ba49a71a20b036be0641fb3793dd7dff876d GIT binary patch literal 10331 zcmeHtc{tSV+qcAx2t~-6Qj{UtWlLpCxRKphVhGvSu@!|-ma%W6QkJodCF@uwl4USu z7+VZs218`BHH_!${@w3!JkR^b^Bm9n`#s0;zQ^(Y$9JynT(0wTo}cqd_|r)D^eO&R zbaZs5_4V$W($SqrrK6*N%}ft`xoO;1K}RQXQU9*igV2KY8FDUS03YY{8)ZSi#+f7P z$jnDCL?3r6{x$IDS^DR%MfI5ZVhAatcqPkk29TmYMX8O?fDt&88j!<-YwM<4==K2;Moj*@Gdjd-xU}iZjxc~JvUd|@r2J}LwkX1*zI{hf^`Xm zeM0HE95nrGY-^I%bbvG)@KvhJNb=|NLExCjYD4ax7?Z3Gz6_l7SbJ>~y$_I|5ShTv z$6DUJCt}flmTX@44`rh<5iZ;JDj)R!J^5JY_6yIDOg;RTv26-Wd*?bjItGsj8@s$& zF6&Z<<(`(qlNt&9PNa-F~ zK*(-$^X=7(pt$4j+}hMb+Sq$5;BXPmGHf{c$e^oP|B1cPtd)mxi%PY7m(u^empIaC z&RHrK8X={-=sS!`alI)Q|7a`43V-%_RkZ-){9i6L2hnI&!r!w*{bTN2rbZpCVRne& zZ*@ErvFNvHK>qD!q3tQ$z)nz-qh*IkE~?`>Yju+9ccBSW*U1 z?U}JlN@{O50mx6JserXI`YV-QN|_T43m@NwM+Cx-xAYWb6I?ej!W3`8ROCtpNvq8P5 z%;|*3L=$_F*>qj{PobL)XRV&fViT%DlCA-|yQbibvAt+rkTkTLaQuIw%AtYyCqv7C z36ypwaG$nYTQ%-K%720_IJQQBvY(t-&8*rRL16dVz}T;xzqBu0 z$r_!)8-+SuW#B1U#=a&tx$y94IXd02V|(buz@u{swt0<#=W{L|Z=`7oia~d+0&B#g zyO;wZXwRP@QQ|7{)@h`D15v0!ZlcV|sjL=!9$sU5pvb`En(NU1`}c3ygSWD=@ysB$ zE!gT97Y{p_8Kl-|Z~2Fu&y&kZgE1FsY7$M{8QJbS&PSI9L0-dR%iVLe zKt77p<)vqhjQe1mc0Cl3!fdeRRyd!pTIvhw4^D4zh)AvcmF@*xC?F3eRf{hPeH$gd z%lJMlR+Jg^A@sIL%zVm1s)Yd zbnH=>lf$1Qr%s-+3PnGtBX&l@4YUV=gE?GZVZFC~s{3ozi6iIsj@QSd6+o3qjlsue zmMyzA&%z7>J*{R7Wv6FFYS}o^)3bWcZ6D?BT+cLJ~>OV?J_ z;x^y|VrTF=j!sSwkTt^etOgfTYOcXAf4Zh8T^Y^)FUQb-?$+&*#u)c}A=U#&cTGO5 zeL@Dc*eyPZxv&}eg!tCGDIau=Ifn7ncm?8`b>Rlp*h+{e_-5e`E8Q%JtEOf_v&1R6 zpW9)Pw|^34L>mYjZqftq0t9=LGO8Q|d$D#xSv{9U|6|JV5qujmP}gQBZEoJL*)8*O zp?O=Q@cvbtUUy@}LyeaUd-Gm(bs$V###pRVj#&R@cnlOyf_e{}XNY#+{1MV(x22Yy zIbi3+rvW0NXGS)HQ9>!Y`$yIE1n(v_>=LnLgPJ}bd$rl184lSv>uQb9ysi(EFI5U5 zEb7>MS|-3%AtXvmP*B|m8tOUtBR7Lq0ImS_yo#b@GHO0ti+WFzb^?zF%Qn(Z>BBx$ zOC~S0R-;ZOyyvu%w2`T49p<{kcE^oJwI=LlaDyv;KjKHZEVuSoE-MbtJHz&uj&vyrAB;Sb!5JeseP2uKVfWQm%M|TJ^i9)VsF_B4&%R}8PrJBZy}Fi;PBsOhJN>~e zb~f1d=pipH&YTeo^XA-|r&JDDB;u&{oTfks3!xC4 z@JL-MyPd9<3$blfM1tO#suu#hpq)f==pH6WxmJ$K8xC0<9USENIh+nJlJD%1J7cwK z_##DkOCD+MPj)9X=#=YtDduZFp?xsg91M3W4o-@E(=_8cArxkC=i3muuI& ze?}6bzLY{y_#du-JnIp*=9%(kK!`v%R=hn;o|z==xYp~#?&g^w5I2QWMwZ+r2Vuiz z{^}AlG6aG1 zPYq9e<hSuTWvIt*4M*P>coJvr1!_QU#EBU)Ph7& zF*GZ6Fcs`QyoBw030Q8@Ziz~Z>g=>f8Z@|6)!MFcKDIw_wYK2a_Pi*rZ#u59%Q?O? zwtc`oo2oW?yxOV^T^g%fdOrxVR!-n9&__CIV5Nj zK0#@#)+{Z)61D8#5(?*K&>~w*t1bqk`ZcM$=J0QZYmp9$<`m5f_igxYg!R}rSxFBpx13~|+0z1;JrG!X|a0#=P6Oo6jR zvUBOa4qkF8{{l;N7r9s8Zc20DnG^-*$}#eXlvy5){M&ReTJ zj3S(~;t26Ec09fB9>=SngypCNFv$d+TL-n;>+mVk-l9-D2oBfkXWvS!VVA7jg?Fo< zPQ&Z&Tp?+4YWgrDySsN3B`2%C3HsyoJh*eH5?75jBgV+p+Ld8=Wd5je& zufp%%88;GW4lg~FFHSrbxsrJKS%C_XLUc0W)+WPjks5ict=_ZoS!NiGu=_0e)|bTf z$!RxTzFWvzlYhWKGH-D8C**GJBw&QI`yMaDl@|hy{`MquXK@jVkIJU>A^%jnqsh3(N=vtZ}5D zYkEs+$_tc+RO9x%p{q-wYYE7u&$&igjs5tk^VI&RQ z<=%8V=E94&WgyIuE0?wjU!0#{N_$bze#P$!PjFR{u1TPpFsAMUm&fR*p{-DOHVG4f`m$%_^-)Y{qHlEl{qrkR~>E zgTM~RaS&!PWn|uW!n^4(AQRFuy^cWKgT0eD?N@mk{F4 zFEa4zDsNB8n{cXTKkz=(_Top?+UrWKIEjzA$BIy=4dLVRQ9)i)ly*SAOEpvG=0R%0 zg`GxPoNVq~nLha>IPTrdQKtMKj9OpXp7JZyRy9DteM`pJHZX83a-z#`I9kYlPo;Ba z5&C{{2LfRi_NdO2otI_235JHg$sPRFrL*0?LcP~75)jp%xw33`!tM8c zJa_x%)n}NDzL_ba>YLlaL+lUL!J+rXU(XAKi{NlG_d&ZWI_GE_3rzybKI3o3*kWYZ z@(qKR8H2=3-LJmBUxbt-;lQ#%ZPmYZMiBezwl)HyIf#3ZJWgep39$*9gJu z%rW?QNhbKYlS(@@rDs2OsoicYg+0mF{=Ve!I~5YAp!8SRx(}nC98E86n@20u=-EU7 zIdFS>AKZD1>u5x%ywm|=ZvKRJz!GySxr=s!PsdQLCNy1F_7T|T=(FO``6?&J`Eh|N zr)JDj-Q?pg8F}NK_HP0_?iYSLsVnY>Moygi!57qs6&dwPE2zs>42}*M(DVfdH2QV5 zL97)w1oWum6?v~_YxDxXEVF~0>n9&K*^)GfOa5uL{?}LRXn^q&_<3qxDkm=$o^f5{ zgV&Mjxa34D?dcf4%$7*(Y8jSY|HkcpM!xmrpU)KkYYvnRsH12H z`xFwk$dY$)Mku8h{*(0vQ}ozv9l@xetM=tV9E(tC=e}j3GZEHR;rcqaGDFrK{nQTD zU~gjHO29;yqux}jr|Q&#r0Okk-;ylgnZ0m5yn>z?|pPyE=I?cpfz{*?Qk+==4TWEu=hB`h?1I8$AfcWIZdG| zZlh>(!qIM(+%RG(Lb#4854kFX3AC4U_8I0EnDuzIrToW__s7{o$n1{=mn@3#Ycc)7 z45O~woL18N)JZ{cWA?kqb?_ykB&sXuh|0r7l_%T0C`cdTtpJe4GUMIjjtyh0hW#(l z^jDQr$!}=ta|{+_a@(Nog5f+bVN*IOyA;#C@M(WQ{z$=q+*W+Q4rb7J_sLqa zX~n*{Npc&JN^5HjxuL?E9d2CJlhf!iSzVnC?|)ydzLbhywJs^xAC4WV6PW#=1N}Wd z7EmCc4azK!r|#2~`U*5}Hxo8~b@P{27=9qRKA{{EiLE31U*J|(Brqc@zeWrE<`7GU z3{}M#xKSw)#TdVAU1C>u6RBwx++Ab_cenB3&M_Gi$+FN0yvLe?dX8y5Fh5j)n#e|k zTW5_->e@g3hC8u3k622F#CQLI-gsM3&9#G`IPHK^!?CsC#QQTz(E3Z&8IyJhKBi?t+bjU@FowdR!CiThMibx4g z*lx{lp%f1;FIi``1a70+8=w2U0Or~y$mbgo-`z1c?_Ky>4r0)nlV{;@2r^dvvAetL zTA%AXG*N$Fe}u)*^`z2)`;xV>vHOzE-pb{Xr{1U8aU5ma6ud3bpJ`yl&>5c4KxN3K zB@V^*vAF+$ViXDkuqY@dVh^$LjOz4i>SXb6b*bigFwb@4Y?j^xv5d&i4LjYkDW+el z-Xx$sMB^(1d6zdxQmd_56j8Q2sE{Da;`tzW-?``&gPAGYFkl_8c61^9$FWV|O9oz{ z*$M+V$eP~>8>qAt1-23Ixxie>1C$I4p9?7JOy3Wqe0H1%>h62oOh1W{j(ZgO&U+3q zBpVLDT+qm*qmF8tiwm)CQ&X4Z4=Rv9NuJ#Sy}7%Nes$;-Y93jHK95TBj=-Cm?v9Viv7W;nF`hz>*IFF!Kz|qE>P>UZB33b zTtSAW%}e_<*&cantV6@)!H}g;xuEe`PosuNag#|LU6$hvn$D(S>mENzIL^ z)cKPI1DiEYd|MZhUmtbneTmD2jc{DcWjN4C$D8^q)dHYC@Yh>bZ$5*?KL&#OUPqR=elQ2V3 za|3Vbh`2E&^WUCrJJU<0niiOZpJTu;qh(8VxwYN%uIN9sk9cV8nruSxm!e8340~tu z#)jch_Aa^pamvw`Me?!-a{8k{P8)?ppOhtl3D9}BW?=La zDsNnC_$!EHO3no_)};7DpIA~J1>;BRgC{*o^JF5D?yI1NE2`ZyzC9V*ghDau^g8~3XlRtz0BfTQxV+8X(@c9*9R zMK{06sTrA;qCSi-P{*x{cD_S`||~S zt1FKce37?(v%g^K2BBW1e#(OHIzw?w$W>%NW9qbRl~7^+?x|=0TYeofV=5TL<*~;D z#m!vY;B)02kOv zFt){%Ng)se&-Z|=bNt@;gn(p~o~&NhrFIFiH{X@BE+j2jbp+AMe(g3f$Dn_yLapMW z!_Nf@3YCH|Gv1cw<}fjUb=;2m7H{JmrUFZLy2aIJyR;EZ zKD+3Ty)w=|{8f-4n!CJ02k*Sa)8hvswV2hDCk4})ldOETT}?({5ZLgjJrEY^ox_Yz zh|OJLLw{+o{OR!Rvfvnp0s9q_Mz;Iq!r<&pjS`Wph~;m39>I*uEmBLs?c#%b|eu)Nzn@_L`iVU6(YoUZ?Ad&z-f+Kk9Zw^7pY&YgQOKUWZ(Dk@72Fpec~@t>$wU%1 z`5uCRPUKIe;*Ky8vun45L?&^Op^h^G;bRAezn4ya<+Lgm8B!_28cpBLf|y>;6|~w- zc4M*S1u`>S&d3qyP4Og$=P0nWyD+}~XirJxXS!LdwQw)s`w`kZQ30!WcRMo&T+dZ* z`^42xL}Sk;pQ6sM=)&9@whkJY{2|K^%UTLn0ERvd8z+D;J=Cb|J=)uf1SBMYr;uOP}=H4 zI<)ftVlXRm*S`Ye~qhN`sUq)S=w4Po!k8lu%GBH>1+e*EOT=pM# z&>mvyfI)E5WqlZA@_>=v`HYpwdjz7Ws7MW4hy~b%gNz$VQkap5P}B?pv88sMnVzsq z0*QnIxi{ADuUZp#U(!!axU;j91kyCbU0_~(G8iA}pHPM6)!D9dM#%hVAkIwk{xuhe3;5 z`>)mm^q5An&NAUPv;}wxiW(MVN1NRCI`aR0T`XS`f$&I6cr(2c*m|d>wR(ud2B6mD zOW@~vYxlo=@R$@iRgbPtK-qj+ZT)f8BMaihH-(FLTF#gRsp!L6tJha9CyN`itpj^A zl+4^)HLJqqkejP@s>LS&xSbhZ;R6J1oL>JK`nV8+nwi2`nm0^7=E>#bKVwydE_km# z9=2oYucBxs*c*H@_n;o2Mppid$QAhP^h^ui0k3IIDZJhnWM z@P<2jn`MyYYRJ#l93Ng55Mj4iLKc%T0DeNY$}53+>cjRrL>RQPAZLBSVAFb#0q#L7 z?3}if#kh?Rzrqdqi#3~KPJ93jf?JVq>(^warzXGKpc0FQ0tFOqWPF#N_xaT|?FKY% zuoTSF#oevn#h={ayOpfd#Fxca;!GLv;y`hnHxfR4AD4~}4_s=7Z)|Ls7}APkGL6_e zPh>wYLO+mRQ&tvE0qBw&k%V>CgzG9zA*jL(EopomC|!eTC@<{>qP8GwoA8t$FP{3@ zr~DRx>??U0V){Tih&qhW$k%nVp_Z$$^q_vZL$_+(l@6k_xCi3Is zWw5(IuO!{D6sP|daGV_Y(oXu*E6Of`Oq7 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_sign_tx_refused/00000.png b/tests/standalone/snapshots/stax/test_sign_tx_refused/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..8ed700d7df7e6ebfea724069585e7d2ea8906737 GIT binary patch literal 9318 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 MHMY8ex$cqpUmxD+0ssI2 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_sign_tx_refused/00001.png b/tests/standalone/snapshots/stax/test_sign_tx_refused/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..e23edd3c3345960fe280f9ef994fa79afbfacdd0 GIT binary patch literal 16223 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_sign_tx_refused/00003.png b/tests/standalone/snapshots/stax/test_sign_tx_refused/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..abc9677f73944caeade633a6929fff70cf6b8fbe GIT binary patch literal 9127 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 Cgp9NR literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_sign_tx_transfer_covenant/00002.png b/tests/standalone/snapshots/stax/test_sign_tx_transfer_covenant/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..1850cfe4d00ef7ad6a4d2c9c012466df3da158df GIT binary patch literal 23136 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 ywzXs9n9=W5=r~+F$6al%f86-o;H7`4{_S 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 De%Jt) literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_sign_tx_transfer_covenant/00004.png b/tests/standalone/snapshots/stax/test_sign_tx_transfer_covenant/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..25db85eb0b57fee7f16be81c2b5e9d114bb8c67a GIT binary patch literal 8945 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/snapshots/stax/test_sign_tx_transfer_covenant/00005.png b/tests/standalone/snapshots/stax/test_sign_tx_transfer_covenant/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..8228ba49a71a20b036be0641fb3793dd7dff876d GIT binary patch literal 10331 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 literal 0 HcmV?d00001 diff --git a/tests/standalone/test_app_mainmenu.py b/tests/standalone/test_app_mainmenu.py new file mode 100644 index 0000000..d399f49 --- /dev/null +++ b/tests/standalone/test_app_mainmenu.py @@ -0,0 +1,19 @@ +from ragger.navigator import NavInsID + + +def test_app_mainmenu(device, navigator, test_name, default_screenshot_path): + """Home screen and the app-info page behind it. + + The app registers no settings switches, so Nano has three pages (ready, + app info, quit) and does not wrap, and touch devices have a single info + page with no sub-settings to page through. + """ + if device.is_nano: + instructions = [NavInsID.RIGHT_CLICK, NavInsID.RIGHT_CLICK] + else: + instructions = [ + NavInsID.USE_CASE_HOME_SETTINGS, + NavInsID.USE_CASE_SUB_SETTINGS_EXIT, + ] + navigator.navigate_and_compare(default_screenshot_path, test_name, instructions, + screen_change_before_first_instruction=False) diff --git a/tests/standalone/test_appname_cmd.py b/tests/standalone/test_appname_cmd.py new file mode 100644 index 0000000..b1d40f4 --- /dev/null +++ b/tests/standalone/test_appname_cmd.py @@ -0,0 +1,10 @@ +from application_client.handshake_command_sender import HandshakeCommandSender +from application_client.handshake_response_unpacker import unpack_get_app_name_response + + +def test_app_name(backend): + """The wallet's preflight compares this to the exact string "Handshake", + so it is part of the wire contract, not a cosmetic label.""" + client = HandshakeCommandSender(backend) + rapdu = client.get_app_name() + assert unpack_get_app_name_response(rapdu.data) == "Handshake" diff --git a/tests/standalone/test_error_cmd.py b/tests/standalone/test_error_cmd.py new file mode 100644 index 0000000..ab448b4 --- /dev/null +++ b/tests/standalone/test_error_cmd.py @@ -0,0 +1,34 @@ +import pytest +from ragger.error import ExceptionRAPDU + +from application_client.handshake_command_sender import CLA, Errors, InsType, P1, P2 + + +def test_bad_cla(backend): + with pytest.raises(ExceptionRAPDU) as e: + backend.exchange(cla=CLA + 1, ins=InsType.GET_VERSION) + assert e.value.status == Errors.SW_CLA_NOT_SUPPORTED + + +@pytest.mark.parametrize("ins", [0x00, 0x02, 0x08, 0xFF]) +def test_bad_ins(backend, ins): + with pytest.raises(ExceptionRAPDU) as e: + backend.exchange(cla=CLA, ins=ins) + assert e.value.status == Errors.SW_INS_NOT_SUPPORTED + + +@pytest.mark.parametrize("ins,p1,p2", [ + (InsType.GET_VERSION, 0x01, 0x00), + (InsType.GET_VERSION, 0x00, 0x80), + (InsType.GET_APP_NAME, 0x01, 0x00), + (InsType.GET_PUBLIC_KEY, 0x02, 0x00), + (InsType.GET_PUBLIC_KEY, 0x00, 0x01), + (InsType.SIGN_TX, 0x05, 0x00), # no such SIGN_TX sub-op + (InsType.SIGN_TX, P1.SIGN_BEGIN, 0x80), + (InsType.SIGN_TX, P1.SIGN_REVIEW, 0x80), + (InsType.SIGN_MESSAGE, 0x01, 0x00), +]) +def test_wrong_p1p2(backend, ins, p1, p2): + with pytest.raises(ExceptionRAPDU) as e: + backend.exchange(cla=CLA, ins=ins, p1=p1, p2=p2) + assert e.value.status == Errors.SW_WRONG_P1P2 diff --git a/tests/standalone/test_pubkey_cmd.py b/tests/standalone/test_pubkey_cmd.py new file mode 100644 index 0000000..cf0bcae --- /dev/null +++ b/tests/standalone/test_pubkey_cmd.py @@ -0,0 +1,57 @@ +import pytest +from ragger.bip import calculate_public_key_and_chaincode, CurveChoice +from ragger.error import ExceptionRAPDU + +from application_client.handshake_command_sender import Errors, HandshakeCommandSender +from application_client.handshake_response_unpacker import ( + compress_pubkey, unpack_get_public_key_response, +) + +PATHS = [ + "m/44'/5353'/0'/0/0", + "m/44'/5353'/0'/1/7", + "m/44'/5353'/99'/0/0", + "m/44'/5353'/0'", + "m/44'/5354'/0'/0/0", +] + + +@pytest.mark.parametrize("path", PATHS) +def test_get_public_key_no_confirm(backend, path): + client = HandshakeCommandSender(backend) + pubkey, chaincode, address = unpack_get_public_key_response( + client.get_public_key(path=path).data) + + ref_pubkey, ref_chaincode = calculate_public_key_and_chaincode( + CurveChoice.Secp256k1, path=path) + assert pubkey == compress_pubkey(bytes.fromhex(ref_pubkey)) + assert chaincode.hex() == ref_chaincode + + # Handshake is bech32 (never bech32m), one HRP per network. + expected_hrp = "ts" if "5354'" in path else "hs" + assert address.startswith(expected_hrp + "1") + + +def test_get_public_key_confirm_accepted(backend, scenario_navigator): + client = HandshakeCommandSender(backend) + path = "m/44'/5353'/0'/0/0" + + with client.get_public_key_with_confirmation(path=path): + scenario_navigator.address_review_approve() + + pubkey, _, address = unpack_get_public_key_response( + client.get_async_response().data) + ref_pubkey, _ = calculate_public_key_and_chaincode(CurveChoice.Secp256k1, path=path) + assert pubkey == compress_pubkey(bytes.fromhex(ref_pubkey)) + assert address.startswith("hs1") + + +def test_get_public_key_confirm_refused(backend, scenario_navigator): + client = HandshakeCommandSender(backend) + + with pytest.raises(ExceptionRAPDU) as e: + with client.get_public_key_with_confirmation(path="m/44'/5353'/0'/0/0"): + scenario_navigator.address_review_reject() + + assert e.value.status == Errors.SW_DENY + assert len(e.value.data) == 0 diff --git a/tests/standalone/test_sign_message.py b/tests/standalone/test_sign_message.py new file mode 100644 index 0000000..f35eb64 --- /dev/null +++ b/tests/standalone/test_sign_message.py @@ -0,0 +1,67 @@ +"""SIGN_MESSAGE, which had no functional coverage at all before.""" + +import pytest +from ecdsa import SECP256k1, VerifyingKey +from ecdsa.util import sigdecode_string +from ragger.error import ExceptionRAPDU + +from application_client.handshake_command_sender import Errors, HandshakeCommandSender +from application_client.handshake_response_unpacker import ( + unpack_get_public_key_response, unpack_sign_message_response, +) +from application_client.handshake_sighash import blake2b_256 +from .review_nav import approve_review + +PATH = "m/44'/5353'/0'/0/0" + +#: The device prepends this before hashing, matching shd's `verifymessage`. +MESSAGE_PREFIX = b"handshake signed message:\n" + + +def test_sign_message_accepted(backend, device, navigator, default_screenshot_path, test_name): + client = HandshakeCommandSender(backend) + pubkey, _, _ = unpack_get_public_key_response(client.get_public_key(path=PATH).data) + message = b"hello handshake" + + with client.sign_message(path=PATH, message=message): + approve_review(device, navigator, default_screenshot_path, test_name) + + _, signature, returned_pubkey = unpack_sign_message_response( + client.get_async_response().data) + assert returned_pubkey == pubkey + + digest = blake2b_256(MESSAGE_PREFIX + message) + vk = VerifyingKey.from_string(pubkey, curve=SECP256k1) + assert vk.verify_digest(signature, digest, sigdecode=sigdecode_string) + + +def test_sign_message_refused(backend, scenario_navigator): + client = HandshakeCommandSender(backend) + with pytest.raises(ExceptionRAPDU) as e: + with client.sign_message(path=PATH, message=b"hello handshake"): + scenario_navigator.review_reject() + assert e.value.status == Errors.SW_DENY + + +def test_sign_message_rejects_out_of_policy_path(backend): + client = HandshakeCommandSender(backend) + with pytest.raises(ExceptionRAPDU) as e: + with client.sign_message(path="m/44'/1'/0'/0/0", message=b"hi"): + pass + assert e.value.status == Errors.SW_BAD_DERIVATION_PATH + + +def test_sign_message_rejects_truncated_payload(backend): + """A declared message length longer than the bytes that follow. + + `MAX_MESSAGE_LEN` is 512, but a single APDU carries at most 255 data bytes, + so the length cap is unreachable and the bounds check in the reader is what + actually protects here. + """ + from application_client.handshake_command_sender import CLA, InsType + from ragger.bip import pack_derivation_path + + payload = pack_derivation_path(PATH) + (200).to_bytes(2, "little") + b"A" * 10 + with pytest.raises(ExceptionRAPDU) as e: + backend.exchange(cla=CLA, ins=InsType.SIGN_MESSAGE, p1=0, p2=0, data=payload) + assert e.value.status == Errors.SW_TX_WRONG_LENGTH diff --git a/tests/standalone/test_sign_tx.py b/tests/standalone/test_sign_tx.py new file mode 100644 index 0000000..36821c0 --- /dev/null +++ b/tests/standalone/test_sign_tx.py @@ -0,0 +1,117 @@ +"""SIGN_TX end to end, including an independent check of what was signed.""" + +import pytest +from ecdsa import SECP256k1, VerifyingKey +from ecdsa.util import sigdecode_string +from ragger.error import ExceptionRAPDU + +from application_client.handshake_command_sender import Errors, HandshakeCommandSender +from application_client.handshake_response_unpacker import ( + unpack_get_public_key_response, unpack_sign_input_response, +) +from application_client.handshake_sighash import ( + p2wpkh_script_code, serialize_output, sighash_all, +) +from .review_nav import approve_review +from application_client.handshake_transaction import ( + COVENANT_OPEN, COVENANT_TRANSFER, SIGHASH_ALL, + begin_payload, input_payload, open_items, output_payload, transfer_items, +) + +PATH = "m/44'/5353'/0'/0/0" +COIN = 100_000_000 +TXID = b"\x11" * 32 +DEST = b"\x22" * 20 +CHANGE = b"\x33" * 20 + + +def _pubkey(client: HandshakeCommandSender) -> bytes: + pubkey, _, _ = unpack_get_public_key_response(client.get_public_key(path=PATH).data) + return pubkey + + +def test_sign_tx_accepted(backend, device, navigator, default_screenshot_path, test_name): + """Approve a two-output spend and verify the signature commits to exactly + the transaction the device was given.""" + client = HandshakeCommandSender(backend) + pubkey = _pubkey(client) + + outputs = [ + output_payload(60_000_000, addr_hash=DEST), + output_payload(39_000_000, addr_hash=CHANGE), + ] + + client.sign_tx_begin(begin_payload(n_in=1, n_out=2)) + client.sign_tx_add_input(input_payload(PATH, COIN, txid=TXID)) + for out in outputs: + client.sign_tx_add_output(out) + + with client.sign_tx_review(): + approve_review(device, navigator, default_screenshot_path, test_name) + + rapdu = client.sign_tx_input(0) + signature, sighash_type, returned_pubkey = unpack_sign_input_response(rapdu.data) + assert sighash_type == SIGHASH_ALL + assert returned_pubkey == pubkey + + digest = sighash_all( + version=0, + inputs=[(TXID, 0, 0xFFFFFFFF)], + outputs=[serialize_output(60_000_000, DEST), + serialize_output(39_000_000, CHANGE)], + locktime=0, + index=0, + script_code=p2wpkh_script_code(pubkey), + value=COIN, + ) + vk = VerifyingKey.from_string(pubkey, curve=SECP256k1) + assert vk.verify_digest(signature, digest, sigdecode=sigdecode_string) + + +def test_sign_tx_refused(backend, scenario_navigator): + client = HandshakeCommandSender(backend) + client.sign_tx_begin(begin_payload(n_in=1, n_out=1)) + client.sign_tx_add_input(input_payload(PATH, COIN, txid=TXID)) + client.sign_tx_add_output(output_payload(90_000_000, addr_hash=DEST)) + + with pytest.raises(ExceptionRAPDU) as e: + with client.sign_tx_review(): + scenario_navigator.review_reject() + assert e.value.status == Errors.SW_DENY + + # A refusal must leave no session behind for the host to sign against. + with pytest.raises(ExceptionRAPDU) as e: + client.sign_tx_input(0) + assert e.value.status == Errors.SW_WRONG_STATE + + +def test_sign_tx_open_covenant(backend, device, navigator, default_screenshot_path, test_name): + """OPEN carries the plaintext name, which the device verifies against the + hash the covenant commits to before showing it.""" + client = HandshakeCommandSender(backend) + client.sign_tx_begin(begin_payload(n_in=1, n_out=1)) + client.sign_tx_add_input(input_payload(PATH, COIN, txid=TXID)) + client.sign_tx_add_output(output_payload( + 0, addr_hash=DEST, + covenant_kind=COVENANT_OPEN, covenant_items=open_items(b"alice"))) + + with client.sign_tx_review(): + approve_review(device, navigator, default_screenshot_path, test_name) + assert client.sign_tx_input(0).status == 0x9000 + + +def test_sign_tx_transfer_covenant(backend, device, navigator, default_screenshot_path, test_name): + """TRANSFER's destination is the only thing distinguishing a transfer to + yourself from one to a thief, and it lives in the covenant rather than in + the output address.""" + client = HandshakeCommandSender(backend) + client.sign_tx_begin(begin_payload(n_in=1, n_out=1)) + client.sign_tx_add_input(input_payload(PATH, COIN, txid=TXID)) + client.sign_tx_add_output(output_payload( + COIN // 2, addr_hash=CHANGE, + covenant_kind=COVENANT_TRANSFER, + covenant_items=transfer_items(b"alice", dest_hash=DEST))) + + with client.sign_tx_review(): + approve_review(device, navigator, default_screenshot_path, test_name) + assert client.sign_tx_input(0).status == 0x9000 diff --git a/tests/standalone/test_sign_tx_policy.py b/tests/standalone/test_sign_tx_policy.py new file mode 100644 index 0000000..1b81d1b --- /dev/null +++ b/tests/standalone/test_sign_tx_policy.py @@ -0,0 +1,234 @@ +"""What SIGN_TX refuses. + +Every case here is rejected before the device draws anything, so these run +without a navigator or golden snapshots. They are the regression tests for the +pre-ship review: each one corresponds to a way the review screen could have +shown the user something other than what the signature commits to. +""" + +import pytest +from ragger.error import ExceptionRAPDU + +from application_client.handshake_command_sender import ( + CLA, Errors, HandshakeCommandSender, InsType, P1, P2, +) +from application_client.handshake_transaction import ( + COVENANT_NONE, COVENANT_OPEN, COVENANT_REVOKE, + SIGHASH_ALL, SIGHASH_ANYONECANPAY, SIGHASH_NOINPUT, SIGHASH_NONE, + SIGHASH_SINGLE, begin_payload, input_payload, open_items, output_payload, +) + +PATH = "m/44'/5353'/0'/0/0" +TESTNET_PATH = "m/44'/5354'/0'/0/0" +COIN = 100_000_000 # 100 HNS in dollarydoos + + +def _begin(client: HandshakeCommandSender, n_in: int = 1, n_out: int = 1) -> None: + client.sign_tx_begin(begin_payload(n_in=n_in, n_out=n_out)) + + +# ── The blocker: a signature type the review screen cannot represent ──────── + +@pytest.mark.parametrize("sighash", [ + SIGHASH_NONE, + SIGHASH_SINGLE, + SIGHASH_NONE | SIGHASH_ANYONECANPAY, + SIGHASH_ALL | SIGHASH_NOINPUT, + SIGHASH_ALL | SIGHASH_ANYONECANPAY, + 0x00, + 0xFF, +]) +def test_sighash_must_be_all(backend, sighash): + """Anything but SIGHASH_ALL commits to fewer fields than the review shows. + + Under NONE the digest commits to no outputs; under NOINPUT it does not + commit to which coin is being spent. Either way the signature is a blank + cheque behind a screen that listed concrete outputs and a concrete fee. + """ + client = HandshakeCommandSender(backend) + _begin(client) + with pytest.raises(ExceptionRAPDU) as e: + client.sign_tx_add_input(input_payload(PATH, COIN, sighash=sighash)) + assert e.value.status == Errors.SW_TX_PARSING_FAIL + + +def test_second_input_sighash_must_be_all(backend): + """The original bug: only input 0's type reached the screen. + + Input 0 carries ALL, so the review screen would have shown nothing unusual, + while input 1 was signed under NONE|ANYONECANPAY. + """ + client = HandshakeCommandSender(backend) + _begin(client, n_in=2, n_out=1) + client.sign_tx_add_input(input_payload(PATH, COIN, sighash=SIGHASH_ALL)) + with pytest.raises(ExceptionRAPDU) as e: + client.sign_tx_add_input(input_payload( + PATH, COIN, txid=b"\xaa" * 32, + sighash=SIGHASH_NONE | SIGHASH_ANYONECANPAY)) + assert e.value.status == Errors.SW_TX_PARSING_FAIL + + +# ── Derivation path policy ───────────────────────────────────────────────── + +@pytest.mark.parametrize("path", [ + "m/44'/1'/0'/0/0", # Bitcoin testnet coin type: not Handshake + "m/44'/5352'/0'/0/0", # just below the Handshake range + "m/44'/5357'/0'/0/0", # just above it + "m/43'/5353'/0'/0/0", # wrong purpose + "m/44'/5353'/0/0/0", # unhardened account + "m/44'/5353'", # too short to name an account + "m/44'/5353'/0'/0/0/0", # too deep +]) +def test_get_public_key_rejects_out_of_policy_path(backend, path): + """Out-of-whitelist paths do not merely fail in BOLOS, they terminate the + app. Validating in-app turns that into an ordinary status word.""" + client = HandshakeCommandSender(backend) + with pytest.raises(ExceptionRAPDU) as e: + client.get_public_key(path=path) + assert e.value.status == Errors.SW_BAD_DERIVATION_PATH + + +def test_sign_input_rejects_out_of_policy_path(backend): + client = HandshakeCommandSender(backend) + _begin(client) + with pytest.raises(ExceptionRAPDU) as e: + client.sign_tx_add_input(input_payload("m/44'/1'/0'/0/0", COIN)) + assert e.value.status == Errors.SW_BAD_DERIVATION_PATH + + +def test_mixed_coin_types_rejected(backend): + """One network per session: the review renders every address under a single + HRP, so a mixed session would show mainnet destinations wearing a testnet + prefix.""" + client = HandshakeCommandSender(backend) + _begin(client, n_in=2, n_out=1) + client.sign_tx_add_input(input_payload(PATH, COIN)) + with pytest.raises(ExceptionRAPDU) as e: + client.sign_tx_add_input(input_payload(TESTNET_PATH, COIN, txid=b"\xaa" * 32)) + assert e.value.status == Errors.SW_BAD_DERIVATION_PATH + + +# ── Session ceilings: one APDU must not be able to exhaust the heap ──────── + +@pytest.mark.parametrize("n_in,n_out", [(0, 1), (17, 1), (1, 9), (255, 255)]) +def test_begin_rejects_out_of_range_counts(backend, n_in, n_out): + client = HandshakeCommandSender(backend) + with pytest.raises(ExceptionRAPDU) as e: + client.sign_tx_begin(begin_payload(n_in=n_in, n_out=n_out)) + assert e.value.status == Errors.SW_TX_PARSING_FAIL + + +def test_covenant_byte_budget_is_session_wide(backend): + """Budgeted across the session, not per output, so several large covenants + cannot add up to more than the heap holds.""" + client = HandshakeCommandSender(backend) + _begin(client, n_in=1, n_out=8) + client.sign_tx_add_input(input_payload(PATH, COIN)) + with pytest.raises(ExceptionRAPDU) as e: + for _ in range(8): + client.sign_tx_add_output(output_payload( + COIN, covenant_kind=COVENANT_REVOKE, + covenant_items=[b"\x55" * 32, b"\x00" * 4, b"\x66" * 200])) + assert e.value.status == Errors.SW_TX_WRONG_LENGTH + + +# ── Covenants the device cannot describe honestly ────────────────────────── + +@pytest.mark.parametrize("kind", [12, 13, 200, 255]) +def test_unknown_covenant_kind_rejected(backend, kind): + """An unknown kind would render as the word "UNKNOWN" while its bytes went + into the sighash verbatim.""" + client = HandshakeCommandSender(backend) + _begin(client) + client.sign_tx_add_input(input_payload(PATH, COIN)) + with pytest.raises(ExceptionRAPDU) as e: + client.sign_tx_add_output(output_payload( + COIN, covenant_kind=kind, covenant_items=[b"\x77" * 32])) + assert e.value.status == Errors.SW_TX_PARSING_FAIL + + +def test_covenant_none_with_items_rejected(backend): + """Kind 0 means "no covenant". Items alongside it would be committed to the + sighash while the screen read "none".""" + client = HandshakeCommandSender(backend) + _begin(client) + client.sign_tx_add_input(input_payload(PATH, COIN)) + with pytest.raises(ExceptionRAPDU) as e: + client.sign_tx_add_output(output_payload( + COIN, covenant_kind=COVENANT_NONE, covenant_items=[b"\x88" * 8])) + assert e.value.status == Errors.SW_TX_PARSING_FAIL + + +# ── Value arithmetic the screen would otherwise misreport ────────────────── + +def test_outputs_exceeding_inputs_rejected(backend): + client = HandshakeCommandSender(backend) + _begin(client) + client.sign_tx_add_input(input_payload(PATH, COIN)) + client.sign_tx_add_output(output_payload(COIN * 2)) + with pytest.raises(ExceptionRAPDU) as e: + client.sign_tx_review_sync() + assert e.value.status == Errors.SW_TX_PARSING_FAIL + + +def test_input_total_overflow_rejected(backend): + """Declared input values that sum past u64 used to truncate on the way to + the screen, so an arbitrary fee could be displayed as 0.""" + client = HandshakeCommandSender(backend) + _begin(client, n_in=2, n_out=1) + client.sign_tx_add_input(input_payload(PATH, 2**63)) + client.sign_tx_add_input(input_payload(PATH, 2**63, txid=b"\xaa" * 32)) + client.sign_tx_add_output(output_payload(COIN)) + with pytest.raises(ExceptionRAPDU) as e: + client.sign_tx_review_sync() + assert e.value.status == Errors.SW_TX_PARSING_FAIL + + +# ── State machine ordering ───────────────────────────────────────────────── + +def test_add_input_before_begin_rejected(backend): + client = HandshakeCommandSender(backend) + with pytest.raises(ExceptionRAPDU) as e: + client.sign_tx_add_input(input_payload(PATH, COIN)) + assert e.value.status == Errors.SW_WRONG_STATE + + +def test_review_before_all_records_rejected(backend): + client = HandshakeCommandSender(backend) + _begin(client, n_in=2, n_out=1) + client.sign_tx_add_input(input_payload(PATH, COIN)) + with pytest.raises(ExceptionRAPDU) as e: + client.sign_tx_review_sync() + assert e.value.status == Errors.SW_WRONG_STATE + + +def test_sign_input_before_review_rejected(backend): + """No signature without an approval, whatever order the host asks in.""" + client = HandshakeCommandSender(backend) + _begin(client) + client.sign_tx_add_input(input_payload(PATH, COIN)) + client.sign_tx_add_output(output_payload(COIN)) + with pytest.raises(ExceptionRAPDU) as e: + client.sign_tx_input(0) + assert e.value.status == Errors.SW_WRONG_STATE + + +def test_begin_resets_a_stale_session(backend): + """A fresh BEGIN must clear whatever a previous attempt left behind.""" + client = HandshakeCommandSender(backend) + _begin(client, n_in=2, n_out=1) + client.sign_tx_add_input(input_payload(PATH, COIN)) + _begin(client, n_in=1, n_out=1) + client.sign_tx_add_input(input_payload(PATH, COIN)) + client.sign_tx_add_output(output_payload(COIN)) + # Reaching PendingReview means the earlier input did not survive. + with pytest.raises(ExceptionRAPDU) as e: + client.sign_tx_input(0) + assert e.value.status == Errors.SW_WRONG_STATE + + +def test_trailing_bytes_rejected(backend): + client = HandshakeCommandSender(backend) + with pytest.raises(ExceptionRAPDU) as e: + client.sign_tx_begin(begin_payload(n_in=1, n_out=1) + b"\x00") + assert e.value.status == Errors.SW_TX_WRONG_LENGTH diff --git a/tests/standalone/test_version_cmd.py b/tests/standalone/test_version_cmd.py new file mode 100644 index 0000000..28d5be0 --- /dev/null +++ b/tests/standalone/test_version_cmd.py @@ -0,0 +1,10 @@ +from application_client.handshake_command_sender import HandshakeCommandSender +from application_client.handshake_response_unpacker import unpack_get_version_response + + +def test_version(backend): + """GET_VERSION must report the version in Cargo.toml.""" + client = HandshakeCommandSender(backend) + rapdu = client.get_version() + major, minor, patch = unpack_get_version_response(rapdu.data) + assert (major, minor, patch) == (0, 1, 0)