diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/exhaustive/brainpool.c | 5 | ||||
| -rw-r--r-- | src/exhaustive/brainpool_rfc.c | 8 | ||||
| -rw-r--r-- | src/gen/gens.c | 4 | ||||
| -rw-r--r-- | src/gen/order.c | 8 |
4 files changed, 10 insertions, 15 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; } |
