aboutsummaryrefslogtreecommitdiff
path: root/src/gen/order.c
diff options
context:
space:
mode:
authorJ08nY2018-03-03 02:05:23 +0100
committerJ08nY2018-03-03 02:05:23 +0100
commit5a283c6e24682f706a5209a3f785980813fb0c3b (patch)
tree981e44eeb0003e0aaeb2cb40b433ede41c10dcd8 /src/gen/order.c
parent7cdbef7b9fb6af64b82193e765fb536078230540 (diff)
downloadecgen-5a283c6e24682f706a5209a3f785980813fb0c3b.tar.gz
ecgen-5a283c6e24682f706a5209a3f785980813fb0c3b.tar.zst
ecgen-5a283c6e24682f706a5209a3f785980813fb0c3b.zip
Diffstat (limited to 'src/gen/order.c')
-rw-r--r--src/gen/order.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/gen/order.c b/src/gen/order.c
index da1eb48..1f0d829 100644
--- a/src/gen/order.c
+++ b/src/gen/order.c
@@ -4,6 +4,7 @@
*/
#include "order.h"
#include "exhaustive/arg.h"
+#include "math/koblitz.h"
#include "io/input.h"
GENERATOR(order_gen_input) {
@@ -77,6 +78,23 @@ GENERATOR(order_gen_prime) {
}
}
+GENERATOR(order_gen_koblitz) {
+ pari_sp ltop = avma;
+ GEN order = koblitz_get_order(cfg->bits, itou(curve->a));
+ if (order) {
+ curve->order = gerepilecopy(ltop, order);
+ } else {
+ GEN ord = ellff_get_card(curve->curve);
+ if (isclone(ord)) {
+ curve->order = gerepilecopy(ltop, ord);
+ } else {
+ avma = ltop;
+ curve->order = ord;
+ }
+ }
+ return 1;
+}
+
CHECK(order_check_pohlig_hellman) {
HAS_ARG(args);
pari_sp ltop = avma;