Coverage Report

Created: 2023-02-22 06:14

/src/cryptofuzz/driver.cpp
Line
Count
Source (jump to first uncovered line)
1
#include "driver.h"
2
#include <fuzzing/datasource/id.hpp>
3
#include "tests.h"
4
#include "executor.h"
5
#include <cryptofuzz/util.h>
6
#include <set>
7
#include <algorithm>
8
#include <unistd.h>
9
10
namespace cryptofuzz {
11
12
8
void Driver::LoadModule(std::shared_ptr<Module> module) {
13
8
    modules[module->ID] = module;
14
8
}
15
16
89.7k
void Driver::Run(const uint8_t* data, const size_t size) const {
17
89.7k
    using fuzzing::datasource::ID;
18
19
89.7k
    static ExecutorDigest executorDigest(CF_OPERATION("Digest"), modules, options);
20
89.7k
    static ExecutorHMAC executorHMAC(CF_OPERATION("HMAC"), modules, options);
21
89.7k
    static ExecutorUMAC executorUMAC(CF_OPERATION("UMAC"), modules, options);
22
89.7k
    static ExecutorCMAC executorCMAC(CF_OPERATION("CMAC"), modules, options);
23
89.7k
    static ExecutorSymmetricEncrypt executorSymmetricEncrypt(CF_OPERATION("SymmetricEncrypt"), modules, options);
24
89.7k
    static ExecutorSymmetricDecrypt executorSymmetricDecrypt(CF_OPERATION("SymmetricDecrypt"), modules, options);
25
89.7k
    static ExecutorKDF_SCRYPT executorKDF_SCRYPT(CF_OPERATION("KDF_SCRYPT"), modules, options);
26
89.7k
    static ExecutorKDF_HKDF executorKDF_HKDF(CF_OPERATION("KDF_HKDF"), modules, options);
27
89.7k
    static ExecutorKDF_TLS1_PRF executorKDF_TLS1_PRF(CF_OPERATION("KDF_TLS1_PRF"), modules, options);
28
89.7k
    static ExecutorKDF_PBKDF executorKDF_PBKDF(CF_OPERATION("KDF_PBKDF"), modules, options);
29
89.7k
    static ExecutorKDF_PBKDF1 executorKDF_PBKDF1(CF_OPERATION("KDF_PBKDF1"), modules, options);
30
89.7k
    static ExecutorKDF_PBKDF2 executorKDF_PBKDF2(CF_OPERATION("KDF_PBKDF2"), modules, options);
31
89.7k
    static ExecutorKDF_ARGON2 executorKDF_ARGON2(CF_OPERATION("KDF_ARGON2"), modules, options);
32
89.7k
    static ExecutorKDF_SSH executorKDF_SSH(ID("Cryptofuzz/Operation/KDF_SSH"), modules, options);
33
89.7k
    static ExecutorKDF_X963 executorKDF_X963(CF_OPERATION("KDF_X963"), modules, options);
34
89.7k
    static ExecutorKDF_BCRYPT executorKDF_BCRYPT(CF_OPERATION("KDF_BCRYPT"), modules, options);
35
89.7k
    static ExecutorKDF_SP_800_108 executorKDF_SP_800_108(CF_OPERATION("KDF_SP_800_108"), modules, options);
36
89.7k
    static ExecutorECC_PrivateToPublic executorECC_PrivateToPublic(CF_OPERATION("ECC_PrivateToPublic"), modules, options);
37
89.7k
    static ExecutorECC_ValidatePubkey executorECC_ValidatePubkey(CF_OPERATION("ECC_ValidatePubkey"), modules, options);
38
89.7k
    static ExecutorECC_GenerateKeyPair executorECC_GenerateKeyPair(CF_OPERATION("ECC_GenerateKeyPair"), modules, options);
39
89.7k
    static ExecutorECCSI_Sign executorECCSI_Sign(CF_OPERATION("ECCSI_Sign"), modules, options);
40
89.7k
    static ExecutorECDSA_Sign executorECDSA_Sign(CF_OPERATION("ECDSA_Sign"), modules, options);
41
89.7k
    static ExecutorECGDSA_Sign executorECGDSA_Sign(CF_OPERATION("ECGDSA_Sign"), modules, options);
42
89.7k
    static ExecutorECRDSA_Sign executorECRDSA_Sign(CF_OPERATION("ECRDSA_Sign"), modules, options);
43
89.7k
    static ExecutorSchnorr_Sign executorSchnorr_Sign(CF_OPERATION("Schnorr_Sign"), modules, options);
44
89.7k
    static ExecutorECCSI_Verify executorECCSI_Verify(CF_OPERATION("ECCSI_Verify"), modules, options);
45
89.7k
    static ExecutorECDSA_Verify executorECDSA_Verify(CF_OPERATION("ECDSA_Verify"), modules, options);
46
89.7k
    static ExecutorECGDSA_Verify executorECGDSA_Verify(CF_OPERATION("ECGDSA_Verify"), modules, options);
47
89.7k
    static ExecutorECRDSA_Verify executorECRDSA_Verify(CF_OPERATION("ECRDSA_Verify"), modules, options);
48
89.7k
    static ExecutorSchnorr_Verify executorSchnorr_Verify(CF_OPERATION("Schnorr_Verify"), modules, options);
49
89.7k
    static ExecutorECDSA_Recover executorECDSA_Recover(CF_OPERATION("ECDSA_Recover"), modules, options);
50
89.7k
    static ExecutorDSA_Verify executorDSA_Verify(CF_OPERATION("DSA_Verify"), modules, options);
51
89.7k
    static ExecutorDSA_Sign executorDSA_Sign(CF_OPERATION("DSA_Sign"), modules, options);
52
89.7k
    static ExecutorDSA_GenerateParameters executorDSA_GenerateParameters(CF_OPERATION("DSA_GenerateParameters"), modules, options);
53
89.7k
    static ExecutorDSA_PrivateToPublic executorDSA_PrivateToPublic(CF_OPERATION("DSA_PrivateToPublic"), modules, options);
54
89.7k
    static ExecutorDSA_GenerateKeyPair executorDSA_GenerateKeyPair(CF_OPERATION("DSA_GenerateKeyPair"), modules, options);
55
89.7k
    static ExecutorECDH_Derive executorECDH_Derive(CF_OPERATION("ECDH_Derive"), modules, options);
56
89.7k
    static ExecutorECIES_Encrypt executorECIES_Encrypt(CF_OPERATION("ECIES_Encrypt"), modules, options);
57
89.7k
    static ExecutorECIES_Decrypt executorECIES_Decrypt(CF_OPERATION("ECIES_Decrypt"), modules, options);
58
89.7k
    static ExecutorECC_Point_Add executorECC_Point_Add(CF_OPERATION("ECC_Point_Add"), modules, options);
59
89.7k
    static ExecutorECC_Point_Mul executorECC_Point_Mul(CF_OPERATION("ECC_Point_Mul"), modules, options);
60
89.7k
    static ExecutorECC_Point_Neg executorECC_Point_Neg(CF_OPERATION("ECC_Point_Neg"), modules, options);
61
89.7k
    static ExecutorECC_Point_Dbl executorECC_Point_Dbl(CF_OPERATION("ECC_Point_Dbl"), modules, options);
62
89.7k
    static ExecutorECC_Point_Cmp executorECC_Point_Cmp(CF_OPERATION("ECC_Point_Cmp"), modules, options);
63
89.7k
    static ExecutorDH_GenerateKeyPair executorDH_GenerateKeyPair(CF_OPERATION("DH_GenerateKeyPair"), modules, options);
64
89.7k
    static ExecutorDH_Derive executorDH_Derive(CF_OPERATION("DH_Derive"), modules, options);
65
89.7k
    static ExecutorBignumCalc executorBignumCalc(CF_OPERATION("BignumCalc"), modules, options);
66
89.7k
    static ExecutorBignumCalc_Fp2 executorBignumCalc_Fp2(CF_OPERATION("BignumCalc_Fp2"), modules, options);
67
89.7k
    static ExecutorBignumCalc_Fp12 executorBignumCalc_Fp12(CF_OPERATION("BignumCalc_Fp12"), modules, options);
68
89.7k
    static ExecutorBignumCalc_Mod_BLS12_381_R executorBignumCalc_mod_bls12_381_r(CF_OPERATION("BignumCalc_Mod_BLS12_381_R"), modules, options);
69
89.7k
    static ExecutorBignumCalc_Mod_BLS12_381_P executorBignumCalc_mod_bls12_381_p(CF_OPERATION("BignumCalc_Mod_BLS12_381_P"), modules, options);
70
89.7k
    static ExecutorBignumCalc_Mod_BLS12_377_R executorBignumCalc_mod_bls12_377_r(CF_OPERATION("BignumCalc_Mod_BLS12_377_R"), modules, options);
71
89.7k
    static ExecutorBignumCalc_Mod_BLS12_377_P executorBignumCalc_mod_bls12_377_p(CF_OPERATION("BignumCalc_Mod_BLS12_377_P"), modules, options);
72
89.7k
    static ExecutorBignumCalc_Mod_BN128_R executorBignumCalc_mod_bn128_r(CF_OPERATION("BignumCalc_Mod_BN128_R"), modules, options);
73
89.7k
    static ExecutorBignumCalc_Mod_BN128_P executorBignumCalc_mod_bn128_p(CF_OPERATION("BignumCalc_Mod_BN128_P"), modules, options);
74
89.7k
    static ExecutorBignumCalc_Mod_ED25519 executorBignumCalc_mod_ed25519(CF_OPERATION("BignumCalc_Mod_ED25519"), modules, options);
75
89.7k
    static ExecutorBignumCalc_Mod_Edwards_R executorBignumCalc_mod_edwards_r(CF_OPERATION("BignumCalc_Mod_Edwards_R"), modules, options);
76
89.7k
    static ExecutorBignumCalc_Mod_Edwards_P executorBignumCalc_mod_edwards_p(CF_OPERATION("BignumCalc_Mod_Edwards_P"), modules, options);
77
89.7k
    static ExecutorBignumCalc_Mod_MNT4_R executorBignumCalc_mod_mnt4_r(CF_OPERATION("BignumCalc_Mod_MNT4_R"), modules, options);
78
89.7k
    static ExecutorBignumCalc_Mod_MNT4_P executorBignumCalc_mod_mnt4_p(CF_OPERATION("BignumCalc_Mod_MNT4_P"), modules, options);
79
89.7k
    static ExecutorBignumCalc_Mod_MNT6_R executorBignumCalc_mod_mnt6_r(CF_OPERATION("BignumCalc_Mod_MNT6_R"), modules, options);
80
89.7k
    static ExecutorBignumCalc_Mod_MNT6_P executorBignumCalc_mod_mnt6_p(CF_OPERATION("BignumCalc_Mod_MNT6_P"), modules, options);
81
89.7k
    static ExecutorBignumCalc_Mod_2Exp64 executorBignumCalc_mod_2exp64(CF_OPERATION("BignumCalc_Mod_2Exp64"), modules, options);
82
89.7k
    static ExecutorBignumCalc_Mod_2Exp128 executorBignumCalc_mod_2exp128(CF_OPERATION("BignumCalc_Mod_2Exp128"), modules, options);
83
89.7k
    static ExecutorBignumCalc_Mod_2Exp256 executorBignumCalc_mod_2exp256(CF_OPERATION("BignumCalc_Mod_2Exp256"), modules, options);
84
89.7k
    static ExecutorBignumCalc_Mod_2Exp512 executorBignumCalc_mod_2exp512(CF_OPERATION("BignumCalc_Mod_2Exp512"), modules, options);
85
89.7k
    static ExecutorBignumCalc_Mod_SECP256K1 executorBignumCalc_mod_secp256k1(CF_OPERATION("BignumCalc_Mod_SECP256K1"), modules, options);
86
89.7k
    static ExecutorBignumCalc_Mod_SECP256K1_P executorBignumCalc_mod_secp256k1_p(CF_OPERATION("BignumCalc_Mod_SECP256K1_P"), modules, options);
87
89.7k
    static ExecutorBLS_PrivateToPublic executorBLS_PrivateToPublic(CF_OPERATION("BLS_PrivateToPublic"), modules, options);
88
89.7k
    static ExecutorBLS_PrivateToPublic_G2 executorBLS_PrivateToPublic_G2(CF_OPERATION("BLS_PrivateToPublic_G2"), modules, options);
89
89.7k
    static ExecutorBLS_Sign executorBLS_Sign(CF_OPERATION("BLS_Sign"), modules, options);
90
89.7k
    static ExecutorBLS_Verify executorBLS_Verify(CF_OPERATION("BLS_Verify"), modules, options);
91
89.7k
    static ExecutorBLS_BatchSign executorBLS_BatchSign(CF_OPERATION("BLS_BatchSign"), modules, options);
92
89.7k
    static ExecutorBLS_BatchVerify executorBLS_BatchVerify(CF_OPERATION("BLS_BatchVerify"), modules, options);
93
89.7k
    static ExecutorBLS_Aggregate_G1 executorBLS_Aggregate_G1(CF_OPERATION("BLS_Aggregate_G1"), modules, options);
94
89.7k
    static ExecutorBLS_Aggregate_G2 executorBLS_Aggregate_G2(CF_OPERATION("BLS_Aggregate_G2"), modules, options);
95
89.7k
    static ExecutorBLS_Pairing executorBLS_Pairing(CF_OPERATION("BLS_Pairing"), modules, options);
96
89.7k
    static ExecutorBLS_MillerLoop executorBLS_MillerLoop(CF_OPERATION("BLS_MillerLoop"), modules, options);
97
89.7k
    static ExecutorBLS_FinalExp executorBLS_FinalExp(CF_OPERATION("BLS_FinalExp"), modules, options);
98
89.7k
    static ExecutorBLS_HashToG1 executorBLS_HashToG1(CF_OPERATION("BLS_HashToG1"), modules, options);
99
89.7k
    static ExecutorBLS_HashToG2 executorBLS_HashToG2(CF_OPERATION("BLS_HashToG2"), modules, options);
100
89.7k
    static ExecutorBLS_MapToG1 executorBLS_MapToG1(CF_OPERATION("BLS_MapToG1"), modules, options);
101
89.7k
    static ExecutorBLS_MapToG2 executorBLS_MapToG2(CF_OPERATION("BLS_MapToG2"), modules, options);
102
89.7k
    static ExecutorBLS_IsG1OnCurve executorBLS_IsG1OnCurve(CF_OPERATION("BLS_IsG1OnCurve"), modules, options);
103
89.7k
    static ExecutorBLS_IsG2OnCurve executorBLS_IsG2OnCurve(CF_OPERATION("BLS_IsG2OnCurve"), modules, options);
104
89.7k
    static ExecutorBLS_GenerateKeyPair executorBLS_GenerateKeyPair(CF_OPERATION("BLS_GenerateKeyPair"), modules, options);
105
89.7k
    static ExecutorBLS_Decompress_G1 executorBLS_Decompress_G1(CF_OPERATION("BLS_Decompress_G1"), modules, options);
106
89.7k
    static ExecutorBLS_Compress_G1 executorBLS_Compress_G1(CF_OPERATION("BLS_Compress_G1"), modules, options);
107
89.7k
    static ExecutorBLS_Decompress_G2 executorBLS_Decompress_G2(CF_OPERATION("BLS_Decompress_G2"), modules, options);
108
89.7k
    static ExecutorBLS_Compress_G2 executorBLS_Compress_G2(CF_OPERATION("BLS_Compress_G2"), modules, options);
109
89.7k
    static ExecutorBLS_G1_Add executorBLS_G1_Add(CF_OPERATION("BLS_G1_Add"), modules, options);
110
89.7k
    static ExecutorBLS_G1_Mul executorBLS_G1_Mul(CF_OPERATION("BLS_G1_Mul"), modules, options);
111
89.7k
    static ExecutorBLS_G1_IsEq executorBLS_G1_IsEq(CF_OPERATION("BLS_G1_IsEq"), modules, options);
112
89.7k
    static ExecutorBLS_G1_Neg executorBLS_G1_Neg(CF_OPERATION("BLS_G1_Neg"), modules, options);
113
89.7k
    static ExecutorBLS_G2_Add executorBLS_G2_Add(CF_OPERATION("BLS_G2_Add"), modules, options);
114
89.7k
    static ExecutorBLS_G2_Mul executorBLS_G2_Mul(CF_OPERATION("BLS_G2_Mul"), modules, options);
115
89.7k
    static ExecutorBLS_G2_IsEq executorBLS_G2_IsEq(CF_OPERATION("BLS_G2_IsEq"), modules, options);
116
89.7k
    static ExecutorBLS_G2_Neg executorBLS_G2_Neg(CF_OPERATION("BLS_G2_Neg"), modules, options);
117
89.7k
    static ExecutorMisc executorMisc(CF_OPERATION("Misc"), modules, options);
118
89.7k
    static ExecutorSR25519_Verify executorSR25519_Verify(CF_OPERATION("SR25519_Verify"), modules, options);
119
120
89.7k
    try {
121
122
89.7k
        Datasource ds(data, size);
123
124
89.7k
        const auto operation = ds.Get<uint64_t>();
125
126
89.7k
        if ( !options.operations.Have(operation) ) {
127
0
            return;
128
0
        }
129
130
89.7k
        const auto payload = ds.GetData(0, 1);
131
132
89.7k
        switch ( operation ) {
133
4.12k
            case CF_OPERATION("Digest"):
134
4.12k
                executorDigest.Run(ds, payload.data(), payload.size());
135
4.12k
                break;
136
1.65k
            case CF_OPERATION("HMAC"):
137
1.65k
                executorHMAC.Run(ds, payload.data(), payload.size());
138
1.65k
                break;
139
1.21k
            case CF_OPERATION("UMAC"):
140
1.21k
                executorUMAC.Run(ds, payload.data(), payload.size());
141
1.21k
                break;
142
1.57k
            case CF_OPERATION("CMAC"):
143
1.57k
                executorCMAC.Run(ds, payload.data(), payload.size());
144
1.57k
                break;
145
6.16k
            case CF_OPERATION("SymmetricEncrypt"):
146
6.16k
                executorSymmetricEncrypt.Run(ds, payload.data(), payload.size());
147
6.16k
                break;
148
5.94k
            case CF_OPERATION("SymmetricDecrypt"):
149
5.94k
                executorSymmetricDecrypt.Run(ds, payload.data(), payload.size());
150
5.94k
                break;
151
446
            case CF_OPERATION("KDF_SCRYPT"):
152
446
                executorKDF_SCRYPT.Run(ds, payload.data(), payload.size());
153
446
                break;
154
3.80k
            case CF_OPERATION("KDF_HKDF"):
155
3.80k
                executorKDF_HKDF.Run(ds, payload.data(), payload.size());
156
3.80k
                break;
157
374
            case CF_OPERATION("KDF_TLS1_PRF"):
158
374
                executorKDF_TLS1_PRF.Run(ds, payload.data(), payload.size());
159
374
                break;
160
242
            case CF_OPERATION("KDF_PBKDF"):
161
242
                executorKDF_PBKDF.Run(ds, payload.data(), payload.size());
162
242
                break;
163
261
            case CF_OPERATION("KDF_PBKDF1"):
164
261
                executorKDF_PBKDF1.Run(ds, payload.data(), payload.size());
165
261
                break;
166
948
            case CF_OPERATION("KDF_PBKDF2"):
167
948
                executorKDF_PBKDF2.Run(ds, payload.data(), payload.size());
168
948
                break;
169
654
            case CF_OPERATION("KDF_ARGON2"):
170
654
                executorKDF_ARGON2.Run(ds, payload.data(), payload.size());
171
654
                break;
172
325
            case CF_OPERATION("KDF_SSH"):
173
325
                executorKDF_SSH.Run(ds, payload.data(), payload.size());
174
325
                break;
175
266
            case CF_OPERATION("KDF_X963"):
176
266
                executorKDF_X963.Run(ds, payload.data(), payload.size());
177
266
                break;
178
298
            case CF_OPERATION("KDF_BCRYPT"):
179
298
                executorKDF_BCRYPT.Run(ds, payload.data(), payload.size());
180
298
                break;
181
782
            case CF_OPERATION("KDF_SP_800_108"):
182
782
                executorKDF_SP_800_108.Run(ds, payload.data(), payload.size());
183
782
                break;
184
1.83k
            case CF_OPERATION("ECC_PrivateToPublic"):
185
1.83k
                executorECC_PrivateToPublic.Run(ds, payload.data(), payload.size());
186
1.83k
                break;
187
918
            case CF_OPERATION("ECC_ValidatePubkey"):
188
918
                executorECC_ValidatePubkey.Run(ds, payload.data(), payload.size());
189
918
                break;
190
1.62k
            case CF_OPERATION("ECC_GenerateKeyPair"):
191
1.62k
                executorECC_GenerateKeyPair.Run(ds, payload.data(), payload.size());
192
1.62k
                break;
193
214
            case CF_OPERATION("ECCSI_Sign"):
194
214
                executorECCSI_Sign.Run(ds, payload.data(), payload.size());
195
214
                break;
196
1.32k
            case CF_OPERATION("ECDSA_Sign"):
197
1.32k
                executorECDSA_Sign.Run(ds, payload.data(), payload.size());
198
1.32k
                break;
199
418
            case CF_OPERATION("ECGDSA_Sign"):
200
418
                executorECGDSA_Sign.Run(ds, payload.data(), payload.size());
201
418
                break;
202
223
            case CF_OPERATION("ECRDSA_Sign"):
203
223
                executorECRDSA_Sign.Run(ds, payload.data(), payload.size());
204
223
                break;
205
199
            case CF_OPERATION("Schnorr_Sign"):
206
199
                executorSchnorr_Sign.Run(ds, payload.data(), payload.size());
207
199
                break;
208
191
            case CF_OPERATION("ECCSI_Verify"):
209
191
                executorECCSI_Verify.Run(ds, payload.data(), payload.size());
210
191
                break;
211
742
            case CF_OPERATION("ECDSA_Verify"):
212
742
                executorECDSA_Verify.Run(ds, payload.data(), payload.size());
213
742
                break;
214
365
            case CF_OPERATION("ECGDSA_Verify"):
215
365
                executorECGDSA_Verify.Run(ds, payload.data(), payload.size());
216
365
                break;
217
177
            case CF_OPERATION("ECRDSA_Verify"):
218
177
                executorECRDSA_Verify.Run(ds, payload.data(), payload.size());
219
177
                break;
220
184
            case CF_OPERATION("Schnorr_Verify"):
221
184
                executorSchnorr_Verify.Run(ds, payload.data(), payload.size());
222
184
                break;
223
1.14k
            case CF_OPERATION("ECDSA_Recover"):
224
1.14k
                executorECDSA_Recover.Run(ds, payload.data(), payload.size());
225
1.14k
                break;
226
240
            case CF_OPERATION("DSA_Verify"):
227
240
                executorDSA_Verify.Run(ds, payload.data(), payload.size());
228
240
                break;
229
266
            case CF_OPERATION("DSA_Sign"):
230
266
                executorDSA_Sign.Run(ds, payload.data(), payload.size());
231
266
                break;
232
332
            case CF_OPERATION("DSA_GenerateParameters"):
233
332
                executorDSA_GenerateParameters.Run(ds, payload.data(), payload.size());
234
332
                break;
235
269
            case CF_OPERATION("DSA_PrivateToPublic"):
236
269
                executorDSA_PrivateToPublic.Run(ds, payload.data(), payload.size());
237
269
                break;
238
332
            case CF_OPERATION("DSA_GenerateKeyPair"):
239
332
                executorDSA_GenerateKeyPair.Run(ds, payload.data(), payload.size());
240
332
                break;
241
314
            case CF_OPERATION("ECDH_Derive"):
242
314
                executorECDH_Derive.Run(ds, payload.data(), payload.size());
243
314
                break;
244
219
            case CF_OPERATION("ECIES_Encrypt"):
245
219
                executorECIES_Encrypt.Run(ds, payload.data(), payload.size());
246
219
                break;
247
219
            case CF_OPERATION("ECIES_Decrypt"):
248
219
                executorECIES_Decrypt.Run(ds, payload.data(), payload.size());
249
219
                break;
250
318
            case CF_OPERATION("ECC_Point_Add"):
251
318
                executorECC_Point_Add.Run(ds, payload.data(), payload.size());
252
318
                break;
253
1.31k
            case CF_OPERATION("ECC_Point_Mul"):
254
1.31k
                executorECC_Point_Mul.Run(ds, payload.data(), payload.size());
255
1.31k
                break;
256
386
            case CF_OPERATION("ECC_Point_Neg"):
257
386
                executorECC_Point_Neg.Run(ds, payload.data(), payload.size());
258
386
                break;
259
313
            case CF_OPERATION("ECC_Point_Dbl"):
260
313
                executorECC_Point_Dbl.Run(ds, payload.data(), payload.size());
261
313
                break;
262
364
            case CF_OPERATION("ECC_Point_Cmp"):
263
364
                executorECC_Point_Cmp.Run(ds, payload.data(), payload.size());
264
364
                break;
265
322
            case CF_OPERATION("DH_GenerateKeyPair"):
266
322
                executorDH_GenerateKeyPair.Run(ds, payload.data(), payload.size());
267
322
                break;
268
578
            case CF_OPERATION("DH_Derive"):
269
578
                executorDH_Derive.Run(ds, payload.data(), payload.size());
270
578
                break;
271
10.4k
            case CF_OPERATION("BignumCalc"):
272
10.4k
                executorBignumCalc.Run(ds, payload.data(), payload.size());
273
10.4k
                break;
274
242
            case CF_OPERATION("BignumCalc_Fp2"):
275
242
                executorBignumCalc_Fp2.Run(ds, payload.data(), payload.size());
276
242
                break;
277
598
            case CF_OPERATION("BignumCalc_Fp12"):
278
598
                executorBignumCalc_Fp12.Run(ds, payload.data(), payload.size());
279
598
                break;
280
91
            case CF_OPERATION("BignumCalc_Mod_BLS12_381_R"):
281
91
                executorBignumCalc_mod_bls12_381_r.Run(ds, payload.data(), payload.size());
282
91
                break;
283
129
            case CF_OPERATION("BignumCalc_Mod_BLS12_381_P"):
284
129
                executorBignumCalc_mod_bls12_381_p.Run(ds, payload.data(), payload.size());
285
129
                break;
286
48
            case CF_OPERATION("BignumCalc_Mod_BLS12_377_R"):
287
48
                executorBignumCalc_mod_bls12_377_r.Run(ds, payload.data(), payload.size());
288
48
                break;
289
107
            case CF_OPERATION("BignumCalc_Mod_BLS12_377_P"):
290
107
                executorBignumCalc_mod_bls12_377_p.Run(ds, payload.data(), payload.size());
291
107
                break;
292
57
            case CF_OPERATION("BignumCalc_Mod_BN128_R"):
293
57
                executorBignumCalc_mod_bn128_r.Run(ds, payload.data(), payload.size());
294
57
                break;
295
134
            case CF_OPERATION("BignumCalc_Mod_BN128_P"):
296
134
                executorBignumCalc_mod_bn128_p.Run(ds, payload.data(), payload.size());
297
134
                break;
298
134
            case CF_OPERATION("BignumCalc_Mod_ED25519"):
299
134
                executorBignumCalc_mod_ed25519.Run(ds, payload.data(), payload.size());
300
134
                break;
301
178
            case CF_OPERATION("BignumCalc_Mod_Edwards_R"):
302
178
                executorBignumCalc_mod_edwards_r.Run(ds, payload.data(), payload.size());
303
178
                break;
304
103
            case CF_OPERATION("BignumCalc_Mod_Edwards_P"):
305
103
                executorBignumCalc_mod_edwards_p.Run(ds, payload.data(), payload.size());
306
103
                break;
307
154
            case CF_OPERATION("BignumCalc_Mod_MNT4_R"):
308
154
                executorBignumCalc_mod_mnt4_r.Run(ds, payload.data(), payload.size());
309
154
                break;
310
45
            case CF_OPERATION("BignumCalc_Mod_MNT4_P"):
311
45
                executorBignumCalc_mod_mnt4_p.Run(ds, payload.data(), payload.size());
312
45
                break;
313
91
            case CF_OPERATION("BignumCalc_Mod_MNT6_R"):
314
91
                executorBignumCalc_mod_mnt6_r.Run(ds, payload.data(), payload.size());
315
91
                break;
316
81
            case CF_OPERATION("BignumCalc_Mod_MNT6_P"):
317
81
                executorBignumCalc_mod_mnt6_p.Run(ds, payload.data(), payload.size());
318
81
                break;
319
284
            case CF_OPERATION("BignumCalc_Mod_2Exp64"):
320
284
                executorBignumCalc_mod_2exp64.Run(ds, payload.data(), payload.size());
321
284
                break;
322
297
            case CF_OPERATION("BignumCalc_Mod_2Exp128"):
323
297
                executorBignumCalc_mod_2exp128.Run(ds, payload.data(), payload.size());
324
297
                break;
325
127
            case CF_OPERATION("BignumCalc_Mod_2Exp256"):
326
127
                executorBignumCalc_mod_2exp256.Run(ds, payload.data(), payload.size());
327
127
                break;
328
108
            case CF_OPERATION("BignumCalc_Mod_2Exp512"):
329
108
                executorBignumCalc_mod_2exp512.Run(ds, payload.data(), payload.size());
330
108
                break;
331
253
            case CF_OPERATION("BignumCalc_Mod_SECP256K1"):
332
253
                executorBignumCalc_mod_secp256k1.Run(ds, payload.data(), payload.size());
333
253
                break;
334
81
            case CF_OPERATION("BignumCalc_Mod_SECP256K1_P"):
335
81
                executorBignumCalc_mod_secp256k1_p.Run(ds, payload.data(), payload.size());
336
81
                break;
337
301
            case CF_OPERATION("BLS_PrivateToPublic"):
338
301
                executorBLS_PrivateToPublic.Run(ds, payload.data(), payload.size());
339
301
                break;
340
250
            case CF_OPERATION("BLS_PrivateToPublic_G2"):
341
250
                executorBLS_PrivateToPublic_G2.Run(ds, payload.data(), payload.size());
342
250
                break;
343
194
            case CF_OPERATION("BLS_Sign"):
344
194
                executorBLS_Sign.Run(ds, payload.data(), payload.size());
345
194
                break;
346
242
            case CF_OPERATION("BLS_Verify"):
347
242
                executorBLS_Verify.Run(ds, payload.data(), payload.size());
348
242
                break;
349
379
            case CF_OPERATION("BLS_BatchSign"):
350
379
                executorBLS_BatchSign.Run(ds, payload.data(), payload.size());
351
379
                break;
352
427
            case CF_OPERATION("BLS_BatchVerify"):
353
427
                executorBLS_BatchVerify.Run(ds, payload.data(), payload.size());
354
427
                break;
355
332
            case CF_OPERATION("BLS_Aggregate_G1"):
356
332
                executorBLS_Aggregate_G1.Run(ds, payload.data(), payload.size());
357
332
                break;
358
319
            case CF_OPERATION("BLS_Aggregate_G2"):
359
319
                executorBLS_Aggregate_G2.Run(ds, payload.data(), payload.size());
360
319
                break;
361
231
            case CF_OPERATION("BLS_Pairing"):
362
231
                executorBLS_Pairing.Run(ds, payload.data(), payload.size());
363
231
                break;
364
221
            case CF_OPERATION("BLS_MillerLoop"):
365
221
                executorBLS_MillerLoop.Run(ds, payload.data(), payload.size());
366
221
                break;
367
248
            case CF_OPERATION("BLS_FinalExp"):
368
248
                executorBLS_FinalExp.Run(ds, payload.data(), payload.size());
369
248
                break;
370
257
            case CF_OPERATION("BLS_HashToG1"):
371
257
                executorBLS_HashToG1.Run(ds, payload.data(), payload.size());
372
257
                break;
373
293
            case CF_OPERATION("BLS_HashToG2"):
374
293
                executorBLS_HashToG2.Run(ds, payload.data(), payload.size());
375
293
                break;
376
271
            case CF_OPERATION("BLS_MapToG1"):
377
271
                executorBLS_MapToG1.Run(ds, payload.data(), payload.size());
378
271
                break;
379
221
            case CF_OPERATION("BLS_MapToG2"):
380
221
                executorBLS_MapToG2.Run(ds, payload.data(), payload.size());
381
221
                break;
382
221
            case CF_OPERATION("BLS_IsG1OnCurve"):
383
221
                executorBLS_IsG1OnCurve.Run(ds, payload.data(), payload.size());
384
221
                break;
385
262
            case CF_OPERATION("BLS_IsG2OnCurve"):
386
262
                executorBLS_IsG2OnCurve.Run(ds, payload.data(), payload.size());
387
262
                break;
388
296
            case CF_OPERATION("BLS_GenerateKeyPair"):
389
296
                executorBLS_GenerateKeyPair.Run(ds, payload.data(), payload.size());
390
296
                break;
391
225
            case CF_OPERATION("BLS_Decompress_G1"):
392
225
                executorBLS_Decompress_G1.Run(ds, payload.data(), payload.size());
393
225
                break;
394
331
            case CF_OPERATION("BLS_Compress_G1"):
395
331
                executorBLS_Compress_G1.Run(ds, payload.data(), payload.size());
396
331
                break;
397
249
            case CF_OPERATION("BLS_Decompress_G2"):
398
249
                executorBLS_Decompress_G2.Run(ds, payload.data(), payload.size());
399
249
                break;
400
224
            case CF_OPERATION("BLS_Compress_G2"):
401
224
                executorBLS_Compress_G2.Run(ds, payload.data(), payload.size());
402
224
                break;
403
246
            case CF_OPERATION("BLS_G1_Add"):
404
246
                executorBLS_G1_Add.Run(ds, payload.data(), payload.size());
405
246
                break;
406
228
            case CF_OPERATION("BLS_G1_Mul"):
407
228
                executorBLS_G1_Mul.Run(ds, payload.data(), payload.size());
408
228
                break;
409
336
            case CF_OPERATION("BLS_G1_IsEq"):
410
336
                executorBLS_G1_IsEq.Run(ds, payload.data(), payload.size());
411
336
                break;
412
251
            case CF_OPERATION("BLS_G1_Neg"):
413
251
                executorBLS_G1_Neg.Run(ds, payload.data(), payload.size());
414
251
                break;
415
330
            case CF_OPERATION("BLS_G2_Add"):
416
330
                executorBLS_G2_Add.Run(ds, payload.data(), payload.size());
417
330
                break;
418
307
            case CF_OPERATION("BLS_G2_Mul"):
419
307
                executorBLS_G2_Mul.Run(ds, payload.data(), payload.size());
420
307
                break;
421
289
            case CF_OPERATION("BLS_G2_IsEq"):
422
289
                executorBLS_G2_IsEq.Run(ds, payload.data(), payload.size());
423
289
                break;
424
323
            case CF_OPERATION("BLS_G2_Neg"):
425
323
                executorBLS_G2_Neg.Run(ds, payload.data(), payload.size());
426
323
                break;
427
253
            case CF_OPERATION("Misc"):
428
253
                executorMisc.Run(ds, payload.data(), payload.size());
429
253
                break;
430
256
            case CF_OPERATION("SR25519_Verify"):
431
256
                executorSR25519_Verify.Run(ds, payload.data(), payload.size());
432
256
                break;
433
89.7k
        }
434
89.7k
    } catch ( Datasource::OutOfData ) {
435
12.9k
    }
436
89.7k
};
437
438
Driver::Driver(const Options options) :
439
    options(options)
440
4
{ }
441
442
4
const Options* Driver::GetOptionsPtr(void) const {
443
4
    return &options;
444
4
}
445
446
} /* namespace cryptofuzz */