From 48dc288b830deb4b74662838ec3234e33c343647 Mon Sep 17 00:00:00 2001 From: David Garske Date: Fri, 23 Jun 2023 14:10:47 -0700 Subject: [PATCH] Fix for `wc_ecc_import_raw_private` using 0 for key size. Add check in silabs_ecc. --- wolfcrypt/src/ecc.c | 4 ++-- wolfcrypt/src/port/silabs/silabs_ecc.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/wolfcrypt/src/ecc.c b/wolfcrypt/src/ecc.c index 0e4dac739..b632492c7 100644 --- a/wolfcrypt/src/ecc.c +++ b/wolfcrypt/src/ecc.c @@ -10865,7 +10865,7 @@ static int wc_ecc_import_raw_private(ecc_key* key, const char* qx, #endif #if defined(WOLFSSL_ATECC508A) || defined(WOLFSSL_ATECC608A) || \ - defined(WOLFSSL_SILABS_SE_ACCEL) || defined(WOLFSSL_CRYPTOCELL) + defined(WOLFSSL_CRYPTOCELL) word32 keySz = 0; #endif @@ -11116,7 +11116,7 @@ static int wc_ecc_import_raw_private(ecc_key* key, const char* qx, } #elif defined(WOLFSSL_SILABS_SE_ACCEL) if (err == MP_OKAY) { - err = silabs_ecc_import(key, keySz, 1, (d != NULL)); + err = silabs_ecc_import(key, key->dp->size, 1, (d != NULL)); } #endif diff --git a/wolfcrypt/src/port/silabs/silabs_ecc.c b/wolfcrypt/src/port/silabs/silabs_ecc.c index 669e2dd4e..829024e09 100644 --- a/wolfcrypt/src/port/silabs/silabs_ecc.c +++ b/wolfcrypt/src/port/silabs/silabs_ecc.c @@ -206,7 +206,7 @@ int silabs_ecc_import(ecc_key* key, word32 keysize, int pub, int priv) word32 used; key->key.type = silabs_map_key_type(key->dp->id); - if (key->key.type == SILABS_UNSUPPORTED_KEY_TYPE) + if (key->key.type == SILABS_UNSUPPORTED_KEY_TYPE || keysize == 0) return WC_HW_E; key->key.size = keysize;