From 60d599542db625f2c2913b8b0f5eceb8993e5402 Mon Sep 17 00:00:00 2001 From: Daniele Lacamera Date: Mon, 1 Jun 2020 13:30:20 +0200 Subject: [PATCH 1/6] PSoc6 uses HW crypto accelerator for sha256 --- arch.mk | 14 ++++++++++++-- hal/psoc6.c | 2 ++ lib/wolfssl | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/arch.mk b/arch.mk index da9368a6..4fead406 100644 --- a/arch.mk +++ b/arch.mk @@ -164,7 +164,16 @@ ifeq ($(TARGET),psoc6) $(CYPRESS_PDL)/drivers/source/cy_ble_clk.o \ $(CYPRESS_PDL)/drivers/source/cy_wdt.o \ $(CYPRESS_PDL)/drivers/source/TOOLCHAIN_GCC_ARM/cy_syslib_gcc.o \ - $(CYPRESS_PDL)/devices/templates/COMPONENT_MTB/COMPONENT_CM0P/system_psoc6_cm0plus.o + $(CYPRESS_PDL)/devices/templates/COMPONENT_MTB/COMPONENT_CM0P/system_psoc6_cm0plus.o \ + ./lib/wolfssl/wolfcrypt/src/port/cypress/psoc6_crypto.o \ + $(CYPRESS_PDL)/drivers/source/cy_crypto_core_sha_v2.o \ + $(CYPRESS_PDL)/drivers/source/cy_crypto_core_sha_v1.o \ + $(CYPRESS_PDL)/drivers/source/cy_crypto_core_mem_v2.o \ + $(CYPRESS_PDL)/drivers/source/cy_crypto_core_mem_v1.o \ + $(CYPRESS_PDL)/drivers/source/cy_crypto_core_hw.o \ + $(CYPRESS_PDL)/drivers/source/cy_crypto_core_hw_v1.o \ + $(CYPRESS_PDL)/drivers/source/cy_crypto.o + CFLAGS+=-I$(CYPRESS_PDL)/drivers/include/ \ -I$(CYPRESS_PDL)/devices/include \ -I$(CYPRESS_PDL)/cmsis/include \ @@ -172,7 +181,8 @@ ifeq ($(TARGET),psoc6) -I$(CYPRESS_CORE_LIB)/include \ -I$(CYPRESS_PDL)/devices/include/ip \ -I$(CYPRESS_PDL)/devices/templates/COMPONENT_MTB \ - -DCY8C624ABZI_D44 + -DCY8C624ABZI_D44 \ + -DWOLFSSL_PSOC6_CRYPTO ARCH_FLASH_OFFSET=0x10000000 endif diff --git a/hal/psoc6.c b/hal/psoc6.c index 6619bd85..f4932e67 100644 --- a/hal/psoc6.c +++ b/hal/psoc6.c @@ -31,6 +31,7 @@ #include "cy_sysclk.h" #include "cy_syslib.h" #include "cy_ipc_drv.h" +#include "wolfssl/wolfcrypt/port/cypress/psoc6_crypto.h" #include "psoc6_02_config.h" @@ -100,6 +101,7 @@ void hal_init(void) Cy_PDL_Init(CY_DEVICE_CFG); Cy_Flash_Init(); hal_set_pll(); + psoc6_crypto_port_init(); } void hal_prepare_boot(void) diff --git a/lib/wolfssl b/lib/wolfssl index a104caef..0bd1ef06 160000 --- a/lib/wolfssl +++ b/lib/wolfssl @@ -1 +1 @@ -Subproject commit a104caef130ec58027f51d99b8254af83f5c744f +Subproject commit 0bd1ef064ca76b636ed5a23a92e5e3302e7aaf01 From 70710f09a1f92aa26d0c2288aab93156984fa543 Mon Sep 17 00:00:00 2001 From: Daniele Lacamera Date: Tue, 2 Jun 2020 17:42:01 +0200 Subject: [PATCH 2/6] Updated wolfssl (sha512 psoc6 crypto support) --- lib/wolfssl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/wolfssl b/lib/wolfssl index 0bd1ef06..c07f6ff5 160000 --- a/lib/wolfssl +++ b/lib/wolfssl @@ -1 +1 @@ -Subproject commit 0bd1ef064ca76b636ed5a23a92e5e3302e7aaf01 +Subproject commit c07f6ff550ae08e3307d80471a7fbf2cc36b99b7 From 006320901e60f79a0be945eb7140fed576625382 Mon Sep 17 00:00:00 2001 From: Daniele Lacamera Date: Fri, 5 Jun 2020 11:01:22 +0200 Subject: [PATCH 3/6] Added support for psoc6 HW crypto ECC verification --- arch.mk | 4 ++++ lib/wolfssl | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/arch.mk b/arch.mk index 4fead406..3f9f43ac 100644 --- a/arch.mk +++ b/arch.mk @@ -166,6 +166,10 @@ ifeq ($(TARGET),psoc6) $(CYPRESS_PDL)/drivers/source/TOOLCHAIN_GCC_ARM/cy_syslib_gcc.o \ $(CYPRESS_PDL)/devices/templates/COMPONENT_MTB/COMPONENT_CM0P/system_psoc6_cm0plus.o \ ./lib/wolfssl/wolfcrypt/src/port/cypress/psoc6_crypto.o \ + $(CYPRESS_PDL)/drivers/source/cy_crypto_core_vu.o \ + $(CYPRESS_PDL)/drivers/source/cy_crypto_core_ecc_domain_params.o \ + $(CYPRESS_PDL)/drivers/source/cy_crypto_core_ecc_nist_p.o \ + $(CYPRESS_PDL)/drivers/source/cy_crypto_core_ecc_ecdsa.o \ $(CYPRESS_PDL)/drivers/source/cy_crypto_core_sha_v2.o \ $(CYPRESS_PDL)/drivers/source/cy_crypto_core_sha_v1.o \ $(CYPRESS_PDL)/drivers/source/cy_crypto_core_mem_v2.o \ diff --git a/lib/wolfssl b/lib/wolfssl index c07f6ff5..10655671 160000 --- a/lib/wolfssl +++ b/lib/wolfssl @@ -1 +1 @@ -Subproject commit c07f6ff550ae08e3307d80471a7fbf2cc36b99b7 +Subproject commit 10655671099e20352d7829b6ecd3f0c08437b3b2 From 17707b7a3742927fec48411bdf6bba305affcb50 Mon Sep 17 00:00:00 2001 From: Daniele Lacamera Date: Fri, 5 Jun 2020 11:49:57 +0200 Subject: [PATCH 4/6] Support for PSOC6 crypto support: added compile option --- arch.mk | 15 +++++++++++---- hal/psoc6.c | 4 ++++ lib/wolfssl | 2 +- tools/config.mk | 3 ++- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/arch.mk b/arch.mk index 3f9f43ac..1a7bc34f 100644 --- a/arch.mk +++ b/arch.mk @@ -164,8 +164,9 @@ ifeq ($(TARGET),psoc6) $(CYPRESS_PDL)/drivers/source/cy_ble_clk.o \ $(CYPRESS_PDL)/drivers/source/cy_wdt.o \ $(CYPRESS_PDL)/drivers/source/TOOLCHAIN_GCC_ARM/cy_syslib_gcc.o \ - $(CYPRESS_PDL)/devices/templates/COMPONENT_MTB/COMPONENT_CM0P/system_psoc6_cm0plus.o \ - ./lib/wolfssl/wolfcrypt/src/port/cypress/psoc6_crypto.o \ + $(CYPRESS_PDL)/devices/templates/COMPONENT_MTB/COMPONENT_CM0P/system_psoc6_cm0plus.o + + PSOC6_CRYPTO_OBJS=./lib/wolfssl/wolfcrypt/src/port/cypress/psoc6_crypto.o \ $(CYPRESS_PDL)/drivers/source/cy_crypto_core_vu.o \ $(CYPRESS_PDL)/drivers/source/cy_crypto_core_ecc_domain_params.o \ $(CYPRESS_PDL)/drivers/source/cy_crypto_core_ecc_nist_p.o \ @@ -185,11 +186,17 @@ ifeq ($(TARGET),psoc6) -I$(CYPRESS_CORE_LIB)/include \ -I$(CYPRESS_PDL)/devices/include/ip \ -I$(CYPRESS_PDL)/devices/templates/COMPONENT_MTB \ - -DCY8C624ABZI_D44 \ - -DWOLFSSL_PSOC6_CRYPTO + -DCY8C624ABZI_D44 + ARCH_FLASH_OFFSET=0x10000000 + ifneq ($(PSOC6_CRYPTO),0) + CFLAGS+=-DWOLFSSL_PSOC6_CRYPTO + OBJS+=$(PSOC6_CRYPTO_OBJS) + endif endif + + CFLAGS+=-DARCH_FLASH_OFFSET=$(ARCH_FLASH_OFFSET) ## Toolchain setup diff --git a/hal/psoc6.c b/hal/psoc6.c index f4932e67..235f9e75 100644 --- a/hal/psoc6.c +++ b/hal/psoc6.c @@ -31,7 +31,9 @@ #include "cy_sysclk.h" #include "cy_syslib.h" #include "cy_ipc_drv.h" +#ifdef WOLFSSL_PSOC6_CRYPTO #include "wolfssl/wolfcrypt/port/cypress/psoc6_crypto.h" +#endif #include "psoc6_02_config.h" @@ -101,7 +103,9 @@ void hal_init(void) Cy_PDL_Init(CY_DEVICE_CFG); Cy_Flash_Init(); hal_set_pll(); +#ifdef WOLFSSL_PSOC6_CRYPTO psoc6_crypto_port_init(); +#endif } void hal_prepare_boot(void) diff --git a/lib/wolfssl b/lib/wolfssl index 10655671..76ab8bfb 160000 --- a/lib/wolfssl +++ b/lib/wolfssl @@ -1 +1 @@ -Subproject commit 10655671099e20352d7829b6ecd3f0c08437b3b2 +Subproject commit 76ab8bfb6b65f0c78a8c1e0c452a1e56621b43d4 diff --git a/tools/config.mk b/tools/config.mk index 0b1690f5..a7d485e7 100644 --- a/tools/config.mk +++ b/tools/config.mk @@ -31,6 +31,7 @@ ifeq ($(ARCH),) DUALBANK_SWAP?=0 IMAGE_HEADER_SIZE?=256 PKA?=1 + PSOC6_CRYPTO?=1 WOLFTPM?=0 WOLFBOOT_PARTITION_SIZE?=0x20000 WOLFBOOT_SECTOR_SIZE?=0x20000 @@ -48,7 +49,7 @@ CONFIG_VARS:= ARCH TARGET SIGN HASH MCUXPRESSO MCUXPRESSO_CPU MCUXPRESSO_DRIVERS MCUXPRESSO_CMSIS FREEDOM_E_SDK STM32CUBE CYPRESS_PDL CYPRESS_CORE_LIB CYPRESS_TARGET_LIB DEBUG VTOR \ CORTEX_M0 NO_ASM EXT_FLASH SPI_FLASH NO_XIP UART_FLASH ALLOW_DOWNGRADE NVM_FLASH_WRITEONCE \ WOLFBOOT_VERSION V NO_MPU \ - SPMATH RAM_CODE DUALBANK_SWAP IMAGE_HEADER_SIZE PKA WOLFTPM \ + SPMATH RAM_CODE DUALBANK_SWAP IMAGE_HEADER_SIZE PKA PSOC6_CRYPTO WOLFTPM \ WOLFBOOT_PARTITION_SIZE WOLFBOOT_SECTOR_SIZE \ WOLFBOOT_PARTITION_BOOT_ADDRESS WOLFBOOT_PARTITION_UPDATE_ADDRESS \ WOLFBOOT_PARTITION_SWAP_ADDRESS WOLFBOOT_LOAD_ADDRESS \ From 2d5576bb2f68d0d49911491186c3d9d54b5a65d9 Mon Sep 17 00:00:00 2001 From: Daniele Lacamera Date: Fri, 5 Jun 2020 11:51:50 +0200 Subject: [PATCH 5/6] Added note in documentation about hw acceleration --- docs/Targets.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/Targets.md b/docs/Targets.md index ad85ff59..21cd750d 100644 --- a/docs/Targets.md +++ b/docs/Targets.md @@ -610,6 +610,14 @@ make TARGET=psoc6 \ Note: A reference `.config` can be found in `./config/examples/cypsoc6.config`. +Hardware acceleration is enable by default using psoc6 crypto hw support. + +To compile with hardware acceleration disabled, use the option + +``` PSOC6_CRYPTO=0 ``` + +in your wolfBoot configuration. + #### OpenOCD installation Compile and install the customized OpenOCD. From ec3234bf6bc3e6ffe54dc4876d78fc8ee4589260 Mon Sep 17 00:00:00 2001 From: Daniele Lacamera Date: Tue, 16 Jun 2020 09:35:40 +0200 Subject: [PATCH 6/6] Updated to latest wolfssl --- lib/wolfssl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/wolfssl b/lib/wolfssl index 76ab8bfb..b9f13dba 160000 --- a/lib/wolfssl +++ b/lib/wolfssl @@ -1 +1 @@ -Subproject commit 76ab8bfb6b65f0c78a8c1e0c452a1e56621b43d4 +Subproject commit b9f13dba61ea060974841bb3989b6ba856ea8a0c