diff options
author | tb <> | 2024-11-22 00:14:36 +0000 |
---|---|---|
committer | tb <> | 2024-11-22 00:14:36 +0000 |
commit | 34e6d267fc84505f417418dd265c8e47888a4f1e (patch) | |
tree | 6194e2efef48d743e774c9d1592bc2bcdcf5ecbb /src/lib | |
parent | 047732fc7cf66381d8b22c9c5e20e3069994efa3 (diff) | |
download | openbsd-34e6d267fc84505f417418dd265c8e47888a4f1e.tar.gz openbsd-34e6d267fc84505f417418dd265c8e47888a4f1e.tar.bz2 openbsd-34e6d267fc84505f417418dd265c8e47888a4f1e.zip |
Rename val_sub[] into row[] and move it to the stack
ok djm
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/libcrypto/ec/ec_mult.c | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/src/lib/libcrypto/ec/ec_mult.c b/src/lib/libcrypto/ec/ec_mult.c index 8ef655690e..6f0499c951 100644 --- a/src/lib/libcrypto/ec/ec_mult.c +++ b/src/lib/libcrypto/ec/ec_mult.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ec_mult.c,v 1.37 2024/11/21 15:03:56 tb Exp $ */ | 1 | /* $OpenBSD: ec_mult.c,v 1.38 2024/11/22 00:14:36 tb Exp $ */ |
2 | /* | 2 | /* |
3 | * Originally written by Bodo Moeller and Nils Larsch for the OpenSSL project. | 3 | * Originally written by Bodo Moeller and Nils Larsch for the OpenSSL project. |
4 | */ | 4 | */ |
@@ -229,6 +229,7 @@ ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *m, | |||
229 | { | 229 | { |
230 | const EC_POINT *generator = NULL; | 230 | const EC_POINT *generator = NULL; |
231 | EC_POINT *tmp = NULL; | 231 | EC_POINT *tmp = NULL; |
232 | EC_POINT **row[2] = { 0 }; | ||
232 | size_t totalnum; | 233 | size_t totalnum; |
233 | size_t i, j; | 234 | size_t i, j; |
234 | int k; | 235 | int k; |
@@ -240,8 +241,6 @@ ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *m, | |||
240 | size_t num_val; | 241 | size_t num_val; |
241 | EC_POINT **val = NULL; /* precomputation */ | 242 | EC_POINT **val = NULL; /* precomputation */ |
242 | EC_POINT **v; | 243 | EC_POINT **v; |
243 | EC_POINT ***val_sub = NULL; /* pointers to sub-arrays of 'val' or | ||
244 | * 'pre_comp->points' */ | ||
245 | int ret = 0; | 244 | int ret = 0; |
246 | 245 | ||
247 | if (m == NULL || n == NULL) { | 246 | if (m == NULL || n == NULL) { |
@@ -271,9 +270,8 @@ ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *m, | |||
271 | 270 | ||
272 | wsize = reallocarray(NULL, totalnum, sizeof wsize[0]); | 271 | wsize = reallocarray(NULL, totalnum, sizeof wsize[0]); |
273 | wNAF_len = reallocarray(NULL, totalnum, sizeof wNAF_len[0]); | 272 | wNAF_len = reallocarray(NULL, totalnum, sizeof wNAF_len[0]); |
274 | val_sub = reallocarray(NULL, totalnum, sizeof val_sub[0]); | ||
275 | 273 | ||
276 | if (wsize == NULL || wNAF_len == NULL || val_sub == NULL) { | 274 | if (wsize == NULL || wNAF_len == NULL) { |
277 | ECerror(ERR_R_MALLOC_FAILURE); | 275 | ECerror(ERR_R_MALLOC_FAILURE); |
278 | goto err; | 276 | goto err; |
279 | } | 277 | } |
@@ -311,7 +309,7 @@ ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *m, | |||
311 | /* allocate points for precomputation */ | 309 | /* allocate points for precomputation */ |
312 | v = val; | 310 | v = val; |
313 | for (i = 0; i < 2; i++) { | 311 | for (i = 0; i < 2; i++) { |
314 | val_sub[i] = v; | 312 | row[i] = v; |
315 | for (j = 0; j < ((size_t) 1 << (wsize[i] - 1)); j++) { | 313 | for (j = 0; j < ((size_t) 1 << (wsize[i] - 1)); j++) { |
316 | *v = EC_POINT_new(group); | 314 | *v = EC_POINT_new(group); |
317 | if (*v == NULL) | 315 | if (*v == NULL) |
@@ -328,25 +326,25 @@ ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *m, | |||
328 | 326 | ||
329 | /* | 327 | /* |
330 | * prepare precomputed values: | 328 | * prepare precomputed values: |
331 | * val_sub[i][0] := points[i] | 329 | * row[i][0] := points[i] |
332 | * val_sub[i][1] := 3 * points[i] | 330 | * row[i][1] := 3 * points[i] |
333 | * val_sub[i][2] := 5 * points[i] | 331 | * row[i][2] := 5 * points[i] |
334 | * ... | 332 | * ... |
335 | */ | 333 | */ |
336 | for (i = 0; i < 2; i++) { | 334 | for (i = 0; i < 2; i++) { |
337 | if (i < 1) { | 335 | if (i < 1) { |
338 | if (!EC_POINT_copy(val_sub[i][0], point)) | 336 | if (!EC_POINT_copy(row[i][0], point)) |
339 | goto err; | 337 | goto err; |
340 | } else { | 338 | } else { |
341 | if (!EC_POINT_copy(val_sub[i][0], generator)) | 339 | if (!EC_POINT_copy(row[i][0], generator)) |
342 | goto err; | 340 | goto err; |
343 | } | 341 | } |
344 | 342 | ||
345 | if (wsize[i] > 1) { | 343 | if (wsize[i] > 1) { |
346 | if (!EC_POINT_dbl(group, tmp, val_sub[i][0], ctx)) | 344 | if (!EC_POINT_dbl(group, tmp, row[i][0], ctx)) |
347 | goto err; | 345 | goto err; |
348 | for (j = 1; j < ((size_t) 1 << (wsize[i] - 1)); j++) { | 346 | for (j = 1; j < ((size_t) 1 << (wsize[i] - 1)); j++) { |
349 | if (!EC_POINT_add(group, val_sub[i][j], val_sub[i][j - 1], tmp, ctx)) | 347 | if (!EC_POINT_add(group, row[i][j], row[i][j - 1], tmp, ctx)) |
350 | goto err; | 348 | goto err; |
351 | } | 349 | } |
352 | } | 350 | } |
@@ -391,7 +389,7 @@ ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *m, | |||
391 | r_is_inverted = !r_is_inverted; | 389 | r_is_inverted = !r_is_inverted; |
392 | } | 390 | } |
393 | 391 | ||
394 | if (!EC_POINT_add(group, r, r, val_sub[i][digit >> 1], ctx)) | 392 | if (!EC_POINT_add(group, r, r, row[i][digit >> 1], ctx)) |
395 | goto err; | 393 | goto err; |
396 | } | 394 | } |
397 | } | 395 | } |
@@ -420,6 +418,6 @@ ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *m, | |||
420 | EC_POINT_free(*v); | 418 | EC_POINT_free(*v); |
421 | free(val); | 419 | free(val); |
422 | } | 420 | } |
423 | free(val_sub); | 421 | |
424 | return ret; | 422 | return ret; |
425 | } | 423 | } |