Skip to content

Commit bb1d199

Browse files
ecmult: Use size_t for array indices into tables
1 parent 2d9137c commit bb1d199

4 files changed

Lines changed: 17 additions & 16 deletions

File tree

src/ecmult.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
#endif
3939

4040
/** The number of entries a table with precomputed multiples needs to have. */
41-
#define ECMULT_TABLE_SIZE(w) (1L << ((w)-2))
41+
#define ECMULT_TABLE_SIZE(w) ((size_t)1 << ((w)-2))
4242

4343
/** Double multiply: R = na*A + ng*G */
4444
static void secp256k1_ecmult(secp256k1_gej *r, const secp256k1_gej *a, const secp256k1_scalar *na, const secp256k1_scalar *ng);

src/ecmult_compute_table_impl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
static void secp256k1_ecmult_compute_table(secp256k1_ge_storage* table, int window_g, const secp256k1_gej* gen) {
1717
secp256k1_gej gj;
1818
secp256k1_ge ge, dgen;
19-
int j;
19+
size_t j;
2020

2121
gj = *gen;
2222
secp256k1_ge_set_gej_var(&ge, &gj);

src/ecmult_impl.h

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -311,8 +311,9 @@ static void secp256k1_ecmult_strauss_wnaf(const struct secp256k1_strauss_state *
311311
}
312312

313313
for (np = 0; np < no; ++np) {
314-
for (i = 0; i < ECMULT_TABLE_SIZE(WINDOW_A); i++) {
315-
secp256k1_fe_mul(&state->aux[np * ECMULT_TABLE_SIZE(WINDOW_A) + i], &state->pre_a[np * ECMULT_TABLE_SIZE(WINDOW_A) + i].x, &secp256k1_const_beta);
314+
size_t j;
315+
for (j = 0; j < ECMULT_TABLE_SIZE(WINDOW_A); j++) {
316+
secp256k1_fe_mul(&state->aux[np * ECMULT_TABLE_SIZE(WINDOW_A) + j], &state->pre_a[np * ECMULT_TABLE_SIZE(WINDOW_A) + j].x, &secp256k1_const_beta);
316317
}
317318
}
318319

@@ -517,7 +518,6 @@ static int secp256k1_ecmult_pippenger_wnaf(secp256k1_gej *buckets, int bucket_wi
517518
size_t np;
518519
size_t no = 0;
519520
int i;
520-
int j;
521521

522522
for (np = 0; np < num; ++np) {
523523
if (secp256k1_scalar_is_zero(&sc[np]) || secp256k1_ge_is_infinity(&pt[np])) {
@@ -535,16 +535,17 @@ static int secp256k1_ecmult_pippenger_wnaf(secp256k1_gej *buckets, int bucket_wi
535535

536536
for (i = n_wnaf - 1; i >= 0; i--) {
537537
secp256k1_gej running_sum;
538+
int j;
539+
size_t buc;
538540

539-
for(j = 0; j < ECMULT_TABLE_SIZE(bucket_window+2); j++) {
540-
secp256k1_gej_set_infinity(&buckets[j]);
541+
for (buc = 0; buc < ECMULT_TABLE_SIZE(bucket_window+2); buc++) {
542+
secp256k1_gej_set_infinity(&buckets[buc]);
541543
}
542544

543545
for (np = 0; np < no; ++np) {
544546
int n = state->wnaf_na[np*n_wnaf + i];
545547
struct secp256k1_pippenger_point_state point_state = state->ps[np];
546548
secp256k1_ge tmp;
547-
int idx;
548549

549550
if (i == 0) {
550551
/* correct for wnaf skew */
@@ -555,16 +556,16 @@ static int secp256k1_ecmult_pippenger_wnaf(secp256k1_gej *buckets, int bucket_wi
555556
}
556557
}
557558
if (n > 0) {
558-
idx = (n - 1)/2;
559-
secp256k1_gej_add_ge_var(&buckets[idx], &buckets[idx], &pt[point_state.input_pos], NULL);
559+
buc = (n - 1)/2;
560+
secp256k1_gej_add_ge_var(&buckets[buc], &buckets[buc], &pt[point_state.input_pos], NULL);
560561
} else if (n < 0) {
561-
idx = -(n + 1)/2;
562+
buc = -(n + 1)/2;
562563
secp256k1_ge_neg(&tmp, &pt[point_state.input_pos]);
563-
secp256k1_gej_add_ge_var(&buckets[idx], &buckets[idx], &tmp, NULL);
564+
secp256k1_gej_add_ge_var(&buckets[buc], &buckets[buc], &tmp, NULL);
564565
}
565566
}
566567

567-
for(j = 0; j < bucket_window; j++) {
568+
for (j = 0; j < bucket_window; j++) {
568569
secp256k1_gej_double_var(r, r, NULL);
569570
}
570571

@@ -577,8 +578,8 @@ static int secp256k1_ecmult_pippenger_wnaf(secp256k1_gej *buckets, int bucket_wi
577578
*
578579
* The doubling is done implicitly by deferring the final window doubling (of 'r').
579580
*/
580-
for(j = ECMULT_TABLE_SIZE(bucket_window+2) - 1; j > 0; j--) {
581-
secp256k1_gej_add_var(&running_sum, &running_sum, &buckets[j], NULL);
581+
for (buc = ECMULT_TABLE_SIZE(bucket_window+2) - 1; buc > 0; buc--) {
582+
secp256k1_gej_add_var(&running_sum, &running_sum, &buckets[buc], NULL);
582583
secp256k1_gej_add_var(r, r, &running_sum, NULL);
583584
}
584585

src/precompute_ecmult.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#include "ecmult_compute_table_impl.h"
2121

2222
static void print_table(FILE *fp, const char *name, int window_g, const secp256k1_ge_storage* table) {
23-
int j;
23+
size_t j;
2424
int i;
2525

2626
fprintf(fp, "const secp256k1_ge_storage %s[ECMULT_TABLE_SIZE(WINDOW_G)] = {\n", name);

0 commit comments

Comments
 (0)