Skip to content

Commit 25bee84

Browse files
authored
Merge pull request #682 from danielinux/update-benchmark-h5
Updated benchmark scripts to run on rpi + stm32h563
2 parents 5b43fcc + cd2b02e commit 25bee84

24 files changed

Lines changed: 275 additions & 65 deletions

File tree

.github/workflows/trustzone-emulator-tests.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ jobs:
5454
make clean distclean
5555
cp config/examples/stm32h5-tz-psa.config .config
5656
make
57-
m33mu wolfboot.bin test-app/image_v1_signed.bin:0x60000 --uart-stdout --expect-bkpt 0x7f --timeout 300
57+
m33mu wolfboot.bin test-app/image_v1_signed.bin:0x60000 --uart-stdout --expect-bkpt 0x7f --timeout 600
5858
5959
- name: Clean and build test with DICE attestation + OTP (stm32h5)
6060
run: |
@@ -64,4 +64,4 @@ jobs:
6464
make -C tools/keytools/otp TARGET=stm32h5 otp-keystore-primer.bin otp-keystore-gen
6565
./tools/keytools/otp/otp-keystore-gen
6666
m33mu tools/keytools/otp/otp-keystore-primer.bin --persist --timeout 10 || true
67-
m33mu wolfboot.bin test-app/image_v1_signed.bin:0x60000 --uart-stdout --expect-bkpt 0x7f --timeout 300 --persist
67+
m33mu wolfboot.bin test-app/image_v1_signed.bin:0x60000 --uart-stdout --expect-bkpt 0x7f --timeout 600 --persist
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
ARCH?=ARM
2+
TZEN?=0
3+
TARGET?=stm32h5
4+
SIGN?=ECC256
5+
HASH?=SHA256
6+
DEBUG?=0
7+
VTOR?=1
8+
CORTEX_M0?=0
9+
CORTEX_M33?=1
10+
NO_ASM?=0
11+
NO_MPU=1
12+
EXT_FLASH?=0
13+
SPI_FLASH?=0
14+
ALLOW_DOWNGRADE?=0
15+
NVM_FLASH_WRITEONCE?=1
16+
WOLFBOOT_VERSION?=1
17+
V?=0
18+
SPMATH?=1
19+
RAM_CODE?=0
20+
DUALBANK_SWAP?=0
21+
WOLFBOOT_PARTITION_SIZE?=0xA0000
22+
#Double sector size to fit header in ML-DSA-87
23+
WOLFBOOT_SECTOR_SIZE?=0x4000
24+
WOLFBOOT_KEYVAULT_ADDRESS?=0x0C040000
25+
WOLFBOOT_KEYVAULT_SIZE?=0x1C000
26+
WOLFBOOT_NSC_ADDRESS?=0x0C05C000
27+
WOLFBOOT_NSC_SIZE?=0x4000
28+
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x08060000
29+
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x08100000
30+
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x081A0000
31+
FLAGS_HOME=0
32+
DISABLE_BACKUP=0
33+
IMAGE_HEADER_SIZE?=1024
34+
ARMORED=1

hal/stm32_tz.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ void hal_tz_sau_init(void)
311311
WOLFBOOT_PARTITION_BOOT_ADDRESS + WOLFBOOT_PARTITION_SIZE - 1, 0);
312312

313313
/* Non-secure RAM region */
314-
sau_init_region(2, 0x20050000, 0x2008FFFF, 0);
314+
sau_init_region(2, 0x20050000, 0x2009FFFF, 0);
315315

316316
/* Non-secure: internal peripherals */
317317
sau_init_region(3, 0x40000000, 0x4FFFFFFF, 0);

include/image.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,7 @@ static void __attribute__((noinline)) wolfBoot_image_clear_signature_ok(
444444
asm volatile("bne hnope"); \
445445
/* Repeat memcmp call */ \
446446
compare_res = XMEMCMP(digest, img->sha_hash, WOLFBOOT_SHA_DIGEST_SIZE); \
447+
compare_res; \
447448
/* Redundant checks that ensure the function actually returned 0 */ \
448449
asm volatile("cmp r0, #0":::"cc"); \
449450
asm volatile("cmp r0, #0":::"cc"); \

include/loader.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,19 @@ extern "C" {
3232
#define ED25519_IMAGE_SIGNATURE_SIZE (64)
3333
#define ED448_IMAGE_SIGNATURE_SIZE (114)
3434

35-
#if defined(WOLFBOOT_SIGN_ECC256) || defined(WOLFBOOT_SECONDARY_SIGN_ECC256)
35+
#if defined(WOLFBOOT_SIGN_ECC256) || defined(WOLFBOOT_SIGN_SECONDARY_ECC256)
3636
#define ECC_IMAGE_SIGNATURE_SIZE (64)
37-
#elif defined(WOLFBOOT_SIGN_ECC384) || defined(WOLFBOOT_SECONDARY_SIGN_ECC384)
37+
#elif defined(WOLFBOOT_SIGN_ECC384) || defined(WOLFBOOT_SIGN_SECONDARY_ECC384)
3838
#define ECC_IMAGE_SIGNATURE_SIZE (96)
39-
#elif defined(WOLFBOOT_SIGN_ECC521) || defined(WOLFBOOT_SECONDARY_SIGN_ECC521)
39+
#elif defined(WOLFBOOT_SIGN_ECC521) || defined(WOLFBOOT_SIGN_SECONDARY_ECC521)
4040
#define ECC_IMAGE_SIGNATURE_SIZE (132)
4141
#endif
4242

43-
#if defined(WOLFBOOT_SIGN_RSA2048) || defined(WOLFBOOT_SECONDARY_SIGN_RSA2048)
43+
#if defined(WOLFBOOT_SIGN_RSA2048) || defined(WOLFBOOT_SIGN_SECONDARY_RSA2048)
4444
#define RSA_IMAGE_SIGNATURE_SIZE (256)
45-
#elif defined(WOLFBOOT_SIGN_RSA3072) || defined(WOLFBOOT_SECONDARY_SIGN_RSA3072)
45+
#elif defined(WOLFBOOT_SIGN_RSA3072) || defined(WOLFBOOT_SIGN_SECONDARY_RSA3072)
4646
#define RSA_IMAGE_SIGNATURE_SIZE (384)
47-
#elif defined(WOLFBOOT_SIGN_RSA4096) || defined(WOLFBOOT_SECONDARY_SIGN_RSA4096)
47+
#elif defined(WOLFBOOT_SIGN_RSA4096) || defined(WOLFBOOT_SIGN_SECONDARY_RSA4096)
4848
#define RSA_IMAGE_SIGNATURE_SIZE (512)
4949
#endif
5050

options.mk

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,21 @@
11
WOLFCRYPT_OBJS+=$(WOLFBOOT_LIB_WOLFSSL)/wolfcrypt/src/asn.o
22
USE_GCC?=1
3+
WOLFBOOT_TEST_FILLER?=0
4+
WOLFBOOT_TIME_TEST?=0
35

46
# Support for Built-in ROT into OTP flash memory
57
ifeq ($(FLASH_OTP_KEYSTORE),1)
68
CFLAGS+=-D"FLASH_OTP_KEYSTORE"
79
endif
810

11+
ifeq ($(WOLFBOOT_TEST_FILLER),1)
12+
CFLAGS+=-D"WOLFBOOT_TEST_FILLER"
13+
endif
14+
15+
ifeq ($(WOLFBOOT_TIME_TEST),1)
16+
CFLAGS+=-D"WOLFBOOT_TIME_TEST"
17+
endif
18+
919
# Support for TPM signature verification
1020
ifeq ($(WOLFBOOT_TPM_VERIFY),1)
1121
WOLFTPM:=1
@@ -200,7 +210,7 @@ ifeq ($(SIGN),ECC521)
200210
ifneq ($(SPMATH),1)
201211
STACK_USAGE=11256
202212
else
203-
STACK_USAGE=8288
213+
STACK_USAGE=8480
204214
endif
205215
endif
206216
endif

src/dice/dice.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,7 @@ static int wolfboot_dice_fixup_priv(uint8_t *priv, size_t priv_len)
491491
ret = mp_mod(&k, &order, &mod);
492492
}
493493
if (ret == MP_OKAY && mp_iszero(&mod) == MP_YES) {
494-
ret = mp_set_int(&mod, 1);
494+
ret = mp_set(&mod, 1);
495495
}
496496
if (ret == MP_OKAY) {
497497
XMEMSET(priv, 0, priv_len);

src/image.c

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2183,6 +2183,7 @@ int wolfBoot_verify_authenticity(struct wolfBoot_image *img)
21832183
if (SIG_OK(img)) {
21842184
uint8_t *stored_secondary_signature;
21852185
uint16_t stored_secondary_signature_size;
2186+
uint16_t expected_secondary_signature_size = 0;
21862187
/* Invalidate the signature_ok flag */
21872188
wolfBoot_image_clear_signature_ok(img);
21882189
/* Load the pubkey hint for the secondary key */
@@ -2199,6 +2200,37 @@ int wolfBoot_verify_authenticity(struct wolfBoot_image *img)
21992200
CONFIRM_MASK_VALID(image_part, key_mask);
22002201
stored_secondary_signature_size = get_header(img,
22012202
HDR_SECONDARY_SIGNATURE, &stored_secondary_signature);
2203+
if (stored_secondary_signature_size == 0 ||
2204+
stored_secondary_signature == NULL) {
2205+
return -1;
2206+
}
2207+
#if defined(WOLFBOOT_SIGN_SECONDARY_ED25519)
2208+
expected_secondary_signature_size = ED25519_IMAGE_SIGNATURE_SIZE;
2209+
#elif defined(WOLFBOOT_SIGN_SECONDARY_ED448)
2210+
expected_secondary_signature_size = ED448_IMAGE_SIGNATURE_SIZE;
2211+
#elif defined (WOLFBOOT_SIGN_SECONDARY_RSA2048) || \
2212+
defined (WOLFBOOT_SIGN_SECONDARY_RSA3072) || \
2213+
defined (WOLFBOOT_SIGN_SECONDARY_RSA4096) || \
2214+
defined (WOLFBOOT_SIGN_SECONDARY_RSA2048ENC) || \
2215+
defined (WOLFBOOT_SIGN_SECONDARY_RSA3072ENC) || \
2216+
defined (WOLFBOOT_SIGN_SECONDARY_RSA4096ENC)
2217+
expected_secondary_signature_size = RSA_IMAGE_SIGNATURE_SIZE;
2218+
#elif defined (WOLFBOOT_SIGN_SECONDARY_ECC256) || \
2219+
defined (WOLFBOOT_SIGN_SECONDARY_ECC384) || \
2220+
defined (WOLFBOOT_SIGN_SECONDARY_ECC521)
2221+
expected_secondary_signature_size = ECC_IMAGE_SIGNATURE_SIZE;
2222+
#elif defined(WOLFBOOT_SIGN_SECONDARY_LMS)
2223+
expected_secondary_signature_size = LMS_IMAGE_SIGNATURE_SIZE;
2224+
#elif defined(WOLFBOOT_SIGN_SECONDARY_XMSS)
2225+
expected_secondary_signature_size = XMSS_IMAGE_SIGNATURE_SIZE;
2226+
#elif defined(WOLFBOOT_SIGN_SECONDARY_ML_DSA)
2227+
expected_secondary_signature_size = ML_DSA_IMAGE_SIGNATURE_SIZE;
2228+
#endif
2229+
if (expected_secondary_signature_size == 0 ||
2230+
stored_secondary_signature_size !=
2231+
expected_secondary_signature_size) {
2232+
return -1;
2233+
}
22022234
wolfBoot_printf("Verification of hybrid signature\n");
22032235
wolfBoot_verify_signature_secondary(key_slot, img,
22042236
stored_secondary_signature);

test-app/ARM-stm32h5-ns.ld

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
MEMORY
22
{
33
FLASH (rx) : ORIGIN = @WOLFBOOT_TEST_APP_ADDRESS@, LENGTH = @WOLFBOOT_TEST_APP_SIZE@
4-
RAM (rwx) : ORIGIN = 0x20050000, LENGTH = 0x40000
4+
RAM (rwx) : ORIGIN = 0x20050000, LENGTH = 0x50000
55
}
66

77
SECTIONS

test-app/ARM-stm32h5.ld

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
MEMORY
22
{
33
FLASH (rx) : ORIGIN = @WOLFBOOT_TEST_APP_ADDRESS@, LENGTH = @WOLFBOOT_TEST_APP_SIZE@
4-
RAM (rwx) : ORIGIN = 0x30000000, LENGTH = 64K /* Run in lowmem */
4+
RAM (rwx) : ORIGIN = 0x30000000, LENGTH = 256K
55
}
66

77
SECTIONS

0 commit comments

Comments
 (0)