aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJ08nY2017-12-17 20:16:16 +0100
committerJ08nY2017-12-17 22:55:45 +0100
commit878bd3fb19c5f876c6852ca5274186850b3c189f (patch)
tree172c60b0cd9190ff539e57e2d506598663bc604d /src
parent04237935d3577eed75efaf0e2fec69e1cdad35e4 (diff)
downloadecgen-878bd3fb19c5f876c6852ca5274186850b3c189f.tar.gz
ecgen-878bd3fb19c5f876c6852ca5274186850b3c189f.tar.zst
ecgen-878bd3fb19c5f876c6852ca5274186850b3c189f.zip
Diffstat (limited to 'src')
-rw-r--r--src/exhaustive/brainpool.c7
-rw-r--r--src/gen/seed.c4
-rw-r--r--src/util/bits.c2
3 files changed, 8 insertions, 5 deletions
diff --git a/src/exhaustive/brainpool.c b/src/exhaustive/brainpool.c
index c45d0d5..fdabd6f 100644
--- a/src/exhaustive/brainpool.c
+++ b/src/exhaustive/brainpool.c
@@ -109,7 +109,11 @@ GENERATOR(brainpool_gen_field) {
GEN c = bits_to_i(p_bits);
bits_free(&p_bits);
GEN p = c;
+ pari_sp bbtop = avma;
do {
+ if (p != c) {//yes, check ptr identity here
+ avma = bbtop;
+ }
p = nextprime(addii(p, gen_1));
} while (mod4(p) != 3);
@@ -127,7 +131,7 @@ GENERATOR(brainpool_gen_field) {
continue;
}
- curve->field = p;
+ curve->field = gcopy(p);
gerepileall(btop, 1, &curve->field);
break;
} while (true);
@@ -156,6 +160,7 @@ GENERATOR(brainpool_gen_equation) {
avma = btop;
continue;
}
+
GEN z;
z = Fp_sqrtn(Fp_muls(am, -3, curve->field), stoi(4), curve->field,
NULL);
diff --git a/src/gen/seed.c b/src/gen/seed.c
index 7c1b61e..ad56b18 100644
--- a/src/gen/seed.c
+++ b/src/gen/seed.c
@@ -36,9 +36,7 @@ seed_t *seed_new_clone(const seed_t *src) {
void seed_free(seed_t **seed) {
if (*seed) {
- if ((*seed)->seed) {
- bits_free(&(*seed)->seed);
- }
+ bits_free(&(*seed)->seed);
if ((*seed)->hash20) {
try_free((*seed)->hash20);
}
diff --git a/src/util/bits.c b/src/util/bits.c
index 5e6a95e..a0a3795 100644
--- a/src/util/bits.c
+++ b/src/util/bits.c
@@ -151,7 +151,7 @@ GEN bits_to_i(const bits_t *bits) {
if (GET_BIT(bits->bits, i) != 0)
result = addii(result, int2n(bits->bitlen - i - 1));
}
- return gerepileupto(ltop, result);
+ return gerepilecopy(ltop, result);
}
char *bits_to_hex(const bits_t *bits) {