speculos 0.10.1.dev2__tar.gz → 0.10.1.dev7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {speculos-0.10.1.dev2/speculos.egg-info → speculos-0.10.1.dev7}/PKG-INFO +1 -1
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/sdk/bolos_syscalls_unified_sdk.h +4 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/__version__.py +2 -2
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/resources/launcher +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7/speculos.egg-info}/PKG-INFO +1 -1
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos.egg-info/SOURCES.txt +4 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/CMakeLists.txt +2 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_hash.c +1 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_hash.h +3 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_utils.c +11 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_utils.h +2 -0
- speculos-0.10.1.dev7/src/bolos/os_pki.c +357 -0
- speculos-0.10.1.dev7/src/bolos/os_pki.h +149 -0
- speculos-0.10.1.dev7/src/bolos/os_signature.c +163 -0
- speculos-0.10.1.dev7/src/bolos/os_signature.h +43 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/emulate_unified_sdk.c +21 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.clang-format +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.codespell-ignore +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.dockerignore +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.github/workflows/continuous-integration-workflow.yml +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.github/workflows/documentation.yml +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.github/workflows/fast-checks.yml +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.github/workflows/force-rebase.yml +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.github/workflows/reusable_ragger_tests_latest_speculos.yml +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.github/workflows/speculos-builder.yml +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.gitignore +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/CHANGELOG.md +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/CMakeLists.txt +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/COPYING +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/COPYING.LESSER +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/Dockerfile +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/MANIFEST.in +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/Pipfile +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/Pipfile.lock +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/README.md +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/README.md +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/blue#btc#1.5#00000000.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/blue#ram-page#blue-2.2.5#00000000.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/btc-test.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/btc.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc#1.5#00000000.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc#1.6#29717f9c.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc#1.6#6bd0a5f8.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc#2.0#ce796c1b.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc#2.1#1c8db8da.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc-test#1.5#00000000.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc-test#1.6#29717f9c.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc-test#1.6#6bd0a5f8.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc-test#2.0#ce796c1b.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc-test#2.1#1c8db8da.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanosp#btc#1.0#a86c791b.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanosp#btc#1.0.3#17bf7619.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanosp#btc-test#1.0#a86c791b.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanosp#btc-test#1.0.3#17bf7619.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanox#btc#1.2#57272a0f.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanox#btc#2.0.2#1c8db8da.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanox#btc-test#2.0.2#1c8db8da.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/build.Dockerfile +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/clang-armv7m.cmake +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docker-compose.yml +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/CNAME +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/Makefile +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/_static/screenshot-api-nanos-btc.png +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/_static/screenshot-btc-nanos.png +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/conf.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/dev/ci.md +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/dev/getting_started.md +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/dev/index.rst +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/dev/internals.md +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/dev/tests.md +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/index.rst +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/installation/build.md +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/installation/index.rst +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/installation/wsl.md +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/requirements.txt +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/user/api.md +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/user/automation.md +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/user/clients.md +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/user/debug.md +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/user/docker.md +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/user/index.rst +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/user/macm1.md +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/user/semihosting.md +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/user/usage.md +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/gcc-arm.cmake +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/lgtm.yml +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/pyproject.toml +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/sdk/bolos_syscalls_1.2.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/sdk/bolos_syscalls_1.5.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/sdk/bolos_syscalls_1.6.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/sdk/bolos_syscalls_2.0.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/sdk/bolos_syscalls_blue_2.2.5.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/sdk/bolos_syscalls_lnsp.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/setup.cfg +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/setup.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/__init__.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/__main__.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/README.md +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/__init__.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/apdu.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/api.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/automation.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/button.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/events.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/finger.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/resources/apdu.schema +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/resources/button.schema +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/resources/finger.schema +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/resources/ticker.schema +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/restful.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/screenshot.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/static/index.html +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/static/swagger/README.md +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/static/swagger/favicon-16x16.png +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/static/swagger/favicon-32x32.png +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/static/swagger/index.html +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/static/swagger/swagger-ui-bundle.js +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/static/swagger/swagger-ui-standalone-preset.js +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/static/swagger/swagger-ui.css +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/static/swagger/swagger.json +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/swagger.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/swagger.yaml +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/ticker.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/web_interface.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/client.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/flex-api-level-cx-18.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/flex-api-level-cx-19.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/flex-api-level-cx-20.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/flex-api-level-cx-21.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/flex-api-level-cx-22.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanos-cx-2.0.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanos-cx-2.1.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanosp-api-level-cx-1.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanosp-api-level-cx-12.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanosp-api-level-cx-18.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanosp-api-level-cx-22.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanosp-api-level-cx-5.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanosp-cx-1.0.3.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanosp-cx-1.0.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanox-api-level-cx-1.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanox-api-level-cx-12.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanox-api-level-cx-18.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanox-api-level-cx-22.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanox-api-level-cx-5.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanox-cx-2.0.2.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanox-cx-2.0.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-1.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-10.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-11.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-12.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-13.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-14.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-15.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-20.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-21.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-22.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-3.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-5.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-7.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-8.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-9.elf +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/flex-fonts-18.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/flex-fonts-19.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/flex-fonts-20.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/flex-fonts-21.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/flex-fonts-22.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/nanosp-fonts-18.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/nanosp-fonts-22.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/nanox-fonts-18.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/nanox-fonts-22.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-1.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-10.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-11.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-12.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-13.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-14.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-15.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-20.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-21.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-22.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-3.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-5.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-7.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-8.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-9.bin +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/main.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/__init__.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/apdu.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/automation.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/automation_server.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/bagl.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/bagl_font.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/bagl_glyph.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/button_tcp.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/display.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/finger_tcp.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/headless.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/icon.png +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/nbgl.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/ocr.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/readerror.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/resources/automation.schema +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/rle_custom.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/screen.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/screen_text.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/seproxyhal.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/struct.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/usb.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/vnc.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/observer.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/resources/vnc_server +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/resources_importer.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos.egg-info/dependency_links.txt +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos.egg-info/entry_points.txt +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos.egg-info/requires.txt +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos.egg-info/top_level.txt +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/bagl.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/bagl.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_aes.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_aes.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_aes_sdk2.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_blake2.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_blake2b.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_bls.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_bls.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_bls_fp2.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_bls_g2.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_bn.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_common.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_crc.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_crc.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_curve25519.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_curve25519.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_ec.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_ec.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_ec_domain.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_ecpoint.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_ed25519.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_ed25519.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_hkdf.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_hkdf.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_hmac.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_hmac.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_math.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_math.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_montgomery.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_mpi.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_ripemd160.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_rng_rfc6979.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_rng_rfc6979.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_scc.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_sha256.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_sha3.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_sha512.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_twisted_edwards.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_weierstrass.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cxlib.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cxlib.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/default.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/endorsement.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/endorsement.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/exception.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/fonts_info.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/nbgl.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/nbgl.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/nbgl_rle.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/nbgl_rle.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/os.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/os_1.2.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/os_1.5.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/os_1.6.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/os_2.0.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/os_bip32.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/os_bip32.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/os_eip2333.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/seproxyhal.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/touch.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/touch.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/emulate.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/emulate.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/emulate_1.2.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/emulate_1.5.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/emulate_1.6.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/emulate_2.0.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/emulate_blue_2.2.5.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/emulate_lnsp_1.0.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/environment.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/environment.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/fonts.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/launcher.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/sdk.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/svc.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/svc.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/CMakeLists.txt +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursor.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursor.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/approved.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/bitcoin.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/blue.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/fabrice.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_00.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_01.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_02.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_03.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_04.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_05.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_06.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_07.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_08.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_09.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_10.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_11.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_12.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_13.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_14.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_15.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_16.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_17.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_18.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_19.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_20.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_21.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/pizza.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/star.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/sword.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/verynice.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/seccomp-bpf.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/vnc_server.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/CMakeLists.txt +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/CMakeLists.txt +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/blake2b_kat.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/groestl_224_long_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/groestl_224_short_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/groestl_256_long_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/groestl_256_short_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/groestl_384_long_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/groestl_384_short_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/groestl_512_long_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/groestl_512_short_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/hmac.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/keccak_224_long_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/keccak_224_short_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/keccak_256_long_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/keccak_256_short_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/keccak_384_long_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/keccak_384_short_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/keccak_512_long_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/keccak_512_short_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha224_long_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha224_short_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha256_long_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha256_short_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha384_long_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha384_short_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha3_224_long_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha3_224_short_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha3_256_long_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha3_256_short_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha3_384_long_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha3_384_short_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha3_512_long_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha3_512_short_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha512_long_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha512_short_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/shake128_long_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/shake128_short_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/shake128_variable_output.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/shake256_long_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/shake256_short_msg.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/shake256_variable_output.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/hello.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/nist_cavp.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/nist_cavp.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_aes.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_bip32.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_blake2.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_bls.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_bn.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_crc16.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_ec.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_ecdh.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_ecdsa.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_ecpoint.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_eddsa.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_eip2333.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_endorsement.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_hmac.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_math.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_mpi_rng.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_os_global_pin_is_validated.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_rfc6979.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_ripemd.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_sha2.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_sha3.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_slip21.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/wycheproof/X25519.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/wycheproof/X448.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/wycheproof/ecdh_secp256k1.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/wycheproof/eddsa.data +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/test_environment.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/utils.c +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/utils.h +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/__init__.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/api/__init__.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/api/resources/automation.json +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/api/test_api.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/__init__.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/resources/__init__.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/resources/btc_getpubkey_blue.json +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/resources/btc_getpubkey_blue.png +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/resources/btc_getpubkey_nanos.json +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/resources/btc_getpubkey_nanos.png +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/resources/btc_getpubkey_nanosp.json +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/resources/btc_getpubkey_nanosp.png +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/resources/btc_getpubkey_nanox.json +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/resources/btc_getpubkey_nanox.png +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/test_btc.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/test_btc_testnet.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/test_ram_page.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/test_vnc.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/conftest.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/mcu/__init__.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/mcu/resources/automation_invalid_action_args.json +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/mcu/resources/automation_invalid_action_name.json +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/mcu/resources/automation_invalid_rule_key.json +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/mcu/resources/automation_valid.json +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/mcu/test_automation.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/pytest.ini +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/test_resources_importer.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/unit/__init__.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/unit/test_client_Api.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/unit/test_client_SpeculosClient.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/clang-format.sh +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/cursor.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/debug.sh +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/gdbinit +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/gif-recorder.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/ledger-live-http-proxy.py +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/skins/handholding.png +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/skins/nano-blue.png +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/skins/unicorn.png +0 -0
- {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/winamp.py +0 -0
|
@@ -184,3 +184,7 @@
|
|
|
184
184
|
#define SYSCALL_cx_hash_to_field_ID_IN 0x06000104
|
|
185
185
|
#define SYSCALL_cx_bls12381_aggregate_ID_IN 0x05000105
|
|
186
186
|
#define SYSCALL_cx_bls12381_key_gen_ID_IN 0x03000108
|
|
187
|
+
|
|
188
|
+
#define SYSCALL_os_pki_load_certificate_ID_IN 0x060000aa
|
|
189
|
+
#define SYSCALL_os_pki_verify_ID_IN 0x040000ab
|
|
190
|
+
#define SYSCALL_os_pki_get_info_ID_IN 0x040000ac
|
|
@@ -12,5 +12,5 @@ __version__: str
|
|
|
12
12
|
__version_tuple__: VERSION_TUPLE
|
|
13
13
|
version_tuple: VERSION_TUPLE
|
|
14
14
|
|
|
15
|
-
__version__ = version = '0.10.1.
|
|
16
|
-
__version_tuple__ = version_tuple = (0, 10, 1, '
|
|
15
|
+
__version__ = version = '0.10.1.dev7'
|
|
16
|
+
__version_tuple__ = version_tuple = (0, 10, 1, 'dev7')
|
|
Binary file
|
|
@@ -284,6 +284,10 @@ src/bolos/os_2.0.c
|
|
|
284
284
|
src/bolos/os_bip32.c
|
|
285
285
|
src/bolos/os_bip32.h
|
|
286
286
|
src/bolos/os_eip2333.c
|
|
287
|
+
src/bolos/os_pki.c
|
|
288
|
+
src/bolos/os_pki.h
|
|
289
|
+
src/bolos/os_signature.c
|
|
290
|
+
src/bolos/os_signature.h
|
|
287
291
|
src/bolos/seproxyhal.c
|
|
288
292
|
src/bolos/touch.c
|
|
289
293
|
src/bolos/touch.h
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
#define CX_SHA256_SIZE 32
|
|
9
9
|
#define CX_SHA384_SIZE 48
|
|
10
10
|
#define CX_SHA512_SIZE 64
|
|
11
|
+
#define CX_SHA3_256_SIZE 32
|
|
11
12
|
|
|
12
13
|
#define RIPEMD_BLOCK_SIZE 64
|
|
13
14
|
#define SHA256_BLOCK_SIZE 64
|
|
@@ -44,6 +45,8 @@ enum cx_md_e {
|
|
|
44
45
|
CX_SHAKE128, // any bytes
|
|
45
46
|
/** SHAKE-128 Digest */
|
|
46
47
|
CX_SHAKE256, // any bytes
|
|
48
|
+
/** SHA3 256*/
|
|
49
|
+
CX_SHA3_256,
|
|
47
50
|
};
|
|
48
51
|
/** Convenience type. See #cx_md_e. */
|
|
49
52
|
typedef enum cx_md_e cx_md_t;
|
|
@@ -305,6 +305,17 @@ void U4BE_ENCODE(uint8_t *buf, size_t off, uint32_t value)
|
|
|
305
305
|
buf[off + 3] = value & 0xFF;
|
|
306
306
|
}
|
|
307
307
|
|
|
308
|
+
uint16_t U2BE(const uint8_t *buf, size_t off)
|
|
309
|
+
{
|
|
310
|
+
return (buf[off] << 8) | buf[off + 1];
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
uint32_t U4BE(const uint8_t *buf, size_t off)
|
|
314
|
+
{
|
|
315
|
+
return (((uint32_t)buf[off]) << 24) | (buf[off + 1] << 16) |
|
|
316
|
+
(buf[off + 2] << 8) | buf[off + 3];
|
|
317
|
+
}
|
|
318
|
+
|
|
308
319
|
void cx_memxor(uint8_t *buf1, const uint8_t *buf2, size_t len)
|
|
309
320
|
{
|
|
310
321
|
size_t i;
|
|
@@ -110,4 +110,6 @@ int get_path(const char *str_, unsigned int *path, int max_path_len);
|
|
|
110
110
|
|
|
111
111
|
void U2BE_ENCODE(uint8_t *buf, size_t off, uint32_t value);
|
|
112
112
|
void U4BE_ENCODE(uint8_t *buf, size_t off, uint32_t value);
|
|
113
|
+
uint16_t U2BE(const uint8_t *buf, size_t off);
|
|
114
|
+
uint32_t U4BE(const uint8_t *buf, size_t off);
|
|
113
115
|
void cx_memxor(uint8_t *buf1, const uint8_t *buf2, size_t len);
|
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
#define _SDK_2_0_
|
|
2
|
+
#include <err.h>
|
|
3
|
+
#include <stdbool.h>
|
|
4
|
+
#include <stdio.h>
|
|
5
|
+
#include <stdlib.h>
|
|
6
|
+
|
|
7
|
+
#include "cx.h"
|
|
8
|
+
#include "cx_utils.h"
|
|
9
|
+
#include "os_pki.h"
|
|
10
|
+
#include "os_signature.h"
|
|
11
|
+
|
|
12
|
+
#define OS_PKI_DIGEST_MAX_LEN (64)
|
|
13
|
+
#define OS_PKI_TLV_TAG_OFFSET (0)
|
|
14
|
+
#define OS_PKI_TLV_LENGTH_OFFSET (1)
|
|
15
|
+
#define OS_PKI_TLV_VALUE_OFFSET (2)
|
|
16
|
+
#define OS_PKI_SEMVER_VERSION_LEN (6)
|
|
17
|
+
#define SWO_OK (0x0000)
|
|
18
|
+
|
|
19
|
+
typedef struct os_pki_s {
|
|
20
|
+
uint8_t key_usage;
|
|
21
|
+
uint8_t signer_sign_algo;
|
|
22
|
+
uint8_t pk_sign_algo;
|
|
23
|
+
uint8_t trusted_name[CERTIFICATE_TRUSTED_NAME_MAXLEN];
|
|
24
|
+
size_t trusted_name_len;
|
|
25
|
+
uint16_t signer_id;
|
|
26
|
+
cx_ecfp_384_public_key_t public_key;
|
|
27
|
+
} os_pki_t;
|
|
28
|
+
|
|
29
|
+
static os_pki_t os_pki;
|
|
30
|
+
static uint8_t os_pki_set;
|
|
31
|
+
|
|
32
|
+
uint32_t os_pki_check_value(uint8_t *certificate_value,
|
|
33
|
+
cx_ecfp_384_public_key_t *cert_public_key)
|
|
34
|
+
{
|
|
35
|
+
size_t domain_len;
|
|
36
|
+
cx_ecpoint_t point;
|
|
37
|
+
uint32_t swo_error = SWO_OK;
|
|
38
|
+
cx_err_t error = CX_OK;
|
|
39
|
+
char cert_validity[OS_PKI_SEMVER_VERSION_LEN] = { 0 };
|
|
40
|
+
uint8_t tag = certificate_value[OS_PKI_TLV_TAG_OFFSET];
|
|
41
|
+
size_t version_nchars = 0;
|
|
42
|
+
|
|
43
|
+
switch (tag) {
|
|
44
|
+
case CERTIFICATE_TAG_STRUCTURE_TYPE:
|
|
45
|
+
if ((certificate_value[OS_PKI_TLV_VALUE_OFFSET] !=
|
|
46
|
+
C_os_pki_certificate_tag_info[tag].value) ||
|
|
47
|
+
(certificate_value[OS_PKI_TLV_LENGTH_OFFSET] !=
|
|
48
|
+
C_os_pki_certificate_tag_info[tag].field_len)) {
|
|
49
|
+
return 0x422F;
|
|
50
|
+
}
|
|
51
|
+
break;
|
|
52
|
+
case CERTIFICATE_TAG_VERSION:
|
|
53
|
+
if ((certificate_value[OS_PKI_TLV_VALUE_OFFSET] >=
|
|
54
|
+
C_os_pki_certificate_tag_info[tag].value) ||
|
|
55
|
+
(certificate_value[OS_PKI_TLV_LENGTH_OFFSET] !=
|
|
56
|
+
C_os_pki_certificate_tag_info[tag].field_len)) {
|
|
57
|
+
return 0x4230;
|
|
58
|
+
}
|
|
59
|
+
break;
|
|
60
|
+
case CERTIFICATE_TAG_VALIDITY:
|
|
61
|
+
if (certificate_value[OS_PKI_TLV_LENGTH_OFFSET] !=
|
|
62
|
+
C_os_pki_certificate_tag_info[tag].field_len) {
|
|
63
|
+
return 0x4231;
|
|
64
|
+
}
|
|
65
|
+
cert_validity[version_nchars] =
|
|
66
|
+
'0' + certificate_value[OS_PKI_TLV_VALUE_OFFSET];
|
|
67
|
+
cert_validity[++version_nchars] = '.';
|
|
68
|
+
cert_validity[++version_nchars] =
|
|
69
|
+
'0' + certificate_value[OS_PKI_TLV_VALUE_OFFSET + 1];
|
|
70
|
+
cert_validity[++version_nchars] = '.';
|
|
71
|
+
cert_validity[++version_nchars] =
|
|
72
|
+
'0' + certificate_value[OS_PKI_TLV_VALUE_OFFSET + 2];
|
|
73
|
+
// Handle patch version greater than 10
|
|
74
|
+
if (certificate_value[OS_PKI_TLV_VALUE_OFFSET + 2] >= 10) {
|
|
75
|
+
cert_validity[version_nchars] =
|
|
76
|
+
'0' + certificate_value[OS_PKI_TLV_VALUE_OFFSET + 2] / 10;
|
|
77
|
+
cert_validity[++version_nchars] =
|
|
78
|
+
'0' + certificate_value[OS_PKI_TLV_VALUE_OFFSET + 2] % 10;
|
|
79
|
+
}
|
|
80
|
+
if (strncmp(VERSION, cert_validity, version_nchars + 1) > 0) {
|
|
81
|
+
return 0x4231;
|
|
82
|
+
}
|
|
83
|
+
break;
|
|
84
|
+
case CERTIFICATE_TAG_VALIDITY_INDEX:
|
|
85
|
+
if ((U4BE(certificate_value, OS_PKI_TLV_VALUE_OFFSET) <=
|
|
86
|
+
C_os_pki_certificate_tag_info[tag].value) ||
|
|
87
|
+
(certificate_value[OS_PKI_TLV_LENGTH_OFFSET] !=
|
|
88
|
+
C_os_pki_certificate_tag_info[tag].field_len)) {
|
|
89
|
+
return 0x4232;
|
|
90
|
+
}
|
|
91
|
+
break;
|
|
92
|
+
case CERTIFICATE_TAG_CHALLENGE:
|
|
93
|
+
break;
|
|
94
|
+
case CERTIFICATE_TAG_SIGNER_KEY_ID:
|
|
95
|
+
if ((U2BE(certificate_value, OS_PKI_TLV_VALUE_OFFSET) >=
|
|
96
|
+
C_os_pki_certificate_tag_info[tag].value) ||
|
|
97
|
+
(certificate_value[OS_PKI_TLV_LENGTH_OFFSET] !=
|
|
98
|
+
C_os_pki_certificate_tag_info[tag].field_len)) {
|
|
99
|
+
return 0x4233;
|
|
100
|
+
}
|
|
101
|
+
os_pki.signer_id = U2BE(certificate_value, OS_PKI_TLV_VALUE_OFFSET);
|
|
102
|
+
break;
|
|
103
|
+
case CERTIFICATE_TAG_SIGN_ALGO_ID:
|
|
104
|
+
if ((certificate_value[OS_PKI_TLV_VALUE_OFFSET] >=
|
|
105
|
+
C_os_pki_certificate_tag_info[tag].value) ||
|
|
106
|
+
(certificate_value[OS_PKI_TLV_LENGTH_OFFSET] !=
|
|
107
|
+
C_os_pki_certificate_tag_info[tag].field_len)) {
|
|
108
|
+
return 0x4234;
|
|
109
|
+
}
|
|
110
|
+
os_pki.signer_sign_algo = certificate_value[OS_PKI_TLV_VALUE_OFFSET];
|
|
111
|
+
break;
|
|
112
|
+
case CERTIFICATE_TAG_TIME_VALIDITY:
|
|
113
|
+
if (certificate_value[OS_PKI_TLV_LENGTH_OFFSET] !=
|
|
114
|
+
C_os_pki_certificate_tag_info[tag].field_len) {
|
|
115
|
+
return 0x423B;
|
|
116
|
+
}
|
|
117
|
+
break;
|
|
118
|
+
case CERTIFICATE_TAG_PUBLIC_KEY_ID:
|
|
119
|
+
if ((U2BE(certificate_value, OS_PKI_TLV_VALUE_OFFSET) >=
|
|
120
|
+
C_os_pki_certificate_tag_info[tag].value) ||
|
|
121
|
+
(certificate_value[OS_PKI_TLV_LENGTH_OFFSET] !=
|
|
122
|
+
C_os_pki_certificate_tag_info[tag].field_len)) {
|
|
123
|
+
return 0x4235;
|
|
124
|
+
}
|
|
125
|
+
break;
|
|
126
|
+
case CERTIFICATE_TAG_TRUSTED_NAME:
|
|
127
|
+
if (certificate_value[OS_PKI_TLV_LENGTH_OFFSET] >
|
|
128
|
+
CERTIFICATE_TRUSTED_NAME_MAXLEN) {
|
|
129
|
+
return 0x423A;
|
|
130
|
+
}
|
|
131
|
+
memcpy(os_pki.trusted_name, certificate_value + OS_PKI_TLV_VALUE_OFFSET,
|
|
132
|
+
certificate_value[OS_PKI_TLV_LENGTH_OFFSET]);
|
|
133
|
+
os_pki.trusted_name_len = certificate_value[OS_PKI_TLV_LENGTH_OFFSET];
|
|
134
|
+
break;
|
|
135
|
+
case CERTIFICATE_TAG_PUBLIC_KEY_USAGE:
|
|
136
|
+
if ((certificate_value[OS_PKI_TLV_VALUE_OFFSET] >=
|
|
137
|
+
C_os_pki_certificate_tag_info[tag].value) ||
|
|
138
|
+
(certificate_value[OS_PKI_TLV_LENGTH_OFFSET] !=
|
|
139
|
+
C_os_pki_certificate_tag_info[tag].field_len)) {
|
|
140
|
+
return 0x4236;
|
|
141
|
+
}
|
|
142
|
+
os_pki.key_usage = certificate_value[OS_PKI_TLV_VALUE_OFFSET];
|
|
143
|
+
break;
|
|
144
|
+
case CERTIFICATE_TAG_PUBLIC_KEY_CURVE_ID:
|
|
145
|
+
if ((certificate_value[OS_PKI_TLV_VALUE_OFFSET] >=
|
|
146
|
+
C_os_pki_certificate_tag_info[tag].value) ||
|
|
147
|
+
(certificate_value[OS_PKI_TLV_LENGTH_OFFSET] !=
|
|
148
|
+
C_os_pki_certificate_tag_info[tag].field_len)) {
|
|
149
|
+
return 0x4237;
|
|
150
|
+
}
|
|
151
|
+
cert_public_key->curve = certificate_value[OS_PKI_TLV_VALUE_OFFSET];
|
|
152
|
+
break;
|
|
153
|
+
case CERTIFICATE_TAG_COMPRESSED_PUBLIC_KEY:
|
|
154
|
+
/* Decompress key and initialize os_pki.public_key */
|
|
155
|
+
CX_CHECK(
|
|
156
|
+
sys_cx_ecdomain_parameters_length(cert_public_key->curve, &domain_len));
|
|
157
|
+
CX_CHECK(sys_cx_bn_lock(domain_len, 0));
|
|
158
|
+
CX_CHECK(sys_cx_ecpoint_alloc(&point, cert_public_key->curve));
|
|
159
|
+
/* If the prefix is 02, the y-coordinate is even otherwise if the prefix is
|
|
160
|
+
* 03 the y-coordinate is odd */
|
|
161
|
+
CX_CHECK(sys_cx_ecpoint_decompress(
|
|
162
|
+
&point, certificate_value + OS_PKI_TLV_VALUE_OFFSET + 1,
|
|
163
|
+
certificate_value[OS_PKI_TLV_LENGTH_OFFSET] - 1,
|
|
164
|
+
certificate_value[OS_PKI_TLV_VALUE_OFFSET] & 0x1));
|
|
165
|
+
cert_public_key->W[0] = 0x04;
|
|
166
|
+
CX_CHECK(sys_cx_ecpoint_export(&point, cert_public_key->W + 1, domain_len,
|
|
167
|
+
cert_public_key->W + 1 + domain_len,
|
|
168
|
+
domain_len));
|
|
169
|
+
cert_public_key->W_len = 2 * domain_len + 1;
|
|
170
|
+
sys_cx_bn_unlock();
|
|
171
|
+
break;
|
|
172
|
+
case CERTIFICATE_TAG_PK_SIGN_ALGO_ID:
|
|
173
|
+
if ((certificate_value[OS_PKI_TLV_VALUE_OFFSET] >=
|
|
174
|
+
C_os_pki_certificate_tag_info[tag].value) ||
|
|
175
|
+
(certificate_value[OS_PKI_TLV_LENGTH_OFFSET] !=
|
|
176
|
+
C_os_pki_certificate_tag_info[tag].field_len)) {
|
|
177
|
+
return 0x4238;
|
|
178
|
+
}
|
|
179
|
+
os_pki.pk_sign_algo = certificate_value[OS_PKI_TLV_VALUE_OFFSET];
|
|
180
|
+
break;
|
|
181
|
+
case CERTIFICATE_TAG_TARGET_DEVICE:
|
|
182
|
+
if ((certificate_value[OS_PKI_TLV_VALUE_OFFSET] >=
|
|
183
|
+
C_os_pki_certificate_tag_info[tag].value) ||
|
|
184
|
+
(certificate_value[OS_PKI_TLV_LENGTH_OFFSET] !=
|
|
185
|
+
C_os_pki_certificate_tag_info[tag].field_len)) {
|
|
186
|
+
return 0x4239;
|
|
187
|
+
}
|
|
188
|
+
break;
|
|
189
|
+
case CERTIFICATE_TAG_DEPTH:
|
|
190
|
+
if ((certificate_value[OS_PKI_TLV_VALUE_OFFSET] >=
|
|
191
|
+
C_os_pki_certificate_tag_info[tag].value) ||
|
|
192
|
+
(certificate_value[OS_PKI_TLV_LENGTH_OFFSET] !=
|
|
193
|
+
C_os_pki_certificate_tag_info[tag].field_len)) {
|
|
194
|
+
return 0x423C;
|
|
195
|
+
}
|
|
196
|
+
break;
|
|
197
|
+
default:
|
|
198
|
+
return 0x422D;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
end:
|
|
202
|
+
sys_cx_bn_unlock();
|
|
203
|
+
if (error) {
|
|
204
|
+
swo_error = 0x3302;
|
|
205
|
+
}
|
|
206
|
+
return swo_error;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
static void os_pki_get_next_tag(uint8_t *certificate, uint32_t *offset)
|
|
210
|
+
{
|
|
211
|
+
uint8_t tag = certificate[*offset];
|
|
212
|
+
(*offset)++;
|
|
213
|
+
if (C_os_pki_certificate_tag_info[tag].field_len ==
|
|
214
|
+
CERTIFICATE_FIELD_VAR_LEN) {
|
|
215
|
+
*offset += 1 + certificate[*offset];
|
|
216
|
+
} else {
|
|
217
|
+
*offset += 1 + C_os_pki_certificate_tag_info[tag].field_len;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
static cx_sign_algo_t os_pki_get_signature_algorithm(uint8_t cert_sign_algo_id)
|
|
222
|
+
{
|
|
223
|
+
switch (cert_sign_algo_id) {
|
|
224
|
+
case CERTIFICATE_SIGN_ALGO_ID_ECDSA_SHA256:
|
|
225
|
+
case CERTIFICATE_SIGN_ALGO_ID_ECDSA_SHA3_256:
|
|
226
|
+
case CERTIFICATE_SIGN_ALGO_ID_ECDSA_KECCAK_256:
|
|
227
|
+
case CERTIFICATE_SIGN_ALGO_ID_ECDSA_RIPEMD160:
|
|
228
|
+
return CX_SIGN_ALGO_ECDSA_RND;
|
|
229
|
+
case CERTIFICATE_SIGN_ALGO_ID_EDDSA_SHA512:
|
|
230
|
+
return CX_SIGN_ALGO_EDDSA_SHA512;
|
|
231
|
+
default:
|
|
232
|
+
return CX_SIGN_ALGO_UNKNOWN;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
return CX_SIGN_ALGO_UNKNOWN;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
uint32_t sys_os_pki_load_certificate(uint8_t expected_key_usage,
|
|
239
|
+
uint8_t *certificate,
|
|
240
|
+
size_t certificate_len,
|
|
241
|
+
uint8_t *trusted_name,
|
|
242
|
+
size_t *trusted_name_len,
|
|
243
|
+
cx_ecfp_384_public_key_t *public_key)
|
|
244
|
+
{
|
|
245
|
+
uint32_t offset;
|
|
246
|
+
uint8_t cert_hash[OS_PKI_DIGEST_MAX_LEN] = { 0 };
|
|
247
|
+
bool is_verified = false;
|
|
248
|
+
cx_hash_ctx hash_ctx;
|
|
249
|
+
size_t digest_len;
|
|
250
|
+
cx_sign_algo_t sign_algo;
|
|
251
|
+
uint32_t swo_error = SWO_OK;
|
|
252
|
+
|
|
253
|
+
os_pki_set = 0;
|
|
254
|
+
|
|
255
|
+
for (offset = 0; offset < certificate_len;) {
|
|
256
|
+
if (CERTIFICATE_TAG_SIGNATURE == certificate[offset]) {
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
if ((swo_error = os_pki_check_value(certificate + offset, public_key)) !=
|
|
260
|
+
SWO_OK) {
|
|
261
|
+
explicit_bzero(&os_pki, sizeof(os_pki));
|
|
262
|
+
return swo_error;
|
|
263
|
+
}
|
|
264
|
+
os_pki_get_next_tag(certificate, &offset);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
if (expected_key_usage != os_pki.key_usage) {
|
|
268
|
+
explicit_bzero(&os_pki, sizeof(os_pki));
|
|
269
|
+
return 0x422E;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
if ((CX_SHA3_256 == C_os_sign_algo_hash_info[os_pki.signer_sign_algo]) ||
|
|
273
|
+
(CX_KECCAK == C_os_sign_algo_hash_info[os_pki.signer_sign_algo])) {
|
|
274
|
+
spec_cx_hash_init_ex(&hash_ctx,
|
|
275
|
+
C_os_sign_algo_hash_info[os_pki.signer_sign_algo],
|
|
276
|
+
CX_SHA3_256_SIZE);
|
|
277
|
+
} else {
|
|
278
|
+
spec_cx_hash_init(&hash_ctx,
|
|
279
|
+
C_os_sign_algo_hash_info[os_pki.signer_sign_algo]);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
spec_cx_hash_update(&hash_ctx, certificate, offset);
|
|
283
|
+
|
|
284
|
+
spec_cx_hash_final(&hash_ctx, cert_hash);
|
|
285
|
+
digest_len = spec_cx_hash_get_size(&hash_ctx);
|
|
286
|
+
explicit_bzero(&hash_ctx, sizeof(hash_ctx));
|
|
287
|
+
|
|
288
|
+
// Skip signature tag
|
|
289
|
+
offset++;
|
|
290
|
+
switch (os_pki.signer_id) {
|
|
291
|
+
case CERTIFICATE_KEY_ID_LEDGER_ROOT_V3:
|
|
292
|
+
is_verified = os_ecdsa_verify_with_root_ca(
|
|
293
|
+
ROOT_CA_V3_KEY_ID, cert_hash, digest_len,
|
|
294
|
+
certificate + offset + OS_PKI_TLV_LENGTH_OFFSET, certificate[offset]);
|
|
295
|
+
break;
|
|
296
|
+
default:
|
|
297
|
+
sign_algo = os_pki_get_signature_algorithm(os_pki.signer_sign_algo);
|
|
298
|
+
is_verified = cx_verify(
|
|
299
|
+
sign_algo, (cx_ecfp_public_key_t *)&os_pki.public_key, cert_hash,
|
|
300
|
+
digest_len, certificate + offset + OS_PKI_TLV_LENGTH_OFFSET,
|
|
301
|
+
certificate[offset]);
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
if (!is_verified) {
|
|
306
|
+
explicit_bzero(&os_pki, sizeof(os_pki));
|
|
307
|
+
return 0x5720;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
cx_ecdsa_internal_init_public_key(public_key->curve, public_key->W,
|
|
311
|
+
public_key->W_len,
|
|
312
|
+
(cx_ecfp_public_key_t *)&os_pki.public_key);
|
|
313
|
+
|
|
314
|
+
if ((trusted_name != NULL) && (trusted_name_len != NULL)) {
|
|
315
|
+
memcpy(trusted_name, os_pki.trusted_name, os_pki.trusted_name_len);
|
|
316
|
+
*trusted_name_len = os_pki.trusted_name_len;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
if (SWO_OK == swo_error) {
|
|
320
|
+
os_pki_set = 1;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
return swo_error;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
bool sys_os_pki_verify(uint8_t *descriptor_hash, size_t descriptor_hash_len,
|
|
327
|
+
uint8_t *signature, size_t signature_len)
|
|
328
|
+
{
|
|
329
|
+
cx_sign_algo_t sign_algo =
|
|
330
|
+
os_pki_get_signature_algorithm(os_pki.pk_sign_algo);
|
|
331
|
+
|
|
332
|
+
if (os_pki_set != 1) {
|
|
333
|
+
return false;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
return cx_verify(sign_algo, (cx_ecfp_public_key_t *)&os_pki.public_key,
|
|
337
|
+
descriptor_hash, descriptor_hash_len, signature,
|
|
338
|
+
signature_len);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
uint32_t sys_os_pki_get_info(uint8_t *key_usage, uint8_t *trusted_name,
|
|
342
|
+
size_t *trusted_name_len,
|
|
343
|
+
cx_ecfp_384_public_key_t *public_key)
|
|
344
|
+
{
|
|
345
|
+
if (os_pki_set != 1) {
|
|
346
|
+
return 0x590E;
|
|
347
|
+
}
|
|
348
|
+
*key_usage = os_pki.key_usage;
|
|
349
|
+
memcpy(trusted_name, os_pki.trusted_name, os_pki.trusted_name_len);
|
|
350
|
+
*trusted_name_len = os_pki.trusted_name_len;
|
|
351
|
+
if (0 == cx_ecdsa_internal_init_public_key(
|
|
352
|
+
os_pki.public_key.curve, os_pki.public_key.W,
|
|
353
|
+
os_pki.public_key.W_len, (cx_ecfp_public_key_t *)public_key)) {
|
|
354
|
+
return 0x3202;
|
|
355
|
+
}
|
|
356
|
+
return SWO_OK;
|
|
357
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
#ifndef OS_PKI_H
|
|
2
|
+
#define OS_PKI_H
|
|
3
|
+
|
|
4
|
+
#include "cxlib.h"
|
|
5
|
+
#include <stddef.h>
|
|
6
|
+
#include <stdint.h>
|
|
7
|
+
|
|
8
|
+
/** Certificate field with a variable length */
|
|
9
|
+
#define CERTIFICATE_FIELD_VAR_LEN (0xFF)
|
|
10
|
+
/** Certificate field with a non predefined value */
|
|
11
|
+
#define CERTIFICATE_FIELD_UNKNOWN_VALUE (0xFFFFFFFF)
|
|
12
|
+
/** Certificate validity index minimum value */
|
|
13
|
+
#define CERTIFICATE_VALIDITY_INDEX (0x00000001)
|
|
14
|
+
/** Certificate structure type */
|
|
15
|
+
#define CERTIFICATE_STRUCTURE_TYPE_CERTIFICATE (0x01)
|
|
16
|
+
/** Maximum certificate trusted name length */
|
|
17
|
+
#define CERTIFICATE_TRUSTED_NAME_MAXLEN (32)
|
|
18
|
+
|
|
19
|
+
// Fake OS version
|
|
20
|
+
#define VERSION "1.0.0"
|
|
21
|
+
|
|
22
|
+
/** Certificate tags associated to each certificate field */
|
|
23
|
+
// clang-format off
|
|
24
|
+
typedef enum {
|
|
25
|
+
CERTIFICATE_TAG_STRUCTURE_TYPE = 0x01, ///< Structure type
|
|
26
|
+
CERTIFICATE_TAG_VERSION = 0x02, ///< Certificate version
|
|
27
|
+
CERTIFICATE_TAG_VALIDITY = 0x10, ///< Certificate validity
|
|
28
|
+
CERTIFICATE_TAG_VALIDITY_INDEX = 0x11, ///< Certificate validity index
|
|
29
|
+
CERTIFICATE_TAG_CHALLENGE = 0x12, ///< Challenge value
|
|
30
|
+
CERTIFICATE_TAG_SIGNER_KEY_ID = 0x13, ///< Signer key ID
|
|
31
|
+
CERTIFICATE_TAG_SIGN_ALGO_ID = 0x14, ///< Signature algorithm with the signer key
|
|
32
|
+
CERTIFICATE_TAG_SIGNATURE = 0x15, ///< Signature
|
|
33
|
+
CERTIFICATE_TAG_TIME_VALIDITY = 0x16, ///< Time validity
|
|
34
|
+
CERTIFICATE_TAG_TRUSTED_NAME = 0x20, ///< Trusted name
|
|
35
|
+
CERTIFICATE_TAG_PUBLIC_KEY_ID = 0x30, ///< Public key ID
|
|
36
|
+
CERTIFICATE_TAG_PUBLIC_KEY_USAGE = 0x31, ///< Public key usage
|
|
37
|
+
CERTIFICATE_TAG_PUBLIC_KEY_CURVE_ID = 0x32, ///< Curve ID on which the public key is defined
|
|
38
|
+
CERTIFICATE_TAG_COMPRESSED_PUBLIC_KEY = 0x33, ///< Public key in compressed form
|
|
39
|
+
CERTIFICATE_TAG_PK_SIGN_ALGO_ID = 0x34, ///< Signature algorithm with the public key
|
|
40
|
+
CERTIFICATE_TAG_TARGET_DEVICE = 0x35, ///< Target device
|
|
41
|
+
CERTIFICATE_TAG_DEPTH = 0x36 ///< Certificate depth
|
|
42
|
+
} os_pki_tag_t;
|
|
43
|
+
// clang-format on
|
|
44
|
+
|
|
45
|
+
/** Certificate version possible values */
|
|
46
|
+
enum {
|
|
47
|
+
CERTIFICATE_VERSION_02 = 0x02, ///< Certificate version 2
|
|
48
|
+
CERTIFICATE_VERSION_UNKNOWN
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
/** Certificate key ID possible values */
|
|
52
|
+
enum {
|
|
53
|
+
CERTIFICATE_KEY_ID_TEST = 0x0000,
|
|
54
|
+
CERTIFICATE_KEY_ID_PERSOV2,
|
|
55
|
+
CERTIFICATE_KEY_ID_LEDGER_ROOT_V3,
|
|
56
|
+
CERTIFICATE_KEY_ID_PLUGIN_SELECTOR,
|
|
57
|
+
CERTIFICATE_KEY_ID_NFT_METADATA,
|
|
58
|
+
CERTIFICATE_KEY_ID_PARTNER_METADATA,
|
|
59
|
+
CERTIFICATE_KEY_ID_ERC20_METADATA,
|
|
60
|
+
CERTIFICATE_KEY_ID_DOMAIN_METADATA,
|
|
61
|
+
CERTIFICATE_KEY_ID_UNKNOWN
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/** Signature algorithm possible values */
|
|
65
|
+
enum {
|
|
66
|
+
CERTIFICATE_SIGN_ALGO_ID_ECDSA_SHA256 = 0x01,
|
|
67
|
+
CERTIFICATE_SIGN_ALGO_ID_ECDSA_SHA3_256 = 0x02,
|
|
68
|
+
CERTIFICATE_SIGN_ALGO_ID_ECDSA_KECCAK_256 = 0x03,
|
|
69
|
+
CERTIFICATE_SIGN_ALGO_ID_ECDSA_RIPEMD160 = 0x04,
|
|
70
|
+
CERTIFICATE_SIGN_ALGO_ID_EDDSA_SHA512 = 0x10,
|
|
71
|
+
CERTIFICATE_SIGN_ALGO_ID_UNKNOWN
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
/** Public key usages possible values */
|
|
75
|
+
enum {
|
|
76
|
+
CERTIFICATE_PUBLIC_KEY_USAGE_GENUINE_CHECK = 0x01,
|
|
77
|
+
CERTIFICATE_PUBLIC_KEY_USAGE_EXCHANGE_PAYLOAD,
|
|
78
|
+
CERTIFICATE_PUBLIC_KEY_USAGE_NFT_METADATA,
|
|
79
|
+
CERTIFICATE_PUBLIC_KEY_USAGE_TRUSTED_NAME,
|
|
80
|
+
CERTIFICATE_PUBLIC_KEY_USAGE_BACKUP_PROVIDER,
|
|
81
|
+
CERTIFICATE_PUBLIC_KEY_USAGE_RECOVER_ORCHESTRATOR,
|
|
82
|
+
CERTIFICATE_PUBLIC_KEY_USAGE_PLUGIN_METADATA,
|
|
83
|
+
CERTIFICATE_PUBLIC_KEY_USAGE_COIN_META,
|
|
84
|
+
CERTIFICATE_PUBLIC_KEY_USAGE_SEED_ID_AUTH,
|
|
85
|
+
CERTIFICATE_PUBLIC_KEY_USAGE_UNKNOWN,
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
/** Target device possible values */
|
|
89
|
+
enum {
|
|
90
|
+
CERTIFICATE_TARGET_DEVICE_NANOS = 0x01,
|
|
91
|
+
CERTIFICATE_TARGET_DEVICE_NANOX,
|
|
92
|
+
CERTIFICATE_TARGET_DEVICE_NANOSP,
|
|
93
|
+
CERTIFICATE_TARGET_DEVICE_STAX,
|
|
94
|
+
CERTIFICATE_TARGET_DEVICE_FLEX,
|
|
95
|
+
CERTIFICATE_TARGET_DEVICE_UNKNOWN
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
/** Structure to store field length and field maximum value */
|
|
99
|
+
typedef struct {
|
|
100
|
+
uint32_t value;
|
|
101
|
+
uint8_t field_len;
|
|
102
|
+
} os_pki_certificate_tag_info_t;
|
|
103
|
+
|
|
104
|
+
// clang-format off
|
|
105
|
+
/** Array of field length and field maximum value corresponding to each tag */
|
|
106
|
+
static const os_pki_certificate_tag_info_t C_os_pki_certificate_tag_info[] = {
|
|
107
|
+
[CERTIFICATE_TAG_STRUCTURE_TYPE] = {CERTIFICATE_STRUCTURE_TYPE_CERTIFICATE, 0x01 },
|
|
108
|
+
[CERTIFICATE_TAG_VERSION] = {CERTIFICATE_VERSION_UNKNOWN, 0x01 },
|
|
109
|
+
[CERTIFICATE_TAG_VALIDITY] = {CERTIFICATE_FIELD_UNKNOWN_VALUE, 0x04 },
|
|
110
|
+
[CERTIFICATE_TAG_VALIDITY_INDEX] = {CERTIFICATE_VALIDITY_INDEX, 0x04 },
|
|
111
|
+
[CERTIFICATE_TAG_CHALLENGE] = {CERTIFICATE_FIELD_UNKNOWN_VALUE, CERTIFICATE_FIELD_VAR_LEN},
|
|
112
|
+
[CERTIFICATE_TAG_SIGNER_KEY_ID] = {CERTIFICATE_KEY_ID_UNKNOWN, 0x02 },
|
|
113
|
+
[CERTIFICATE_TAG_SIGN_ALGO_ID] = {CERTIFICATE_SIGN_ALGO_ID_UNKNOWN, 0x01 },
|
|
114
|
+
[CERTIFICATE_TAG_TIME_VALIDITY] = {CERTIFICATE_FIELD_UNKNOWN_VALUE, 0x04 },
|
|
115
|
+
[CERTIFICATE_TAG_TRUSTED_NAME] = {CERTIFICATE_FIELD_UNKNOWN_VALUE, CERTIFICATE_FIELD_VAR_LEN},
|
|
116
|
+
[CERTIFICATE_TAG_PUBLIC_KEY_ID] = {CERTIFICATE_KEY_ID_UNKNOWN, 0x02 },
|
|
117
|
+
[CERTIFICATE_TAG_PUBLIC_KEY_USAGE] = {CERTIFICATE_PUBLIC_KEY_USAGE_UNKNOWN, 0x01 },
|
|
118
|
+
[CERTIFICATE_TAG_PUBLIC_KEY_CURVE_ID] = {CX_CURVE_TWISTED_EDWARDS_END, 0x01 },
|
|
119
|
+
[CERTIFICATE_TAG_COMPRESSED_PUBLIC_KEY] = {CERTIFICATE_KEY_ID_UNKNOWN, CERTIFICATE_FIELD_VAR_LEN},
|
|
120
|
+
[CERTIFICATE_TAG_PK_SIGN_ALGO_ID] = {CERTIFICATE_SIGN_ALGO_ID_UNKNOWN, 0x01 },
|
|
121
|
+
[CERTIFICATE_TAG_TARGET_DEVICE] = {CERTIFICATE_TARGET_DEVICE_UNKNOWN, 0x01 },
|
|
122
|
+
[CERTIFICATE_TAG_SIGNATURE] = {CERTIFICATE_FIELD_UNKNOWN_VALUE, CERTIFICATE_FIELD_VAR_LEN},
|
|
123
|
+
[CERTIFICATE_TAG_DEPTH] = {CERTIFICATE_FIELD_UNKNOWN_VALUE, 0x01 },
|
|
124
|
+
};
|
|
125
|
+
// clang-format on
|
|
126
|
+
|
|
127
|
+
static const cx_md_t C_os_sign_algo_hash_info[] = {
|
|
128
|
+
[CERTIFICATE_SIGN_ALGO_ID_ECDSA_SHA256] = CX_SHA256,
|
|
129
|
+
[CERTIFICATE_SIGN_ALGO_ID_ECDSA_SHA3_256] = CX_SHA3_256,
|
|
130
|
+
[CERTIFICATE_SIGN_ALGO_ID_ECDSA_KECCAK_256] = CX_KECCAK,
|
|
131
|
+
[CERTIFICATE_SIGN_ALGO_ID_ECDSA_RIPEMD160] = CX_RIPEMD160,
|
|
132
|
+
[CERTIFICATE_SIGN_ALGO_ID_EDDSA_SHA512] = CX_SHA512
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
uint32_t sys_os_pki_load_certificate(uint8_t expected_key_usage,
|
|
136
|
+
uint8_t *certificate,
|
|
137
|
+
size_t certificate_len,
|
|
138
|
+
uint8_t *trusted_name,
|
|
139
|
+
size_t *trusted_name_len,
|
|
140
|
+
cx_ecfp_384_public_key_t *public_key);
|
|
141
|
+
|
|
142
|
+
bool sys_os_pki_verify(uint8_t *descriptor_hash, size_t descriptor_hash_len,
|
|
143
|
+
uint8_t *signature, size_t signature_len);
|
|
144
|
+
|
|
145
|
+
uint32_t sys_os_pki_get_info(uint8_t *key_usage, uint8_t *trusted_name,
|
|
146
|
+
size_t *trusted_name_len,
|
|
147
|
+
cx_ecfp_384_public_key_t *public_key);
|
|
148
|
+
|
|
149
|
+
#endif /* OS_PKI_H */
|