aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJ08nY2017-02-19 21:36:03 +0100
committerJ08nY2017-02-19 22:05:28 +0100
commit372ea19289328b555a4587363347c34cc5f779c6 (patch)
tree99b0a8fe344d3552d4b0d449163157f64dad318f /src
parent888ca8052e0eb3acbe33dbf180e3af27341002eb (diff)
downloadecgen-372ea19289328b555a4587363347c34cc5f779c6.tar.gz
ecgen-372ea19289328b555a4587363347c34cc5f779c6.tar.zst
ecgen-372ea19289328b555a4587363347c34cc5f779c6.zip
ecgen v0.3: some cleanup and version bump
Diffstat (limited to 'src')
-rw-r--r--src/cm/cm.c5
-rw-r--r--src/ecgen.c15
-rw-r--r--src/econvert.c2
-rw-r--r--src/exhaustive/exhaustive.c2
-rw-r--r--src/io/output.c23
-rw-r--r--src/math/curve.c26
-rw-r--r--src/math/gens.c2
-rw-r--r--src/math/gens.h2
-rw-r--r--src/math/point.c4
9 files changed, 48 insertions, 33 deletions
diff --git a/src/cm/cm.c b/src/cm/cm.c
index 8b61c65..92d1c66 100644
--- a/src/cm/cm.c
+++ b/src/cm/cm.c
@@ -4,7 +4,4 @@
*/
#include "cm.h"
-int cm_do(config_t *cfg) {
- // TODO implement
- return INT_MIN;
-}
+int cm_do(config_t *cfg) { return INT_MIN; }
diff --git a/src/ecgen.c b/src/ecgen.c
index a24bc2b..2783e8f 100644
--- a/src/ecgen.c
+++ b/src/ecgen.c
@@ -20,7 +20,7 @@
/**
* @file ecgen.c
* @author J08nY <johny@neuromancer.sk>
- * @version 0.2
+ * @version 0.3.0
* @copyright GPL v2.0
*/
#include <pari/pari.h>
@@ -31,7 +31,7 @@
#include "io/output.h"
const char *argp_program_version =
- "ecgen 0.2\n"
+ "ecgen 0.3.0\n"
"Copyright (C) 2017 J08nY\n"
"License GPLv2: GNU GPL version 2 (or later) "
"<http://gnu.org/licenses/gpl.html>\n"
@@ -74,14 +74,23 @@ int quit(int status) {
/**
* @mainpage
+ *
* Three fundamentally different Elliptic curve generation approaches can be
* taken.
+ *
+ * [Baier] -
+ * https://www.cdc.informatik.tu-darmstadt.de/reports/reports/harald_baier.diss.pdf
+ * [Baier, Buchmann] -
+ * https://www.ipa.go.jp/security/enc/CRYPTREC/fy15/doc/1030_Buchmann.evaluation.pdf
+ *
* - Complex Multiplication:
- * - Capable of generating a curve of a given prime order.
+ * - Capable of generating a curve of a given (prime) order.
* - Generates a subset of all Elliptic Curves over a given field.
* - Used with the -n / --order option
*
* - [Broker, Stevenhagen] - https://arxiv.org/abs/0712.2022
+ * - [Savas, Schmidt, Koc] -
+ * http://people.oregonstate.edu/~schmidtt/ourPapers/SavasKoc/ches01curve.pdf
*
* - Invalid curve generation:
* - Generates *invalid* curves for a given curve.
diff --git a/src/econvert.c b/src/econvert.c
index 21f9304..6c53887 100644
--- a/src/econvert.c
+++ b/src/econvert.c
@@ -20,7 +20,7 @@
/**
* @file econvert.c
* @author J08nY <johny@neuromancer.sk>
- * @version 0.2
+ * @version 0.3.0
* @copyright GPL v2.0
*/
diff --git a/src/exhaustive/exhaustive.c b/src/exhaustive/exhaustive.c
index 1f88215..e1e5487 100644
--- a/src/exhaustive/exhaustive.c
+++ b/src/exhaustive/exhaustive.c
@@ -7,9 +7,9 @@
#include "math/curve.h"
#include "math/equation.h"
#include "math/field.h"
+#include "math/gens.h"
#include "math/order.h"
#include "math/point.h"
-#include "math/gens.h"
#include "seed.h"
void exhaustive_ginit(gen_t *generators, config_t *config) {
diff --git a/src/io/output.c b/src/io/output.c
index 038ba3d..348b83f 100644
--- a/src/io/output.c
+++ b/src/io/output.c
@@ -87,7 +87,8 @@ JSON_Value *output_jjson(curve_t *curve, config_t *config) {
pari_free(e3);
break;
}
- default: fprintf(stderr, "Error, field has unknown amount of elements.\n");
+ default:
+ fprintf(stderr, "Error, field has unknown amount of elements.\n");
exit(1);
}
@@ -109,18 +110,19 @@ JSON_Value *output_jjson(curve_t *curve, config_t *config) {
JSON_Object *point_object = json_value_get_object(point_value);
char *x = pari_sprintf(
- "%P#x", field_elementi(gel(curve->generators[i]->point, 1)));
+ "%P#x", field_elementi(gel(curve->generators[i]->point, 1)));
json_object_set_string(point_object, "x", x);
pari_free(x);
char *y = pari_sprintf(
- "%P#x", field_elementi(gel(curve->generators[i]->point, 2)));
+ "%P#x", field_elementi(gel(curve->generators[i]->point, 2)));
json_object_set_string(point_object, "y", y);
pari_free(y);
char *p_order = pari_sprintf("%P#x", curve->generators[i]->order);
json_object_set_string(point_object, "order", p_order);
pari_free(p_order);
if (curve->generators[i]->cofactor) {
- char *cofactor = pari_sprintf("%P#x", curve->generators[i]->cofactor);
+ char *cofactor =
+ pari_sprintf("%P#x", curve->generators[i]->cofactor);
json_object_set_string(point_object, "cofactor", cofactor);
pari_free(p_order);
}
@@ -140,18 +142,19 @@ JSON_Value *output_jjson(curve_t *curve, config_t *config) {
JSON_Object *point_object = json_value_get_object(point_value);
char *x = pari_sprintf(
- "%P#x", field_elementi(gel(curve->points[i]->point, 1)));
+ "%P#x", field_elementi(gel(curve->points[i]->point, 1)));
json_object_set_string(point_object, "x", x);
pari_free(x);
char *y = pari_sprintf(
- "%P#x", field_elementi(gel(curve->points[i]->point, 2)));
+ "%P#x", field_elementi(gel(curve->points[i]->point, 2)));
json_object_set_string(point_object, "y", y);
pari_free(y);
char *p_order = pari_sprintf("%P#x", curve->points[i]->order);
json_object_set_string(point_object, "order", p_order);
pari_free(p_order);
if (curve->points[i]->cofactor) {
- char *cofactor = pari_sprintf("%P#x", curve->points[i]->cofactor);
+ char *cofactor =
+ pari_sprintf("%P#x", curve->points[i]->cofactor);
json_object_set_string(point_object, "cofactor", cofactor);
pari_free(p_order);
}
@@ -209,11 +212,13 @@ void output_init(config_t *cfg) {
setvbuf(debug, NULL, _IONBF, 0);
switch (cfg->format) {
- case FORMAT_JSON: output_s = &output_sjson;
+ case FORMAT_JSON:
+ output_s = &output_sjson;
output_f = &output_fjson;
output_o = &output_json;
break;
- case FORMAT_CSV: output_s = &output_scsv;
+ case FORMAT_CSV:
+ output_s = &output_scsv;
output_f = &output_fcsv;
output_o = &output_csv;
break;
diff --git a/src/math/curve.c b/src/math/curve.c
index 71d1744..b01c795 100644
--- a/src/math/curve.c
+++ b/src/math/curve.c
@@ -45,16 +45,19 @@ int curve_init(curve_t *curve, config_t *config, arg_t *args) {
pari_sp ltop = avma;
GEN v = gen_0;
switch (typ(curve->field)) {
- case t_INT: v = gtovec0(gen_0, 2);
+ case t_INT:
+ v = gtovec0(gen_0, 2);
gel(v, 1) = curve->a;
gel(v, 2) = curve->b;
break;
- case t_FFELT: v = gtovec0(gen_0, 5);
+ case t_FFELT:
+ v = gtovec0(gen_0, 5);
gel(v, 1) = gen_1;
gel(v, 4) = curve->a;
gel(v, 5) = curve->b;
break;
- default: pari_err_TYPE("curve_init", curve->field);
+ default:
+ pari_err_TYPE("curve_init", curve->field);
}
curve->curve = gerepilecopy(ltop, ellinit(v, curve->field, -1));
@@ -84,9 +87,12 @@ int curve_seed_f2m(curve_t *curve, config_t *config, arg_t *args) {
int curve_seed(curve_t *curve, config_t *config, arg_t *args) {
switch (typ(curve->field)) {
- case t_INT: return curve_seed_fp(curve, config, args);
- case t_FFELT: return curve_seed_f2m(curve, config, args);
- default: pari_err_TYPE("curve_seed", curve->field);
+ case t_INT:
+ return curve_seed_fp(curve, config, args);
+ case t_FFELT:
+ return curve_seed_f2m(curve, config, args);
+ default:
+ pari_err_TYPE("curve_seed", curve->field);
return INT_MIN; /* NOT REACHABLE */
}
}
@@ -100,8 +106,8 @@ GEN curve_params(curve_t *curve) {
if (curve->generators) {
for (size_t i = 0; i < curve->ngens; ++i) {
GEN point =
- gconcat(field_elementi(gel(curve->generators[i]->point, 1)),
- field_elementi(gel(curve->generators[i]->point, 2)));
+ gconcat(field_elementi(gel(curve->generators[i]->point, 1)),
+ field_elementi(gel(curve->generators[i]->point, 2)));
GEN x = field_elementi(gel(point, 1));
GEN y = field_elementi(gel(point, 2));
result = gconcat(result, x);
@@ -116,8 +122,8 @@ GEN curve_params(curve_t *curve) {
if (curve->points) {
for (size_t i = 0; i < curve->npoints; ++i) {
GEN point =
- gconcat(field_elementi(gel(curve->points[i]->point, 1)),
- field_elementi(gel(curve->points[i]->point, 2)));
+ gconcat(field_elementi(gel(curve->points[i]->point, 1)),
+ field_elementi(gel(curve->points[i]->point, 2)));
GEN x = field_elementi(gel(point, 1));
GEN y = field_elementi(gel(point, 2));
result = gconcat(result, x);
diff --git a/src/math/gens.c b/src/math/gens.c
index 619eb25..ac81960 100644
--- a/src/math/gens.c
+++ b/src/math/gens.c
@@ -2,7 +2,6 @@
#include "gens.h"
#include "point.h"
-
int gens_init(curve_t *curve, config_t *config, arg_t *args) {
// TODO stack code!!!
GEN generators = ellff_get_gens(curve->curve);
@@ -20,4 +19,3 @@ int gens_init(curve_t *curve, config_t *config, arg_t *args) {
return 1;
}
-
diff --git a/src/math/gens.h b/src/math/gens.h
index fc67a23..b3f7774 100644
--- a/src/math/gens.h
+++ b/src/math/gens.h
@@ -6,4 +6,4 @@
int gens_init(curve_t *curve, config_t *config, arg_t *args);
-#endif //ECGEN_GENS_H
+#endif // ECGEN_GENS_H
diff --git a/src/math/point.c b/src/math/point.c
index 514f1b9..d6e8858 100644
--- a/src/math/point.c
+++ b/src/math/point.c
@@ -91,11 +91,11 @@ int points_random(curve_t *curve, config_t *config, arg_t *args) {
}
/*
- GEN o = utoi(dprimes[i]);
+ GEN o = utoi(dprimes[i]);
GEN mul = ellmul(curve->curve, rand, o);
if (gequal0(mul)) {
- printf("Success! %lu\n", npoints);
+ printf("Success! %lu\n", npoints);
curve->points[i] = point_new();
gerepileall(btop, 2, &rand, &o);