From 3adb735d3ea72551946bd3b8204238383ec25387 Mon Sep 17 00:00:00 2001 From: Chun-Chieh Li Date: Tue, 24 May 2022 16:37:46 +0800 Subject: [PATCH 1/2] M487: Fix typo with DES H/W port --- .../drivers/mbedtls/TARGET_NUVOTON/TARGET_M480/des/des_alt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connectivity/drivers/mbedtls/TARGET_NUVOTON/TARGET_M480/des/des_alt.c b/connectivity/drivers/mbedtls/TARGET_NUVOTON/TARGET_M480/des/des_alt.c index 83863ca37b..d0bf68dcf6 100644 --- a/connectivity/drivers/mbedtls/TARGET_NUVOTON/TARGET_M480/des/des_alt.c +++ b/connectivity/drivers/mbedtls/TARGET_NUVOTON/TARGET_M480/des/des_alt.c @@ -375,7 +375,7 @@ static int mbedtls_des_docrypt(uint16_t keyopt, uint8_t key[3][MBEDTLS_DES_KEY_S * 1. BE for byte sequence in word * 2. BE for word sequence in double-word */ - TDES_Open(CRPT + TDES_Open(CRPT, 0, // Channel number (0~4) enc, // 0: decode, 1: encode (tdes_opmode & CRPT_TDES_CTL_TMODE_Msk) ? 1 : 0, // 0: DES, 1: TDES From b402c97136237baef89cb1a632ee4f361573743f Mon Sep 17 00:00:00 2001 From: Chun-Chieh Li Date: Tue, 24 May 2022 17:35:30 +0800 Subject: [PATCH 2/2] M487: Fix ECP P + P operation Engine doesn't support P + Q when P and Q are the same. Workaround by 2*P --- .../TARGET_NUVOTON/TARGET_M480/ecp/ecp_internal_alt.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/connectivity/drivers/mbedtls/TARGET_NUVOTON/TARGET_M480/ecp/ecp_internal_alt.c b/connectivity/drivers/mbedtls/TARGET_NUVOTON/TARGET_M480/ecp/ecp_internal_alt.c index c0c116b215..c028923ed7 100644 --- a/connectivity/drivers/mbedtls/TARGET_NUVOTON/TARGET_M480/ecp/ecp_internal_alt.c +++ b/connectivity/drivers/mbedtls/TARGET_NUVOTON/TARGET_M480/ecp/ecp_internal_alt.c @@ -502,6 +502,11 @@ NU_STATIC int internal_run_eccop(const mbedtls_ecp_group *grp, return MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED; } + /* NOTE: Engine doesn't support P + Q when P and Q are the same. Workaround by 2*P */ + if (mbedtls_ecp_point_cmp(P, Q) == 0) { + return internal_run_eccop(grp, R, NULL, P, NULL, NULL, ECCOP_POINT_DOUBLE); + } + int ret; bool ecc_done;