From 3a37deb484fdcc93e9902a84177045138d7de19a Mon Sep 17 00:00:00 2001 From: Colton Willey Date: Mon, 16 Jun 2025 12:39:13 -0700 Subject: [PATCH] Add FIPS private lock handling to ECC key encoding --- src/wp_ecc_kmgmt.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/wp_ecc_kmgmt.c b/src/wp_ecc_kmgmt.c index d05f51e3..2611b593 100644 --- a/src/wp_ecc_kmgmt.c +++ b/src/wp_ecc_kmgmt.c @@ -2377,7 +2377,9 @@ static int wp_ecc_encode_pki_size(const wp_Ecc *ecc, size_t* keyLen) int rc; word32 len; + PRIVATE_KEY_UNLOCK(); rc = wc_EccKeyToPKCS8((ecc_key*)&ecc->key, NULL, &len); + PRIVATE_KEY_LOCK(); if (rc != LENGTH_ONLY_E) { ok = 0; } @@ -2407,7 +2409,9 @@ static int wp_ecc_encode_pki(const wp_Ecc *ecc, unsigned char* keyData, word32 len = (word32)*keyLen; /* TODO: for older versions, curve is always included! */ + PRIVATE_KEY_UNLOCK(); rc = wc_EccKeyToPKCS8((ecc_key*)&ecc->key, keyData, &len); + PRIVATE_KEY_LOCK(); if (rc <= 0) { ok = 0; } @@ -2434,7 +2438,9 @@ static int wp_ecc_encode_epki_size(const wp_Ecc *ecc, size_t* keyLen) int rc; word32 len; + PRIVATE_KEY_UNLOCK(); rc = wc_EccKeyToPKCS8((ecc_key*)&ecc->key, NULL, &len); + PRIVATE_KEY_LOCK(); if (rc != LENGTH_ONLY_E) { ok = 0; } @@ -2469,7 +2475,9 @@ static int wp_ecc_encode_epki(const wp_EccEncDecCtx* ctx, const wp_Ecc *ecc, word32 len = (word32)*keyLen; /* Encode key. */ + PRIVATE_KEY_UNLOCK(); rc = wc_EccKeyToPKCS8((ecc_key*)&ecc->key, keyData, &len); + PRIVATE_KEY_LOCK(); if (rc <= 0) { ok = 0; }