aboutsummaryrefslogtreecommitdiff
path: root/src/exhaustive/exhaustive.h
blob: 302a7881433bf8aa26a7cea5c2b9813ae3c73fb8 (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
57
58
59
60
61
62
63
64
/*
 * ecgen, tool for generating Elliptic curve domain parameters
 * Copyright (C) 2017 J08nY
 */
/**
 * @file exhaustive.h
 */
#ifndef ECGEN_EXHAUSTIVE_H
#define ECGEN_EXHAUSTIVE_H

#include "misc/types.h"

/**
 * @brief
 */
typedef struct {
	gen_f *generators;
	arg_t **gen_argss;
	check_t **validators;
	arg_t **check_argss;
	unroll_f *unrolls;
} exhaustive_t;

/**
 * @brief
 * @param setup
 */
void exhaustive_clear(exhaustive_t *setup);

/**
 *
 */
void exhaustive_uinit(unroll_f *unrolls);

/**
 *
 * @param curve
 * @param setup
 * @param start_offset
 * @param end_offset
 * @param retry
 * @return
 */
int exhaustive_gen_retry(curve_t *curve, const exhaustive_t *setup,
                         offset_e start_offset, offset_e end_offset, int retry);

/**
 *
 * @param curve
 * @param setup
 * @param start_offset
 * @param end_offset
 * @return
 */
int exhaustive_gen(curve_t *curve, const exhaustive_t *setup,
                   offset_e start_offset, offset_e end_offset);

/**
 *
 * @return
 */
int exhaustive_do();

#endif  // ECGEN_EXHAUSTIVE_H