Skip to content

Commit aa6903d

Browse files
committed
Fix for handling the Koblitz curve param "a", which is all zeros.
1 parent 1f92ef8 commit aa6903d

1 file changed

Lines changed: 16 additions & 2 deletions

File tree

wolfcrypt/src/port/intel/quickassist.c

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3504,7 +3504,14 @@ int IntelQaEccPointMul(WC_ASYNC_DEV* dev, WC_BIGINT* k,
35043504
ret = IntelQaBigIntToFlatBuffer(k, &opData->k);
35053505
ret += IntelQaBigIntToFlatBuffer(xG, &opData->xg);
35063506
ret += IntelQaBigIntToFlatBuffer(yG, &opData->yg);
3507-
ret += IntelQaBigIntToFlatBuffer(a, &opData->a);
3507+
if (a != NULL && a->buf == NULL) {
3508+
/* The Koblitz curves can have a zero param "a" */
3509+
ret += IntelQaAllocFlatBuffer(&opData->a, k->len, dev->heap);
3510+
XMEMSET(opData->a.pData, 0, k->len);
3511+
}
3512+
else {
3513+
ret += IntelQaBigIntToFlatBuffer(a, &opData->a);
3514+
}
35083515
ret += IntelQaBigIntToFlatBuffer(b, &opData->b);
35093516
ret += IntelQaBigIntToFlatBuffer(q, &opData->q);
35103517
if (ret != 0) {
@@ -3686,7 +3693,14 @@ int IntelQaEcdh(WC_ASYNC_DEV* dev, WC_BIGINT* k, WC_BIGINT* xG,
36863693
ret = IntelQaBigIntToFlatBuffer(k, &opData->k);
36873694
ret += IntelQaBigIntToFlatBuffer(xG, &opData->xg);
36883695
ret += IntelQaBigIntToFlatBuffer(yG, &opData->yg);
3689-
ret += IntelQaBigIntToFlatBuffer(a, &opData->a);
3696+
if (a != NULL && a->buf == NULL) {
3697+
/* The Koblitz curves can have a zero param "a" */
3698+
ret += IntelQaAllocFlatBuffer(&opData->a, k->len, dev->heap);
3699+
XMEMSET(opData->a.pData, 0, k->len);
3700+
}
3701+
else {
3702+
ret += IntelQaBigIntToFlatBuffer(a, &opData->a);
3703+
}
36903704
ret += IntelQaBigIntToFlatBuffer(b, &opData->b);
36913705
ret += IntelQaBigIntToFlatBuffer(q, &opData->q);
36923706
if (ret != 0) {

0 commit comments

Comments
 (0)