Fix for QAT ECC to gate use of HW based on marker. Introduced in PR #4997.

This commit is contained in:
David Garske
2022-06-01 09:36:21 -07:00
parent 494a9fe41a
commit 19c51dac45

View File

@ -4871,7 +4871,7 @@ static int ecc_make_pub_ex(ecc_key* key, ecc_curve_spec* curveIn,
#if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_ECC) && \ #if defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_ECC) && \
defined(HAVE_INTEL_QA) defined(HAVE_INTEL_QA)
if (err == MP_OKAY) { if (err == MP_OKAY && key->asyncDev.marker == WOLFSSL_ASYNC_MARKER_ECC) {
word32 keySz = key->dp->size; word32 keySz = key->dp->size;
/* sync private key to raw */ /* sync private key to raw */
err = wc_mp_to_bigint_sz(&key->k, &key->k.raw, keySz); err = wc_mp_to_bigint_sz(&key->k, &key->k.raw, keySz);
@ -4883,9 +4883,11 @@ static int ecc_make_pub_ex(ecc_key* key, ecc_curve_spec* curveIn,
key->dp->cofactor); key->dp->cofactor);
} }
} }
#else else
#endif
{ /* BEGIN: Software Crypto */
#ifdef WOLFSSL_HAVE_SP_ECC #ifdef WOLFSSL_HAVE_SP_ECC
/* Single-Precision Math (optimized for specific curves) */
if (err != MP_OKAY) { if (err != MP_OKAY) {
} }
else else
@ -4913,6 +4915,7 @@ static int ecc_make_pub_ex(ecc_key* key, ecc_curve_spec* curveIn,
err = WC_KEY_SIZE_E; err = WC_KEY_SIZE_E;
#else #else
if (err == MP_OKAY) { if (err == MP_OKAY) {
/* Multi-Precision Math: compute public curve */
mp_digit mp = 0; mp_digit mp = 0;
ecc_point* base = NULL; ecc_point* base = NULL;
#ifdef WOLFSSL_NO_MALLOC #ifdef WOLFSSL_NO_MALLOC
@ -4948,12 +4951,12 @@ static int ecc_make_pub_ex(ecc_key* key, ecc_curve_spec* curveIn,
wc_ecc_del_point_ex(base, key->heap); wc_ecc_del_point_ex(base, key->heap);
} }
#endif /* WOLFSSL_SP_MATH */ #endif /* WOLFSSL_SP_MATH */
#endif /* HAVE_INTEL_QA */ } /* END: Software Crypto */
if (err != MP_OKAY if (err != MP_OKAY
#ifdef WOLFSSL_ASYNC_CRYPT #ifdef WOLFSSL_ASYNC_CRYPT
&& err != WC_PENDING_E && err != WC_PENDING_E
#endif #endif
) { ) {
/* clean up if failed */ /* clean up if failed */
#ifndef ALT_ECC_SIZE #ifndef ALT_ECC_SIZE