diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/exhaustive/brainpool.c | 1 | ||||
| -rw-r--r-- | src/gen/gens.c | 1 | ||||
| -rw-r--r-- | src/math/subgroup.c | 95 | ||||
| -rw-r--r-- | src/math/subgroup.h | 102 | ||||
| -rw-r--r-- | src/math/twists.c | 2 | ||||
| -rw-r--r-- | src/obj/curve.c | 1 | ||||
| -rw-r--r-- | src/obj/subgroup.c | 97 | ||||
| -rw-r--r-- | src/obj/subgroup.h | 109 |
8 files changed, 210 insertions, 198 deletions
diff --git a/src/exhaustive/brainpool.c b/src/exhaustive/brainpool.c index 085e961..56c095d 100644 --- a/src/exhaustive/brainpool.c +++ b/src/exhaustive/brainpool.c @@ -9,6 +9,7 @@ #include "io/output.h" #include "math/subgroup.h" #include "obj/point.h" +#include "obj/subgroup.h" #include "util/bits.h" #include "util/str.h" diff --git a/src/gen/gens.c b/src/gen/gens.c index edbe98a..d106f7c 100644 --- a/src/gen/gens.c +++ b/src/gen/gens.c @@ -6,6 +6,7 @@ #include "exhaustive/arg.h" #include "math/subgroup.h" #include "obj/point.h" +#include "obj/subgroup.h" static subgroup_t *gens_point(GEN point, const curve_t *curve) { subgroup_t *sub = subgroup_new(); diff --git a/src/math/subgroup.c b/src/math/subgroup.c index f0f2e19..eb8ff27 100644 --- a/src/math/subgroup.c +++ b/src/math/subgroup.c @@ -3,101 +3,6 @@ * Copyright (C) 2017-2018 J08nY */ #include "subgroup.h" -#include "obj/point.h" -#include "util/memory.h" - -subgroup_t *subgroup_new(void) { return try_calloc(sizeof(subgroup_t)); } - -subgroup_t *subgroup_copy(const subgroup_t *src, subgroup_t *dst) { - if (src->generator) dst->generator = point_new_copy(src->generator); - if (src->points) { - dst->points = points_new_copy(src->points, src->npoints); - dst->npoints = src->npoints; - } - return dst; -} - -subgroup_t *subgroup_new_copy(const subgroup_t *src) { - subgroup_t *result = subgroup_new(); - return subgroup_copy(src, result); -} - -subgroup_t *subgroup_clone(const subgroup_t *src, subgroup_t *dst) { - if (src->generator) dst->generator = point_new_clone(src->generator); - if (src->points) { - dst->points = points_new_clone(src->points, src->npoints); - dst->npoints = src->npoints; - } - return dst; -} - -subgroup_t *subgroup_new_clone(const subgroup_t *src) { - subgroup_t *result = subgroup_new(); - return subgroup_clone(src, result); -} - -void subgroup_free(subgroup_t **subgroup) { - if (*subgroup) { - if ((*subgroup)->generator) { - point_free(&(*subgroup)->generator); - } - try_free(*subgroup); - *subgroup = NULL; - } -} - -void subgroup_free_deep(subgroup_t **subgroup) { - if (*subgroup) { - points_free_deep(&(*subgroup)->points, (*subgroup)->npoints); - subgroup_free(subgroup); - } -} - -subgroup_t **subgroups_new(size_t num) { - return try_calloc(num * sizeof(subgroup_t *)); -} - -subgroup_t **subgroups_copy(subgroup_t **const src, subgroup_t **dest, - size_t num) { - for (size_t i = 0; i < num; ++i) { - dest[i] = subgroup_new_copy(src[i]); - } - return dest; -} - -subgroup_t **subgroups_new_copy(subgroup_t **const src, size_t num) { - subgroup_t **result = subgroups_new(num); - return subgroups_copy(src, result, num); -} - -subgroup_t **subgroups_clone(subgroup_t **const src, subgroup_t **dest, - size_t num) { - for (size_t i = 0; i < num; ++i) { - dest[i] = subgroup_new_clone(src[i]); - } - return dest; -} - -subgroup_t **subgroups_new_clone(subgroup_t **const src, size_t num) { - subgroup_t **result = subgroups_new(num); - return subgroups_clone(src, result, num); -} - -void subgroups_free(subgroup_t ***subgroups) { - if (*subgroups) { - try_free(*subgroups); - *subgroups = NULL; - } -} - -void subgroups_free_deep(subgroup_t ***subgroups, size_t num) { - if (*subgroups) { - for (size_t i = 0; i < num; ++i) { - subgroup_free(&(*subgroups)[i]); - } - subgroups_free(subgroups); - } -} /** * @brief All prime divisors of a given integer with multiplicity. diff --git a/src/math/subgroup.h b/src/math/subgroup.h index 94df006..68657fb 100644 --- a/src/math/subgroup.h +++ b/src/math/subgroup.h @@ -12,108 +12,6 @@ #include "misc/types.h" /** - * @brief - * @return - */ -subgroup_t *subgroup_new(void); - -/** - * @brief - * @param src - * @param dst - * @return - */ -subgroup_t *subgroup_copy(const subgroup_t *src, subgroup_t *dst); - -/** - * @brief - * @param src - * @return - */ -subgroup_t *subgroup_new_copy(const subgroup_t *src); - -/** - * @brief - * @param src - * @param dst - * @return - */ -subgroup_t *subgroup_clone(const subgroup_t *src, subgroup_t *dst); - -/** - * @brief - * @param src - * @return - */ -subgroup_t *subgroup_new_clone(const subgroup_t *src); - -/** - * @brief - * @param subgroup - */ -void subgroup_free(subgroup_t **subgroup); - -/** - * @brief - * @param subgroup - */ -void subgroup_free_deep(subgroup_t **subgroup); - -/** - * @brief - * @param num - * @return - */ -subgroup_t **subgroups_new(size_t num); - -/** - * - * @param src - * @param dest - * @param num - * @return - */ -subgroup_t **subgroups_copy(subgroup_t **src, subgroup_t **dest, size_t num); - -/** - * - * @param src - * @param num - * @return - */ -subgroup_t **subgroups_new_copy(subgroup_t **src, size_t num); - -/** - * - * @param src - * @param dest - * @param num - * @return - */ -subgroup_t **subgroups_clone(subgroup_t **src, subgroup_t **dest, size_t num); - -/** - * - * @param src - * @param num - * @return - */ -subgroup_t **subgroups_new_clone(subgroup_t **src, size_t num); - -/** - * @brief - * @param subgroups - */ -void subgroups_free(subgroup_t ***subgroups); - -/** - * @brief - * @param subgroups - * @param num - */ -void subgroups_free_deep(subgroup_t ***subgroups, size_t num); - -/** * @brief All prime factors of a given integer, without multipliticity. * * subgroups_factors(27) = [3] diff --git a/src/math/twists.c b/src/math/twists.c index 992b7cf..0d4b14c 100644 --- a/src/math/twists.c +++ b/src/math/twists.c @@ -4,7 +4,7 @@ */ #include "twists.h" #include "gen/seed.h" -#include "math/subgroup.h" +#include "obj/subgroup.h" void twist_rand_to(curve_t *to, const curve_t *of) { to->field = gcopy(of->field); diff --git a/src/obj/curve.c b/src/obj/curve.c index b052729..8d54f50 100644 --- a/src/obj/curve.c +++ b/src/obj/curve.c @@ -3,6 +3,7 @@ #include "gen/seed.h" #include "math/subgroup.h" #include "misc/types.h" +#include "obj/subgroup.h" #include "util/memory.h" curve_t *curve_new(void) { return try_calloc(sizeof(curve_t)); } diff --git a/src/obj/subgroup.c b/src/obj/subgroup.c new file mode 100644 index 0000000..732e0a9 --- /dev/null +++ b/src/obj/subgroup.c @@ -0,0 +1,97 @@ + +#include "subgroup.h" +#include "point.h" +#include "util/memory.h" + +subgroup_t *subgroup_new(void) { return try_calloc(sizeof(subgroup_t)); } + +subgroup_t *subgroup_copy(const subgroup_t *src, subgroup_t *dst) { + if (src->generator) dst->generator = point_new_copy(src->generator); + if (src->points) { + dst->points = points_new_copy(src->points, src->npoints); + dst->npoints = src->npoints; + } + return dst; +} + +subgroup_t *subgroup_new_copy(const subgroup_t *src) { + subgroup_t *result = subgroup_new(); + return subgroup_copy(src, result); +} + +subgroup_t *subgroup_clone(const subgroup_t *src, subgroup_t *dst) { + if (src->generator) dst->generator = point_new_clone(src->generator); + if (src->points) { + dst->points = points_new_clone(src->points, src->npoints); + dst->npoints = src->npoints; + } + return dst; +} + +subgroup_t *subgroup_new_clone(const subgroup_t *src) { + subgroup_t *result = subgroup_new(); + return subgroup_clone(src, result); +} + +void subgroup_free(subgroup_t **subgroup) { + if (*subgroup) { + if ((*subgroup)->generator) { + point_free(&(*subgroup)->generator); + } + try_free(*subgroup); + *subgroup = NULL; + } +} + +void subgroup_free_deep(subgroup_t **subgroup) { + if (*subgroup) { + points_free_deep(&(*subgroup)->points, (*subgroup)->npoints); + subgroup_free(subgroup); + } +} + +subgroup_t **subgroups_new(size_t num) { + return try_calloc(num * sizeof(subgroup_t *)); +} + +subgroup_t **subgroups_copy(subgroup_t **const src, subgroup_t **dest, + size_t num) { + for (size_t i = 0; i < num; ++i) { + dest[i] = subgroup_new_copy(src[i]); + } + return dest; +} + +subgroup_t **subgroups_new_copy(subgroup_t **const src, size_t num) { + subgroup_t **result = subgroups_new(num); + return subgroups_copy(src, result, num); +} + +subgroup_t **subgroups_clone(subgroup_t **const src, subgroup_t **dest, + size_t num) { + for (size_t i = 0; i < num; ++i) { + dest[i] = subgroup_new_clone(src[i]); + } + return dest; +} + +subgroup_t **subgroups_new_clone(subgroup_t **const src, size_t num) { + subgroup_t **result = subgroups_new(num); + return subgroups_clone(src, result, num); +} + +void subgroups_free(subgroup_t ***subgroups) { + if (*subgroups) { + try_free(*subgroups); + *subgroups = NULL; + } +} + +void subgroups_free_deep(subgroup_t ***subgroups, size_t num) { + if (*subgroups) { + for (size_t i = 0; i < num; ++i) { + subgroup_free(&(*subgroups)[i]); + } + subgroups_free(subgroups); + } +} diff --git a/src/obj/subgroup.h b/src/obj/subgroup.h new file mode 100644 index 0000000..8c56f9c --- /dev/null +++ b/src/obj/subgroup.h @@ -0,0 +1,109 @@ + +#ifndef ECGEN_OBJ_SUBGROUP_H +#define ECGEN_OBJ_SUBGROUP_H + +#include "misc/types.h" + +/** + * @brief + * @return + */ +subgroup_t *subgroup_new(void); + +/** + * @brief + * @param src + * @param dst + * @return + */ +subgroup_t *subgroup_copy(const subgroup_t *src, subgroup_t *dst); + +/** + * @brief + * @param src + * @return + */ +subgroup_t *subgroup_new_copy(const subgroup_t *src); + +/** + * @brief + * @param src + * @param dst + * @return + */ +subgroup_t *subgroup_clone(const subgroup_t *src, subgroup_t *dst); + +/** + * @brief + * @param src + * @return + */ +subgroup_t *subgroup_new_clone(const subgroup_t *src); + +/** + * @brief + * @param subgroup + */ +void subgroup_free(subgroup_t **subgroup); + +/** + * @brief + * @param subgroup + */ +void subgroup_free_deep(subgroup_t **subgroup); + +/** + * @brief + * @param num + * @return + */ +subgroup_t **subgroups_new(size_t num); + +/** + * + * @param src + * @param dest + * @param num + * @return + */ +subgroup_t **subgroups_copy(subgroup_t **src, subgroup_t **dest, size_t num); + +/** + * + * @param src + * @param num + * @return + */ +subgroup_t **subgroups_new_copy(subgroup_t **src, size_t num); + +/** + * + * @param src + * @param dest + * @param num + * @return + */ +subgroup_t **subgroups_clone(subgroup_t **src, subgroup_t **dest, size_t num); + +/** + * + * @param src + * @param num + * @return + */ +subgroup_t **subgroups_new_clone(subgroup_t **src, size_t num); + +/** + * @brief + * @param subgroups + */ +void subgroups_free(subgroup_t ***subgroups); + +/** + * @brief + * @param subgroups + * @param num + */ +void subgroups_free_deep(subgroup_t ***subgroups, size_t num); + +#endif // ECGEN_OBJ_SUBGROUP_H |
