diff options
| author | J08nY | 2017-02-19 21:36:03 +0100 |
|---|---|---|
| committer | J08nY | 2017-02-19 22:05:28 +0100 |
| commit | 372ea19289328b555a4587363347c34cc5f779c6 (patch) | |
| tree | 99b0a8fe344d3552d4b0d449163157f64dad318f /src | |
| parent | 888ca8052e0eb3acbe33dbf180e3af27341002eb (diff) | |
| download | ecgen-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.c | 5 | ||||
| -rw-r--r-- | src/ecgen.c | 15 | ||||
| -rw-r--r-- | src/econvert.c | 2 | ||||
| -rw-r--r-- | src/exhaustive/exhaustive.c | 2 | ||||
| -rw-r--r-- | src/io/output.c | 23 | ||||
| -rw-r--r-- | src/math/curve.c | 26 | ||||
| -rw-r--r-- | src/math/gens.c | 2 | ||||
| -rw-r--r-- | src/math/gens.h | 2 | ||||
| -rw-r--r-- | src/math/point.c | 4 |
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); |
