Skip to content

Commit e43ba02

Browse files
refactor: Decouple table generation and ecmult_gen context
1 parent 22dc2c0 commit e43ba02

File tree

3 files changed

+9
-14
lines changed

3 files changed

+9
-14
lines changed

src/ecmult_gen_prec.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99

1010
#include "ecmult_gen.h"
1111

12-
static const size_t ECMULT_GEN_PREC_TABLE_SIZE = ROUND_TO_ALIGN(sizeof(*((secp256k1_ecmult_gen_context*) NULL)->prec));
12+
static const size_t ECMULT_GEN_PREC_TABLE_SIZE = ECMULT_GEN_PREC_N * ECMULT_GEN_PREC_G * sizeof(secp256k1_ge_storage);
1313

14-
static void secp256k1_ecmult_gen_create_prec_table(secp256k1_ecmult_gen_context *ctx, void **prealloc);
14+
static void secp256k1_ecmult_gen_create_prec_table(secp256k1_ge_storage* table);
1515

1616
#endif /* SECP256K1_ECMULT_GEN_PREC_H */

src/ecmult_gen_prec_impl.h

+2-5
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,11 @@
1212
#include "field_impl.h"
1313
#include "ecmult_gen.h"
1414

15-
static void secp256k1_ecmult_gen_create_prec_table(secp256k1_ecmult_gen_context *ctx, void **prealloc) {
15+
static void secp256k1_ecmult_gen_create_prec_table(secp256k1_ge_storage* table) {
1616
secp256k1_ge prec[ECMULT_GEN_PREC_N * ECMULT_GEN_PREC_G];
1717
secp256k1_gej gj;
1818
secp256k1_gej nums_gej;
1919
int i, j;
20-
size_t const prealloc_size = ECMULT_GEN_PREC_TABLE_SIZE;
21-
void* const base = *prealloc;
22-
ctx->prec = (secp256k1_ge_storage (*)[ECMULT_GEN_PREC_N][ECMULT_GEN_PREC_G])manual_alloc(prealloc, prealloc_size, base, prealloc_size);
2320

2421
/* get the generator */
2522
secp256k1_gej_set_ge(&gj, &secp256k1_ge_const_g);
@@ -70,7 +67,7 @@ static void secp256k1_ecmult_gen_create_prec_table(secp256k1_ecmult_gen_context
7067
}
7168
for (j = 0; j < ECMULT_GEN_PREC_N; j++) {
7269
for (i = 0; i < ECMULT_GEN_PREC_G; i++) {
73-
secp256k1_ge_to_storage(&(*ctx->prec)[j][i], &prec[j*ECMULT_GEN_PREC_G + i]);
70+
secp256k1_ge_to_storage(&table[j*ECMULT_GEN_PREC_G + i], &prec[j*ECMULT_GEN_PREC_G + i]);
7471
}
7572
}
7673
}

src/gen_context.c

+5-7
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ static const secp256k1_callback default_error_callback = {
3535
};
3636

3737
int main(int argc, char **argv) {
38-
secp256k1_ecmult_gen_context ctx;
39-
void *prealloc, *base;
38+
secp256k1_ge_storage* table;
4039
int inner;
4140
int outer;
4241
FILE* fp;
@@ -59,13 +58,12 @@ int main(int argc, char **argv) {
5958
fprintf(fp, "#endif\n");
6059
fprintf(fp, "static const secp256k1_ge_storage secp256k1_ecmult_static_context[ECMULT_GEN_PREC_N][ECMULT_GEN_PREC_G] = {\n");
6160

62-
base = checked_malloc(&default_error_callback, ECMULT_GEN_PREC_TABLE_SIZE);
63-
prealloc = base;
64-
secp256k1_ecmult_gen_create_prec_table(&ctx, &prealloc);
61+
table = checked_malloc(&default_error_callback, ECMULT_GEN_PREC_TABLE_SIZE);
62+
secp256k1_ecmult_gen_create_prec_table(table);
6563
for(outer = 0; outer != ECMULT_GEN_PREC_N; outer++) {
6664
fprintf(fp,"{\n");
6765
for(inner = 0; inner != ECMULT_GEN_PREC_G; inner++) {
68-
fprintf(fp," SC(%uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu)", SECP256K1_GE_STORAGE_CONST_GET((*ctx.prec)[outer][inner]));
66+
fprintf(fp," SC(%uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu, %uu)", SECP256K1_GE_STORAGE_CONST_GET(table[outer * ECMULT_GEN_PREC_G + inner]));
6967
if (inner != ECMULT_GEN_PREC_G - 1) {
7068
fprintf(fp,",\n");
7169
} else {
@@ -79,7 +77,7 @@ int main(int argc, char **argv) {
7977
}
8078
}
8179
fprintf(fp,"};\n");
82-
free(base);
80+
free(table);
8381

8482
fprintf(fp, "#undef SC\n");
8583
fprintf(fp, "#endif\n");

0 commit comments

Comments
 (0)