Coverage Report

Created: 2023-12-08 07:00

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