summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2017-12-17 19:30:46 +0100
committerJ08nY2017-12-17 19:30:46 +0100
commit43362aa1c57e3801f57c966c851a70d8e4edb3b4 (patch)
tree6b9060e7e221622ec28a105d7d2ca77c4e4f17bf
parentf1ef4305ad2e2299f72e569fcb6e31d3b98249dd (diff)
downloadecgen-43362aa1c57e3801f57c966c851a70d8e4edb3b4.tar.gz
ecgen-43362aa1c57e3801f57c966c851a70d8e4edb3b4.tar.zst
ecgen-43362aa1c57e3801f57c966c851a70d8e4edb3b4.zip
-rw-r--r--src/exhaustive/brainpool.c5
-rw-r--r--src/exhaustive/brainpool_rfc.c8
-rw-r--r--src/gen/gens.c4
-rw-r--r--src/gen/order.c8
-rw-r--r--test/src/exhaustive/test_brainpool_rfc.c7
-rw-r--r--test/src/test/default.c2
6 files changed, 16 insertions, 18 deletions
diff --git a/src/exhaustive/brainpool.c b/src/exhaustive/brainpool.c
index 3debaec..c45d0d5 100644
--- a/src/exhaustive/brainpool.c
+++ b/src/exhaustive/brainpool.c
@@ -4,7 +4,6 @@
*/
#include "brainpool.h"
-#include <misc/types.h>
#include "gen/gens.h"
#include "gen/point.h"
#include "gen/seed.h"
@@ -147,7 +146,6 @@ GENERATOR(brainpool_gen_equation) {
seed->brainpool.update_seed = false;
}
- GEN z;
bits_t *a_bits =
brainpool_hash(seed->seed, seed->brainpool.w, seed->brainpool.v);
GEN a = bits_to_i(a_bits);
@@ -158,7 +156,8 @@ GENERATOR(brainpool_gen_equation) {
avma = btop;
continue;
}
- z = Fp_sqrtn(Fp_muls(am, -1, curve->field), stoi(4), curve->field,
+ GEN z;
+ z = Fp_sqrtn(Fp_muls(am, -3, curve->field), stoi(4), curve->field,
NULL);
if (z == NULL) {
brainpool_update_seed(seed->seed);
diff --git a/src/exhaustive/brainpool_rfc.c b/src/exhaustive/brainpool_rfc.c
index 921dff3..81529d2 100644
--- a/src/exhaustive/brainpool_rfc.c
+++ b/src/exhaustive/brainpool_rfc.c
@@ -33,24 +33,19 @@ GENERATOR(brainpool_rfc_gen_equation) {
// field is definitely prime
pari_sp btop = avma;
seed_t *seed = curve->seed;
- pari_printf("seed before %P#x\n", bits_to_i(seed->seed));
do {
if (seed->brainpool.update_seed) {
- printf("updating seed\n");
brainpool_update_seed(seed->seed);
- pari_printf("seed after %P#x\n", bits_to_i(seed->seed));
seed->brainpool.update_seed = false;
}
bits_t *a_bits =
brainpool_hash(seed->seed, seed->brainpool.w, seed->brainpool.v);
GEN a = bits_to_i(a_bits);
- pari_printf("trying a = '%P#x'\n", a);
bits_free(&a_bits);
GEN am = Fp_invsafe(a, curve->field);
if (am == NULL) {
brainpool_update_seed(seed->seed);
- pari_printf("a, update seed(noinv) %P#x\n", bits_to_i(seed->seed));
avma = btop;
continue;
}
@@ -59,7 +54,6 @@ GENERATOR(brainpool_rfc_gen_equation) {
NULL);
if (z == NULL) {
brainpool_update_seed(seed->seed);
- pari_printf("a, update seed(sqrtn) %P#x\n", bits_to_i(seed->seed));
avma = btop;
continue;
}
@@ -72,7 +66,6 @@ GENERATOR(brainpool_rfc_gen_equation) {
avma = bbtop;
}
brainpool_update_seed(seed->seed);
- pari_printf("b, update seed %P#x\n", bits_to_i(seed->seed));
bits_t *b_bits = brainpool_hash(seed->seed, seed->brainpool.w,
seed->brainpool.v);
b = bits_to_i(b_bits);
@@ -87,7 +80,6 @@ GENERATOR(brainpool_rfc_gen_equation) {
if (gequal0(gmulsg(-16, gadd(gmulsg(4, gpowgs(mod_a, 3)),
gmulsg(27, gsqr(mod_b)))))) {
brainpool_update_seed(seed->seed);
- pari_printf("curve, update seed %P#x\n", bits_to_i(seed->seed));
bits_free(&seed->brainpool.seed_a);
bits_free(&seed->brainpool.seed_b);
avma = btop;
diff --git a/src/gen/gens.c b/src/gen/gens.c
index e2c624e..04e7646 100644
--- a/src/gen/gens.c
+++ b/src/gen/gens.c
@@ -50,13 +50,15 @@ CHECK(gens_check_anomalous) {
GEN gens_get_embedding(GEN prime, GEN order) {
pari_sp ltop = avma;
+ GEN degree = gen_0;
GEN power = gen_1;
GEN pm;
do {
+ degree = addii(degree, gen_1);
power = mulii(power, prime);
pm = subii(power, gen_1);
} while (!dvdii(pm, order));
- return gerepilecopy(ltop, power);
+ return gerepilecopy(ltop, degree);
}
CHECK(gens_check_embedding) {
diff --git a/src/gen/order.c b/src/gen/order.c
index 366c2cd..1c9e280 100644
--- a/src/gen/order.c
+++ b/src/gen/order.c
@@ -20,10 +20,12 @@ GENERATOR(order_gen_input) {
}
GENERATOR(order_gen_any) {
+ pari_sp ltop = avma;
GEN ord = ellff_get_card(curve->curve);
if (isclone(ord)) {
- curve->order = gcopy(ord);
+ curve->order = gerepilecopy(ltop, ord);
} else {
+ avma = ltop;
curve->order = ord;
}
return 1;
@@ -36,7 +38,7 @@ GENERATOR(order_gen_sea) {
avma = ltop;
return -4;
} else {
- curve->order = order;
+ curve->order = gerepilecopy(ltop, order);
obj_insert_shallow(curve->curve, 1, order);
return 1;
}
@@ -86,7 +88,7 @@ GENERATOR(order_gen_prime) {
avma = ltop;
return -4;
} else {
- curve->order = order;
+ curve->order = gerepilecopy(ltop, order);
obj_insert_shallow(curve->curve, 1, curve->order);
return 1;
}
diff --git a/test/src/exhaustive/test_brainpool_rfc.c b/test/src/exhaustive/test_brainpool_rfc.c
index 19008b4..63ed116 100644
--- a/test/src/exhaustive/test_brainpool_rfc.c
+++ b/test/src/exhaustive/test_brainpool_rfc.c
@@ -212,10 +212,13 @@ ParameterizedTest(struct rfc_params *param, brainpool_rfc,
setup.validators = checks;
setup.unrolls = unrolls;
+ // pari_sp top = avma;
+ // pari_ulong debug_before = DEBUGLEVEL;
+ // DEBUGLEVEL = 3;
ret = exhaustive_gen(&curve, &setup, OFFSET_A, OFFSET_GENERATORS);
+ // DEBUGLEVEL = debug_before;
+ // dbg_gerepile(top);
- pari_printf("expected a = %P#x\n", lift(a));
- pari_printf("real a = %P#x\n", lift(curve.a));
cr_assert_not_null(curve.a, );
cr_assert_not_null(curve.b, );
cr_assert_eq(ret, 1, );
diff --git a/test/src/test/default.c b/test/src/test/default.c
index 52cd895..27f9525 100644
--- a/test/src/test/default.c
+++ b/test/src/test/default.c
@@ -9,7 +9,7 @@
void default_setup(void) {
memset(cfg, 0, sizeof(config_t));
- pari_init(200000000, 1000000);
+ pari_init(200000000, 1000000); // 200MB memory, 1M primes
// set_mem_funcs(cr_malloc, cr_simple_calloc, cr_realloc, cr_free);
}