From c989a13d94aa6f9b9f39216a7c92f40c84d36b67 Mon Sep 17 00:00:00 2001 From: Daniele Lacamera Date: Wed, 13 Mar 2019 18:25:45 +0100 Subject: [PATCH] [CI] test automation on target --- tools/ecc256/Makefile | 2 +- tools/ed25519/Makefile | 2 +- tools/ed25519/ed25519_sign.c | 2 - tools/test.mk | 101 +++++++++++++++++++++++++++++------ 4 files changed, 87 insertions(+), 20 deletions(-) diff --git a/tools/ecc256/Makefile b/tools/ecc256/Makefile index f42b74d4..b9e6f8ac 100644 --- a/tools/ecc256/Makefile +++ b/tools/ecc256/Makefile @@ -5,7 +5,7 @@ LD=gcc CROSS_COMPILE= WOLFBOOT_ROOT=../../ BOOTUTIL_ROOT=$(WOLFBOOT_ROOT)/lib/bootutil -CFLAGS:=-lwolfssl -DHAVE_ECC -DHAVE_ASN -DWOLFCRYPT_ONLY -DTFM_TIMING_RESISTANT -DNO_RSA -DECC_TIMING_RESISTANT -DWOLFSSL_DER_TO_PEM -DWOLFSSL_VALIDATE_ECC_IMPORT -I$(WOLFBOOT_ROOT)/include +CFLAGS:=-lwolfssl -DHAVE_ECC -DHAVE_ASN -DWOLFCRYPT_ONLY -DTFM_TIMING_RESISTANT -DNO_RSA -DECC_TIMING_RESISTANT -DWOLFSSL_DER_TO_PEM -DWOLFSSL_VALIDATE_ECC_IMPORT -DHAVE_ECC_KEY_EXPORT -I$(WOLFBOOT_ROOT)/include LDFLAGS:=-lwolfssl LDFLAGS_EXTRA= EXTRA_LDFLAGS= diff --git a/tools/ed25519/Makefile b/tools/ed25519/Makefile index 7a6c167a..54804f05 100644 --- a/tools/ed25519/Makefile +++ b/tools/ed25519/Makefile @@ -2,7 +2,7 @@ # CROSS_COMPILE= WOLFBOOT_ROOT=../../ -CFLAGS:=-lwolfssl -DHAVE_ED25519 -DHAVE_ASN -DWOLFCRYPT_ONLY -DTFM_TIMING_RESISTANT -DNO_RSA -DECC_TIMING_RESISTANT -DWOLFSSL_DER_TO_PEM -I$(WOLFBOOT_ROOT)/include -I$(WOLFBOOT_ROOT)/lib/wolfssl +CFLAGS:=-lwolfssl -DHAVE_ECC_KEY_EXPORT -DHAVE_ED25519 -DHAVE_ASN -DWOLFCRYPT_ONLY -DTFM_TIMING_RESISTANT -DNO_RSA -DECC_TIMING_RESISTANT -DWOLFSSL_DER_TO_PEM -I$(WOLFBOOT_ROOT)/include -I$(WOLFBOOT_ROOT)/lib/wolfssl LDFLAGS:=-lwolfssl LDFLAGS_EXTRA= EXTRA_LDFLAGS= diff --git a/tools/ed25519/ed25519_sign.c b/tools/ed25519/ed25519_sign.c index fadfae26..d3680ec5 100644 --- a/tools/ed25519/ed25519_sign.c +++ b/tools/ed25519/ed25519_sign.c @@ -172,7 +172,6 @@ int main(int argc, char *argv[]) } wc_Sha256Final(&sha, shabuf); wc_ed25519_sign_msg(shabuf, 32, signature, &outlen, &key); - wc_Sha256Free(&sha); *(ptr++) = HDR_SHA256; @@ -186,7 +185,6 @@ int main(int argc, char *argv[]) *(ptr++) = HDR_PUBKEY; *(ptr++) = SHA256_DIGEST_SIZE; memcpy(ptr, shabuf, SHA256_DIGEST_SIZE); - wc_Sha256Free(&keyhash); ptr += SHA256_DIGEST_SIZE; *(ptr++) = HDR_SIGNATURE; diff --git a/tools/test.mk b/tools/test.mk index 373e938e..360d866e 100644 --- a/tools/test.mk +++ b/tools/test.mk @@ -5,31 +5,100 @@ $(EXPVER): make -C tools/test-expect-version test-update: test-app/image.bin FORCE - $(SIGN_TOOL) test-app/image.bin $(PRIVATE_KEY) $(TEST_UPDATE_VERSION) 131072 - dd if=test-app/image.bin.v$(TEST_UPDATE_VERSION).signed of=test-update.bin bs=1 count=131067 - printf "pBOOT" >> test-update.bin - sudo st-term reset init || true - sleep 2 - sudo st-flash --reset write test-update.bin 0x08040000 + @$(SIGN_TOOL) test-app/image.bin $(PRIVATE_KEY) $(TEST_UPDATE_VERSION) 131072 >/dev/null + @dd if=test-app/image.bin.v$(TEST_UPDATE_VERSION).signed of=test-update.bin bs=1 count=131067 + @printf "pBOOT" >> test-update.bin + @make test-reset + @sleep 2 + @sudo st-flash --reset write test-update.bin 0x08040000 || \ + (make test-reset && sleep 1 && sudo st-flash --reset write test-update.bin 0x08040000) || \ + (make test-reset && sleep 1 && sudo st-flash --reset write test-update.bin 0x08040000) + test-erase: FORCE - sudo st-term reset init || true - sleep 2 - sudo st-flash erase + @echo Mass-erasing the internal flash: + @make test-reset + @sleep 2 + @sudo st-flash erase test-factory: factory.bin - sudo st-term reset init || true - sleep 2 - sudo st-flash --reset write factory.bin 0x08000000 + @make test-reset + @sleep 2 + @sudo st-flash --reset write factory.bin 0x08000000 || \ + (make test-reset && sleep 1 && sudo st-flash --reset write factory.bin 0x08000000) || \ + (make test-reset && sleep 1 && sudo st-flash --reset write factory.bin 0x08000000) test-reset: FORCE - sudo st-info --reset || true + @sudo st-info --reset ## Test cases: -test-00-forward-update: $(EXPVER) FORCE - make test-factory - $(EXPVER) +test-01-forward-update-no-downgrade: $(EXPVER) FORCE + @echo Creating and uploading factory image... + @make test-factory + @echo Expecting version '1' + @$$(test `$(EXPVER)` -eq 1) + @echo + @echo Creating and uploading update image... + @make test-update TEST_UPDATE_VERSION=4 + @echo Expecting version '4' + @$$(test `$(EXPVER)` -eq 4) + @echo + @echo Creating and uploading update image... + @make test-update TEST_UPDATE_VERSION=1 + @echo Expecting version '4' + @$$(test `$(EXPVER)` -eq 4) + @make clean + @echo TEST PASSED + +test-02-forward-update-allow-downgrade: $(EXPVER) FORCE + @echo Creating and uploading factory image... + @make test-factory ALLOW_DOWNGRADE=1 + @echo Expecting version '1' + @$$(test `$(EXPVER)` -eq 1) + @echo + @echo Creating and uploading update image... + @make test-update TEST_UPDATE_VERSION=4 + @echo Expecting version '4' + @$$(test `$(EXPVER)` -eq 4) + @echo + @echo Creating and uploading update image... + @make test-update TEST_UPDATE_VERSION=2 + @echo Expecting version '4' + @$$(test `$(EXPVER)` -eq 2) + @make clean + @echo TEST PASSED + +test-03-rollback: $(EXPVER) FORCE + @echo Creating and uploading factory image... + @make test-factory ALLOW_DOWNGRADE=1 + @echo Expecting version '1' + @$$(test `$(EXPVER)` -eq 1) + @echo + @echo Creating and uploading update image... + @make test-update TEST_UPDATE_VERSION=4 + @echo Expecting version '4' + @$$(test `$(EXPVER)` -eq 4) + @echo + @echo Creating and uploading update image... + @make test-update TEST_UPDATE_VERSION=5 + @echo Expecting version '5' + @$$(test `$(EXPVER)` -eq 5) + @echo + @echo Resetting to trigger rollback... + @make test-reset + @$$(test `$(EXPVER)` -eq 4) + @make clean + @echo TEST PASSED + +test-11-forward-update-no-downgrade-ECC: $(EXPVER) FORCE + @make test-01-forward-update-no-downgrade SIGN=ECC256 + +test-13-rollback-ECC: $(EXPVER) FORCE + @make test-03-rollback SIGN=ECC256 + + +test-all: clean test-01-forward-update-no-downgrade test-02-forward-update-allow-downgrade test-03-rollback test-11-forward-update-no-downgrade-ECC test-13-rollback-ECC