diff --git a/.github/workflows/footprint.yml b/.github/workflows/footprint.yml index 6eeaef8b..5635193b 100644 --- a/.github/workflows/footprint.yml +++ b/.github/workflows/footprint.yml @@ -7,7 +7,7 @@ on: branches: [master] jobs: - build_and_test: + footprint_test: runs-on: ubuntu-latest steps: diff --git a/.github/workflows/test-renode-multi-mem.yml b/.github/workflows/test-renode-multi-mem.yml index 9255a822..8417e948 100644 --- a/.github/workflows/test-renode-multi-mem.yml +++ b/.github/workflows/test-renode-multi-mem.yml @@ -7,7 +7,7 @@ on: branches: [master] jobs: - build_and_test: + renode_automated_multi_memory: runs-on: ubuntu-20.04 steps: @@ -15,195 +15,51 @@ jobs: with: submodules: true - # Get the arm-non-eabi-gcc toolchain - - name: Install arm-none-eabi-gcc - uses: fiam/arm-none-eabi-gcc@v1 - with: - # The arm-none-eabi-gcc release to use. - release: "9-2019-q4" - - - name: Install wolfSSL - run: | - sudo apt-get install --no-install-recommends -y -q make libwolfssl-dev - - - name: Build test-expect-version - run: | - make -C tools/test-expect-version - - - name: make clean - run: | - make keysclean && make -C tools/keytools clean && rm -f include/target.h - - name: Select config run: | cp config/examples/nrf52840.config .config && make include/target.h - - name: Build key tools - run: | - make -C tools/keytools - - - ##### SMALL STACK tests - - # SIGN=NONE TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=NONE WOLFBOOT_SMALL_STACK=1 - - - name: Build wolfboot and test app image v1, SIGN=NONE WOLFBOOT_SMALL_STACK=1 - run: | - make SIGN=NONE WOLFBOOT_SMALL_STACK=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=NONE WOLFBOOT_SMALL_STACK=1 && cp /tmp/renode-test-update.bin test-app/ +##### SMALL STACK tests +# SIGN=NONE TEST - name: Renode Tests SIGN=NONE WOLFBOOT_SMALL_STACK=1 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=NONE WOLFBOOT_SMALL_STACK=1" - # ECC256 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ECC256 - - - name: Build wolfboot and test app image v1, SIGN=ECC256 - run: | - make SIGN=ECC256 WOLFBOOT_SMALL_STACK=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ECC256 WOLFBOOT_SMALL_STACK=1 && cp /tmp/renode-test-update.bin test-app/ +# ECC256 TEST - name: Renode Tests ECC256 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ECC256 WOLFBOOT_SMALL_STACK=1" + # ECC384 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ECC384 - - - name: Build wolfboot and test app image v1, SIGN=ECC384 - run: | - make SIGN=ECC384 WOLFBOOT_SMALL_STACK=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ECC384 WOLFBOOT_SMALL_STACK=1 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests ECC384 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ECC384 WOLFBOOT_SMALL_STACK=1" + # ED25519 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ED25519 - - - name: Build wolfboot and test app image v1, SIGN=ED25519 - run: | - make SIGN=ED25519 WOLFBOOT_SMALL_STACK=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ED25519 WOLFBOOT_SMALL_STACK=1 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests ED25519 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ED25519 WOLFBOOT_SMALL_STACK=1" + # ED448 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ED448 - - - name: Build wolfboot and test app image v1, SIGN=ED448 - run: | - make SIGN=ED448 WOLFBOOT_SMALL_STACK=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ED448 WOLFBOOT_SMALL_STACK=1 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests ED448 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ED448 WOLFBOOT_SMALL_STACK=1" + # RSA2048 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA2048 - - - name: Build wolfboot and test app image v1, SIGN=RSA2048 - run: | - make SIGN=RSA2048 WOLFBOOT_SMALL_STACK=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA2048 WOLFBOOT_SMALL_STACK=1 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA2048 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA2048 WOLFBOOT_SMALL_STACK=1" + # RSA3072 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA3072 - - - name: Build wolfboot and test app image v1, SIGN=RSA3072 - run: | - make SIGN=RSA3072 WOLFBOOT_SMALL_STACK=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA3072 WOLFBOOT_SMALL_STACK=1 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA3072 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA3072 WOLFBOOT_SMALL_STACK=1" + # RSA4096 TEST - - name: make clean - run: | - make keysclean && make clean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA4096 - - - name: Build wolfboot and test app image v1, SIGN=RSA4096 - run: | - make SIGN=RSA4096 WOLFBOOT_SMALL_STACK=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA4096 WOLFBOOT_SMALL_STACK=1 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA4096 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA4096 WOLFBOOT_SMALL_STACK=1" + - name: Upload Output Dir uses: actions/upload-artifact@v2 @@ -211,147 +67,42 @@ jobs: name: Renode Test Results path: test_results/ - ##### NO_ASM tests - - # ECC256 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ECC256 - - - name: Build wolfboot and test app image v1, SIGN=ECC256 - run: | - make SIGN=ECC256 NO_ASM=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ECC256 NO_ASM=1 && cp /tmp/renode-test-update.bin test-app/ +##### NO_ASM tests +# ECC256 TEST - name: Renode Tests ECC256 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ECC256 NO_ASM=1" + # ECC384 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ECC384 - - - name: Build wolfboot and test app image v1, SIGN=ECC384 - run: | - make SIGN=ECC384 NO_ASM=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ECC384 NO_ASM=1 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests ECC384 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ECC384 NO_ASM=1" + # ED25519 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ED25519 - - - name: Build wolfboot and test app image v1, SIGN=ED25519 - run: | - make SIGN=ED25519 NO_ASM=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ED25519 NO_ASM=1 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests ED25519 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ED25519 NO_ASM=1" + # ED448 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ED448 - - - name: Build wolfboot and test app image v1, SIGN=ED448 - run: | - make SIGN=ED448 NO_ASM=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ED448 NO_ASM=1 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests ED448 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ED448 NO_ASM=1" + # RSA2048 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA2048 - - - name: Build wolfboot and test app image v1, SIGN=RSA2048 - run: | - make SIGN=RSA2048 NO_ASM=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA2048 NO_ASM=1 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA2048 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA2048 NO_ASM=1" + # RSA3072 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA3072 - - - name: Build wolfboot and test app image v1, SIGN=RSA3072 - run: | - make SIGN=RSA3072 NO_ASM=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA3072 NO_ASM=1 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA3072 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA3072 NO_ASM=1" + # RSA4096 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA4096 - - - name: Build wolfboot and test app image v1, SIGN=RSA4096 - run: | - make SIGN=RSA4096 NO_ASM=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA4096 NO_ASM=1 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA4096 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA4096 NO_ASM=1" + - name: Upload Output Dir uses: actions/upload-artifact@v2 @@ -361,105 +112,30 @@ jobs: ##### SMALL STACK + NO_ASM tests - # ECC256 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ECC256 - - - name: Build wolfboot and test app image v1, SIGN=ECC256 - run: | - make SIGN=ECC256 WOLFBOOT_SMALL_STACK=1 NO_ASM=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ECC256 WOLFBOOT_SMALL_STACK=1 NO_ASM=1 && cp /tmp/renode-test-update.bin test-app/ - +# ECC256 TEST - name: Renode Tests ECC256 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ECC256 WOLFBOOT_SMALL_STACK=1 NO_ASM=1" + # ECC384 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ECC384 - - - name: Build wolfboot and test app image v1, SIGN=ECC384 - run: | - make SIGN=ECC384 WOLFBOOT_SMALL_STACK=1 NO_ASM=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ECC384 WOLFBOOT_SMALL_STACK=1 NO_ASM=1 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests ECC384 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ECC384 WOLFBOOT_SMALL_STACK=1 NO_ASM=1" + # RSA2048 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA2048 - - - name: Build wolfboot and test app image v1, SIGN=RSA2048 - run: | - make SIGN=RSA2048 WOLFBOOT_SMALL_STACK=1 NO_ASM=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA2048 WOLFBOOT_SMALL_STACK=1 NO_ASM=1 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA2048 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA2048 WOLFBOOT_SMALL_STACK=1 NO_ASM=1" + # RSA3072 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA3072 - - - name: Build wolfboot and test app image v1, SIGN=RSA3072 - run: | - make SIGN=RSA3072 WOLFBOOT_SMALL_STACK=1 NO_ASM=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA3072 WOLFBOOT_SMALL_STACK=1 NO_ASM=1 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA3072 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA3072 WOLFBOOT_SMALL_STACK=1 NO_ASM=1" + # RSA4096 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA4096 - - - name: Build wolfboot and test app image v1, SIGN=RSA4096 - run: | - make SIGN=RSA4096 WOLFBOOT_SMALL_STACK=1 NO_ASM=1 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA4096 WOLFBOOT_SMALL_STACK=1 NO_ASM=1 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA4096 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA4096 WOLFBOOT_SMALL_STACK=1 NO_ASM=1" + - name: Upload Output Dir uses: actions/upload-artifact@v2 @@ -467,107 +143,32 @@ jobs: name: Renode Test Results path: test_results/ - ##### FAST MATH tests - - # ECC256 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ECC256 - - - name: Build wolfboot and test app image v1, SIGN=ECC256 - run: | - make SIGN=ECC256 SPMATH=0 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ECC256 SPMATH=0 && cp /tmp/renode-test-update.bin test-app/ +##### FAST MATH tests +# ECC256 TEST - name: Renode Tests ECC256 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ECC256 SPMATH=0" + # ECC384 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ECC384 - - - name: Build wolfboot and test app image v1, SIGN=ECC384 - run: | - make SIGN=ECC384 SPMATH=0 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ECC384 SPMATH=0 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests ECC384 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ECC384 SPMATH=0" + # RSA2048 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA2048 - - - name: Build wolfboot and test app image v1, SIGN=RSA2048 - run: | - make SIGN=RSA2048 SPMATH=0 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA2048 SPMATH=0 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA2048 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA2048 SPMATH=0" + # RSA3072 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA3072 - - - name: Build wolfboot and test app image v1, SIGN=RSA3072 - run: | - make SIGN=RSA3072 SPMATH=0 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA3072 SPMATH=0 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA3072 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA3072 SPMATH=0" + # RSA4096 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA4096 - - - name: Build wolfboot and test app image v1, SIGN=RSA4096 - run: | - make SIGN=RSA4096 SPMATH=0 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA4096 SPMATH=0 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA4096 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA4096 SPMATH=0" + - name: Upload Output Dir uses: actions/upload-artifact@v2 @@ -577,105 +178,30 @@ jobs: ##### SMALL STACK + FAST MATH tests - # ECC256 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ECC256 - - - name: Build wolfboot and test app image v1, SIGN=ECC256 - run: | - make SIGN=ECC256 WOLFBOOT_SMALL_STACK=1 SPMATH=0 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ECC256 WOLFBOOT_SMALL_STACK=1 SPMATH=0 && cp /tmp/renode-test-update.bin test-app/ - +# ECC256 TEST - name: Renode Tests ECC256 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ECC256 WOLFBOOT_SMALL_STACK=1 SPMATH=0" + # ECC384 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ECC384 - - - name: Build wolfboot and test app image v1, SIGN=ECC384 - run: | - make SIGN=ECC384 WOLFBOOT_SMALL_STACK=1 SPMATH=0 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ECC384 WOLFBOOT_SMALL_STACK=1 SPMATH=0 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests ECC384 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ECC384 WOLFBOOT_SMALL_STACK=1 SPMATH=0" + # RSA2048 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA2048 - - - name: Build wolfboot and test app image v1, SIGN=RSA2048 - run: | - make SIGN=RSA2048 WOLFBOOT_SMALL_STACK=1 SPMATH=0 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA2048 WOLFBOOT_SMALL_STACK=1 SPMATH=0 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA2048 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA2048 WOLFBOOT_SMALL_STACK=1 SPMATH=0" + # RSA3072 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA3072 - - - name: Build wolfboot and test app image v1, SIGN=RSA3072 - run: | - make SIGN=RSA3072 WOLFBOOT_SMALL_STACK=1 SPMATH=0 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA3072 WOLFBOOT_SMALL_STACK=1 SPMATH=0 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA3072 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA3072 WOLFBOOT_SMALL_STACK=1 SPMATH=0" + # RSA4096 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA4096 - - - name: Build wolfboot and test app image v1, SIGN=RSA4096 - run: | - make SIGN=RSA4096 WOLFBOOT_SMALL_STACK=1 SPMATH=0 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA4096 WOLFBOOT_SMALL_STACK=1 SPMATH=0 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA4096 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA4096 WOLFBOOT_SMALL_STACK=1 SPMATH=0" + - name: Upload Output Dir uses: actions/upload-artifact@v2 diff --git a/.github/workflows/test-renode-multi-sha.yml b/.github/workflows/test-renode-multi-sha.yml index 17175197..7d18db9e 100644 --- a/.github/workflows/test-renode-multi-sha.yml +++ b/.github/workflows/test-renode-multi-sha.yml @@ -7,7 +7,7 @@ on: branches: [master] jobs: - build_and_test: + renode_automated_multi_sha: runs-on: ubuntu-20.04 steps: @@ -15,196 +15,49 @@ jobs: with: submodules: true - # Get the arm-non-eabi-gcc toolchain - - name: Install arm-none-eabi-gcc - uses: fiam/arm-none-eabi-gcc@v1 - with: - # The arm-none-eabi-gcc release to use. - release: "9-2019-q4" - - - name: Install wolfSSL - run: | - sudo apt-get install --no-install-recommends -y -q make libwolfssl-dev - - - name: Build test-expect-version - run: | - make -C tools/test-expect-version - - - name: make clean - run: | - make keysclean && make -C tools/keytools clean && rm -f include/target.h - - name: Select config run: | cp config/examples/nrf52840.config .config && make include/target.h - - name: Build key tools - run: | - make -C tools/keytools - - - ##### SHA384 tests - - # SIGN=NONE TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=NONE HASH=SHA384 - - - name: Build wolfboot and test app image v1, SIGN=NONE HASH=SHA384 - run: | - make SIGN=NONE HASH=SHA384 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=NONE HASH=SHA384 && cp /tmp/renode-test-update.bin test-app/ - +##### SHA384 tests - name: Renode Tests SIGN=NONE HASH=SHA384 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=NONE HASH=SHA384" - # ECC256 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ECC256 - - - name: Build wolfboot and test app image v1, SIGN=ECC256 - run: | - make SIGN=ECC256 HASH=SHA384 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ECC256 HASH=SHA384 && cp /tmp/renode-test-update.bin test-app/ - +# ECC256 TEST - name: Renode Tests ECC256 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ECC256 HASH=SHA384" + # ECC384 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ECC384 - - - name: Build wolfboot and test app image v1, SIGN=ECC384 - run: | - make SIGN=ECC384 HASH=SHA384 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ECC384 HASH=SHA384 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests ECC384 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ECC384 HASH=SHA384" + # ED25519 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ED25519 - - - name: Build wolfboot and test app image v1, SIGN=ED25519 - run: | - make SIGN=ED25519 HASH=SHA384 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ED25519 HASH=SHA384 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests ED25519 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ED25519 HASH=SHA384" + # ED448 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ED448 - - - name: Build wolfboot and test app image v1, SIGN=ED448 - run: | - make SIGN=ED448 HASH=SHA384 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ED448 HASH=SHA384 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests ED448 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ED448 HASH=SHA384" + # RSA2048 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA2048 - - - name: Build wolfboot and test app image v1, SIGN=RSA2048 - run: | - make SIGN=RSA2048 HASH=SHA384 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA2048 HASH=SHA384 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA2048 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA2048 HASH=SHA384" + # RSA3072 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA3072 - - - name: Build wolfboot and test app image v1, SIGN=RSA3072 - run: | - make SIGN=RSA3072 HASH=SHA384 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA3072 HASH=SHA384 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA3072 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA3072 HASH=SHA384" + # RSA4096 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA4096 - - - name: Build wolfboot and test app image v1, SIGN=RSA4096 - run: | - make SIGN=RSA4096 HASH=SHA384 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA4096 HASH=SHA384 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA4096 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA4096 HASH=SHA384" + - name: Upload Output Dir uses: actions/upload-artifact@v2 @@ -212,166 +65,46 @@ jobs: name: Renode Test Results path: test_results/ - ##### SHA-3 tests - # SIGN=NONE TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=NONE HASH=SHA3 - - - name: Build wolfboot and test app image v1, SIGN=NONE HASH=SHA3 - run: | - make SIGN=NONE HASH=SHA3 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=NONE HASH=SHA3 && cp /tmp/renode-test-update.bin test-app/ - +##### SHA-3 tests +# SIGN=NONE TEST - name: Renode Tests SIGN=NONE HASH=SHA3 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=NONE HASH=SHA3" - # ECC256 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ECC256 - - - name: Build wolfboot and test app image v1, SIGN=ECC256 - run: | - make SIGN=ECC256 HASH=SHA3 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ECC256 HASH=SHA3 && cp /tmp/renode-test-update.bin test-app/ +# ECC256 TEST - name: Renode Tests ECC256 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ECC256 HASH=SHA3" + # ECC384 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ECC384 - - - name: Build wolfboot and test app image v1, SIGN=ECC384 - run: | - make SIGN=ECC384 HASH=SHA3 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ECC384 HASH=SHA3 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests ECC384 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ECC384 HASH=SHA3" + # ED25519 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ED25519 - - - name: Build wolfboot and test app image v1, SIGN=ED25519 - run: | - make SIGN=ED25519 HASH=SHA3 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ED25519 HASH=SHA3 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests ED25519 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ED25519 HASH=SHA3" + # ED448 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ED448 - - - name: Build wolfboot and test app image v1, SIGN=ED448 - run: | - make SIGN=ED448 HASH=SHA3 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ED448 HASH=SHA3 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests ED448 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ED448 HASH=SHA3" + # RSA2048 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA2048 - - - name: Build wolfboot and test app image v1, SIGN=RSA2048 - run: | - make SIGN=RSA2048 HASH=SHA3 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA2048 HASH=SHA3 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA2048 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA2048 HASH=SHA3" + # RSA3072 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA3072 - - - name: Build wolfboot and test app image v1, SIGN=RSA3072 - run: | - make SIGN=RSA3072 HASH=SHA3 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA3072 HASH=SHA3 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA3072 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA3072 HASH=SHA3" + # RSA4096 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA4096 - - - name: Build wolfboot and test app image v1, SIGN=RSA4096 - run: | - make SIGN=RSA4096 HASH=SHA3 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA4096 HASH=SHA3 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA4096 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA4096 HASH=SHA3" + - name: Upload Output Dir uses: actions/upload-artifact@v2 diff --git a/.github/workflows/test-renode-nrf52.yml b/.github/workflows/test-renode-nrf52.yml index 71e3d64a..e12316c7 100644 --- a/.github/workflows/test-renode-nrf52.yml +++ b/.github/workflows/test-renode-nrf52.yml @@ -1,4 +1,4 @@ -name: Renode Automated Tests +name: Renode Automated - Base Tests on: push: @@ -7,7 +7,7 @@ on: branches: [master] jobs: - build_and_test: + renode_automated_base: runs-on: ubuntu-20.04 steps: @@ -15,193 +15,44 @@ jobs: with: submodules: true - # Get the arm-non-eabi-gcc toolchain - - name: Install arm-none-eabi-gcc - uses: fiam/arm-none-eabi-gcc@v1 - with: - # The arm-none-eabi-gcc release to use. - release: "9-2019-q4" - - - name: Install wolfSSL - run: | - sudo apt-get install --no-install-recommends -y -q make libwolfssl-dev - - - name: Build test-expect-version - run: | - make -C tools/test-expect-version - - - name: make clean - run: | - make keysclean && make -C tools/keytools clean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h - - - name: Build key tools - run: | - make -C tools/keytools - - # SIGN=NONE TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - name: Select config run: | cp config/examples/nrf52840.config .config && make include/target.h SIGN=NONE - - name: Build wolfboot and test app image v1, SIGN=NONE - run: | - make SIGN=NONE - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=NONE && cp /tmp/renode-test-update.bin test-app/ +# SIGN=NONE TEST - name: Renode Tests SIGN=NONE - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=NONE" - # ECC256 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ECC256 - - - name: Build wolfboot and test app image v1, SIGN=ECC256 - run: | - make SIGN=ECC256 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ECC256 && cp /tmp/renode-test-update.bin test-app/ - +# ECC256 TEST - name: Renode Tests ECC256 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ECC256" # ECC384 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ECC384 - - - name: Build wolfboot and test app image v1, SIGN=ECC384 - run: | - make SIGN=ECC384 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ECC384 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests ECC384 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ECC384" # ED25519 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ED25519 - - - name: Build wolfboot and test app image v1, SIGN=ED25519 - run: | - make SIGN=ED25519 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ED25519 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests ED25519 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ED25519" # ED448 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=ED448 - - - name: Build wolfboot and test app image v1, SIGN=ED448 - run: | - make SIGN=ED448 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=ED448 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests ED448 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=ED448" # RSA2048 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA2048 - - - name: Build wolfboot and test app image v1, SIGN=RSA2048 - run: | - make SIGN=RSA2048 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA2048 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA2048 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA2048" # RSA3072 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA3072 - - - name: Build wolfboot and test app image v1, SIGN=RSA3072 - run: | - make SIGN=RSA3072 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA3072 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA3072 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA3072" # RSA4096 TEST - - name: make clean - run: | - make keysclean && rm -f include/target.h - - - name: Select config - run: | - cp config/examples/nrf52840.config .config && make include/target.h SIGN=RSA4096 - - - name: Build wolfboot and test app image v1, SIGN=RSA4096 - run: | - make SIGN=RSA4096 - - - name: Build update image v2 - run: | - make /tmp/renode-test-update.bin SIGN=RSA4096 && cp /tmp/renode-test-update.bin test-app/ - - name: Renode Tests RSA4096 - run: ./tools/renode/docker-test.sh + run: ./tools/renode/docker-test.sh "SIGN=RSA4096" - name: Upload Output Dir uses: actions/upload-artifact@v2 diff --git a/tools/renode/Dockerfile b/tools/renode/Dockerfile index 9bd3789d..654ed4d0 100644 --- a/tools/renode/Dockerfile +++ b/tools/renode/Dockerfile @@ -1 +1,5 @@ FROM antmicro/renode:latest + +RUN apt-get update +RUN apt-get install gcc-arm-none-eabi make -y + diff --git a/tools/renode/docker-test.sh b/tools/renode/docker-test.sh index e4234a03..fb2061dd 100755 --- a/tools/renode/docker-test.sh +++ b/tools/renode/docker-test.sh @@ -23,7 +23,7 @@ if ! docker run \ --env RENODE_CHECKOUT=/home/developer/renode \ --workdir ${DOCKER_WORKSPACE} \ ${DOCKER_TAG} \ - /bin/bash -c "tools/scripts/renode-test-update.sh 2>&1 > ${DOCKER_TEST_RESULTS_PATH}/logs.txt" + /bin/bash -c "tools/scripts/renode-test-update.sh $@ 2>&1 > ${DOCKER_TEST_RESULTS_PATH}/logs.txt" then echo "FAILED" exit_code=1 diff --git a/tools/scripts/renode-test-update.sh b/tools/scripts/renode-test-update.sh index 1fbbdb00..b1119c4f 100755 --- a/tools/scripts/renode-test-update.sh +++ b/tools/scripts/renode-test-update.sh @@ -7,6 +7,7 @@ export POFF=262139 export RENODE_PORT=55155 export RENODE_OPTIONS="--pid-file=$RENODE_PIDFILE --disable-xwt -P $RENODE_PORT" export EXPVER=tools/test-expect-version/test-expect-version +export TEST_OPTIONS=$@ quit_renode() { if (which nc); then @@ -18,9 +19,16 @@ quit_renode() { rm -f $RENODE_UART -cp wolfboot.elf /tmp/renode-wolfboot.elf -cp test-app/image_v1_signed.bin /tmp/renode-test-v1.bin -cp test-app/renode-test-update.bin /tmp +make distclean +make -C tools/keytools +make -C tools/test-expect-version +make clean && make $TEST_OPTIONS || exit 2 +make /tmp/renode-test-update.bin $TEST_OPTIONS || exit 2 +cp /tmp/renode-test-update.bin test-app/ || exit 3 + +cp wolfboot.elf /tmp/renode-wolfboot.elf || exit 3 +cp test-app/image_v1_signed.bin /tmp/renode-test-v1.bin || exit 3 +cp test-app/renode-test-update.bin /tmp || exit 3 echo "Launching Renode" renode $RENODE_OPTIONS $RENODE_CONFIG >/dev/null & while ! (test -e $RENODE_UART); do sleep .1; done