aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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
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;
}