aboutsummaryrefslogtreecommitdiff
path: root/src/math/types.h
blob: 70696ad4c65983dbf0f25b61d143558c990440e9 (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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/*
 * ecgen, tool for generating Elliptic curve domain parameters
 * Copyright (C) 2017 J08nY
 */
/**
 * @file types.h
 */
#ifndef ECGEN_TYPES_H
#define ECGEN_TYPES_H

#include <pari/pari.h>
#include "io/cli.h"

typedef struct seed_t { GEN seed; } seed_t;

typedef struct point_t {
	GEN point;
	GEN order;
	GEN cofactor;
} point_t;

typedef struct curve_t {
	seed_t *seed;
	GEN field;
	GEN a;
	GEN b;
	GEN curve;
	GEN order;
	point_t **generators;
	size_t ngens;
	point_t **points;
	size_t npoints;
} curve_t;

enum curve_offset {
	OFFSET_SEED,
	OFFSET_FIELD,
	OFFSET_A,
	OFFSET_B,
	OFFSET_CURVE,
	OFFSET_ORDER,
	OFFSET_GENERATORS,
	OFFSET_POINTS,
	OFFSET_END
};

typedef struct arg_t {
	void *args;
	size_t nargs;
} arg_t;

typedef int (*gen_t)(curve_t *, config_t *, arg_t *);

int gen_skip(curve_t *curve, config_t *config, arg_t *args);

#endif  // ECGEN_TYPES_H