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.
Files changed (444) hide show
  1. {speculos-0.10.1.dev2/speculos.egg-info → speculos-0.10.1.dev7}/PKG-INFO +1 -1
  2. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/sdk/bolos_syscalls_unified_sdk.h +4 -0
  3. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/__version__.py +2 -2
  4. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/resources/launcher +0 -0
  5. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7/speculos.egg-info}/PKG-INFO +1 -1
  6. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos.egg-info/SOURCES.txt +4 -0
  7. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/CMakeLists.txt +2 -0
  8. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_hash.c +1 -0
  9. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_hash.h +3 -0
  10. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_utils.c +11 -0
  11. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_utils.h +2 -0
  12. speculos-0.10.1.dev7/src/bolos/os_pki.c +357 -0
  13. speculos-0.10.1.dev7/src/bolos/os_pki.h +149 -0
  14. speculos-0.10.1.dev7/src/bolos/os_signature.c +163 -0
  15. speculos-0.10.1.dev7/src/bolos/os_signature.h +43 -0
  16. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/emulate_unified_sdk.c +21 -0
  17. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.clang-format +0 -0
  18. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.codespell-ignore +0 -0
  19. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.dockerignore +0 -0
  20. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.github/workflows/continuous-integration-workflow.yml +0 -0
  21. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.github/workflows/documentation.yml +0 -0
  22. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.github/workflows/fast-checks.yml +0 -0
  23. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.github/workflows/force-rebase.yml +0 -0
  24. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.github/workflows/reusable_ragger_tests_latest_speculos.yml +0 -0
  25. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.github/workflows/speculos-builder.yml +0 -0
  26. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/.gitignore +0 -0
  27. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/CHANGELOG.md +0 -0
  28. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/CMakeLists.txt +0 -0
  29. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/COPYING +0 -0
  30. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/COPYING.LESSER +0 -0
  31. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/Dockerfile +0 -0
  32. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/MANIFEST.in +0 -0
  33. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/Pipfile +0 -0
  34. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/Pipfile.lock +0 -0
  35. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/README.md +0 -0
  36. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/README.md +0 -0
  37. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/blue#btc#1.5#00000000.elf +0 -0
  38. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/blue#ram-page#blue-2.2.5#00000000.elf +0 -0
  39. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/btc-test.elf +0 -0
  40. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/btc.elf +0 -0
  41. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc#1.5#00000000.elf +0 -0
  42. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc#1.6#29717f9c.elf +0 -0
  43. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc#1.6#6bd0a5f8.elf +0 -0
  44. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc#2.0#ce796c1b.elf +0 -0
  45. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc#2.1#1c8db8da.elf +0 -0
  46. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc-test#1.5#00000000.elf +0 -0
  47. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc-test#1.6#29717f9c.elf +0 -0
  48. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc-test#1.6#6bd0a5f8.elf +0 -0
  49. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc-test#2.0#ce796c1b.elf +0 -0
  50. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanos#btc-test#2.1#1c8db8da.elf +0 -0
  51. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanosp#btc#1.0#a86c791b.elf +0 -0
  52. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanosp#btc#1.0.3#17bf7619.elf +0 -0
  53. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanosp#btc-test#1.0#a86c791b.elf +0 -0
  54. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanosp#btc-test#1.0.3#17bf7619.elf +0 -0
  55. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanox#btc#1.2#57272a0f.elf +0 -0
  56. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanox#btc#2.0.2#1c8db8da.elf +0 -0
  57. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/apps/nanox#btc-test#2.0.2#1c8db8da.elf +0 -0
  58. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/build.Dockerfile +0 -0
  59. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/clang-armv7m.cmake +0 -0
  60. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docker-compose.yml +0 -0
  61. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/CNAME +0 -0
  62. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/Makefile +0 -0
  63. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/_static/screenshot-api-nanos-btc.png +0 -0
  64. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/_static/screenshot-btc-nanos.png +0 -0
  65. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/conf.py +0 -0
  66. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/dev/ci.md +0 -0
  67. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/dev/getting_started.md +0 -0
  68. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/dev/index.rst +0 -0
  69. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/dev/internals.md +0 -0
  70. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/dev/tests.md +0 -0
  71. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/index.rst +0 -0
  72. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/installation/build.md +0 -0
  73. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/installation/index.rst +0 -0
  74. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/installation/wsl.md +0 -0
  75. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/requirements.txt +0 -0
  76. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/user/api.md +0 -0
  77. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/user/automation.md +0 -0
  78. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/user/clients.md +0 -0
  79. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/user/debug.md +0 -0
  80. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/user/docker.md +0 -0
  81. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/user/index.rst +0 -0
  82. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/user/macm1.md +0 -0
  83. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/user/semihosting.md +0 -0
  84. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/docs/user/usage.md +0 -0
  85. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/gcc-arm.cmake +0 -0
  86. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/lgtm.yml +0 -0
  87. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/pyproject.toml +0 -0
  88. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/sdk/bolos_syscalls_1.2.h +0 -0
  89. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/sdk/bolos_syscalls_1.5.h +0 -0
  90. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/sdk/bolos_syscalls_1.6.h +0 -0
  91. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/sdk/bolos_syscalls_2.0.h +0 -0
  92. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/sdk/bolos_syscalls_blue_2.2.5.h +0 -0
  93. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/sdk/bolos_syscalls_lnsp.h +0 -0
  94. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/setup.cfg +0 -0
  95. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/setup.py +0 -0
  96. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/__init__.py +0 -0
  97. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/__main__.py +0 -0
  98. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/README.md +0 -0
  99. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/__init__.py +0 -0
  100. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/apdu.py +0 -0
  101. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/api.py +0 -0
  102. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/automation.py +0 -0
  103. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/button.py +0 -0
  104. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/events.py +0 -0
  105. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/finger.py +0 -0
  106. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/resources/apdu.schema +0 -0
  107. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/resources/button.schema +0 -0
  108. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/resources/finger.schema +0 -0
  109. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/resources/ticker.schema +0 -0
  110. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/restful.py +0 -0
  111. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/screenshot.py +0 -0
  112. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/static/index.html +0 -0
  113. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/static/swagger/README.md +0 -0
  114. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/static/swagger/favicon-16x16.png +0 -0
  115. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/static/swagger/favicon-32x32.png +0 -0
  116. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/static/swagger/index.html +0 -0
  117. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/static/swagger/swagger-ui-bundle.js +0 -0
  118. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/static/swagger/swagger-ui-standalone-preset.js +0 -0
  119. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/static/swagger/swagger-ui.css +0 -0
  120. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/static/swagger/swagger.json +0 -0
  121. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/swagger.py +0 -0
  122. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/swagger.yaml +0 -0
  123. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/ticker.py +0 -0
  124. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/api/web_interface.py +0 -0
  125. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/client.py +0 -0
  126. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/flex-api-level-cx-18.elf +0 -0
  127. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/flex-api-level-cx-19.elf +0 -0
  128. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/flex-api-level-cx-20.elf +0 -0
  129. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/flex-api-level-cx-21.elf +0 -0
  130. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/flex-api-level-cx-22.elf +0 -0
  131. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanos-cx-2.0.elf +0 -0
  132. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanos-cx-2.1.elf +0 -0
  133. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanosp-api-level-cx-1.elf +0 -0
  134. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanosp-api-level-cx-12.elf +0 -0
  135. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanosp-api-level-cx-18.elf +0 -0
  136. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanosp-api-level-cx-22.elf +0 -0
  137. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanosp-api-level-cx-5.elf +0 -0
  138. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanosp-cx-1.0.3.elf +0 -0
  139. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanosp-cx-1.0.elf +0 -0
  140. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanox-api-level-cx-1.elf +0 -0
  141. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanox-api-level-cx-12.elf +0 -0
  142. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanox-api-level-cx-18.elf +0 -0
  143. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanox-api-level-cx-22.elf +0 -0
  144. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanox-api-level-cx-5.elf +0 -0
  145. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanox-cx-2.0.2.elf +0 -0
  146. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/nanox-cx-2.0.elf +0 -0
  147. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-1.elf +0 -0
  148. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-10.elf +0 -0
  149. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-11.elf +0 -0
  150. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-12.elf +0 -0
  151. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-13.elf +0 -0
  152. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-14.elf +0 -0
  153. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-15.elf +0 -0
  154. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-20.elf +0 -0
  155. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-21.elf +0 -0
  156. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-22.elf +0 -0
  157. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-3.elf +0 -0
  158. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-5.elf +0 -0
  159. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-7.elf +0 -0
  160. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-8.elf +0 -0
  161. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/cxlib/stax-api-level-cx-9.elf +0 -0
  162. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/flex-fonts-18.bin +0 -0
  163. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/flex-fonts-19.bin +0 -0
  164. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/flex-fonts-20.bin +0 -0
  165. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/flex-fonts-21.bin +0 -0
  166. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/flex-fonts-22.bin +0 -0
  167. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/nanosp-fonts-18.bin +0 -0
  168. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/nanosp-fonts-22.bin +0 -0
  169. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/nanox-fonts-18.bin +0 -0
  170. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/nanox-fonts-22.bin +0 -0
  171. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-1.bin +0 -0
  172. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-10.bin +0 -0
  173. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-11.bin +0 -0
  174. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-12.bin +0 -0
  175. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-13.bin +0 -0
  176. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-14.bin +0 -0
  177. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-15.bin +0 -0
  178. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-20.bin +0 -0
  179. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-21.bin +0 -0
  180. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-22.bin +0 -0
  181. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-3.bin +0 -0
  182. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-5.bin +0 -0
  183. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-7.bin +0 -0
  184. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-8.bin +0 -0
  185. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/fonts/stax-fonts-9.bin +0 -0
  186. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/main.py +0 -0
  187. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/__init__.py +0 -0
  188. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/apdu.py +0 -0
  189. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/automation.py +0 -0
  190. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/automation_server.py +0 -0
  191. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/bagl.py +0 -0
  192. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/bagl_font.py +0 -0
  193. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/bagl_glyph.py +0 -0
  194. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/button_tcp.py +0 -0
  195. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/display.py +0 -0
  196. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/finger_tcp.py +0 -0
  197. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/headless.py +0 -0
  198. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/icon.png +0 -0
  199. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/nbgl.py +0 -0
  200. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/ocr.py +0 -0
  201. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/readerror.py +0 -0
  202. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/resources/automation.schema +0 -0
  203. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/rle_custom.py +0 -0
  204. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/screen.py +0 -0
  205. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/screen_text.py +0 -0
  206. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/seproxyhal.py +0 -0
  207. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/struct.py +0 -0
  208. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/usb.py +0 -0
  209. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/mcu/vnc.py +0 -0
  210. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/observer.py +0 -0
  211. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/resources/vnc_server +0 -0
  212. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos/resources_importer.py +0 -0
  213. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos.egg-info/dependency_links.txt +0 -0
  214. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos.egg-info/entry_points.txt +0 -0
  215. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos.egg-info/requires.txt +0 -0
  216. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/speculos.egg-info/top_level.txt +0 -0
  217. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/bagl.c +0 -0
  218. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/bagl.h +0 -0
  219. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx.c +0 -0
  220. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx.h +0 -0
  221. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_aes.c +0 -0
  222. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_aes.h +0 -0
  223. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_aes_sdk2.c +0 -0
  224. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_blake2.h +0 -0
  225. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_blake2b.c +0 -0
  226. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_bls.c +0 -0
  227. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_bls.h +0 -0
  228. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_bls_fp2.c +0 -0
  229. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_bls_g2.c +0 -0
  230. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_bn.c +0 -0
  231. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_common.h +0 -0
  232. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_crc.c +0 -0
  233. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_crc.h +0 -0
  234. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_curve25519.c +0 -0
  235. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_curve25519.h +0 -0
  236. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_ec.c +0 -0
  237. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_ec.h +0 -0
  238. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_ec_domain.c +0 -0
  239. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_ecpoint.c +0 -0
  240. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_ed25519.c +0 -0
  241. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_ed25519.h +0 -0
  242. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_hkdf.c +0 -0
  243. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_hkdf.h +0 -0
  244. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_hmac.c +0 -0
  245. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_hmac.h +0 -0
  246. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_math.c +0 -0
  247. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_math.h +0 -0
  248. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_montgomery.c +0 -0
  249. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_mpi.c +0 -0
  250. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_ripemd160.c +0 -0
  251. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_rng_rfc6979.c +0 -0
  252. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_rng_rfc6979.h +0 -0
  253. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_scc.c +0 -0
  254. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_sha256.c +0 -0
  255. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_sha3.c +0 -0
  256. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_sha512.c +0 -0
  257. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_twisted_edwards.c +0 -0
  258. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cx_weierstrass.c +0 -0
  259. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cxlib.c +0 -0
  260. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/cxlib.h +0 -0
  261. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/default.c +0 -0
  262. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/endorsement.c +0 -0
  263. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/endorsement.h +0 -0
  264. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/exception.h +0 -0
  265. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/fonts_info.c +0 -0
  266. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/nbgl.c +0 -0
  267. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/nbgl.h +0 -0
  268. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/nbgl_rle.c +0 -0
  269. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/nbgl_rle.h +0 -0
  270. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/os.c +0 -0
  271. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/os_1.2.c +0 -0
  272. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/os_1.5.c +0 -0
  273. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/os_1.6.c +0 -0
  274. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/os_2.0.c +0 -0
  275. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/os_bip32.c +0 -0
  276. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/os_bip32.h +0 -0
  277. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/os_eip2333.c +0 -0
  278. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/seproxyhal.c +0 -0
  279. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/touch.c +0 -0
  280. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/bolos/touch.h +0 -0
  281. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/emulate.c +0 -0
  282. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/emulate.h +0 -0
  283. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/emulate_1.2.c +0 -0
  284. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/emulate_1.5.c +0 -0
  285. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/emulate_1.6.c +0 -0
  286. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/emulate_2.0.c +0 -0
  287. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/emulate_blue_2.2.5.c +0 -0
  288. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/emulate_lnsp_1.0.c +0 -0
  289. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/environment.c +0 -0
  290. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/environment.h +0 -0
  291. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/fonts.h +0 -0
  292. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/launcher.c +0 -0
  293. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/sdk.h +0 -0
  294. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/svc.c +0 -0
  295. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/svc.h +0 -0
  296. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/CMakeLists.txt +0 -0
  297. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursor.c +0 -0
  298. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursor.h +0 -0
  299. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/approved.h +0 -0
  300. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/bitcoin.h +0 -0
  301. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/blue.h +0 -0
  302. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/fabrice.h +0 -0
  303. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_00.h +0 -0
  304. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_01.h +0 -0
  305. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_02.h +0 -0
  306. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_03.h +0 -0
  307. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_04.h +0 -0
  308. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_05.h +0 -0
  309. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_06.h +0 -0
  310. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_07.h +0 -0
  311. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_08.h +0 -0
  312. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_09.h +0 -0
  313. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_10.h +0 -0
  314. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_11.h +0 -0
  315. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_12.h +0 -0
  316. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_13.h +0 -0
  317. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_14.h +0 -0
  318. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_15.h +0 -0
  319. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_16.h +0 -0
  320. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_17.h +0 -0
  321. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_18.h +0 -0
  322. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_19.h +0 -0
  323. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_20.h +0 -0
  324. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/frame_21.h +0 -0
  325. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/pizza.h +0 -0
  326. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/star.h +0 -0
  327. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/sword.h +0 -0
  328. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/cursors/verynice.h +0 -0
  329. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/seccomp-bpf.h +0 -0
  330. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/src/vnc/vnc_server.c +0 -0
  331. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/CMakeLists.txt +0 -0
  332. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/CMakeLists.txt +0 -0
  333. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/blake2b_kat.data +0 -0
  334. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/groestl_224_long_msg.data +0 -0
  335. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/groestl_224_short_msg.data +0 -0
  336. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/groestl_256_long_msg.data +0 -0
  337. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/groestl_256_short_msg.data +0 -0
  338. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/groestl_384_long_msg.data +0 -0
  339. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/groestl_384_short_msg.data +0 -0
  340. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/groestl_512_long_msg.data +0 -0
  341. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/groestl_512_short_msg.data +0 -0
  342. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/hmac.data +0 -0
  343. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/keccak_224_long_msg.data +0 -0
  344. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/keccak_224_short_msg.data +0 -0
  345. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/keccak_256_long_msg.data +0 -0
  346. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/keccak_256_short_msg.data +0 -0
  347. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/keccak_384_long_msg.data +0 -0
  348. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/keccak_384_short_msg.data +0 -0
  349. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/keccak_512_long_msg.data +0 -0
  350. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/keccak_512_short_msg.data +0 -0
  351. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha224_long_msg.data +0 -0
  352. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha224_short_msg.data +0 -0
  353. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha256_long_msg.data +0 -0
  354. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha256_short_msg.data +0 -0
  355. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha384_long_msg.data +0 -0
  356. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha384_short_msg.data +0 -0
  357. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha3_224_long_msg.data +0 -0
  358. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha3_224_short_msg.data +0 -0
  359. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha3_256_long_msg.data +0 -0
  360. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha3_256_short_msg.data +0 -0
  361. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha3_384_long_msg.data +0 -0
  362. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha3_384_short_msg.data +0 -0
  363. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha3_512_long_msg.data +0 -0
  364. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha3_512_short_msg.data +0 -0
  365. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha512_long_msg.data +0 -0
  366. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/sha512_short_msg.data +0 -0
  367. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/shake128_long_msg.data +0 -0
  368. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/shake128_short_msg.data +0 -0
  369. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/shake128_variable_output.data +0 -0
  370. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/shake256_long_msg.data +0 -0
  371. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/shake256_short_msg.data +0 -0
  372. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/cavp/shake256_variable_output.data +0 -0
  373. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/hello.c +0 -0
  374. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/nist_cavp.c +0 -0
  375. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/nist_cavp.h +0 -0
  376. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_aes.c +0 -0
  377. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_bip32.c +0 -0
  378. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_blake2.c +0 -0
  379. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_bls.c +0 -0
  380. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_bn.c +0 -0
  381. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_crc16.c +0 -0
  382. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_ec.c +0 -0
  383. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_ecdh.c +0 -0
  384. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_ecdsa.c +0 -0
  385. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_ecpoint.c +0 -0
  386. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_eddsa.c +0 -0
  387. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_eip2333.c +0 -0
  388. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_endorsement.c +0 -0
  389. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_hmac.c +0 -0
  390. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_math.c +0 -0
  391. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_mpi_rng.c +0 -0
  392. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_os_global_pin_is_validated.c +0 -0
  393. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_rfc6979.c +0 -0
  394. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_ripemd.c +0 -0
  395. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_sha2.c +0 -0
  396. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_sha3.c +0 -0
  397. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/test_slip21.c +0 -0
  398. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/wycheproof/X25519.data +0 -0
  399. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/wycheproof/X448.data +0 -0
  400. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/wycheproof/ecdh_secp256k1.data +0 -0
  401. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/syscalls/wycheproof/eddsa.data +0 -0
  402. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/test_environment.c +0 -0
  403. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/utils.c +0 -0
  404. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/c/utils.h +0 -0
  405. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/__init__.py +0 -0
  406. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/api/__init__.py +0 -0
  407. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/api/resources/automation.json +0 -0
  408. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/api/test_api.py +0 -0
  409. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/__init__.py +0 -0
  410. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/resources/__init__.py +0 -0
  411. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/resources/btc_getpubkey_blue.json +0 -0
  412. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/resources/btc_getpubkey_blue.png +0 -0
  413. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/resources/btc_getpubkey_nanos.json +0 -0
  414. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/resources/btc_getpubkey_nanos.png +0 -0
  415. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/resources/btc_getpubkey_nanosp.json +0 -0
  416. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/resources/btc_getpubkey_nanosp.png +0 -0
  417. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/resources/btc_getpubkey_nanox.json +0 -0
  418. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/resources/btc_getpubkey_nanox.png +0 -0
  419. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/test_btc.py +0 -0
  420. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/test_btc_testnet.py +0 -0
  421. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/test_ram_page.py +0 -0
  422. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/apps/test_vnc.py +0 -0
  423. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/conftest.py +0 -0
  424. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/mcu/__init__.py +0 -0
  425. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/mcu/resources/automation_invalid_action_args.json +0 -0
  426. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/mcu/resources/automation_invalid_action_name.json +0 -0
  427. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/mcu/resources/automation_invalid_rule_key.json +0 -0
  428. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/mcu/resources/automation_valid.json +0 -0
  429. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/mcu/test_automation.py +0 -0
  430. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/pytest.ini +0 -0
  431. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/test_resources_importer.py +0 -0
  432. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/unit/__init__.py +0 -0
  433. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/unit/test_client_Api.py +0 -0
  434. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tests/python/unit/test_client_SpeculosClient.py +0 -0
  435. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/clang-format.sh +0 -0
  436. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/cursor.py +0 -0
  437. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/debug.sh +0 -0
  438. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/gdbinit +0 -0
  439. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/gif-recorder.py +0 -0
  440. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/ledger-live-http-proxy.py +0 -0
  441. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/skins/handholding.png +0 -0
  442. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/skins/nano-blue.png +0 -0
  443. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/skins/unicorn.png +0 -0
  444. {speculos-0.10.1.dev2 → speculos-0.10.1.dev7}/tools/winamp.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: speculos
3
- Version: 0.10.1.dev2
3
+ Version: 0.10.1.dev7
4
4
  Summary: Ledger Blue, Stax, Flex and Nano S/S+/X application emulator
5
5
  Author-email: Ledger <hello@ledger.fr>
6
6
  Project-URL: Homepage, https://github.com/LedgerHQ/speculos
@@ -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.dev2'
16
- __version_tuple__ = version_tuple = (0, 10, 1, 'dev2')
15
+ __version__ = version = '0.10.1.dev7'
16
+ __version_tuple__ = version_tuple = (0, 10, 1, 'dev7')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: speculos
3
- Version: 0.10.1.dev2
3
+ Version: 0.10.1.dev7
4
4
  Summary: Ledger Blue, Stax, Flex and Nano S/S+/X application emulator
5
5
  Author-email: Ledger <hello@ledger.fr>
6
6
  Project-URL: Homepage, https://github.com/LedgerHQ/speculos
@@ -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
@@ -48,6 +48,8 @@ add_library(emu
48
48
  bolos/cx_hash.c
49
49
  bolos/cx_math.c
50
50
  bolos/default.c
51
+ bolos/os_pki.c
52
+ bolos/os_signature.c
51
53
  emulate.c
52
54
  emulate_1.2.c
53
55
  emulate_1.5.c
@@ -151,6 +151,7 @@ const cx_hash_info_t *spec_cx_hash_get_info(cx_md_t md_type)
151
151
  case CX_SHA512:
152
152
  return &cx_sha512_info;
153
153
  case CX_SHA3:
154
+ case CX_SHA3_256:
154
155
  return &cx_sha3_info;
155
156
  case CX_KECCAK:
156
157
  return &cx_keccak_info;
@@ -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 */