aboutsummaryrefslogtreecommitdiff
path: root/src/cm/cm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cm/cm.c')
-rw-r--r--src/cm/cm.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/cm/cm.c b/src/cm/cm.c
index 8fa174d..a29e368 100644
--- a/src/cm/cm.c
+++ b/src/cm/cm.c
@@ -3,7 +3,8 @@
* Copyright (C) 2017-2018 J08nY
*/
#include "cm.h"
-#include "custom.h"
+#include "cm_any.h"
+#include "cm_prime.h"
#include "io/output.h"
#include "obj/curve.h"
#include "p1363.h"
@@ -12,7 +13,20 @@ int cm_do() {
debug_log_start("Starting Complex Multiplication method");
int result = 0;
- curve_t *curve = custom_curve();
+ GEN order = strtoi(cfg->cm_order);
+ curve_t *curve = NULL;
+
+ if (gequal0(order)) {
+ fprintf(err, "Order requested not a number: %s\n", cfg->cm_order);
+ result = 1;
+ } else if (isprime(order)) {
+ debug_log("Starting prime order curve generation");
+ curve = cm_prime_curve(order);
+ } else {
+ debug_log("Starting composite order curve generation");
+ curve = cm_any_curve(order);
+ }
+
if (curve) {
output_o_begin();
output_o(curve);