@@ -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