Skip to content

Commit 9fc82ac

Browse files
authored
Merge pull request #61 from dgarske/tpm_rsa
Fixes for RSA verify with TPM
2 parents 5c2e44a + e303c28 commit 9fc82ac

8 files changed

Lines changed: 279 additions & 84 deletions

File tree

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ include/target.h
7878
# Test tools
7979
tools/test-expect-version/test-expect-version
8080
tools/test-update-server/server
81+
tools/uart-flash-server/ufserver
8182
config/*.ld
8283

8384
# Generated confiuguration file
@@ -89,4 +90,3 @@ config/*.ld
8990
# IAR files not under version control
9091
IDE/IAR/settings
9192
IDE/IAR/*.ewt
92-

Makefile

Lines changed: 52 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,17 @@ ifeq ($(SIGN),ECC256)
3838
PRIVATE_KEY=ecc256.der
3939
WOLFCRYPT_OBJS+= \
4040
$(MATH_OBJS) \
41-
./lib/wolfssl/wolfcrypt/src/ecc.o \
42-
./lib/wolfssl/wolfcrypt/src/memory.o \
43-
./lib/wolfssl/wolfcrypt/src/wc_port.o \
41+
./lib/wolfssl/wolfcrypt/src/ecc.o \
42+
./lib/wolfssl/wolfcrypt/src/memory.o \
43+
./lib/wolfssl/wolfcrypt/src/wc_port.o \
4444
./lib/wolfssl/wolfcrypt/src/hash.o \
4545
./src/xmalloc_ecc.o
46-
CFLAGS+=-DWOLFBOOT_SIGN_ECC256 -DXMALLOC_USER \
47-
-Wstack-usage=1024
46+
CFLAGS+=-DWOLFBOOT_SIGN_ECC256 -DXMALLOC_USER
47+
ifeq ($(WOLFTPM),0)
48+
CFLAGS+=-Wstack-usage=1024
49+
else
50+
CFLAGS+=-Wstack-usage=6680
51+
endif
4852
PUBLIC_KEY_OBJS=./src/ecc256_pub_key.o
4953
endif
5054

@@ -53,15 +57,14 @@ ifeq ($(SIGN),ED25519)
5357
SIGN_OPTIONS+=--ed25519
5458
PRIVATE_KEY=ed25519.der
5559
WOLFCRYPT_OBJS+= ./lib/wolfssl/wolfcrypt/src/sha512.o \
56-
./lib/wolfssl/wolfcrypt/src/ed25519.o \
57-
./lib/wolfssl/wolfcrypt/src/ge_low_mem.o \
60+
./lib/wolfssl/wolfcrypt/src/ed25519.o \
61+
./lib/wolfssl/wolfcrypt/src/ge_low_mem.o \
5862
./lib/wolfssl/wolfcrypt/src/hash.o \
59-
./lib/wolfssl/wolfcrypt/src/wolfmath.o \
60-
./lib/wolfssl/wolfcrypt/src/wc_port.o \
63+
./lib/wolfssl/wolfcrypt/src/wolfmath.o \
64+
./lib/wolfssl/wolfcrypt/src/wc_port.o \
6165
./lib/wolfssl/wolfcrypt/src/fe_low_mem.o
6266
PUBLIC_KEY_OBJS=./src/ed25519_pub_key.o
63-
CFLAGS+=-DWOLFBOOT_SIGN_ED25519 \
64-
-Wstack-usage=1024
67+
CFLAGS+=-DWOLFBOOT_SIGN_ED25519 -Wstack-usage=1024
6568
endif
6669

6770
ifeq ($(SIGN),RSA2048)
@@ -72,14 +75,19 @@ ifeq ($(SIGN),RSA2048)
7275
WOLFCRYPT_OBJS+= \
7376
$(RSA_EXTRA_OBJS) \
7477
$(MATH_OBJS) \
75-
./lib/wolfssl/wolfcrypt/src/rsa.o \
76-
./lib/wolfssl/wolfcrypt/src/asn.o \
77-
./lib/wolfssl/wolfcrypt/src/hash.o \
78-
./lib/wolfssl/wolfcrypt/src/wc_port.o \
79-
./src/xmalloc_rsa.o
78+
./lib/wolfssl/wolfcrypt/src/rsa.o \
79+
./lib/wolfssl/wolfcrypt/src/asn.o \
80+
./lib/wolfssl/wolfcrypt/src/hash.o \
81+
./lib/wolfssl/wolfcrypt/src/wc_port.o \
82+
./src/xmalloc_rsa.o
8083
PUBLIC_KEY_OBJS=./src/rsa2048_pub_key.o
8184
CFLAGS+=-DWOLFBOOT_SIGN_RSA2048 -DXMALLOC_USER $(RSA_EXTRA_CFLAGS) \
82-
-Wstack-usage=12288 -DIMAGE_HEADER_SIZE=512
85+
-DIMAGE_HEADER_SIZE=512
86+
ifeq ($(WOLFTPM),0)
87+
CFLAGS+=-Wstack-usage=12288
88+
else
89+
CFLAGS+=-Wstack-usage=8320
90+
endif
8391
endif
8492

8593
ifeq ($(SIGN),RSA4096)
@@ -90,44 +98,50 @@ ifeq ($(SIGN),RSA4096)
9098
WOLFCRYPT_OBJS+= \
9199
$(RSA_EXTRA_OBJS) \
92100
$(MATH_OBJS) \
93-
./lib/wolfssl/wolfcrypt/src/rsa.o \
94-
./lib/wolfssl/wolfcrypt/src/asn.o \
95-
./lib/wolfssl/wolfcrypt/src/hash.o \
96-
./lib/wolfssl/wolfcrypt/src/wolfmath.o \
97-
./src/xmalloc_rsa.o
101+
./lib/wolfssl/wolfcrypt/src/rsa.o \
102+
./lib/wolfssl/wolfcrypt/src/asn.o \
103+
./lib/wolfssl/wolfcrypt/src/hash.o \
104+
./lib/wolfssl/wolfcrypt/src/wolfmath.o \
105+
./lib/wolfssl/wolfcrypt/src/wc_port.o \
106+
./src/xmalloc_rsa.o
98107
PUBLIC_KEY_OBJS=./src/rsa4096_pub_key.o
99108
CFLAGS+=-DWOLFBOOT_SIGN_RSA4096 -DXMALLOC_USER $(RSA_EXTRA_CFLAGS) \
100-
-Wstack-usage=12288 -DIMAGE_HEADER_SIZE=1024
109+
-DIMAGE_HEADER_SIZE=1024
110+
ifeq ($(WOLFTPM),0)
111+
CFLAGS+=-Wstack-usage=12288
112+
else
113+
CFLAGS+=-Wstack-usage=10680
114+
endif
101115
endif
102116

103117

104118
CFLAGS+=-Wall -Wextra -Wno-main -ffreestanding -Wno-unused \
105-
-I. -Iinclude/ -Ilib/wolfssl -nostartfiles \
106-
-DWOLFSSL_USER_SETTINGS \
107-
-DPLATFORM_$(TARGET)
119+
-I. -Iinclude/ -Ilib/wolfssl -nostartfiles \
120+
-DWOLFSSL_USER_SETTINGS \
121+
-DPLATFORM_$(TARGET)
108122

109123
ifeq ($(RAM_CODE),1)
110-
CFLAGS+= -DRAM_CODE
124+
CFLAGS+= -DRAM_CODE
111125
endif
112126

113127
ifeq ($(DUALBANK_SWAP),1)
114-
CFLAGS+= -DDUALBANK_SWAP
128+
CFLAGS+= -DDUALBANK_SWAP
115129
endif
116130

117131
ifeq ($(SPI_FLASH),1)
118-
EXT_FLASH=1
119-
CFLAGS+= -DSPI_FLASH=1
120-
OBJS+= src/spi_flash.o
121-
WOLFCRYPT_OBJS+=hal/spi/spi_drv_$(SPI_TARGET).o
132+
EXT_FLASH=1
133+
CFLAGS+= -DSPI_FLASH=1
134+
OBJS+= src/spi_flash.o
135+
WOLFCRYPT_OBJS+=hal/spi/spi_drv_$(SPI_TARGET).o
122136
endif
123137

124138
ifeq ($(UART_FLASH),1)
125139
EXT_FLASH=1
126140
endif
127141

128142
ifeq ($(ENCRYPT),1)
129-
CFLAGS+=-DEXT_ENCRYPTED=1
130-
WOLFCRYPT_OBJS+=./lib/wolfssl/wolfcrypt/src/chacha.o
143+
CFLAGS+=-DEXT_ENCRYPTED=1
144+
WOLFCRYPT_OBJS+=./lib/wolfssl/wolfcrypt/src/chacha.o
131145
endif
132146

133147
ifeq ($(EXT_FLASH),1)
@@ -242,15 +256,13 @@ include tools/test.mk
242256
include tools/test-enc.mk
243257

244258
ed25519.der:
245-
@$(KEYGEN_TOOL) $(KEYGEN_OPTIONS) src/ed25519_pub_key.c
259+
$(Q)$(KEYGEN_TOOL) $(KEYGEN_OPTIONS) src/ed25519_pub_key.c
246260
ecc256.der:
247-
@$(KEYGEN_TOOL) $(KEYGEN_OPTIONS) src/ecc256_pub_key.c
248-
261+
$(Q)$(KEYGEN_TOOL) $(KEYGEN_OPTIONS) src/ecc256_pub_key.c
249262
rsa2048.der:
250-
@$(KEYGEN_TOOL) $(KEYGEN_OPTIONS) src/rsa2048_pub_key.c
251-
263+
$(Q)$(KEYGEN_TOOL) $(KEYGEN_OPTIONS) src/rsa2048_pub_key.c
252264
rsa4096.der:
253-
@$(KEYGEN_TOOL) $(KEYGEN_OPTIONS) src/rsa4096_pub_key.c
265+
$(Q)$(KEYGEN_TOOL) $(KEYGEN_OPTIONS) src/rsa4096_pub_key.c
254266

255267
keytools:
256268
@make -C tools/keytools

config/examples/stm32f4.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,4 @@ WOLFBOOT_SECTOR_SIZE?=0x20000
2121
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x20000
2222
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x40000
2323
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0x60000
24+
WOLFTPM?=0

docs/Targets.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,29 @@ On other systems, the SWAP space can be as small as 512B, if multiple smaller fl
3737
3838
More information about the geometry of the flash and in-application programming (IAP) can be found in the manufacturer manual of each target device.
3939
40+
### STM32F4 Programming
41+
42+
```
43+
st-flash write factory.bin 0x08000000
44+
```
45+
46+
### STM32F4 Debugging
47+
48+
1. Start GDB server
49+
50+
OpenOCD: `openocd --file ./config/openocd/openocd_stm32f4.cfg`
51+
OR
52+
ST-Link: `st-util -p 3333`
53+
54+
2. Start GDB Client
55+
56+
```sh
57+
arm-none-eabi-gdb
58+
add-symbol-file test-app/image.elf 0x20100
59+
mon reset init
60+
b main
61+
c
62+
```
4063

4164
## STM32L0x3
4265

0 commit comments

Comments
 (0)