/src/cryptofuzz/entry.cpp
Line  | Count  | Source  | 
1  |  | #include <cstddef>  | 
2  |  | #include <cstdint>  | 
3  |  | #include <memory>  | 
4  |  | #include <set>  | 
5  |  | #include <vector>  | 
6  |  | #include <string>  | 
7  |  | #include <cryptofuzz/options.h>  | 
8  |  | #include <fuzzing/datasource/id.hpp>  | 
9  |  | #include "repository_tbl.h"  | 
10  |  | #include "driver.h"  | 
11  |  | #include "numbers.h"  | 
12  |  | #include "mutatorpool.h"  | 
13  |  |  | 
14  |  | #if defined(CRYPTOFUZZ_LIBTOMMATH) && defined(CRYPTOFUZZ_NSS)  | 
15  |  | #error "libtommath and NSS cannot be used together due to symbol collisions"  | 
16  |  | #endif  | 
17  |  |  | 
18  |  | #if defined(CRYPTOFUZZ_TREZOR_FIRMWARE) && defined(CRYPTOFUZZ_RELIC)  | 
19  |  | #error "trezor-firmware and relic cannot be used together due to symbol collisions"  | 
20  |  | #endif  | 
21  |  |  | 
22  |  | #if !defined(CRYPTOFUZZ_NO_OPENSSL)  | 
23  |  |   #include <modules/openssl/module.h>  | 
24  |  |   #ifdef SHA1  | 
25  |  |     #undef SHA1  | 
26  |  |   #endif  | 
27  |  |   #ifdef SHA224  | 
28  |  |     #undef SHA224  | 
29  |  |   #endif  | 
30  |  |   #ifdef SHA256  | 
31  |  |     #undef SHA256  | 
32  |  |   #endif  | 
33  |  |   #ifdef SHA384  | 
34  |  |     #undef SHA384  | 
35  |  |   #endif  | 
36  |  |   #ifdef SHA512  | 
37  |  |     #undef SHA512  | 
38  |  |   #endif  | 
39  |  | #endif  | 
40  |  |  | 
41  |  | #if defined(CRYPTOFUZZ_BITCOIN)  | 
42  |  |   #include <modules/bitcoin/module.h>  | 
43  |  | #endif  | 
44  |  |  | 
45  |  | #if defined(CRYPTOFUZZ_REFERENCE)  | 
46  |  |   #include <modules/reference/module.h>  | 
47  |  | #endif  | 
48  |  |  | 
49  |  | #if defined(CRYPTOFUZZ_CPPCRYPTO)  | 
50  |  |   #include <modules/cppcrypto/module.h>  | 
51  |  | #endif  | 
52  |  |  | 
53  |  | #if defined(CRYPTOFUZZ_MBEDTLS)  | 
54  |  |   #include <modules/mbedtls/module.h>  | 
55  |  | #endif  | 
56  |  |  | 
57  |  | #if defined(CRYPTOFUZZ_BOOST)  | 
58  |  |   #include <modules/boost/module.h>  | 
59  |  | #endif  | 
60  |  |  | 
61  |  | #if defined(CRYPTOFUZZ_MONERO)  | 
62  |  |   #include <modules/monero/module.h>  | 
63  |  | #endif  | 
64  |  |  | 
65  |  | #if defined(CRYPTOFUZZ_VERACRYPT)  | 
66  |  |   #include <modules/veracrypt/module.h>  | 
67  |  | #endif  | 
68  |  |  | 
69  |  | #if defined(CRYPTOFUZZ_LIBSODIUM)  | 
70  |  |   #include <modules/libsodium/module.h>  | 
71  |  | #endif  | 
72  |  |  | 
73  |  | #if defined(CRYPTOFUZZ_LIBTOMCRYPT)  | 
74  |  |   #include <modules/libtomcrypt/module.h>  | 
75  |  | #endif  | 
76  |  |  | 
77  |  | #if defined(CRYPTOFUZZ_CRYPTOPP)  | 
78  |  |   #include <modules/cryptopp/module.h>  | 
79  |  | #endif  | 
80  |  |  | 
81  |  | #if defined(CRYPTOFUZZ_LIBGCRYPT)  | 
82  |  |   #include <modules/libgcrypt/module.h>  | 
83  |  | #endif  | 
84  |  |  | 
85  |  | #if defined(CRYPTOFUZZ_EVERCRYPT)  | 
86  |  |   #include <modules/evercrypt/module.h>  | 
87  |  | #endif  | 
88  |  |  | 
89  |  | #if defined(CRYPTOFUZZ_GOLANG)  | 
90  |  |   #include <modules/golang/module.h>  | 
91  |  | #endif  | 
92  |  |  | 
93  |  | #if defined(CRYPTOFUZZ_RING)  | 
94  |  |   #include <modules/ring/module.h>  | 
95  |  | #endif  | 
96  |  |  | 
97  |  | #if defined(CRYPTOFUZZ_NSS)  | 
98  |  |   #include <modules/nss/module.h>  | 
99  |  | #endif  | 
100  |  |  | 
101  |  | #if defined(CRYPTOFUZZ_BOTAN)  | 
102  |  |   #include <modules/botan/module.h>  | 
103  |  | #endif  | 
104  |  |  | 
105  |  | #if defined(CRYPTOFUZZ_NETTLE)  | 
106  |  |   #include <modules/nettle/module.h>  | 
107  |  | #endif  | 
108  |  |  | 
109  |  | #if defined(CRYPTOFUZZ_WOLFCRYPT)  | 
110  |  |   #include <modules/wolfcrypt/module.h>  | 
111  |  | #endif  | 
112  |  |  | 
113  |  | #if defined(CRYPTOFUZZ_LIBGMP)  | 
114  |  |   #include <modules/libgmp/module.h>  | 
115  |  | #endif  | 
116  |  |  | 
117  |  | #if defined(CRYPTOFUZZ_BN_JS)  | 
118  |  |   #include <modules/bn.js/module.h>  | 
119  |  | #endif  | 
120  |  |  | 
121  |  | #if defined(CRYPTOFUZZ_CRYPTO_JS)  | 
122  |  |   #include <modules/crypto-js/module.h>  | 
123  |  | #endif  | 
124  |  |  | 
125  |  | #if defined(CRYPTOFUZZ_BIGNUMBER_JS)  | 
126  |  |   #include <modules/bignumber.js/module.h>  | 
127  |  | #endif  | 
128  |  |  | 
129  |  | #if defined(CRYPTOFUZZ_MPDECIMAL)  | 
130  |  |   #include <modules/mpdecimal/module.h>  | 
131  |  | #endif  | 
132  |  |  | 
133  |  | #if defined(CRYPTOFUZZ_LINUX)  | 
134  |  |   #include <modules/linux/module.h>  | 
135  |  | #endif  | 
136  |  |  | 
137  |  | #if defined(CRYPTOFUZZ_SYMCRYPT)  | 
138  |  |   #include <modules/symcrypt/module.h>  | 
139  |  | #endif  | 
140  |  |  | 
141  |  | #if defined(CRYPTOFUZZ_LIBTOMMATH)  | 
142  |  |   #include <modules/libtommath/module.h>  | 
143  |  | #endif  | 
144  |  |  | 
145  |  | #if defined(CRYPTOFUZZ_SJCL)  | 
146  |  |   #include <modules/sjcl/module.h>  | 
147  |  | #endif  | 
148  |  |  | 
149  |  | #if defined(CRYPTOFUZZ_WOLFCRYPT_OPENSSL)  | 
150  |  |   #include <modules/wolfcrypt-openssl/module.h>  | 
151  |  | #endif  | 
152  |  |  | 
153  |  | #if defined(CRYPTOFUZZ_MONOCYPHER)  | 
154  |  |   #include <modules/monocypher/module.h>  | 
155  |  | #endif  | 
156  |  |  | 
157  |  | #if defined(CRYPTOFUZZ_SECP256K1)  | 
158  |  |   #include <modules/secp256k1/module.h>  | 
159  |  | #endif  | 
160  |  |  | 
161  |  | #if defined(CRYPTOFUZZ_RUST_LIBSECP256K1)  | 
162  |  |   #include <modules/rust-libsecp256k1/module.h>  | 
163  |  | #endif  | 
164  |  |  | 
165  |  | #if defined(CRYPTOFUZZ_TREZOR_FIRMWARE)  | 
166  |  |   #include <modules/trezor/module.h>  | 
167  |  | #endif  | 
168  |  |  | 
169  |  | #if defined(CRYPTOFUZZ_ELLIPTIC)  | 
170  |  |   #include <modules/elliptic/module.h>  | 
171  |  | #endif  | 
172  |  |  | 
173  |  | #if defined(CRYPTOFUZZ_DECRED)  | 
174  |  |   #include <modules/decred/module.h>  | 
175  |  | #endif  | 
176  |  |  | 
177  |  | #if defined(CRYPTOFUZZ_BEARSSL)  | 
178  |  |   #include <modules/bearssl/module.h>  | 
179  |  | #endif  | 
180  |  |  | 
181  |  | #if defined(CRYPTOFUZZ_MICRO_ECC)  | 
182  |  |   #include <modules/micro-ecc/module.h>  | 
183  |  | #endif  | 
184  |  |  | 
185  |  | #if defined(CRYPTOFUZZ_CIFRA)  | 
186  |  |   #include <modules/cifra/module.h>  | 
187  |  | #endif  | 
188  |  |  | 
189  |  | #if defined(CRYPTOFUZZ_RELIC)  | 
190  |  |   #include <modules/relic/module.h>  | 
191  |  | #endif  | 
192  |  |  | 
193  |  | #if defined(CRYPTOFUZZ_LIBECC)  | 
194  |  |   #include <modules/libecc/module.h>  | 
195  |  | #endif  | 
196  |  |  | 
197  |  | #if defined(CRYPTOFUZZ_CHIA_BLS)  | 
198  |  |   #include <modules/chia_bls/module.h>  | 
199  |  | #endif  | 
200  |  |  | 
201  |  | #if defined(CRYPTOFUZZ_K256)  | 
202  |  |   #include <modules/k256/module.h>  | 
203  |  | #endif  | 
204  |  |  | 
205  |  | #if defined(CRYPTOFUZZ_SCHNORRKEL)  | 
206  |  |   #include <modules/schnorrkel/module.h>  | 
207  |  | #endif  | 
208  |  |  | 
209  |  | #if defined(CRYPTOFUZZ_NOBLE_SECP256K1)  | 
210  |  |   #include <modules/noble-secp256k1/module.h>  | 
211  |  | #endif  | 
212  |  |  | 
213  |  | #if defined(CRYPTOFUZZ_NOBLE_CURVES)  | 
214  |  |   #include <modules/noble-curves/module.h>  | 
215  |  | #endif  | 
216  |  |  | 
217  |  | #if defined(CRYPTOFUZZ_BLST)  | 
218  |  |   #include <modules/blst/module.h>  | 
219  |  | #endif  | 
220  |  |  | 
221  |  | #if defined(CRYPTOFUZZ_MCL)  | 
222  |  |   #include <modules/mcl/module.h>  | 
223  |  | #endif  | 
224  |  |  | 
225  |  | #if defined(CRYPTOFUZZ_PY_ECC)  | 
226  |  |   #include <modules/py_ecc/module.h>  | 
227  |  | #endif  | 
228  |  |  | 
229  |  | #if defined(CRYPTOFUZZ_KILIC_BLS12_381)  | 
230  |  |   #include <modules/kilic-bls12-381/module.h>  | 
231  |  | #endif  | 
232  |  |  | 
233  |  | #if defined(CRYPTOFUZZ_NOBLE_ED25519)  | 
234  |  |   #include <modules/noble-ed25519/module.h>  | 
235  |  | #endif  | 
236  |  |  | 
237  |  | #if defined(CRYPTOFUZZ_NOBLE_BLS12_381)  | 
238  |  |   #include <modules/noble-bls12-381/module.h>  | 
239  |  | #endif  | 
240  |  |  | 
241  |  | #if defined(CRYPTOFUZZ_SCHNORR_FUN)  | 
242  |  |   #include <modules/schnorr_fun/module.h>  | 
243  |  | #endif  | 
244  |  |  | 
245  |  | #if defined(CRYPTOFUZZ_QUICKJS)  | 
246  |  |   #include <modules/quickjs/module.h>  | 
247  |  | #endif  | 
248  |  |  | 
249  |  | #if defined(CRYPTOFUZZ_UINT128_T)  | 
250  |  |   #include <modules/uint128_t/module.h>  | 
251  |  | #endif  | 
252  |  |  | 
253  |  | #if defined(CRYPTOFUZZ_LIBFF)  | 
254  |  |   #include <modules/libff/module.h>  | 
255  |  | #endif  | 
256  |  |  | 
257  |  | #if defined(CRYPTOFUZZ_GNARK_BN254)  | 
258  |  |   #include <modules/gnark-bn254/module.h>  | 
259  |  | #endif  | 
260  |  |  | 
261  |  | #if defined(CRYPTOFUZZ_GOOGLE_BN256)  | 
262  |  |   #include <modules/google-bn256/module.h>  | 
263  |  | #endif  | 
264  |  |  | 
265  |  | #if defined(CRYPTOFUZZ_CLOUDFLARE_BN256)  | 
266  |  |   #include <modules/cloudflare-bn256/module.h>  | 
267  |  | #endif  | 
268  |  |  | 
269  |  | #if defined(CRYPTOFUZZ_NOBLE_HASHES)  | 
270  |  |   #include <modules/noble-hashes/module.h>  | 
271  |  | #endif  | 
272  |  |  | 
273  |  | #if defined(CRYPTOFUZZ_SKALE_SOLIDITY)  | 
274  |  |   #include <modules/skalesolidity/module.h>  | 
275  |  | #endif  | 
276  |  |  | 
277  |  | #if defined(CRYPTOFUZZ_GOOGLE_INTEGERS)  | 
278  |  |   #include <modules/google-integers/module.h>  | 
279  |  | #endif  | 
280  |  |  | 
281  |  | #if defined(CRYPTOFUZZ_NIMCRYPTO)  | 
282  |  |   #include <modules/nimcrypto/module.h>  | 
283  |  | #endif  | 
284  |  |  | 
285  |  | #if defined(CRYPTOFUZZ_RUSTCRYPTO)  | 
286  |  |   #include <modules/rustcrypto/module.h>  | 
287  |  | #endif  | 
288  |  |  | 
289  |  | #if defined(CRYPTOFUZZ_NUM_BIGINT)  | 
290  |  |   #include <modules/num-bigint/module.h>  | 
291  |  | #endif  | 
292  |  |  | 
293  |  | #if defined(CRYPTOFUZZ_INTX)  | 
294  |  |   #include <modules/intx/module.h>  | 
295  |  | #endif  | 
296  |  |  | 
297  |  | #if defined(CRYPTOFUZZ_DECRED_UINT256)  | 
298  |  |   #include <modules/decred-uint256/module.h>  | 
299  |  | #endif  | 
300  |  |  | 
301  |  | #if defined(CRYPTOFUZZ_LIBDIVIDE)  | 
302  |  |   #include <modules/libdivide/module.h>  | 
303  |  | #endif  | 
304  |  |  | 
305  |  | #if defined(CRYPTOFUZZ_RUST_UINT)  | 
306  |  |   #include <modules/rust-uint/module.h>  | 
307  |  | #endif  | 
308  |  |  | 
309  |  | #if defined(CRYPTOFUZZ_BC)  | 
310  |  |   #include <modules/bc/module.h>  | 
311  |  | #endif  | 
312  |  |  | 
313  |  | #if defined(CRYPTOFUZZ_JAVA)  | 
314  |  |   #include <modules/java/module.h>  | 
315  |  | #endif  | 
316  |  |  | 
317  |  | #if defined(CRYPTOFUZZ_SOLIDITY_MATH)  | 
318  |  |   #include <modules/soliditymath/module.h>  | 
319  |  | #endif  | 
320  |  |  | 
321  |  | #if defined(CRYPTOFUZZ_V8)  | 
322  |  |   #include <modules/v8/module.h>  | 
323  |  | #endif  | 
324  |  |  | 
325  |  | #if defined(CRYPTOFUZZ_V8_EMBEDDED)  | 
326  |  |   #include <modules/v8-embedded/module.h>  | 
327  |  | #endif  | 
328  |  |  | 
329  |  | #if defined(CRYPTOFUZZ_CIRCL)  | 
330  |  |   #include <modules/circl/module.h>  | 
331  |  | #endif  | 
332  |  |  | 
333  |  | #if defined(CRYPTOFUZZ_SPL_MATH)  | 
334  |  |   #include <modules/spl_math/module.h>  | 
335  |  | #endif  | 
336  |  |  | 
337  |  | #if defined(CRYPTOFUZZ_ZIG)  | 
338  |  |   #include <modules/zig/module.h>  | 
339  |  | #endif  | 
340  |  |  | 
341  |  | #if defined(CRYPTOFUZZ_PRYSMATICLABS_HASHTREE)  | 
342  |  |   #include <modules/prysmaticlabs-hashtree/module.h>  | 
343  |  | #endif  | 
344  |  |  | 
345  |  | #if defined(CRYPTOFUZZ_STARKWARE)  | 
346  |  |   #include <modules/starkware/module.h>  | 
347  |  | #endif  | 
348  |  |  | 
349  |  | #if defined(CRYPTOFUZZ_PORNIN_BINGCD)  | 
350  |  |   #include <modules/pornin-bingcd/module.h>  | 
351  |  | #endif  | 
352  |  |  | 
353  |  | #if defined(CRYPTOFUZZ_STINT)  | 
354  |  |   #include <modules/stint/module.h>  | 
355  |  | #endif  | 
356  |  |  | 
357  |  | #if defined(CRYPTOFUZZ_KRYPTOLOGY)  | 
358  |  |   #include <modules/kryptology/module.h>  | 
359  |  | #endif  | 
360  |  |  | 
361  |  | #if defined(CRYPTOFUZZ_NIM_BIGINTS)  | 
362  |  |   #include <modules/nim-bigints/module.h>  | 
363  |  | #endif  | 
364  |  |  | 
365  |  | #if defined(CRYPTOFUZZ_HOLIMAN_UINT256)  | 
366  |  |   #include <modules/holiman-uint256/module.h>  | 
367  |  | #endif  | 
368  |  |  | 
369  |  | #if defined(CRYPTOFUZZ_CPU)  | 
370  |  |   #include <modules/cpu/module.h>  | 
371  |  | #endif  | 
372  |  |  | 
373  |  | #if defined(CRYPTOFUZZ_GETH)  | 
374  |  |   #include <modules/geth/module.h>  | 
375  |  | #endif  | 
376  |  |  | 
377  |  | #if defined(CRYPTOFUZZ_JSBN)  | 
378  |  |   #include <modules/jsbn/module.h>  | 
379  |  | #endif  | 
380  |  |  | 
381  |  | #if defined(CRYPTOFUZZ_WIDE_INTEGER)  | 
382  |  |   #include <modules/wide-integer/module.h>  | 
383  |  | #endif  | 
384  |  |  | 
385  |  | #if defined(CRYPTOFUZZ_TINY_KECCAK)  | 
386  |  |   #include <modules/tiny-keccak/module.h>  | 
387  |  | #endif  | 
388  |  |  | 
389  |  | #if defined(CRYPTOFUZZ_ARKWORKS_ALGEBRA)  | 
390  |  |   #include <modules/arkworks-algebra/module.h>  | 
391  |  | #endif  | 
392  |  |  | 
393  |  | #if defined(CRYPTOFUZZ_FF)  | 
394  |  |   #include <modules/ff/module.h>  | 
395  |  | #endif  | 
396  |  |  | 
397  |  | #if defined(CRYPTOFUZZ_ALEO)  | 
398  |  |   #include <modules/aleo/module.h>  | 
399  |  | #endif  | 
400  |  |  | 
401  |  | #if defined(CRYPTOFUZZ_SHAMATAR)  | 
402  |  |   #include <modules/shamatar/module.h>  | 
403  |  | #endif  | 
404  |  |  | 
405  |  | #if defined(CRYPTOFUZZ_MICROSOFT_CALCULATOR)  | 
406  |  |   #include <modules/microsoft-calculator/module.h>  | 
407  |  | #endif  | 
408  |  |  | 
409  |  | #if defined(CRYPTOFUZZ_POLYGON_ZKEVM_PROVER)  | 
410  |  |   #include <modules/polygon-zkevm-prover/module.h>  | 
411  |  | #endif  | 
412  |  |  | 
413  |  | #if defined(CRYPTOFUZZ_GOLDILOCKS)  | 
414  |  |   #include <modules/goldilocks/module.h>  | 
415  |  | #endif  | 
416  |  |  | 
417  |  | #if defined(CRYPTOFUZZ_D)  | 
418  |  |   #include <modules/d/module.h>  | 
419  |  | #endif  | 
420  |  |  | 
421  |  | #if defined(CRYPTOFUZZ_PAIRING_CE)  | 
422  |  |   #include <modules/pairing_ce/module.h>  | 
423  |  | #endif  | 
424  |  |  | 
425  |  | #if defined(CRYPTOFUZZ_PASTA_CURVES)  | 
426  |  |   #include <modules/pasta_curves/module.h>  | 
427  |  | #endif  | 
428  |  |  | 
429  |  | #if defined(CRYPTOFUZZ_BOUNCYCASTLE)  | 
430  |  |   #include <modules/bouncycastle/module.h>  | 
431  |  | #endif  | 
432  |  |  | 
433  |  | #if defined(CRYPTOFUZZ_FAHEEL_BIGINT)  | 
434  |  |   #include <modules/faheel-bigint/module.h>  | 
435  |  | #endif  | 
436  |  |  | 
437  |  | #if defined(CRYPTOFUZZ_SUBSTRATE_BN)  | 
438  |  |   #include <modules/substrate-bn/module.h>  | 
439  |  | #endif  | 
440  |  |  | 
441  |  | #if defined(CRYPTOFUZZ_AURORA_ENGINE_MODEXP)  | 
442  |  |   #include <modules/aurora-engine-modexp/module.h>  | 
443  |  | #endif  | 
444  |  |  | 
445  |  | #if defined(CRYPTOFUZZ_CONSTANTINE)  | 
446  |  |   #include <modules/constantine/module.h>  | 
447  |  | #endif  | 
448  |  |  | 
449  |  | std::shared_ptr<cryptofuzz::Driver> driver = nullptr;  | 
450  |  |  | 
451  |  | const cryptofuzz::Options* cryptofuzz_options = nullptr;  | 
452  |  |  | 
453  | 4  | static void setOptions(int argc, char** argv) { | 
454  | 4  |     std::vector<std::string> extraArguments;  | 
455  |  |  | 
456  | 4  |     const std::string cmdline(  | 
457  | 4  | #include "extra_options.h"  | 
458  | 4  |     );  | 
459  | 4  |     boost::split(extraArguments, cmdline, boost::is_any_of(" ")); | 
460  |  |  | 
461  | 4  |     const cryptofuzz::Options options(argc, argv, extraArguments);  | 
462  |  |  | 
463  | 4  |     driver = std::make_shared<cryptofuzz::Driver>(options);  | 
464  | 4  |     cryptofuzz_options = driver->GetOptionsPtr();  | 
465  | 4  | }  | 
466  |  |  | 
467  | 4  | static void addNumbers(void) { | 
468  | 4  |     std::set<std::string> curveNumbers;  | 
469  |  |  | 
470  | 460  |     for (size_t i = 0; i < (sizeof(ECC_CurveLUT) / sizeof(ECC_CurveLUT[0])); i++) { | 
471  | 456  |         if ( !cryptofuzz_options->curves.Empty() ) { | 
472  | 456  |             if ( !cryptofuzz_options->curves.Have(ECC_CurveLUT[i].id) ) { | 
473  | 452  |                 continue;  | 
474  | 452  |             }  | 
475  | 456  |         }  | 
476  | 4  |         if ( ECC_CurveLUT[i].prime ) curveNumbers.insert(*ECC_CurveLUT[i].prime);  | 
477  | 4  |         if ( ECC_CurveLUT[i].a ) curveNumbers.insert(*ECC_CurveLUT[i].a);  | 
478  | 4  |         if ( ECC_CurveLUT[i].b ) curveNumbers.insert(*ECC_CurveLUT[i].b);  | 
479  | 4  |         if ( ECC_CurveLUT[i].x ) curveNumbers.insert(*ECC_CurveLUT[i].x);  | 
480  | 4  |         if ( ECC_CurveLUT[i].y ) curveNumbers.insert(*ECC_CurveLUT[i].y);  | 
481  | 4  |         if ( ECC_CurveLUT[i].order_min_1 ) curveNumbers.insert(*ECC_CurveLUT[i].order_min_1);  | 
482  | 4  |         if ( ECC_CurveLUT[i].order ) curveNumbers.insert(*ECC_CurveLUT[i].order);  | 
483  | 4  |         if ( ECC_CurveLUT[i].cube_root_of_unity ) curveNumbers.insert(*ECC_CurveLUT[i].cube_root_of_unity);  | 
484  | 4  |     }  | 
485  |  |  | 
486  | 32  |     for (const auto& s : curveNumbers) { | 
487  | 32  |         cryptofuzz::numbers.push_back(s);  | 
488  | 32  |     }  | 
489  | 4  | }  | 
490  |  |  | 
491  | 4  | static void addDHParameters(void) { | 
492  |  | #if 0  | 
493  |  |     Pool_DSA_PQG.Set(  | 
494  |  |             {.p = "1", | 
495  |  |             .q = "2",  | 
496  |  |             .g = "3"});  | 
497  |  | #endif  | 
498  | 4  |     Pool_DSA_PQG.Set(  | 
499  | 4  |             {.p = "150231251465501053065289730830479539031267100291054217656119618775188714462742252299995155757488154161365770046117427638242442140226792437461696203428042747814919633220489019161055283800701437723694062141157721435870605677289344980419875189236552985653350450140879697446183075783979747578514684880689288047799", | 
500  | 4  |             .q = "1294481460557625951125096174768278956450379329019",  | 
501  | 4  |             .g = "123176323926370145306905001771640082099315258804911565991781248774641279332286091530406470110108628420952674474326303976152638457646984169382680970876359186878615754700522570368203249170942652654272930135088255007459054551060675803532305465059607033300717516344741377807058295415130769662943475898885953255340"});  | 
502  | 4  |     Pool_DSA_PQG.Set(  | 
503  | 4  |             {.p = "106509719202367738942907301715621764539176496646576730633405674043673327856034496732123285709035111374434625191651676418221653833534278937120432644397709949603105722781668399360019469472968954460534436252768055503483520304713097271043340825087067201677304620852378413654560436979990703753937487367926506348269", | 
504  | 4  |             .q = "1118288236462792761843833248187413414208173350127",  | 
505  | 4  |             .g = "72435671226965183258018862642795284302154495588562538482929411018310293659579761499337602974793436767341017333127333555852102593771624671345177391442816067820254123593555250556535136260966363205479876316378634773122750273117965996152020834617159357433557924693138598393331986343698108999770366446752278926383"});  | 
506  | 4  |     Pool_DSA_PQG.Set(  | 
507  | 4  |             {.p = "138004309818347094291132867053619499223956524961247192036762792751710974956820647583519309378416103935248269857717426029960774699149947213109440086871278734506662709841063082677937025903550210186986005638869595390211739861476658649538254442080037424128091536935132784096865076724077340725421734957662003955733", | 
508  | 4  |             .q = "1182250927352833565111471235946595886633807053753",  | 
509  | 4  |             .g = "50981117407618898907676270875500924244946234557748656321451486290931484477672699528123700670310821778249759666738775273571334004072876741139654244496478237072456811279416350268794526824840182161332334555442145925212778889513472053306551473115435240639581353186943034554008455203164569371804149410594860147535"});  | 
510  | 4  |     Pool_DSA_PQG.Set(  | 
511  | 4  |             {.p = "109946688229802800321045008502525855019018343635199811459637834412277718704275426696546931048200193867073853699694661301100987130977969037055869145785556128499893546459160327648034486774397840709962126663410720743324891206859744100608443126416778329748285936795477961285242132107013514469104031276590639145529", | 
512  | 4  |             .q = "1097017798574652758688027153013343959247758036379",  | 
513  | 4  |             .g = "90853802403425362444834708006843703424758064889418913931212173026894777531419682953836039048180446572898657640543499059154888760571238291120015914403667178235563530884249409802138323217540531374295893371508604222324367014390024227163670654837119886355437741902577247163114711575830541075372536310906966739501"});  | 
514  | 4  |     Pool_DSA_PQG.Set(  | 
515  | 4  |             {.p = "124209509072024958275166637845461843473168024436234587545357618943183152164739154230608140142817940602971118647920318657635219309456829210930848667888289103140463427808821865872498412912378809701133733363511757593195923487399372820407763609428150569455525396831100333605708326427075191467209382555105711963299", | 
516  | 4  |             .q = "1156817815916336365281547542987775955291851935871",  | 
517  | 4  |             .g = "43439798865518148079170184647168882910799658250950112656992473391369195267567114318131636772383729066568167011041675228166469202932063704475384188208092171311430491566372323746821632363680716780126497417783638448391870877258448510742322506027897962466869528155419123258766935809190262469523993336422700725318"});  | 
518  | 4  |     Pool_DSA_PQG.Set(  | 
519  | 4  |             {.p = "126331233628980840165184565942245385096513091144740711497864308287507943295406615416955002027235910171772121228535928494648768972393171048104219309808822924104348781037865255204637472392028547550836119757782109037132097469719594436136398329796267499263632942017207769135383159876183961765810415630873971115233", | 
520  | 4  |             .q = "1203327632657956941015344776779451299508739578129",  | 
521  | 4  |             .g = "97452668285819865055659311415043913678401634848512133077315151404416203000244082651639944515890002752552299640827969897097594332745578954618134141809516813588353374434067098749478884011839257971032639225273289142277635977389715811787650901754149760120488823365859750048315630946360036462942314143557183124982"});  | 
522  | 4  |     Pool_DSA_PQG.Set(  | 
523  | 4  |             {.p = "139250883301823483908883928083839064003745916441650255007772870154941172395087178752876101091005767662213271334443940570474680019084601422955747232370282598419697274421195681275556947624938410397537906338955131228297990585299263933664717169274974367925488384465967202651868677400555284280096337099191959071787", | 
524  | 4  |             .q = "1325100766121833447183259101226453517842221286507",  | 
525  | 4  |             .g = "58646846595225538779696035374886298089421912241195003782810584053398797793591727045576166116215795078184706343867027617123952824238923027973165246674943121228498251801328224621075003565013070726915672626019475087221545030092892828436386114258346864840836351933570664379118571919793182205573116727058719375661"});  | 
526  | 4  |     Pool_DSA_PQG.Set(  | 
527  | 4  |             {.p = "144701324401598336550884152343368172277609864124511490596617105828057159991373774941016821760687266369338519486490004072145971111466542758853015017509128499051606282143736677640332301617479652949405201725583682831439755381248675286661684002938741047451713467379330091941738855468955951557713143970579349864457", | 
528  | 4  |             .q = "1439434426242082501974975807657668984105633014787",  | 
529  | 4  |             .g = "113600692930456433400748782777975166451962648651602592974909826945350314246206069661699011991844511030599644698164383474978927329888470480371116765437437655015511396253863826561268272020107619231686538845226921909438712847791416806266736495398219697258274310643814113505622803337678429494610934192497815903365"});  | 
530  | 4  |     Pool_DSA_PQG.Set(  | 
531  | 4  |             {.p = "135341197697226724892903083596165054694790625986023071616356886245846043038405567011291087532200081879605164155216745486229649520257309932549000914144450824446643782112243492160717188886767122817207763789165868343163481202614492491575215866530116235028761963662218876392260598504340050277595263388586602546747", | 
532  | 4  |             .q = "1169054189952016903829256751948870806314450386513",  | 
533  | 4  |             .g = "30572099485446824777611559392355316740353774202040161762373834574766256266332511696873593659519522274210266790041815776129917472702566335252550578138435000898308011273223392155586550839178056561166656269827651537030610266906854193629082719056305327623289093720593961976531902349641250618073959820008293423729"});  | 
534  | 4  |     Pool_DSA_PQG.Set(  | 
535  | 4  |             {.p = "127351864753493277268739385478165721559729466727175877720818107624823856755558221219347691856288532870918552584721097877527832510124917679520208660409823797024889655990544958921667883652156168599993183854739635683709671125815430824244885672208722762544165061369990843770047348269058869140280321943549216357991", | 
536  | 4  |             .q = "1156961398255600519725597002666342085415806424529",  | 
537  | 4  |             .g = "106257931303095074533103986366433211062343163442228036675016417802383259373755687507866521855899403669620543075167608985212468902139533924762542871308909385486893394211775148650040778024210387468981928471252790681933685353324695021902141191542978389064246508147865484230435458524929665990269930783999629249441"});  | 
538  | 4  |     Pool_DSA_PQG.Set(  | 
539  | 4  |             {.p = "131039458455155250090174200145321228172977476476885551980435528702610913389079590939737522784805216856991866456707299626829238352232572218199747475524103264307799994317996352504194705753236329996801042545987006513074758983109144174154780904219653269610458162384667077307435251147347179290650561637905921672683", | 
540  | 4  |             .q = "1170715624353437458381293805110022939445185488259",  | 
541  | 4  |             .g = "126742934784779681813194779376736668434375433467445616299439666618831396063812870504003367398372147678231830460960085383230032539099660760734275638091575317361409298198873148524067936524126541952740212599133188511748079844136886266936035053990867071777029697349092865480561238401432352105670316197944641993372"});  | 
542  | 4  |     Pool_DSA_PQG.Set(  | 
543  | 4  |             {.p = "113501887847313654923482478343337570064130386651110593957519724786021990228602191373446721521338119059972385547173111082437621139282278796862795599570090388898648541512966469137375762705045818898892127936907280478802811793893711980582500291057764626146803929832480402191770765381629264026303953585630138960173", | 
544  | 4  |             .q = "1210118463151965859368281774842614821435692691527",  | 
545  | 4  |             .g = "7368690161464245595369357421049794571202878323927473530430901957824912081535284584536397796919942606122666864397318876947854645101607578840959967924770322750454906727500380020624862129397409509250521115423635650551518713996861995296315890736439522758915319733553857973686465993050136329199277364851750662840"});  | 
546  | 4  | }  | 
547  |  |  | 
548  | 4  | extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv) { | 
549  | 4  |     setOptions(*argc, *argv);  | 
550  | 4  |     addNumbers();  | 
551  | 4  |     addDHParameters();  | 
552  |  |  | 
553  |  | #if !defined(CRYPTOFUZZ_NO_OPENSSL)  | 
554  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::OpenSSL>() );  | 
555  |  | #endif  | 
556  |  |  | 
557  |  | #if defined(CRYPTOFUZZ_BITCOIN)  | 
558  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Bitcoin>() );  | 
559  |  | #endif  | 
560  |  |  | 
561  |  | #if defined(CRYPTOFUZZ_REFERENCE)  | 
562  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Reference>() );  | 
563  |  | #endif  | 
564  |  |  | 
565  |  | #if defined(CRYPTOFUZZ_CPPCRYPTO)  | 
566  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::CPPCrypto>() );  | 
567  |  | #endif  | 
568  |  |  | 
569  |  | #if defined(CRYPTOFUZZ_MBEDTLS)  | 
570  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::mbedTLS>() );  | 
571  |  | #endif  | 
572  |  |  | 
573  |  | #if defined(CRYPTOFUZZ_BOOST)  | 
574  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Boost>() );  | 
575  |  | #endif  | 
576  |  |  | 
577  |  | #if defined(CRYPTOFUZZ_MONERO)  | 
578  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Monero>() );  | 
579  |  | #endif  | 
580  |  |  | 
581  |  | #if defined(CRYPTOFUZZ_VERACRYPT)  | 
582  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Veracrypt>() );  | 
583  |  | #endif  | 
584  |  |  | 
585  |  | #if defined(CRYPTOFUZZ_LIBSODIUM)  | 
586  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::libsodium>() );  | 
587  |  | #endif  | 
588  |  |  | 
589  |  | #if defined(CRYPTOFUZZ_LIBTOMCRYPT)  | 
590  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::libtomcrypt>() );  | 
591  |  | #endif  | 
592  |  |  | 
593  |  | #if defined(CRYPTOFUZZ_CRYPTOPP)  | 
594  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::CryptoPP>() );  | 
595  |  | #endif  | 
596  |  |  | 
597  |  | #if defined(CRYPTOFUZZ_LIBGCRYPT)  | 
598  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::libgcrypt>() );  | 
599  |  | #endif  | 
600  |  |  | 
601  |  | #if defined(CRYPTOFUZZ_EVERCRYPT)  | 
602  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::EverCrypt>() );  | 
603  |  | #endif  | 
604  |  |  | 
605  |  | #if defined(CRYPTOFUZZ_GOLANG)  | 
606  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Golang>() );  | 
607  |  | #endif  | 
608  |  |  | 
609  |  | #if defined(CRYPTOFUZZ_RING)  | 
610  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Ring>() );  | 
611  |  | #endif  | 
612  |  |  | 
613  |  | #if defined(CRYPTOFUZZ_NSS)  | 
614  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::NSS>() );  | 
615  |  | #endif  | 
616  |  |  | 
617  | 4  | #if defined(CRYPTOFUZZ_BOTAN)  | 
618  | 4  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Botan>() );  | 
619  | 4  | #endif  | 
620  |  |  | 
621  |  | #if defined(CRYPTOFUZZ_NETTLE)  | 
622  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Nettle>() );  | 
623  |  | #endif  | 
624  |  |  | 
625  |  | #if defined(CRYPTOFUZZ_WOLFCRYPT)  | 
626  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::wolfCrypt>() );  | 
627  |  | #endif  | 
628  |  |  | 
629  |  | #if defined(CRYPTOFUZZ_LIBGMP)  | 
630  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::libgmp>() );  | 
631  |  | #endif  | 
632  |  |  | 
633  |  | #if defined(CRYPTOFUZZ_BN_JS)  | 
634  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::bn_js>() );  | 
635  |  | #endif  | 
636  |  |  | 
637  |  | #if defined(CRYPTOFUZZ_CRYPTO_JS)  | 
638  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::crypto_js>() );  | 
639  |  | #endif  | 
640  |  |  | 
641  |  | #if defined(CRYPTOFUZZ_BIGNUMBER_JS)  | 
642  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::bignumber_js>() );  | 
643  |  | #endif  | 
644  |  |  | 
645  |  | #if defined(CRYPTOFUZZ_MPDECIMAL)  | 
646  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::mpdecimal>() );  | 
647  |  | #endif  | 
648  |  |  | 
649  |  | #if defined(CRYPTOFUZZ_LINUX)  | 
650  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Linux>() );  | 
651  |  | #endif  | 
652  |  |  | 
653  |  | #if defined(CRYPTOFUZZ_SYMCRYPT)  | 
654  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::SymCrypt>() );  | 
655  |  | #endif  | 
656  |  |  | 
657  |  | #if defined(CRYPTOFUZZ_LIBTOMMATH)  | 
658  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::libtommath>() );  | 
659  |  | #endif  | 
660  |  |  | 
661  |  | #if defined(CRYPTOFUZZ_SJCL)  | 
662  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::sjcl>() );  | 
663  |  | #endif  | 
664  |  |  | 
665  |  | #if defined(CRYPTOFUZZ_WOLFCRYPT_OPENSSL)  | 
666  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::wolfCrypt_OpenSSL>() );  | 
667  |  | #endif  | 
668  |  |  | 
669  |  | #if defined(CRYPTOFUZZ_MONOCYPHER)  | 
670  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Monocypher>() );  | 
671  |  | #endif  | 
672  |  |  | 
673  |  | #if defined(CRYPTOFUZZ_SECP256K1)  | 
674  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::secp256k1>() );  | 
675  |  | #endif  | 
676  |  |  | 
677  |  | #if defined(CRYPTOFUZZ_RUST_LIBSECP256K1)  | 
678  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::rust_libsecp256k1>() );  | 
679  |  | #endif  | 
680  |  |  | 
681  |  | #if defined(CRYPTOFUZZ_TREZOR_FIRMWARE)  | 
682  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::trezor_firmware>() );  | 
683  |  | #endif  | 
684  |  |  | 
685  |  | #if defined(CRYPTOFUZZ_ELLIPTIC)  | 
686  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::elliptic>() );  | 
687  |  | #endif  | 
688  |  |  | 
689  |  | #if defined(CRYPTOFUZZ_DECRED)  | 
690  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Decred>() );  | 
691  |  | #endif  | 
692  |  |  | 
693  |  | #if defined(CRYPTOFUZZ_BEARSSL)  | 
694  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::BearSSL>() );  | 
695  |  | #endif  | 
696  |  |  | 
697  |  | #if defined(CRYPTOFUZZ_MICRO_ECC)  | 
698  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::micro_ecc>() );  | 
699  |  | #endif  | 
700  |  |  | 
701  |  | #if defined(CRYPTOFUZZ_CIFRA)  | 
702  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::cifra>() );  | 
703  |  | #endif  | 
704  |  |  | 
705  |  | #if defined(CRYPTOFUZZ_RELIC)  | 
706  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::relic>() );  | 
707  |  | #endif  | 
708  |  |  | 
709  |  | #if defined(CRYPTOFUZZ_LIBECC)  | 
710  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::libecc>() );  | 
711  |  | #endif  | 
712  |  |  | 
713  |  | #if defined(CRYPTOFUZZ_CHIA_BLS)  | 
714  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::chia_bls>() );  | 
715  |  | #endif  | 
716  |  |  | 
717  |  | #if defined(CRYPTOFUZZ_K256)  | 
718  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::k256>() );  | 
719  |  | #endif  | 
720  |  |  | 
721  |  | #if defined(CRYPTOFUZZ_SCHNORRKEL)  | 
722  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::schnorrkel>() );  | 
723  |  | #endif  | 
724  |  |  | 
725  |  | #if defined(CRYPTOFUZZ_NOBLE_SECP256K1)  | 
726  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::noble_secp256k1>() );  | 
727  |  | #endif  | 
728  |  |  | 
729  |  | #if defined(CRYPTOFUZZ_NOBLE_CURVES)  | 
730  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::noble_curves>() );  | 
731  |  | #endif  | 
732  |  |  | 
733  |  |  | 
734  | 4  | #if defined(CRYPTOFUZZ_BLST)  | 
735  | 4  |     driver->LoadModule( std::make_shared<cryptofuzz::module::blst>() );  | 
736  | 4  | #endif  | 
737  |  |  | 
738  | 4  | #if defined(CRYPTOFUZZ_MCL)  | 
739  | 4  |     driver->LoadModule( std::make_shared<cryptofuzz::module::mcl>() );  | 
740  | 4  | #endif  | 
741  |  |  | 
742  |  | #if defined(CRYPTOFUZZ_PY_ECC)  | 
743  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::py_ecc>() );  | 
744  |  | #endif  | 
745  |  |  | 
746  |  | #if defined(CRYPTOFUZZ_KILIC_BLS12_381)  | 
747  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::kilic_bls12_381>() );  | 
748  |  | #endif  | 
749  |  |  | 
750  |  | #if defined(CRYPTOFUZZ_NOBLE_ED25519)  | 
751  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::noble_ed25519>() );  | 
752  |  | #endif  | 
753  |  |  | 
754  |  | #if defined(CRYPTOFUZZ_NOBLE_BLS12_381)  | 
755  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::noble_bls12_381>() );  | 
756  |  | #endif  | 
757  |  |  | 
758  |  | #if defined(CRYPTOFUZZ_SCHNORR_FUN)  | 
759  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::schnorr_fun>() );  | 
760  |  | #endif  | 
761  |  |  | 
762  |  | #if defined(CRYPTOFUZZ_QUICKJS)  | 
763  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::quickjs>() );  | 
764  |  | #endif  | 
765  |  |  | 
766  |  | #if defined(CRYPTOFUZZ_UINT128_T)  | 
767  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::uint128_t>() );  | 
768  |  | #endif  | 
769  |  |  | 
770  |  | #if defined(CRYPTOFUZZ_LIBFF)  | 
771  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::_libff>() );  | 
772  |  | #endif  | 
773  |  |  | 
774  |  | #if defined(CRYPTOFUZZ_GNARK_BN254)  | 
775  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Gnark_bn254>() );  | 
776  |  | #endif  | 
777  |  |  | 
778  |  | #if defined(CRYPTOFUZZ_GOOGLE_BN256)  | 
779  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Google_bn256>() );  | 
780  |  | #endif  | 
781  |  |  | 
782  |  | #if defined(CRYPTOFUZZ_CLOUDFLARE_BN256)  | 
783  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Cloudflare_bn256>() );  | 
784  |  | #endif  | 
785  |  |  | 
786  |  | #if defined(CRYPTOFUZZ_NOBLE_HASHES)  | 
787  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::noble_hashes>() );  | 
788  |  | #endif  | 
789  |  |  | 
790  |  | #if defined(CRYPTOFUZZ_SKALE_SOLIDITY)  | 
791  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::SkaleSolidity>() );  | 
792  |  | #endif  | 
793  |  |  | 
794  |  | #if defined(CRYPTOFUZZ_GOOGLE_INTEGERS)  | 
795  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Google_Integers>() );  | 
796  |  | #endif  | 
797  |  |  | 
798  |  | #if defined(CRYPTOFUZZ_NIMCRYPTO)  | 
799  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::nimcrypto>() );  | 
800  |  | #endif  | 
801  |  |  | 
802  |  | #if defined(CRYPTOFUZZ_RUSTCRYPTO)  | 
803  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::rustcrypto>() );  | 
804  |  | #endif  | 
805  |  |  | 
806  |  | #if defined(CRYPTOFUZZ_NUM_BIGINT)  | 
807  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::num_bigint>() );  | 
808  |  | #endif  | 
809  |  |  | 
810  |  | #if defined(CRYPTOFUZZ_INTX)  | 
811  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::intx>() );  | 
812  |  | #endif  | 
813  |  |  | 
814  |  | #if defined(CRYPTOFUZZ_DECRED_UINT256)  | 
815  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::decred_uint256>() );  | 
816  |  | #endif  | 
817  |  |  | 
818  |  | #if defined(CRYPTOFUZZ_LIBDIVIDE)  | 
819  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::libdivide>() );  | 
820  |  | #endif  | 
821  |  |  | 
822  |  | #if defined(CRYPTOFUZZ_RUST_UINT)  | 
823  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::rust_uint>() );  | 
824  |  | #endif  | 
825  |  |  | 
826  |  | #if defined(CRYPTOFUZZ_BC)  | 
827  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::bc>() );  | 
828  |  | #endif  | 
829  |  |  | 
830  |  | #if defined(CRYPTOFUZZ_JAVA)  | 
831  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Java>() );  | 
832  |  | #endif  | 
833  |  |  | 
834  |  | #if defined(CRYPTOFUZZ_SOLIDITY_MATH)  | 
835  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::SolidityMath>() );  | 
836  |  | #endif  | 
837  |  |  | 
838  |  | #if defined(CRYPTOFUZZ_V8)  | 
839  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::V8>() );  | 
840  |  | #endif  | 
841  |  |  | 
842  |  | #if defined(CRYPTOFUZZ_CIRCL)  | 
843  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::circl>() );  | 
844  |  | #endif  | 
845  |  |  | 
846  |  | #if defined(CRYPTOFUZZ_SPL_MATH)  | 
847  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::spl_math>() );  | 
848  |  | #endif  | 
849  |  |  | 
850  |  | #if defined(CRYPTOFUZZ_ZIG)  | 
851  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Zig>() );  | 
852  |  | #endif  | 
853  |  |  | 
854  |  | #if defined(CRYPTOFUZZ_PRYSMATICLABS_HASHTREE)  | 
855  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::prysmaticlabs_hashtree>() );  | 
856  |  | #endif  | 
857  |  |  | 
858  |  | #if defined(CRYPTOFUZZ_STARKWARE)  | 
859  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Starkware>() );  | 
860  |  | #endif  | 
861  |  |  | 
862  |  | #if defined(CRYPTOFUZZ_PORNIN_BINGCD)  | 
863  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Pornin_BinGCD>() );  | 
864  |  | #endif  | 
865  |  |  | 
866  |  | #if defined(CRYPTOFUZZ_STINT)  | 
867  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::stint>() );  | 
868  |  | #endif  | 
869  |  |  | 
870  |  | #if defined(CRYPTOFUZZ_KRYPTOLOGY)  | 
871  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Kryptology>() );  | 
872  |  | #endif  | 
873  |  |  | 
874  |  | #if defined(CRYPTOFUZZ_NIM_BIGINTS)  | 
875  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::nim_bigints>() );  | 
876  |  | #endif  | 
877  |  |  | 
878  |  | #if defined(CRYPTOFUZZ_HOLIMAN_UINT256)  | 
879  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::holiman_uint256>() );  | 
880  |  | #endif  | 
881  |  |  | 
882  |  | #if defined(CRYPTOFUZZ_CPU)  | 
883  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::CPU>() );  | 
884  |  | #endif  | 
885  |  |  | 
886  |  | #if defined(CRYPTOFUZZ_GETH)  | 
887  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Geth>() );  | 
888  |  | #endif  | 
889  |  |  | 
890  |  | #if defined(CRYPTOFUZZ_JSBN)  | 
891  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::jsbn>() );  | 
892  |  | #endif  | 
893  |  |  | 
894  |  | #if defined(CRYPTOFUZZ_WIDE_INTEGER)  | 
895  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::wide_integer>() );  | 
896  |  | #endif  | 
897  |  |  | 
898  |  | #if defined(CRYPTOFUZZ_TINY_KECCAK)  | 
899  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::tiny_keccak>() );  | 
900  |  | #endif  | 
901  |  |  | 
902  | 4  | #if defined(CRYPTOFUZZ_ARKWORKS_ALGEBRA)  | 
903  | 4  |     driver->LoadModule( std::make_shared<cryptofuzz::module::arkworks_algebra>() );  | 
904  | 4  | #endif  | 
905  |  |  | 
906  |  | #if defined(CRYPTOFUZZ_FF)  | 
907  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::ff>() );  | 
908  |  | #endif  | 
909  |  |  | 
910  |  | #if defined(CRYPTOFUZZ_ALEO)  | 
911  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Aleo>() );  | 
912  |  | #endif  | 
913  |  |  | 
914  |  | #if defined(CRYPTOFUZZ_SHAMATAR)  | 
915  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Shamatar>() );  | 
916  |  | #endif  | 
917  |  |  | 
918  |  | #if defined(CRYPTOFUZZ_MICROSOFT_CALCULATOR)  | 
919  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::MicrosoftCalculator>() );  | 
920  |  | #endif  | 
921  |  |  | 
922  |  | #if defined(CRYPTOFUZZ_POLYGON_ZKEVM_PROVER)  | 
923  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::polygon_zkevm_prover>() );  | 
924  |  | #endif  | 
925  |  |  | 
926  |  | #if defined(CRYPTOFUZZ_GOLDILOCKS)  | 
927  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Goldilocks>() );  | 
928  |  | #endif  | 
929  |  |  | 
930  |  | #if defined(CRYPTOFUZZ_D)  | 
931  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::D>() );  | 
932  |  | #endif  | 
933  |  |  | 
934  |  | #if defined(CRYPTOFUZZ_PAIRING_CE)  | 
935  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::pairing_ce>() );  | 
936  |  | #endif  | 
937  |  |  | 
938  |  | #if defined(CRYPTOFUZZ_PASTA_CURVES)  | 
939  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::pasta_curves>() );  | 
940  |  | #endif  | 
941  |  |  | 
942  |  | #if defined(CRYPTOFUZZ_BOUNCYCASTLE)  | 
943  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::BouncyCastle>() );  | 
944  |  | #endif  | 
945  |  |  | 
946  |  | #if defined(CRYPTOFUZZ_FAHEEL_BIGINT)  | 
947  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::faheel_BigInt>() );  | 
948  |  | #endif  | 
949  |  |  | 
950  |  | #if defined(CRYPTOFUZZ_SUBSTRATE_BN)  | 
951  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::substrate_bn>() );  | 
952  |  | #endif  | 
953  |  |  | 
954  |  | #if defined(CRYPTOFUZZ_AURORA_ENGINE_MODEXP)  | 
955  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::aurora_engine_modexp>() );  | 
956  |  | #endif  | 
957  |  |  | 
958  |  | #if defined(CRYPTOFUZZ_V8_EMBEDDED)  | 
959  |  |     driver->LoadModule( std::make_shared<cryptofuzz::module::V8_embedded>() );  | 
960  |  | #endif  | 
961  |  |  | 
962  | 4  | #if defined(CRYPTOFUZZ_CONSTANTINE)  | 
963  | 4  |     driver->LoadModule( std::make_shared<cryptofuzz::module::Constantine>() );  | 
964  | 4  | #endif  | 
965  |  |  | 
966  |  |     /* TODO check if options.forceModule (if set) refers to a module that is  | 
967  |  |      * actually loaded, warn otherwise.  | 
968  |  |      */  | 
969  | 4  |     return 0;  | 
970  | 4  | }  | 
971  |  |  | 
972  | 51.0k  | extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { | 
973  | 51.0k  |     driver->Run(data, size);  | 
974  |  |  | 
975  | 51.0k  |     return 0;  | 
976  | 51.0k  | }  |