blob: a29e36852f269f60a3a49e1c62cb2e9779de05e6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
/*
* ecgen, tool for generating Elliptic curve domain parameters
* Copyright (C) 2017-2018 J08nY
*/
#include "cm.h"
#include "cm_any.h"
#include "cm_prime.h"
#include "io/output.h"
#include "obj/curve.h"
#include "p1363.h"
int cm_do() {
debug_log_start("Starting Complex Multiplication method");
int result = 0;
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);
output_o_end();
curve_free(&curve);
} else {
result = 1;
}
debug_log_start("Finished Complex Multiplication method");
return result;
}
|