Coverage Report

Created: 2024-06-28 06:39

/src/cryptofuzz/modules/botan/bn_ops.h
Line
Count
Source
1
#include <cryptofuzz/components.h>
2
#include <cryptofuzz/operations.h>
3
#include <botan/bigint.h>
4
5
#include "bn_helper.h"
6
7
namespace cryptofuzz {
8
namespace module {
9
namespace Botan_bignum {
10
11
class Operation {
12
    public:
13
        virtual bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const = 0;
14
3.98k
        virtual ~Operation() { }
15
};
16
17
class Add : public Operation {
18
    public:
19
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
20
};
21
22
class Sub : public Operation {
23
    public:
24
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
25
};
26
27
class Mul : public Operation {
28
    public:
29
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
30
};
31
32
class Div : public Operation {
33
    public:
34
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
35
};
36
37
class Mod : public Operation {
38
    public:
39
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
40
};
41
42
class Exp : public Operation {
43
    public:
44
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
45
};
46
47
class ExpMod : public Operation {
48
    public:
49
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
50
};
51
52
class Sqr : public Operation {
53
    public:
54
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
55
};
56
57
class GCD : public Operation {
58
    public:
59
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
60
};
61
62
class SqrMod : public Operation {
63
    public:
64
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
65
};
66
67
class InvMod : public Operation {
68
    public:
69
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
70
};
71
72
class Cmp : public Operation {
73
    public:
74
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
75
};
76
77
class LCM : public Operation {
78
    public:
79
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
80
};
81
82
class Abs : public Operation {
83
    public:
84
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
85
};
86
87
class Jacobi : public Operation {
88
    public:
89
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
90
};
91
92
class Neg : public Operation {
93
    public:
94
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
95
};
96
97
class IsPrime : public Operation {
98
    public:
99
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
100
};
101
102
class RShift : public Operation {
103
    public:
104
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
105
};
106
107
class LShift1 : public Operation {
108
    public:
109
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
110
};
111
112
class IsNeg : public Operation {
113
    public:
114
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
115
};
116
117
class IsEq : public Operation {
118
    public:
119
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
120
};
121
122
class IsGt : public Operation {
123
    public:
124
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
125
};
126
127
class IsGte : public Operation {
128
    public:
129
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
130
};
131
132
class IsLt : public Operation {
133
    public:
134
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
135
};
136
137
class IsLte : public Operation {
138
    public:
139
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
140
};
141
142
class IsEven: public Operation {
143
    public:
144
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
145
};
146
147
class IsOdd: public Operation {
148
    public:
149
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
150
};
151
152
class IsZero : public Operation {
153
    public:
154
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
155
};
156
157
class IsNotZero : public Operation {
158
    public:
159
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
160
};
161
162
class IsOne : public Operation {
163
    public:
164
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
165
};
166
167
class MulMod : public Operation {
168
    public:
169
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
170
};
171
172
class Bit : public Operation {
173
    public:
174
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
175
};
176
177
class CmpAbs : public Operation {
178
    public:
179
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
180
};
181
182
class SetBit : public Operation {
183
    public:
184
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
185
};
186
187
class Mod_NIST_192 : public Operation {
188
    public:
189
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
190
};
191
192
class Mod_NIST_224 : public Operation {
193
    public:
194
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
195
};
196
197
class Mod_NIST_256 : public Operation {
198
    public:
199
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
200
};
201
202
class Mod_NIST_384 : public Operation {
203
    public:
204
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
205
};
206
207
class Mod_NIST_521 : public Operation {
208
    public:
209
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
210
};
211
212
class ClearBit : public Operation {
213
    public:
214
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
215
};
216
217
class MulAdd : public Operation {
218
    public:
219
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
220
};
221
222
class MulDiv : public Operation {
223
    public:
224
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
225
};
226
227
class MulDivCeil : public Operation {
228
    public:
229
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
230
};
231
232
class Exp2 : public Operation {
233
    public:
234
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
235
};
236
237
class NumLSZeroBits : public Operation {
238
    public:
239
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
240
};
241
242
class Sqrt : public Operation {
243
    public:
244
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
245
};
246
247
class AddMod : public Operation {
248
    public:
249
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
250
};
251
252
class SubMod : public Operation {
253
    public:
254
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
255
};
256
257
class NumBits : public Operation {
258
    public:
259
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
260
};
261
262
class Set : public Operation {
263
    public:
264
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
265
};
266
267
class CondSet : public Operation {
268
    public:
269
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
270
};
271
272
class Ressol : public Operation {
273
    public:
274
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
275
};
276
277
class Not : public Operation {
278
    public:
279
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
280
};
281
282
class Prime : public Operation {
283
    public:
284
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
285
};
286
287
class RandRange : public Operation {
288
    public:
289
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
290
};
291
292
class IsSquare : public Operation {
293
    public:
294
        bool Run(Datasource& ds, Bignum& res, std::vector<Bignum>& bn, const std::optional<Bignum>& modulo) const override;
295
};
296
297
} /* namespace Botan_bignum */
298
} /* namespace module */
299
} /* namespace cryptofuzz */