gitextract_zpn2g_yk/ ├── .clang-format ├── .codespell-ignore ├── .dockerignore ├── .github/ │ ├── actionlint.yaml │ └── workflows/ │ ├── continuous-integration-workflow.yml │ ├── documentation.yml │ ├── fast-checks.yml │ ├── force-rebase.yml │ └── reusable_ragger_tests_latest_speculos.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .vscode/ │ └── settings.json ├── CHANGELOG.md ├── CMakeLists.txt ├── COPYING ├── COPYING.LESSER ├── Dockerfiles/ │ ├── Dockerfile │ └── build.Dockerfile ├── MANIFEST.in ├── Pipfile ├── README.md ├── apps/ │ ├── README.md │ └── nanox#boil#25#6e728d99.elf ├── clang-armv7m.cmake ├── docker-compose.yml ├── docs/ │ ├── CNAME │ ├── Makefile │ ├── conf.py │ ├── dev/ │ │ ├── ci.md │ │ ├── getting_started.md │ │ ├── index.rst │ │ ├── internals.md │ │ └── tests.md │ ├── index.rst │ ├── installation/ │ │ ├── build.md │ │ ├── index.rst │ │ └── wsl.md │ ├── requirements.txt │ └── user/ │ ├── api.md │ ├── automation.md │ ├── clients.md │ ├── debug.md │ ├── docker.md │ ├── index.rst │ ├── macm1.md │ ├── semihosting.md │ └── usage.md ├── gcc-arm.cmake ├── lgtm.yml ├── pyproject.toml ├── sdk/ │ └── bolos_syscalls.h ├── setup.py ├── speculos/ │ ├── __init__.py │ ├── __main__.py │ ├── api/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── apdu.py │ │ ├── api.py │ │ ├── automation.py │ │ ├── button.py │ │ ├── events.py │ │ ├── finger.py │ │ ├── resources/ │ │ │ ├── apdu.schema │ │ │ ├── button.schema │ │ │ ├── finger.schema │ │ │ └── ticker.schema │ │ ├── restful.py │ │ ├── screenshot.py │ │ ├── static/ │ │ │ ├── index.html │ │ │ └── swagger/ │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── swagger-ui-bundle.js │ │ │ ├── swagger-ui-standalone-preset.js │ │ │ ├── swagger-ui.css │ │ │ └── swagger.json │ │ ├── swagger.py │ │ ├── swagger.yaml │ │ ├── ticker.py │ │ └── web_interface.py │ ├── client.py │ ├── cxlib/ │ │ ├── flex-api-level-cx-22.elf │ │ ├── nanosp-api-level-cx-22.elf │ │ ├── nanox-api-level-cx-22.elf │ │ └── stax-api-level-cx-22.elf │ ├── main.py │ ├── mcu/ │ │ ├── __init__.py │ │ ├── apdu.py │ │ ├── automation.py │ │ ├── automation_server.py │ │ ├── bagl.py │ │ ├── bagl_font.py │ │ ├── bagl_glyph.py │ │ ├── button_tcp.py │ │ ├── display.py │ │ ├── finger_tcp.py │ │ ├── headless.py │ │ ├── nbgl.py │ │ ├── nbgl_serialize.py │ │ ├── ocr.py │ │ ├── readerror.py │ │ ├── resources/ │ │ │ └── automation.schema │ │ ├── rle_custom.py │ │ ├── screen.py │ │ ├── screen_text.py │ │ ├── seproxyhal.py │ │ ├── struct.py │ │ ├── transport/ │ │ │ ├── __init__.py │ │ │ ├── interface.py │ │ │ ├── nfc.py │ │ │ └── usb.py │ │ └── vnc.py │ ├── observer.py │ ├── resources_importer.py │ └── sharedlib/ │ ├── apex_p-api-level-shared-25.elf │ ├── apex_p-api-level-shared-26.elf │ ├── flex-api-level-shared-24.elf │ ├── flex-api-level-shared-25.elf │ ├── flex-api-level-shared-26.elf │ ├── nanosp-api-level-shared-24.elf │ ├── nanosp-api-level-shared-25.elf │ ├── nanosp-api-level-shared-26.elf │ ├── nanox-api-level-shared-24.elf │ ├── nanox-api-level-shared-25.elf │ ├── nanox-api-level-shared-26.elf │ ├── stax-api-level-shared-24.elf │ ├── stax-api-level-shared-25.elf │ └── stax-api-level-shared-26.elf ├── speculos.py ├── src/ │ ├── CMakeLists.txt │ ├── bolos/ │ │ ├── bagl.c │ │ ├── bagl.h │ │ ├── cx.c │ │ ├── cx.h │ │ ├── cx_aes.c │ │ ├── cx_aes.h │ │ ├── cx_aes_sdk2.c │ │ ├── cx_blake2.h │ │ ├── cx_blake2b.c │ │ ├── cx_bls.c │ │ ├── cx_bls.h │ │ ├── cx_bls_fp2.c │ │ ├── cx_bls_g2.c │ │ ├── cx_bn.c │ │ ├── cx_common.h │ │ ├── cx_crc.c │ │ ├── cx_crc.h │ │ ├── cx_curve25519.c │ │ ├── cx_curve25519.h │ │ ├── cx_ec.c │ │ ├── cx_ec.h │ │ ├── cx_ec_domain.c │ │ ├── cx_ecpoint.c │ │ ├── cx_ed25519.c │ │ ├── cx_ed25519.h │ │ ├── cx_hash.c │ │ ├── cx_hash.h │ │ ├── cx_hkdf.c │ │ ├── cx_hkdf.h │ │ ├── cx_hmac.c │ │ ├── cx_hmac.h │ │ ├── cx_math.c │ │ ├── cx_math.h │ │ ├── cx_montgomery.c │ │ ├── cx_mpi.c │ │ ├── cx_ripemd160.c │ │ ├── cx_rng_rfc6979.c │ │ ├── cx_rng_rfc6979.h │ │ ├── cx_scc.c │ │ ├── cx_sha256.c │ │ ├── cx_sha3.c │ │ ├── cx_sha512.c │ │ ├── cx_twisted_edwards.c │ │ ├── cx_utils.c │ │ ├── cx_utils.h │ │ ├── cx_weierstrass.c │ │ ├── cxlib.c │ │ ├── cxlib.h │ │ ├── default.c │ │ ├── endorsement.c │ │ ├── endorsement.h │ │ ├── exception.c │ │ ├── exception.h │ │ ├── fonts_info.c │ │ ├── hdkey/ │ │ │ ├── include/ │ │ │ │ ├── hdkey.h │ │ │ │ ├── hdkey_bip32.h │ │ │ │ ├── hdkey_bls12377.h │ │ │ │ ├── hdkey_validate.h │ │ │ │ └── hdkey_zip32.h │ │ │ └── src/ │ │ │ ├── hdkey.c │ │ │ ├── hdkey_bip32.c │ │ │ ├── hdkey_bls12377.c │ │ │ ├── hdkey_validate.c │ │ │ └── hdkey_zip32.c │ │ ├── io/ │ │ │ ├── io.c │ │ │ ├── io.h │ │ │ ├── mock/ │ │ │ │ ├── include/ │ │ │ │ │ ├── checks.h │ │ │ │ │ ├── cx_rng_internal.h │ │ │ │ │ ├── decorators.h │ │ │ │ │ ├── exceptions.h │ │ │ │ │ ├── lcx_hash.h │ │ │ │ │ ├── lcx_sha512.h │ │ │ │ │ ├── os.h │ │ │ │ │ ├── os_debug.h │ │ │ │ │ ├── os_helpers.h │ │ │ │ │ ├── os_id.h │ │ │ │ │ ├── os_math.h │ │ │ │ │ ├── os_pic.h │ │ │ │ │ ├── os_pin.h │ │ │ │ │ ├── os_pki.h │ │ │ │ │ ├── os_registry.h │ │ │ │ │ ├── os_seed.h │ │ │ │ │ ├── os_utils.h │ │ │ │ │ └── ux.h │ │ │ │ └── src/ │ │ │ │ └── mock.c │ │ │ └── sdk/ │ │ │ ├── include/ │ │ │ │ ├── appflags.h │ │ │ │ ├── errors.h │ │ │ │ ├── os_apdu.h │ │ │ │ ├── os_app.h │ │ │ │ ├── os_errors.h │ │ │ │ └── seproxyhal_protocol.h │ │ │ ├── io/ │ │ │ │ ├── include/ │ │ │ │ │ ├── os_io.h │ │ │ │ │ ├── os_io_seph_cmd.h │ │ │ │ │ └── os_io_seph_ux.h │ │ │ │ └── src/ │ │ │ │ ├── os_io.c │ │ │ │ ├── os_io_seph_cmd.c │ │ │ │ └── os_io_seph_ux.c │ │ │ ├── lib_nfc/ │ │ │ │ ├── doc/ │ │ │ │ │ └── mainpage.dox │ │ │ │ ├── include/ │ │ │ │ │ ├── nfc_ledger.h │ │ │ │ │ └── nfc_ndef.h │ │ │ │ └── src/ │ │ │ │ ├── nfc_ledger.c │ │ │ │ └── nfc_ndef.c │ │ │ ├── lib_stusb/ │ │ │ │ ├── include/ │ │ │ │ │ ├── usbd_conf.h │ │ │ │ │ ├── usbd_core.h │ │ │ │ │ ├── usbd_ctlreq.h │ │ │ │ │ ├── usbd_def.h │ │ │ │ │ ├── usbd_desc.h │ │ │ │ │ ├── usbd_ioreq.h │ │ │ │ │ ├── usbd_ledger.h │ │ │ │ │ ├── usbd_ledger_ccid.h │ │ │ │ │ ├── usbd_ledger_cdc.h │ │ │ │ │ ├── usbd_ledger_hid.h │ │ │ │ │ ├── usbd_ledger_hid_kbd.h │ │ │ │ │ ├── usbd_ledger_hid_u2f.h │ │ │ │ │ ├── usbd_ledger_types.h │ │ │ │ │ └── usbd_ledger_webusb.h │ │ │ │ └── src/ │ │ │ │ ├── usbd_conf.c │ │ │ │ ├── usbd_core.c │ │ │ │ ├── usbd_ctlreq.c │ │ │ │ ├── usbd_desc.c │ │ │ │ ├── usbd_ioreq.c │ │ │ │ ├── usbd_ledger.c │ │ │ │ ├── usbd_ledger_hid.c │ │ │ │ ├── usbd_ledger_hid_u2f.c │ │ │ │ └── usbd_ledger_webusb.c │ │ │ └── protocol/ │ │ │ ├── include/ │ │ │ │ └── ledger_protocol.h │ │ │ └── src/ │ │ │ └── ledger_protocol.c │ │ ├── nbgl.c │ │ ├── nbgl.h │ │ ├── nbgl_rle.c │ │ ├── nbgl_rle.h │ │ ├── os.c │ │ ├── os_bip32.c │ │ ├── os_bip32.h │ │ ├── os_eip2333.c │ │ ├── os_hdkey.c │ │ ├── os_hdkey.h │ │ ├── os_pki.c │ │ ├── os_pki.h │ │ ├── os_result.h │ │ ├── os_signature.c │ │ ├── os_signature.h │ │ ├── os_types.h │ │ ├── seproxyhal.c │ │ ├── touch.c │ │ └── touch.h │ ├── emulate.c │ ├── emulate.h │ ├── environment.c │ ├── environment.h │ ├── fonts.h │ ├── launcher.c │ ├── launcher.h │ ├── output/ │ │ └── parse_elf │ ├── parse_elf │ ├── sdk.h │ ├── svc.c │ ├── svc.h │ └── vnc/ │ ├── CMakeLists.txt │ ├── cursor.c │ ├── cursor.h │ ├── cursors/ │ │ ├── approved.h │ │ ├── bitcoin.h │ │ ├── blue.h │ │ ├── fabrice.h │ │ ├── frame_00.h │ │ ├── frame_01.h │ │ ├── frame_02.h │ │ ├── frame_03.h │ │ ├── frame_04.h │ │ ├── frame_05.h │ │ ├── frame_06.h │ │ ├── frame_07.h │ │ ├── frame_08.h │ │ ├── frame_09.h │ │ ├── frame_10.h │ │ ├── frame_11.h │ │ ├── frame_12.h │ │ ├── frame_13.h │ │ ├── frame_14.h │ │ ├── frame_15.h │ │ ├── frame_16.h │ │ ├── frame_17.h │ │ ├── frame_18.h │ │ ├── frame_19.h │ │ ├── frame_20.h │ │ ├── frame_21.h │ │ ├── pizza.h │ │ ├── star.h │ │ ├── sword.h │ │ └── verynice.h │ ├── seccomp-bpf.h │ └── vnc_server.c ├── tests/ │ ├── c/ │ │ ├── CMakeLists.txt │ │ ├── mocks.c │ │ ├── syscalls/ │ │ │ ├── CMakeLists.txt │ │ │ ├── cavp/ │ │ │ │ ├── blake2b_kat.data │ │ │ │ ├── groestl_224_long_msg.data │ │ │ │ ├── groestl_224_short_msg.data │ │ │ │ ├── groestl_256_long_msg.data │ │ │ │ ├── groestl_256_short_msg.data │ │ │ │ ├── groestl_384_long_msg.data │ │ │ │ ├── groestl_384_short_msg.data │ │ │ │ ├── groestl_512_long_msg.data │ │ │ │ ├── groestl_512_short_msg.data │ │ │ │ ├── hmac.data │ │ │ │ ├── keccak_224_long_msg.data │ │ │ │ ├── keccak_224_short_msg.data │ │ │ │ ├── keccak_256_long_msg.data │ │ │ │ ├── keccak_256_short_msg.data │ │ │ │ ├── keccak_384_long_msg.data │ │ │ │ ├── keccak_384_short_msg.data │ │ │ │ ├── keccak_512_long_msg.data │ │ │ │ ├── keccak_512_short_msg.data │ │ │ │ ├── sha224_long_msg.data │ │ │ │ ├── sha224_short_msg.data │ │ │ │ ├── sha256_long_msg.data │ │ │ │ ├── sha256_short_msg.data │ │ │ │ ├── sha384_long_msg.data │ │ │ │ ├── sha384_short_msg.data │ │ │ │ ├── sha3_224_long_msg.data │ │ │ │ ├── sha3_224_short_msg.data │ │ │ │ ├── sha3_256_long_msg.data │ │ │ │ ├── sha3_256_short_msg.data │ │ │ │ ├── sha3_384_long_msg.data │ │ │ │ ├── sha3_384_short_msg.data │ │ │ │ ├── sha3_512_long_msg.data │ │ │ │ ├── sha3_512_short_msg.data │ │ │ │ ├── sha512_long_msg.data │ │ │ │ ├── sha512_short_msg.data │ │ │ │ ├── shake128_long_msg.data │ │ │ │ ├── shake128_short_msg.data │ │ │ │ ├── shake128_variable_output.data │ │ │ │ ├── shake256_long_msg.data │ │ │ │ ├── shake256_short_msg.data │ │ │ │ └── shake256_variable_output.data │ │ │ ├── hello.c │ │ │ ├── nist_cavp.c │ │ │ ├── nist_cavp.h │ │ │ ├── test_aes.c │ │ │ ├── test_bip32.c │ │ │ ├── test_blake2.c │ │ │ ├── test_bls.c │ │ │ ├── test_bn.c │ │ │ ├── test_crc16.c │ │ │ ├── test_ec.c │ │ │ ├── test_ecdh.c │ │ │ ├── test_ecdsa.c │ │ │ ├── test_ecpoint.c │ │ │ ├── test_eddsa.c │ │ │ ├── test_eip2333.c │ │ │ ├── test_endorsement.c │ │ │ ├── test_hdkey.c │ │ │ ├── test_hmac.c │ │ │ ├── test_math.c │ │ │ ├── test_mpi_rng.c │ │ │ ├── test_os_global_pin_is_validated.c │ │ │ ├── test_rfc6979.c │ │ │ ├── test_ripemd.c │ │ │ ├── test_sha2.c │ │ │ ├── test_sha3.c │ │ │ ├── test_slip21.c │ │ │ └── wycheproof/ │ │ │ ├── X25519.data │ │ │ ├── X448.data │ │ │ ├── ecdh_secp256k1.data │ │ │ └── eddsa.data │ │ ├── test_environment.c │ │ ├── utils.c │ │ └── utils.h │ └── python/ │ ├── __init__.py │ ├── api/ │ │ ├── __init__.py │ │ ├── resources/ │ │ │ └── automation.json │ │ └── test_api.py │ ├── apps/ │ │ ├── __init__.py │ │ ├── resources/ │ │ │ ├── __init__.py │ │ │ └── boil_getpubkey_nanox.json │ │ ├── test_boil.py │ │ └── test_vnc.py │ ├── conftest.py │ ├── mcu/ │ │ ├── __init__.py │ │ ├── resources/ │ │ │ ├── automation_invalid_action_args.json │ │ │ ├── automation_invalid_action_name.json │ │ │ ├── automation_invalid_rule_key.json │ │ │ └── automation_valid.json │ │ └── test_automation.py │ ├── pytest.ini │ ├── test_resources_importer.py │ └── unit/ │ ├── __init__.py │ ├── test_client_Api.py │ └── test_client_SpeculosClient.py └── tools/ ├── clang-format.sh ├── cursor.py ├── debug.sh ├── gdbinit ├── gif-recorder.py ├── ledger-live-http-proxy.py └── winamp.py