Coverage Report

Created: 2023-09-25 06:34

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