aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/ec/ec_mult.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/ec/ec_mult.c')
-rw-r--r--crypto/ec/ec_mult.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/crypto/ec/ec_mult.c b/crypto/ec/ec_mult.c
index ddd3db5921..01574d8c93 100644
--- a/crypto/ec/ec_mult.c
+++ b/crypto/ec/ec_mult.c
@@ -187,10 +187,18 @@ int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, BIGNUM *scalar,
if (i < num)
{
if (!EC_POINT_copy(val_sub[i][0], points[i])) goto err;
+ if (scalars[i]->neg)
+ {
+ if (!EC_POINT_invert(group, val_sub[i][0], ctx)) goto err;
+ }
}
else
{
if (!EC_POINT_copy(val_sub[i][0], generator)) goto err;
+ if (scalar->neg)
+ {
+ if (!EC_POINT_invert(group, val_sub[i][0], ctx)) goto err;
+ }
}
if (wsize[i] > 1)