diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index f84df37..90fb3fb 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -10,111 +10,21 @@ on: pull_request: jobs: - job_build_release_plugin: - name: Build release plugin - strategy: - matrix: - include: - - sdk: "$NANOX_SDK" - name: "nanox" - - sdk: "$NANOSP_SDK" - name: "nanosp" - - sdk: "$STAX_SDK" - name: "stax" - - sdk: "$FLEX_SDK" - name: "flex" - - runs-on: ubuntu-latest - container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-lite:latest - - steps: - - name: Clone - uses: actions/checkout@v3 - with: - submodules: recursive - - - name: Build - run: | - make BOLOS_SDK=${{ matrix.sdk }} -j - job_build_debug_plugin: - name: Build debug plugin - strategy: - matrix: - include: - - sdk: "$NANOX_SDK" - name: "nanox" - - sdk: "$NANOSP_SDK" - name: "nanosp" - - sdk: "$STAX_SDK" - name: "stax" - - sdk: "$FLEX_SDK" - name: "flex" - - runs-on: ubuntu-latest - container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-lite:latest - - steps: - - name: Clone - uses: actions/checkout@v3 - with: - submodules: recursive - - - name: Build - run: | - make DEBUG=1 BOLOS_SDK=${{ matrix.sdk }} -j - - - name: Rename binary - run: | - mv bin/app.elf plugin_${{ matrix.name }}.elf - - - name: Upload binary - uses: actions/upload-artifact@v4 - with: - name: plugin_binary_${{ matrix.name }} - path: plugin_${{ matrix.name }}.elf + name: Build plugin using the reusable workflow + uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_build.yml@v1 + with: + upload_app_binaries_artifact: "plugin_binaries" + flags: "DEBUG=1" job_build_debug_app: - name: Build debug Ethereum app - strategy: - matrix: - include: - - sdk: "$NANOX_SDK" - name: "nanox" - - sdk: "$NANOSP_SDK" - name: "nanosp" - - sdk: "$STAX_SDK" - name: "stax" - - sdk: "$FLEX_SDK" - name: "flex" - - runs-on: ubuntu-latest - container: - image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-lite:latest - - steps: - - name: Checkout app-ethereum - uses: actions/checkout@v3 - with: - repository: LedgerHQ/app-ethereum - submodules: recursive - ref: ${{ ((github.base_ref || github.ref_name) == 'main' && 'master') || (github.base_ref || github.ref_name) }} - - - name: Build - run: | - make DEBUG=1 BYPASS_SIGNATURES=1 BOLOS_SDK=${{ matrix.sdk }} -j - - - name: Rename binary - run: | - mv bin/app.elf ethereum_${{ matrix.name }}.elf - - - name: Upload binary - uses: actions/upload-artifact@v4 - with: - name: ethereum_binary_${{ matrix.name }} - path: ethereum_${{ matrix.name }}.elf + name: Build ethereum using the reusable workflow + uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_build.yml@v1 + with: + app_repository: LedgerHQ/app-ethereum + app_branch_name: develop + upload_app_binaries_artifact: "eth_binaries" + flags: "DEBUG=1 BYPASS_SIGNATURES=1" jobs-e2e-tests: name: E2E Tests @@ -127,9 +37,28 @@ jobs: - name: Download built binaries uses: actions/download-artifact@v4 with: - pattern: "*_binary_*" - path: tests/elfs/ - merge-multiple: true + name: plugin_binaries + path: plugin_binaries + + - name: Download built binaries + uses: actions/download-artifact@v4 + with: + name: eth_binaries + path: eth_binaries + + - name: Dispatch binaries + run: | + mkdir tests/elfs + + mv plugin_binaries/nanox/bin/app.elf tests/elfs/plugin_nanox.elf + mv plugin_binaries/nanos2/bin/app.elf tests/elfs/plugin_nanosp.elf + mv plugin_binaries/flex/bin/app.elf tests/elfs/plugin_flex.elf + mv plugin_binaries/stax/bin/app.elf tests/elfs/plugin_stax.elf + + mv eth_binaries/nanox/bin/app.elf tests/elfs/ethereum_nanox.elf + mv eth_binaries/nanos2/bin/app.elf tests/elfs/ethereum_nanosp.elf + mv eth_binaries/flex/bin/app.elf tests/elfs/ethereum_flex.elf + mv eth_binaries/stax/bin/app.elf tests/elfs/ethereum_stax.elf - name: Install node uses: actions/setup-node@v3 diff --git a/Makefile b/Makefile index 46892b4..fd2a401 100644 --- a/Makefile +++ b/Makefile @@ -19,7 +19,7 @@ APPNAME = "Velora" # Application version APPVERSION_M = 2 -APPVERSION_N = 4 -APPVERSION_P = 1 +APPVERSION_N = 5 +APPVERSION_P = 0 include ethereum-plugin-sdk/standard_plugin.mk diff --git a/ethereum-plugin-sdk b/ethereum-plugin-sdk index 99d7871..f572c95 160000 --- a/ethereum-plugin-sdk +++ b/ethereum-plugin-sdk @@ -1 +1 @@ -Subproject commit 99d7871a13cae92c4ca65b5bcfd9a800f8056463 +Subproject commit f572c95bac053e9b146579efd5beee6e805dd313 diff --git a/fuzzing/corpus/0af1995cffcc68ada276944c891ce97c7104bd93 b/fuzzing/corpus/0af1995cffcc68ada276944c891ce97c7104bd93 new file mode 100644 index 0000000..4c14b0b Binary files /dev/null and b/fuzzing/corpus/0af1995cffcc68ada276944c891ce97c7104bd93 differ diff --git a/fuzzing/corpus/13d987cfbbaca8274b77f95497cfdf7fcf33ac23 b/fuzzing/corpus/13d987cfbbaca8274b77f95497cfdf7fcf33ac23 new file mode 100644 index 0000000..8cddb8a Binary files /dev/null and b/fuzzing/corpus/13d987cfbbaca8274b77f95497cfdf7fcf33ac23 differ diff --git a/fuzzing/corpus/13f031aafb637080445b08e29786fe71c1e44d79 b/fuzzing/corpus/13f031aafb637080445b08e29786fe71c1e44d79 new file mode 100644 index 0000000..f2b5f07 Binary files /dev/null and b/fuzzing/corpus/13f031aafb637080445b08e29786fe71c1e44d79 differ diff --git a/fuzzing/corpus/14d0affa7e29da8a275ff43988413e7d5b0a7b05 b/fuzzing/corpus/14d0affa7e29da8a275ff43988413e7d5b0a7b05 new file mode 100644 index 0000000..92dc6e7 Binary files /dev/null and b/fuzzing/corpus/14d0affa7e29da8a275ff43988413e7d5b0a7b05 differ diff --git a/fuzzing/corpus/1b8e291be99c50bfa310e1528f732c162c6988d3 b/fuzzing/corpus/1b8e291be99c50bfa310e1528f732c162c6988d3 new file mode 100644 index 0000000..d9db174 Binary files /dev/null and b/fuzzing/corpus/1b8e291be99c50bfa310e1528f732c162c6988d3 differ diff --git a/fuzzing/corpus/1c348648e1ff1de7136686e70ff91fd551a70d3a b/fuzzing/corpus/1c348648e1ff1de7136686e70ff91fd551a70d3a new file mode 100644 index 0000000..aa45eba Binary files /dev/null and b/fuzzing/corpus/1c348648e1ff1de7136686e70ff91fd551a70d3a differ diff --git a/fuzzing/corpus/20f8fbe71f1146bae42e44aba35f62207d598788 b/fuzzing/corpus/20f8fbe71f1146bae42e44aba35f62207d598788 new file mode 100644 index 0000000..282685c Binary files /dev/null and b/fuzzing/corpus/20f8fbe71f1146bae42e44aba35f62207d598788 differ diff --git a/fuzzing/corpus/210064532456348e01dd50341119600c0fd0a48b b/fuzzing/corpus/210064532456348e01dd50341119600c0fd0a48b new file mode 100644 index 0000000..f8d50ab Binary files /dev/null and b/fuzzing/corpus/210064532456348e01dd50341119600c0fd0a48b differ diff --git a/fuzzing/corpus/23e91f7b94774b23c91b4c4d9c691097a23b3a60 b/fuzzing/corpus/23e91f7b94774b23c91b4c4d9c691097a23b3a60 new file mode 100644 index 0000000..61a4446 Binary files /dev/null and b/fuzzing/corpus/23e91f7b94774b23c91b4c4d9c691097a23b3a60 differ diff --git a/fuzzing/corpus/26030aee9966838a0af7504bd42c1d75372f59b5 b/fuzzing/corpus/26030aee9966838a0af7504bd42c1d75372f59b5 new file mode 100644 index 0000000..e3a90a6 Binary files /dev/null and b/fuzzing/corpus/26030aee9966838a0af7504bd42c1d75372f59b5 differ diff --git a/fuzzing/corpus/27d4ae10fb9944033aeb5604151f361b9b69c225 b/fuzzing/corpus/27d4ae10fb9944033aeb5604151f361b9b69c225 new file mode 100644 index 0000000..aa2f057 Binary files /dev/null and b/fuzzing/corpus/27d4ae10fb9944033aeb5604151f361b9b69c225 differ diff --git a/fuzzing/corpus/3002dd940f5e3e4affc7b611ff53887aa990ffa3 b/fuzzing/corpus/3002dd940f5e3e4affc7b611ff53887aa990ffa3 new file mode 100644 index 0000000..018b6bd Binary files /dev/null and b/fuzzing/corpus/3002dd940f5e3e4affc7b611ff53887aa990ffa3 differ diff --git a/fuzzing/corpus/3022148bf0bc7e7034bff7add85f2b7610f857d6 b/fuzzing/corpus/3022148bf0bc7e7034bff7add85f2b7610f857d6 new file mode 100644 index 0000000..23086c2 Binary files /dev/null and b/fuzzing/corpus/3022148bf0bc7e7034bff7add85f2b7610f857d6 differ diff --git a/fuzzing/corpus/32407254278207e7b7b4ceac0735717a43aafc0a b/fuzzing/corpus/32407254278207e7b7b4ceac0735717a43aafc0a new file mode 100644 index 0000000..2f3a993 Binary files /dev/null and b/fuzzing/corpus/32407254278207e7b7b4ceac0735717a43aafc0a differ diff --git a/fuzzing/corpus/324ef9855bf43a181161625f5926433ccb94bc63 b/fuzzing/corpus/324ef9855bf43a181161625f5926433ccb94bc63 new file mode 100644 index 0000000..b32bf1d Binary files /dev/null and b/fuzzing/corpus/324ef9855bf43a181161625f5926433ccb94bc63 differ diff --git a/fuzzing/corpus/3571c563d9576eb310909b3c85c8a512ecab3940 b/fuzzing/corpus/3571c563d9576eb310909b3c85c8a512ecab3940 new file mode 100644 index 0000000..7f2e8ce Binary files /dev/null and b/fuzzing/corpus/3571c563d9576eb310909b3c85c8a512ecab3940 differ diff --git a/fuzzing/corpus/38c4f417e7965db49c919d2f90ca02ff21475a2a b/fuzzing/corpus/38c4f417e7965db49c919d2f90ca02ff21475a2a new file mode 100644 index 0000000..cbdc062 Binary files /dev/null and b/fuzzing/corpus/38c4f417e7965db49c919d2f90ca02ff21475a2a differ diff --git a/fuzzing/corpus/3d235127ef1f3bfa6eb80d437245d83bf96567e6 b/fuzzing/corpus/3d235127ef1f3bfa6eb80d437245d83bf96567e6 new file mode 100644 index 0000000..792954b Binary files /dev/null and b/fuzzing/corpus/3d235127ef1f3bfa6eb80d437245d83bf96567e6 differ diff --git a/fuzzing/corpus/3dc0db4f9ced6f9ba6f5686a3d6f1658471ef3b4 b/fuzzing/corpus/3dc0db4f9ced6f9ba6f5686a3d6f1658471ef3b4 new file mode 100644 index 0000000..f991a21 Binary files /dev/null and b/fuzzing/corpus/3dc0db4f9ced6f9ba6f5686a3d6f1658471ef3b4 differ diff --git a/fuzzing/corpus/41f4e610cbb320f26a52dc36202a848f266c06fd b/fuzzing/corpus/41f4e610cbb320f26a52dc36202a848f266c06fd new file mode 100644 index 0000000..1ef9b60 Binary files /dev/null and b/fuzzing/corpus/41f4e610cbb320f26a52dc36202a848f266c06fd differ diff --git a/fuzzing/corpus/42853d1d15b99e359c1a52abebb6df766e42d74b b/fuzzing/corpus/42853d1d15b99e359c1a52abebb6df766e42d74b new file mode 100644 index 0000000..1d58260 Binary files /dev/null and b/fuzzing/corpus/42853d1d15b99e359c1a52abebb6df766e42d74b differ diff --git a/fuzzing/corpus/476c5fe23e38136513cad49e21ec6f331b13669e b/fuzzing/corpus/476c5fe23e38136513cad49e21ec6f331b13669e new file mode 100644 index 0000000..78bd146 Binary files /dev/null and b/fuzzing/corpus/476c5fe23e38136513cad49e21ec6f331b13669e differ diff --git a/fuzzing/corpus/4b60455a36b570dc65f3f0e7a4d8a05a2a331654 b/fuzzing/corpus/4b60455a36b570dc65f3f0e7a4d8a05a2a331654 new file mode 100644 index 0000000..ac4c2e4 Binary files /dev/null and b/fuzzing/corpus/4b60455a36b570dc65f3f0e7a4d8a05a2a331654 differ diff --git a/fuzzing/corpus/4be2c7e94d47526ec078894116ef53dcebad2a31 b/fuzzing/corpus/4be2c7e94d47526ec078894116ef53dcebad2a31 new file mode 100644 index 0000000..2d4fff6 Binary files /dev/null and b/fuzzing/corpus/4be2c7e94d47526ec078894116ef53dcebad2a31 differ diff --git a/fuzzing/corpus/4ca1b3eb7553813fb5e14c6692e39fad08483fb6 b/fuzzing/corpus/4ca1b3eb7553813fb5e14c6692e39fad08483fb6 new file mode 100644 index 0000000..716cb13 Binary files /dev/null and b/fuzzing/corpus/4ca1b3eb7553813fb5e14c6692e39fad08483fb6 differ diff --git a/fuzzing/corpus/4d93090bc720dd3540efaa2da80074691a5f68b0 b/fuzzing/corpus/4d93090bc720dd3540efaa2da80074691a5f68b0 new file mode 100644 index 0000000..441c07c Binary files /dev/null and b/fuzzing/corpus/4d93090bc720dd3540efaa2da80074691a5f68b0 differ diff --git a/fuzzing/corpus/4deb6f6a6c5ece1d969665061480dce001b21e51 b/fuzzing/corpus/4deb6f6a6c5ece1d969665061480dce001b21e51 new file mode 100644 index 0000000..0d6c7bc Binary files /dev/null and b/fuzzing/corpus/4deb6f6a6c5ece1d969665061480dce001b21e51 differ diff --git a/fuzzing/corpus/5076e6d6e2a346d8b35191914f1f23288d67f54b b/fuzzing/corpus/5076e6d6e2a346d8b35191914f1f23288d67f54b new file mode 100644 index 0000000..329ab1b Binary files /dev/null and b/fuzzing/corpus/5076e6d6e2a346d8b35191914f1f23288d67f54b differ diff --git a/fuzzing/corpus/53e0fd6e912286d79a3b46891c017857614dddc1 b/fuzzing/corpus/53e0fd6e912286d79a3b46891c017857614dddc1 new file mode 100644 index 0000000..d889eaf Binary files /dev/null and b/fuzzing/corpus/53e0fd6e912286d79a3b46891c017857614dddc1 differ diff --git a/fuzzing/corpus/564352f19ae567791ecb7fb91b8567bdcae3e609 b/fuzzing/corpus/564352f19ae567791ecb7fb91b8567bdcae3e609 new file mode 100644 index 0000000..360ddc1 Binary files /dev/null and b/fuzzing/corpus/564352f19ae567791ecb7fb91b8567bdcae3e609 differ diff --git a/fuzzing/corpus/5bd34bda4b9126b767d76f5852e8b9f809cfa936 b/fuzzing/corpus/5bd34bda4b9126b767d76f5852e8b9f809cfa936 new file mode 100644 index 0000000..bde96d9 Binary files /dev/null and b/fuzzing/corpus/5bd34bda4b9126b767d76f5852e8b9f809cfa936 differ diff --git a/fuzzing/corpus/5c94021dff5bb11cc50071fe50e7c39931099876 b/fuzzing/corpus/5c94021dff5bb11cc50071fe50e7c39931099876 new file mode 100644 index 0000000..5894cd0 Binary files /dev/null and b/fuzzing/corpus/5c94021dff5bb11cc50071fe50e7c39931099876 differ diff --git a/fuzzing/corpus/5dd58f052940b18fff0becfcac3327331ab4aa3a b/fuzzing/corpus/5dd58f052940b18fff0becfcac3327331ab4aa3a new file mode 100644 index 0000000..f073a51 Binary files /dev/null and b/fuzzing/corpus/5dd58f052940b18fff0becfcac3327331ab4aa3a differ diff --git a/fuzzing/corpus/614548371989b0e0a4570240a096bde6023fbd0a b/fuzzing/corpus/614548371989b0e0a4570240a096bde6023fbd0a new file mode 100644 index 0000000..d0e2651 Binary files /dev/null and b/fuzzing/corpus/614548371989b0e0a4570240a096bde6023fbd0a differ diff --git a/fuzzing/corpus/630f98c969e5c3a9c145bb008ddfb42d340cd5ce b/fuzzing/corpus/630f98c969e5c3a9c145bb008ddfb42d340cd5ce new file mode 100644 index 0000000..634b116 Binary files /dev/null and b/fuzzing/corpus/630f98c969e5c3a9c145bb008ddfb42d340cd5ce differ diff --git a/fuzzing/corpus/6677f1cf25b88b885f233e2b804a269b8886fc29 b/fuzzing/corpus/6677f1cf25b88b885f233e2b804a269b8886fc29 new file mode 100644 index 0000000..9c8485e Binary files /dev/null and b/fuzzing/corpus/6677f1cf25b88b885f233e2b804a269b8886fc29 differ diff --git a/fuzzing/corpus/6aef9a41854fa2e4a2de341b295f334be26bfa27 b/fuzzing/corpus/6aef9a41854fa2e4a2de341b295f334be26bfa27 new file mode 100644 index 0000000..033aa39 Binary files /dev/null and b/fuzzing/corpus/6aef9a41854fa2e4a2de341b295f334be26bfa27 differ diff --git a/fuzzing/corpus/6c02480db6de8e06ec97f206c9c1c8b42be7a9d9 b/fuzzing/corpus/6c02480db6de8e06ec97f206c9c1c8b42be7a9d9 new file mode 100644 index 0000000..e76fe9f Binary files /dev/null and b/fuzzing/corpus/6c02480db6de8e06ec97f206c9c1c8b42be7a9d9 differ diff --git a/fuzzing/corpus/6e7d6c4541d0ea3424e8b400e612fd76f56b345b b/fuzzing/corpus/6e7d6c4541d0ea3424e8b400e612fd76f56b345b new file mode 100644 index 0000000..02d5add Binary files /dev/null and b/fuzzing/corpus/6e7d6c4541d0ea3424e8b400e612fd76f56b345b differ diff --git a/fuzzing/corpus/800768c46d3b3c3d93c619da0ab34888b46f861d b/fuzzing/corpus/800768c46d3b3c3d93c619da0ab34888b46f861d new file mode 100644 index 0000000..f82d651 Binary files /dev/null and b/fuzzing/corpus/800768c46d3b3c3d93c619da0ab34888b46f861d differ diff --git a/fuzzing/corpus/862f895840aeb17e7b0ce26e293830040b990bac b/fuzzing/corpus/862f895840aeb17e7b0ce26e293830040b990bac new file mode 100644 index 0000000..0c6cf94 Binary files /dev/null and b/fuzzing/corpus/862f895840aeb17e7b0ce26e293830040b990bac differ diff --git a/fuzzing/corpus/867c99b388bc4550c4e93f092b5002fbc6d35752 b/fuzzing/corpus/867c99b388bc4550c4e93f092b5002fbc6d35752 new file mode 100644 index 0000000..87e5379 Binary files /dev/null and b/fuzzing/corpus/867c99b388bc4550c4e93f092b5002fbc6d35752 differ diff --git a/fuzzing/corpus/8780647417772199fefb7aed1c1a53f748cc5e73 b/fuzzing/corpus/8780647417772199fefb7aed1c1a53f748cc5e73 new file mode 100644 index 0000000..782d809 Binary files /dev/null and b/fuzzing/corpus/8780647417772199fefb7aed1c1a53f748cc5e73 differ diff --git a/fuzzing/corpus/8d8ef4e0b41adcf39f3a86910a08be4ab8817725 b/fuzzing/corpus/8d8ef4e0b41adcf39f3a86910a08be4ab8817725 new file mode 100644 index 0000000..be7cbea Binary files /dev/null and b/fuzzing/corpus/8d8ef4e0b41adcf39f3a86910a08be4ab8817725 differ diff --git a/fuzzing/corpus/8e7f32002eb5db093068b21e7e25bc108dff4060 b/fuzzing/corpus/8e7f32002eb5db093068b21e7e25bc108dff4060 new file mode 100644 index 0000000..f1c6602 Binary files /dev/null and b/fuzzing/corpus/8e7f32002eb5db093068b21e7e25bc108dff4060 differ diff --git a/fuzzing/corpus/90fafa63ca28f2c988222bc37a79b7db3b3a3dc4 b/fuzzing/corpus/90fafa63ca28f2c988222bc37a79b7db3b3a3dc4 new file mode 100644 index 0000000..f427220 Binary files /dev/null and b/fuzzing/corpus/90fafa63ca28f2c988222bc37a79b7db3b3a3dc4 differ diff --git a/fuzzing/corpus/917e5858707fcf9f2dbc9de274a1e827ca07bebe b/fuzzing/corpus/917e5858707fcf9f2dbc9de274a1e827ca07bebe new file mode 100644 index 0000000..2e5a665 Binary files /dev/null and b/fuzzing/corpus/917e5858707fcf9f2dbc9de274a1e827ca07bebe differ diff --git a/fuzzing/corpus/937f24a1f535d4ddb3704294a4b67d100f3b4eaa b/fuzzing/corpus/937f24a1f535d4ddb3704294a4b67d100f3b4eaa new file mode 100644 index 0000000..6caed33 Binary files /dev/null and b/fuzzing/corpus/937f24a1f535d4ddb3704294a4b67d100f3b4eaa differ diff --git a/fuzzing/corpus/94ecf9586fb27462ef250cbe31e6452cc9bbed7a b/fuzzing/corpus/94ecf9586fb27462ef250cbe31e6452cc9bbed7a new file mode 100644 index 0000000..0814fb2 Binary files /dev/null and b/fuzzing/corpus/94ecf9586fb27462ef250cbe31e6452cc9bbed7a differ diff --git a/fuzzing/corpus/950deb80924e4441d200af7ed502cb9618d4c19a b/fuzzing/corpus/950deb80924e4441d200af7ed502cb9618d4c19a new file mode 100644 index 0000000..f6c1842 Binary files /dev/null and b/fuzzing/corpus/950deb80924e4441d200af7ed502cb9618d4c19a differ diff --git a/fuzzing/corpus/966cc29e32c6ff04c852cad3f63eb4ef50b84f5a b/fuzzing/corpus/966cc29e32c6ff04c852cad3f63eb4ef50b84f5a new file mode 100644 index 0000000..aec6755 Binary files /dev/null and b/fuzzing/corpus/966cc29e32c6ff04c852cad3f63eb4ef50b84f5a differ diff --git a/fuzzing/corpus/a0346e52d0b843297be56faa4caa84febde64090 b/fuzzing/corpus/a0346e52d0b843297be56faa4caa84febde64090 new file mode 100644 index 0000000..b37f446 Binary files /dev/null and b/fuzzing/corpus/a0346e52d0b843297be56faa4caa84febde64090 differ diff --git a/fuzzing/corpus/a172864da20a053f4eb198cc11b2d7076a8109e7 b/fuzzing/corpus/a172864da20a053f4eb198cc11b2d7076a8109e7 new file mode 100644 index 0000000..a34d8e9 Binary files /dev/null and b/fuzzing/corpus/a172864da20a053f4eb198cc11b2d7076a8109e7 differ diff --git a/fuzzing/corpus/a53df10ecae00b21e582b260793b32baeb662a97 b/fuzzing/corpus/a53df10ecae00b21e582b260793b32baeb662a97 new file mode 100644 index 0000000..5ed417e Binary files /dev/null and b/fuzzing/corpus/a53df10ecae00b21e582b260793b32baeb662a97 differ diff --git a/fuzzing/corpus/a809d4c848b1ae5959be9d111a203394150d1a95 b/fuzzing/corpus/a809d4c848b1ae5959be9d111a203394150d1a95 new file mode 100644 index 0000000..4ab2ec6 Binary files /dev/null and b/fuzzing/corpus/a809d4c848b1ae5959be9d111a203394150d1a95 differ diff --git a/fuzzing/corpus/a897ca476528c808201bcd27d8c3d7c63c843a9d b/fuzzing/corpus/a897ca476528c808201bcd27d8c3d7c63c843a9d new file mode 100644 index 0000000..db2409a Binary files /dev/null and b/fuzzing/corpus/a897ca476528c808201bcd27d8c3d7c63c843a9d differ diff --git a/fuzzing/corpus/af07771c8f0829a277312bcc5ea45e336adb684b b/fuzzing/corpus/af07771c8f0829a277312bcc5ea45e336adb684b new file mode 100644 index 0000000..e88bc07 Binary files /dev/null and b/fuzzing/corpus/af07771c8f0829a277312bcc5ea45e336adb684b differ diff --git a/fuzzing/corpus/b15105d7a2c99b8d70971d6a524b299dd4122c99 b/fuzzing/corpus/b15105d7a2c99b8d70971d6a524b299dd4122c99 new file mode 100644 index 0000000..d0a85f3 Binary files /dev/null and b/fuzzing/corpus/b15105d7a2c99b8d70971d6a524b299dd4122c99 differ diff --git a/fuzzing/corpus/b167055157f0ede6903f8d9a6d6e987231f57513 b/fuzzing/corpus/b167055157f0ede6903f8d9a6d6e987231f57513 new file mode 100644 index 0000000..29e24aa Binary files /dev/null and b/fuzzing/corpus/b167055157f0ede6903f8d9a6d6e987231f57513 differ diff --git a/fuzzing/corpus/b41a87ffa38b27e6efa1fa66702f936a73a3d2f2 b/fuzzing/corpus/b41a87ffa38b27e6efa1fa66702f936a73a3d2f2 new file mode 100644 index 0000000..22d9d88 Binary files /dev/null and b/fuzzing/corpus/b41a87ffa38b27e6efa1fa66702f936a73a3d2f2 differ diff --git a/fuzzing/corpus/b671c3acf5e63aab5b10f95da195a54e65952bae b/fuzzing/corpus/b671c3acf5e63aab5b10f95da195a54e65952bae new file mode 100644 index 0000000..93c3b76 Binary files /dev/null and b/fuzzing/corpus/b671c3acf5e63aab5b10f95da195a54e65952bae differ diff --git a/fuzzing/corpus/b8686a2c2c15f295aa8cb3bcae9873d5181bc99a b/fuzzing/corpus/b8686a2c2c15f295aa8cb3bcae9873d5181bc99a new file mode 100644 index 0000000..054583c Binary files /dev/null and b/fuzzing/corpus/b8686a2c2c15f295aa8cb3bcae9873d5181bc99a differ diff --git a/fuzzing/corpus/bd7115647def543f10ff534279ed35438160cd35 b/fuzzing/corpus/bd7115647def543f10ff534279ed35438160cd35 new file mode 100644 index 0000000..19c6c29 Binary files /dev/null and b/fuzzing/corpus/bd7115647def543f10ff534279ed35438160cd35 differ diff --git a/fuzzing/corpus/c0329e3ccb35751a1dc6f1353495444d2fe8d49a b/fuzzing/corpus/c0329e3ccb35751a1dc6f1353495444d2fe8d49a new file mode 100644 index 0000000..4c482a9 Binary files /dev/null and b/fuzzing/corpus/c0329e3ccb35751a1dc6f1353495444d2fe8d49a differ diff --git a/fuzzing/corpus/c53213d97221387d18c80d2cec54d66c58821240 b/fuzzing/corpus/c53213d97221387d18c80d2cec54d66c58821240 new file mode 100644 index 0000000..f5b6b75 Binary files /dev/null and b/fuzzing/corpus/c53213d97221387d18c80d2cec54d66c58821240 differ diff --git a/fuzzing/corpus/c9a00019bb1a7e721878e13652bc5794f1b0283b b/fuzzing/corpus/c9a00019bb1a7e721878e13652bc5794f1b0283b new file mode 100644 index 0000000..2d511a8 Binary files /dev/null and b/fuzzing/corpus/c9a00019bb1a7e721878e13652bc5794f1b0283b differ diff --git a/fuzzing/corpus/ca68b340dc023805aced75eb3466a4bfdfae8c3f b/fuzzing/corpus/ca68b340dc023805aced75eb3466a4bfdfae8c3f new file mode 100644 index 0000000..351dc78 Binary files /dev/null and b/fuzzing/corpus/ca68b340dc023805aced75eb3466a4bfdfae8c3f differ diff --git a/fuzzing/corpus/cbf2701a90d573ad22ca12efacba33dd5738eae2 b/fuzzing/corpus/cbf2701a90d573ad22ca12efacba33dd5738eae2 new file mode 100644 index 0000000..5dd8a21 Binary files /dev/null and b/fuzzing/corpus/cbf2701a90d573ad22ca12efacba33dd5738eae2 differ diff --git a/fuzzing/corpus/d16739c8c321671c7198d71c5cb497dc2682f082 b/fuzzing/corpus/d16739c8c321671c7198d71c5cb497dc2682f082 new file mode 100644 index 0000000..2f27673 Binary files /dev/null and b/fuzzing/corpus/d16739c8c321671c7198d71c5cb497dc2682f082 differ diff --git a/fuzzing/corpus/d19a349708d507aaf1be7a83fff627115136ac3d b/fuzzing/corpus/d19a349708d507aaf1be7a83fff627115136ac3d new file mode 100644 index 0000000..3534914 Binary files /dev/null and b/fuzzing/corpus/d19a349708d507aaf1be7a83fff627115136ac3d differ diff --git a/fuzzing/corpus/d4d08c55ce9f2f44002cd87b360762ba0dbb6e55 b/fuzzing/corpus/d4d08c55ce9f2f44002cd87b360762ba0dbb6e55 new file mode 100644 index 0000000..1ab3e2f Binary files /dev/null and b/fuzzing/corpus/d4d08c55ce9f2f44002cd87b360762ba0dbb6e55 differ diff --git a/fuzzing/corpus/d676de0195302d82624fe74b3817d9c3126eed9b b/fuzzing/corpus/d676de0195302d82624fe74b3817d9c3126eed9b new file mode 100644 index 0000000..19f0064 Binary files /dev/null and b/fuzzing/corpus/d676de0195302d82624fe74b3817d9c3126eed9b differ diff --git a/fuzzing/corpus/d6d138cf183439b24d097d68f0c056387de429ae b/fuzzing/corpus/d6d138cf183439b24d097d68f0c056387de429ae new file mode 100644 index 0000000..819b0a1 Binary files /dev/null and b/fuzzing/corpus/d6d138cf183439b24d097d68f0c056387de429ae differ diff --git a/fuzzing/corpus/d7d6c62a47d34460ae0c4de421f00a3e28bd9bf6 b/fuzzing/corpus/d7d6c62a47d34460ae0c4de421f00a3e28bd9bf6 new file mode 100644 index 0000000..b172e67 Binary files /dev/null and b/fuzzing/corpus/d7d6c62a47d34460ae0c4de421f00a3e28bd9bf6 differ diff --git a/fuzzing/corpus/da0f2bbf68fe4b4895e972d69b17a4057af1622b b/fuzzing/corpus/da0f2bbf68fe4b4895e972d69b17a4057af1622b new file mode 100644 index 0000000..f1834b8 Binary files /dev/null and b/fuzzing/corpus/da0f2bbf68fe4b4895e972d69b17a4057af1622b differ diff --git a/fuzzing/corpus/dbd580798dc8046ab5275c71d3630b26187c3cbb b/fuzzing/corpus/dbd580798dc8046ab5275c71d3630b26187c3cbb new file mode 100644 index 0000000..fbde115 Binary files /dev/null and b/fuzzing/corpus/dbd580798dc8046ab5275c71d3630b26187c3cbb differ diff --git a/fuzzing/corpus/e06a2d7a3a1768f6c287f385781f6e4d3f7a0b8c b/fuzzing/corpus/e06a2d7a3a1768f6c287f385781f6e4d3f7a0b8c new file mode 100644 index 0000000..a0af776 Binary files /dev/null and b/fuzzing/corpus/e06a2d7a3a1768f6c287f385781f6e4d3f7a0b8c differ diff --git a/fuzzing/corpus/e30baaf644d1c87c88d8fca9ea071cd76992f818 b/fuzzing/corpus/e30baaf644d1c87c88d8fca9ea071cd76992f818 new file mode 100644 index 0000000..2e6d1b2 Binary files /dev/null and b/fuzzing/corpus/e30baaf644d1c87c88d8fca9ea071cd76992f818 differ diff --git a/fuzzing/corpus/e43fde82814fef21c97d2352be188576e107ded4 b/fuzzing/corpus/e43fde82814fef21c97d2352be188576e107ded4 new file mode 100644 index 0000000..7b94251 Binary files /dev/null and b/fuzzing/corpus/e43fde82814fef21c97d2352be188576e107ded4 differ diff --git a/fuzzing/corpus/e77f1d63de8bf92d3bd7c560d853d7382d9a6645 b/fuzzing/corpus/e77f1d63de8bf92d3bd7c560d853d7382d9a6645 new file mode 100644 index 0000000..d999f63 Binary files /dev/null and b/fuzzing/corpus/e77f1d63de8bf92d3bd7c560d853d7382d9a6645 differ diff --git a/fuzzing/corpus/e8129fb6d28d8608afacccd351d3ae1d43b244b8 b/fuzzing/corpus/e8129fb6d28d8608afacccd351d3ae1d43b244b8 new file mode 100644 index 0000000..62a4340 Binary files /dev/null and b/fuzzing/corpus/e8129fb6d28d8608afacccd351d3ae1d43b244b8 differ diff --git a/fuzzing/corpus/e9590aeaced20e18063bb70f7a2fddfa0ffa1f79 b/fuzzing/corpus/e9590aeaced20e18063bb70f7a2fddfa0ffa1f79 new file mode 100644 index 0000000..847a06c Binary files /dev/null and b/fuzzing/corpus/e9590aeaced20e18063bb70f7a2fddfa0ffa1f79 differ diff --git a/fuzzing/corpus/ee2fdfaab31cfc77860ee77bc4881b137c24ed7a b/fuzzing/corpus/ee2fdfaab31cfc77860ee77bc4881b137c24ed7a new file mode 100644 index 0000000..f3ace37 Binary files /dev/null and b/fuzzing/corpus/ee2fdfaab31cfc77860ee77bc4881b137c24ed7a differ diff --git a/fuzzing/corpus/f6ebd8c76de75928b485eefc529a35b60c97a432 b/fuzzing/corpus/f6ebd8c76de75928b485eefc529a35b60c97a432 new file mode 100644 index 0000000..7dc118e Binary files /dev/null and b/fuzzing/corpus/f6ebd8c76de75928b485eefc529a35b60c97a432 differ diff --git a/fuzzing/corpus/fac9fad0dff8c1737f9aaca92f385db23aaff490 b/fuzzing/corpus/fac9fad0dff8c1737f9aaca92f385db23aaff490 new file mode 100644 index 0000000..dd31206 Binary files /dev/null and b/fuzzing/corpus/fac9fad0dff8c1737f9aaca92f385db23aaff490 differ diff --git a/fuzzing/corpus/fadde5e475695460c682a9b56c3399c933ac9b8e b/fuzzing/corpus/fadde5e475695460c682a9b56c3399c933ac9b8e new file mode 100644 index 0000000..d03ebf6 Binary files /dev/null and b/fuzzing/corpus/fadde5e475695460c682a9b56c3399c933ac9b8e differ diff --git a/fuzzing/corpus/fc8e78db7e2cce59276e4e6d588ff2d8bdb070dc b/fuzzing/corpus/fc8e78db7e2cce59276e4e6d588ff2d8bdb070dc new file mode 100644 index 0000000..973aa00 Binary files /dev/null and b/fuzzing/corpus/fc8e78db7e2cce59276e4e6d588ff2d8bdb070dc differ diff --git a/fuzzing/corpus/fdb4fd4a2c40f1da33cbce33dfb031f50d82052e b/fuzzing/corpus/fdb4fd4a2c40f1da33cbce33dfb031f50d82052e new file mode 100644 index 0000000..d9e1f16 Binary files /dev/null and b/fuzzing/corpus/fdb4fd4a2c40f1da33cbce33dfb031f50d82052e differ diff --git a/fuzzing/corpus/ff5dd4d5423c6bc4fb93f687a71d696322a746c6 b/fuzzing/corpus/ff5dd4d5423c6bc4fb93f687a71d696322a746c6 new file mode 100644 index 0000000..74d25cf Binary files /dev/null and b/fuzzing/corpus/ff5dd4d5423c6bc4fb93f687a71d696322a746c6 differ diff --git a/fuzzing/fuzz_plugin.c b/fuzzing/fuzz_plugin.c index b418028..17a726e 100644 --- a/fuzzing/fuzz_plugin.c +++ b/fuzzing/fuzz_plugin.c @@ -20,15 +20,6 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { ethQueryContractUI_t query_ui = {0}; txContent_t content = {0}; - // Fake sha3 context - cx_sha3_t sha3; - - ethPluginSharedRO_t shared_ro; - shared_ro.txContent = &content; - - ethPluginSharedRW_t shared_rw; - shared_rw.sha3 = &sha3; - paraswap_parameters_t context; const uint8_t address[ADDRESS_LENGTH] = {0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, @@ -52,8 +43,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { init_contract.interfaceVersion = ETH_PLUGIN_INTERFACE_VERSION_LATEST; init_contract.selector = data; - init_contract.pluginSharedRO = &shared_ro; - init_contract.pluginSharedRW = &shared_rw; + init_contract.txContent = &content; init_contract.pluginContext = (uint8_t *) &context; init_contract.pluginContextLength = sizeof(context); @@ -68,8 +58,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { provide_param.parameter = data + i; provide_param.parameterOffset = i; provide_param.pluginContext = (uint8_t *) &context; - provide_param.pluginSharedRO = &shared_ro; - provide_param.pluginSharedRW = &shared_rw; + provide_param.txContent = &content; handle_provide_parameter(&provide_param); if (provide_param.result != ETH_PLUGIN_RESULT_OK) { return 0; @@ -79,8 +68,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { finalize.pluginContext = (uint8_t *) &context; finalize.address = address; - finalize.pluginSharedRO = &shared_ro; - finalize.pluginSharedRW = &shared_rw; + finalize.txContent = &content; handle_finalize(&finalize); if (finalize.result != ETH_PLUGIN_RESULT_OK) { return 0; @@ -88,8 +76,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { if (finalize.tokenLookup1 || finalize.tokenLookup2) { provide_info.pluginContext = (uint8_t *) &context; - provide_info.pluginSharedRO = &shared_ro; - provide_info.pluginSharedRW = &shared_rw; + provide_info.txContent = &content; if (finalize.tokenLookup1) { if (size - i >= sizeof(extraInfo_t)) { provide_info.item1 = &item1; @@ -117,8 +104,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { } query_id.pluginContext = (uint8_t *) &context; - query_id.pluginSharedRO = &shared_ro; - query_id.pluginSharedRW = &shared_rw; + query_id.txContent = &content; query_id.name = name; query_id.nameLength = sizeof(name); query_id.version = version; @@ -138,8 +124,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { query_ui.msg = msg; query_ui.msgLength = sizeof(msg); query_ui.pluginContext = (uint8_t *) &context; - query_ui.pluginSharedRO = &shared_ro; - query_ui.pluginSharedRW = &shared_rw; + query_ui.txContent = &content; query_ui.screenIndex = i; handle_query_contract_ui(&query_ui); @@ -150,4 +135,4 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { } return 0; -} \ No newline at end of file +} diff --git a/fuzzing/out/fuzz b/fuzzing/out/fuzz new file mode 100755 index 0000000..1e4fc57 Binary files /dev/null and b/fuzzing/out/fuzz differ diff --git a/fuzzing/out/llvm-symbolizer b/fuzzing/out/llvm-symbolizer new file mode 100755 index 0000000..67db53c Binary files /dev/null and b/fuzzing/out/llvm-symbolizer differ diff --git a/glyphs/apex_velora_48px.png b/glyphs/apex_velora_48px.png new file mode 100644 index 0000000..ab82ec1 Binary files /dev/null and b/glyphs/apex_velora_48px.png differ diff --git a/icons/apex_app_velora.png b/icons/apex_app_velora.png new file mode 100644 index 0000000..f24281a Binary files /dev/null and b/icons/apex_app_velora.png differ diff --git a/ledger_app.toml b/ledger_app.toml index 16e0a20..897de5d 100644 --- a/ledger_app.toml +++ b/ledger_app.toml @@ -1,4 +1,4 @@ [app] build_directory = "./" sdk = "C" -devices = ["nanox", "nanos+", "stax", "flex"] +devices = ["apex_p", "nanox", "nanos+", "stax", "flex"] diff --git a/src/contract.c b/src/contract.c index cfd744c..7a38399 100644 --- a/src/contract.c +++ b/src/contract.c @@ -16,7 +16,7 @@ ********************************************************************************/ #include -#include "paraswap_plugin.h" +#include "plugin.h" // ---------- Paraswap V5 ------------- diff --git a/src/handle_finalize.c b/src/handle_finalize.c index a17327b..e24cf2d 100644 --- a/src/handle_finalize.c +++ b/src/handle_finalize.c @@ -1,4 +1,4 @@ -#include "paraswap_plugin.h" +#include "plugin.h" void handle_finalize(ethPluginFinalize_t *msg) { paraswap_parameters_t *context = (paraswap_parameters_t *) msg->pluginContext; @@ -20,8 +20,7 @@ void handle_finalize(ethPluginFinalize_t *msg) { context->contract_address_sent); // The user is not swapping ETH, so make sure there's no ETH being sent in this tx. - if (!allzeroes(msg->pluginSharedRO->txContent->value.value, - msg->pluginSharedRO->txContent->value.length)) { + if (!allzeroes(msg->txContent->value.value, msg->txContent->value.length)) { PRINTF("ETH attached to tx when token being swapped is %.*H\n", sizeof(context->contract_address_sent), context->contract_address_sent); diff --git a/src/handle_init_contract.c b/src/handle_init_contract.c index 54f684a..ca1d7ce 100644 --- a/src/handle_init_contract.c +++ b/src/handle_init_contract.c @@ -1,4 +1,4 @@ -#include "paraswap_plugin.h" +#include "plugin.h" // Called once to init. void handle_init_contract(ethPluginInitContract_t *msg) { diff --git a/src/handle_provide_parameter.c b/src/handle_provide_parameter.c index 74c7f76..ed9388f 100644 --- a/src/handle_provide_parameter.c +++ b/src/handle_provide_parameter.c @@ -1,4 +1,4 @@ -#include "paraswap_plugin.h" +#include "plugin.h" // Copy amount sent parameter to amount_sent static void handle_amount_sent(const ethPluginProvideParameter_t *msg, diff --git a/src/handle_provide_token.c b/src/handle_provide_token.c index ed6f893..65a2d06 100644 --- a/src/handle_provide_token.c +++ b/src/handle_provide_token.c @@ -1,4 +1,4 @@ -#include "paraswap_plugin.h" +#include "plugin.h" void handle_provide_token(ethPluginProvideInfo_t *msg) { paraswap_parameters_t *context = (paraswap_parameters_t *) msg->pluginContext; diff --git a/src/handle_query_contract_id.c b/src/handle_query_contract_id.c index 204079e..5140e9d 100644 --- a/src/handle_query_contract_id.c +++ b/src/handle_query_contract_id.c @@ -1,4 +1,4 @@ -#include "paraswap_plugin.h" +#include "plugin.h" void handle_query_contract_id(ethQueryContractID_t *msg) { const paraswap_parameters_t *context = (paraswap_parameters_t *) msg->pluginContext; diff --git a/src/handle_query_contract_ui.c b/src/handle_query_contract_ui.c index 006d49c..ebe2d73 100644 --- a/src/handle_query_contract_ui.c +++ b/src/handle_query_contract_ui.c @@ -1,5 +1,5 @@ #include -#include "paraswap_plugin.h" +#include "plugin.h" // Set UI for the "Send" screen. static bool set_send_ui(ethQueryContractUI_t *msg, paraswap_parameters_t *context) { diff --git a/src/paraswap_plugin.h b/src/plugin.h similarity index 95% rename from src/paraswap_plugin.h rename to src/plugin.h index 2402577..aa8e2f4 100644 --- a/src/paraswap_plugin.h +++ b/src/plugin.h @@ -109,3 +109,7 @@ typedef struct paraswap_parameters_t { uint8_t array_len; // 8*1 + 2*3 == 8 + 6 == 14 bytes. There are 14 - 14 == 0 byte left. } paraswap_parameters_t; + +// Check that the plugin context structure will fit in the ethereum allocated memory. +// Do not remove this check. +ASSERT_SIZEOF_PLUGIN_CONTEXT(paraswap_parameters_t);