From 1f92ef8f65f0c70ee5e1645ab0c7817969f85cbc Mon Sep 17 00:00:00 2001 From: David Garske Date: Tue, 26 Apr 2022 11:03:23 -0700 Subject: [PATCH 1/2] Fixes for scan-build warnings. --- wolfcrypt/src/port/intel/quickassist.c | 23 +++++++++++----------- wolfcrypt/src/port/intel/quickassist_mem.c | 2 +- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/wolfcrypt/src/port/intel/quickassist.c b/wolfcrypt/src/port/intel/quickassist.c index ccb31d7..03bf3d9 100644 --- a/wolfcrypt/src/port/intel/quickassist.c +++ b/wolfcrypt/src/port/intel/quickassist.c @@ -70,6 +70,8 @@ #include #endif +#include + /* Async enables (1=non-block, 0=block) */ #ifndef QAT_RSA_ASYNC #define QAT_RSA_ASYNC 1 @@ -802,6 +804,7 @@ static int IntelQaPollBlockRet(WC_ASYNC_DEV* dev, int ret_wait) do { ret = IntelQaPoll(dev); + (void)ret; /* not used */ if (dev->qat.ret != ret_wait) { break; @@ -1996,9 +1999,10 @@ static int IntelQaSymOpen(WC_ASYNC_DEV* dev, CpaCySymSessionSetupData* setup, /* Determine size of session context to allocate - use max size */ status = cpaCySymSessionCtxGetSize(dev->qat.handle, setup, &sessionCtxSize); - if (ctx->symCtxSize > 0 && ctx->symCtxSize > sessionCtxSize) { - printf("Symmetric context size error! Buf %d, Exp %d\n", - ctx->symCtxSize, sessionCtxSize); + if (status != CPA_STATUS_SUCCESS || (ctx->symCtxSize > 0 && + ctx->symCtxSize > sessionCtxSize)) { + printf("Symmetric context size error %d! Buf %d, Exp %d\n", + status, ctx->symCtxSize, sessionCtxSize); return ASYNC_OP_E; } @@ -3797,14 +3801,11 @@ static void IntelQaEcdsaSignCallback(void *pCallbackTag, ret = ECC_CURVE_OID_E; } else { - /* mark event result */ - ret = 0; /* success */ - } - - /* populate result */ - ret = IntelQaFlatBufferToBigInt(pR, dev->qat.op.ecc_sign.pR); - if (ret == 0) { - ret = IntelQaFlatBufferToBigInt(pS, dev->qat.op.ecc_sign.pS); + /* success - populate result */ + ret = IntelQaFlatBufferToBigInt(pR, dev->qat.op.ecc_sign.pR); + if (ret == 0) { + ret = IntelQaFlatBufferToBigInt(pS, dev->qat.op.ecc_sign.pS); + } } } (void)opData; diff --git a/wolfcrypt/src/port/intel/quickassist_mem.c b/wolfcrypt/src/port/intel/quickassist_mem.c index f322e48..e67e92d 100644 --- a/wolfcrypt/src/port/intel/quickassist_mem.c +++ b/wolfcrypt/src/port/intel/quickassist_mem.c @@ -36,8 +36,8 @@ #include /* use thread local for QAE variables (removing mutex requirement) */ +#include /* for threadId tracking */ #ifdef USE_QAE_THREAD_LS - #include /* for threadId tracking */ #define QAE_THREAD_LS THREAD_LS_T #else #define QAE_THREAD_LS From aa6903d2aec165c56fd40a507102ee44a5596027 Mon Sep 17 00:00:00 2001 From: David Garske Date: Tue, 26 Apr 2022 17:03:15 -0700 Subject: [PATCH 2/2] Fix for handling the Koblitz curve param "a", which is all zeros. --- wolfcrypt/src/port/intel/quickassist.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/wolfcrypt/src/port/intel/quickassist.c b/wolfcrypt/src/port/intel/quickassist.c index 03bf3d9..543a44f 100644 --- a/wolfcrypt/src/port/intel/quickassist.c +++ b/wolfcrypt/src/port/intel/quickassist.c @@ -3504,7 +3504,14 @@ int IntelQaEccPointMul(WC_ASYNC_DEV* dev, WC_BIGINT* k, ret = IntelQaBigIntToFlatBuffer(k, &opData->k); ret += IntelQaBigIntToFlatBuffer(xG, &opData->xg); ret += IntelQaBigIntToFlatBuffer(yG, &opData->yg); - ret += IntelQaBigIntToFlatBuffer(a, &opData->a); + if (a != NULL && a->buf == NULL) { + /* The Koblitz curves can have a zero param "a" */ + ret += IntelQaAllocFlatBuffer(&opData->a, k->len, dev->heap); + XMEMSET(opData->a.pData, 0, k->len); + } + else { + ret += IntelQaBigIntToFlatBuffer(a, &opData->a); + } ret += IntelQaBigIntToFlatBuffer(b, &opData->b); ret += IntelQaBigIntToFlatBuffer(q, &opData->q); if (ret != 0) { @@ -3686,7 +3693,14 @@ int IntelQaEcdh(WC_ASYNC_DEV* dev, WC_BIGINT* k, WC_BIGINT* xG, ret = IntelQaBigIntToFlatBuffer(k, &opData->k); ret += IntelQaBigIntToFlatBuffer(xG, &opData->xg); ret += IntelQaBigIntToFlatBuffer(yG, &opData->yg); - ret += IntelQaBigIntToFlatBuffer(a, &opData->a); + if (a != NULL && a->buf == NULL) { + /* The Koblitz curves can have a zero param "a" */ + ret += IntelQaAllocFlatBuffer(&opData->a, k->len, dev->heap); + XMEMSET(opData->a.pData, 0, k->len); + } + else { + ret += IntelQaBigIntToFlatBuffer(a, &opData->a); + } ret += IntelQaBigIntToFlatBuffer(b, &opData->b); ret += IntelQaBigIntToFlatBuffer(q, &opData->q); if (ret != 0) {