/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  | 12.7k  | void Driver::Run(const uint8_t* data, const size_t size) const { | 
17  | 12.7k  |     using fuzzing::datasource::ID;  | 
18  |  |  | 
19  | 12.7k  |     static ExecutorDigest executorDigest(CF_OPERATION("Digest"), modules, options); | 
20  | 12.7k  |     static ExecutorHMAC executorHMAC(CF_OPERATION("HMAC"), modules, options); | 
21  | 12.7k  |     static ExecutorUMAC executorUMAC(CF_OPERATION("UMAC"), modules, options); | 
22  | 12.7k  |     static ExecutorCMAC executorCMAC(CF_OPERATION("CMAC"), modules, options); | 
23  | 12.7k  |     static ExecutorSymmetricEncrypt executorSymmetricEncrypt(CF_OPERATION("SymmetricEncrypt"), modules, options); | 
24  | 12.7k  |     static ExecutorSymmetricDecrypt executorSymmetricDecrypt(CF_OPERATION("SymmetricDecrypt"), modules, options); | 
25  | 12.7k  |     static ExecutorKDF_SCRYPT executorKDF_SCRYPT(CF_OPERATION("KDF_SCRYPT"), modules, options); | 
26  | 12.7k  |     static ExecutorKDF_HKDF executorKDF_HKDF(CF_OPERATION("KDF_HKDF"), modules, options); | 
27  | 12.7k  |     static ExecutorKDF_TLS1_PRF executorKDF_TLS1_PRF(CF_OPERATION("KDF_TLS1_PRF"), modules, options); | 
28  | 12.7k  |     static ExecutorKDF_PBKDF executorKDF_PBKDF(CF_OPERATION("KDF_PBKDF"), modules, options); | 
29  | 12.7k  |     static ExecutorKDF_PBKDF1 executorKDF_PBKDF1(CF_OPERATION("KDF_PBKDF1"), modules, options); | 
30  | 12.7k  |     static ExecutorKDF_PBKDF2 executorKDF_PBKDF2(CF_OPERATION("KDF_PBKDF2"), modules, options); | 
31  | 12.7k  |     static ExecutorKDF_ARGON2 executorKDF_ARGON2(CF_OPERATION("KDF_ARGON2"), modules, options); | 
32  | 12.7k  |     static ExecutorKDF_SSH executorKDF_SSH(ID("Cryptofuzz/Operation/KDF_SSH"), modules, options); | 
33  | 12.7k  |     static ExecutorKDF_X963 executorKDF_X963(CF_OPERATION("KDF_X963"), modules, options); | 
34  | 12.7k  |     static ExecutorKDF_BCRYPT executorKDF_BCRYPT(CF_OPERATION("KDF_BCRYPT"), modules, options); | 
35  | 12.7k  |     static ExecutorKDF_SP_800_108 executorKDF_SP_800_108(CF_OPERATION("KDF_SP_800_108"), modules, options); | 
36  | 12.7k  |     static ExecutorKDF_SRTP executorKDF_SRTP(CF_OPERATION("KDF_SRTP"), modules, options); | 
37  | 12.7k  |     static ExecutorKDF_SRTCP executorKDF_SRTCP(CF_OPERATION("KDF_SRTCP"), modules, options); | 
38  | 12.7k  |     static ExecutorECC_PrivateToPublic executorECC_PrivateToPublic(CF_OPERATION("ECC_PrivateToPublic"), modules, options); | 
39  | 12.7k  |     static ExecutorECC_ValidatePubkey executorECC_ValidatePubkey(CF_OPERATION("ECC_ValidatePubkey"), modules, options); | 
40  | 12.7k  |     static ExecutorECC_GenerateKeyPair executorECC_GenerateKeyPair(CF_OPERATION("ECC_GenerateKeyPair"), modules, options); | 
41  | 12.7k  |     static ExecutorECCSI_Sign executorECCSI_Sign(CF_OPERATION("ECCSI_Sign"), modules, options); | 
42  | 12.7k  |     static ExecutorECDSA_Sign executorECDSA_Sign(CF_OPERATION("ECDSA_Sign"), modules, options); | 
43  | 12.7k  |     static ExecutorECGDSA_Sign executorECGDSA_Sign(CF_OPERATION("ECGDSA_Sign"), modules, options); | 
44  | 12.7k  |     static ExecutorECRDSA_Sign executorECRDSA_Sign(CF_OPERATION("ECRDSA_Sign"), modules, options); | 
45  | 12.7k  |     static ExecutorSchnorr_Sign executorSchnorr_Sign(CF_OPERATION("Schnorr_Sign"), modules, options); | 
46  | 12.7k  |     static ExecutorECCSI_Verify executorECCSI_Verify(CF_OPERATION("ECCSI_Verify"), modules, options); | 
47  | 12.7k  |     static ExecutorECDSA_Verify executorECDSA_Verify(CF_OPERATION("ECDSA_Verify"), modules, options); | 
48  | 12.7k  |     static ExecutorECGDSA_Verify executorECGDSA_Verify(CF_OPERATION("ECGDSA_Verify"), modules, options); | 
49  | 12.7k  |     static ExecutorECRDSA_Verify executorECRDSA_Verify(CF_OPERATION("ECRDSA_Verify"), modules, options); | 
50  | 12.7k  |     static ExecutorSchnorr_Verify executorSchnorr_Verify(CF_OPERATION("Schnorr_Verify"), modules, options); | 
51  | 12.7k  |     static ExecutorECDSA_Recover executorECDSA_Recover(CF_OPERATION("ECDSA_Recover"), modules, options); | 
52  | 12.7k  |     static ExecutorDSA_Verify executorDSA_Verify(CF_OPERATION("DSA_Verify"), modules, options); | 
53  | 12.7k  |     static ExecutorDSA_Sign executorDSA_Sign(CF_OPERATION("DSA_Sign"), modules, options); | 
54  | 12.7k  |     static ExecutorDSA_GenerateParameters executorDSA_GenerateParameters(CF_OPERATION("DSA_GenerateParameters"), modules, options); | 
55  | 12.7k  |     static ExecutorDSA_PrivateToPublic executorDSA_PrivateToPublic(CF_OPERATION("DSA_PrivateToPublic"), modules, options); | 
56  | 12.7k  |     static ExecutorDSA_GenerateKeyPair executorDSA_GenerateKeyPair(CF_OPERATION("DSA_GenerateKeyPair"), modules, options); | 
57  | 12.7k  |     static ExecutorECDH_Derive executorECDH_Derive(CF_OPERATION("ECDH_Derive"), modules, options); | 
58  | 12.7k  |     static ExecutorECIES_Encrypt executorECIES_Encrypt(CF_OPERATION("ECIES_Encrypt"), modules, options); | 
59  | 12.7k  |     static ExecutorECIES_Decrypt executorECIES_Decrypt(CF_OPERATION("ECIES_Decrypt"), modules, options); | 
60  | 12.7k  |     static ExecutorECC_Point_Add executorECC_Point_Add(CF_OPERATION("ECC_Point_Add"), modules, options); | 
61  | 12.7k  |     static ExecutorECC_Point_Sub executorECC_Point_Sub(CF_OPERATION("ECC_Point_Sub"), modules, options); | 
62  | 12.7k  |     static ExecutorECC_Point_Mul executorECC_Point_Mul(CF_OPERATION("ECC_Point_Mul"), modules, options); | 
63  | 12.7k  |     static ExecutorECC_Point_Neg executorECC_Point_Neg(CF_OPERATION("ECC_Point_Neg"), modules, options); | 
64  | 12.7k  |     static ExecutorECC_Point_Dbl executorECC_Point_Dbl(CF_OPERATION("ECC_Point_Dbl"), modules, options); | 
65  | 12.7k  |     static ExecutorECC_Point_Cmp executorECC_Point_Cmp(CF_OPERATION("ECC_Point_Cmp"), modules, options); | 
66  | 12.7k  |     static ExecutorDH_GenerateKeyPair executorDH_GenerateKeyPair(CF_OPERATION("DH_GenerateKeyPair"), modules, options); | 
67  | 12.7k  |     static ExecutorDH_Derive executorDH_Derive(CF_OPERATION("DH_Derive"), modules, options); | 
68  | 12.7k  |     static ExecutorBignumCalc executorBignumCalc(CF_OPERATION("BignumCalc"), modules, options); | 
69  | 12.7k  |     static ExecutorBignumCalc_Fp2 executorBignumCalc_Fp2(CF_OPERATION("BignumCalc_Fp2"), modules, options); | 
70  | 12.7k  |     static ExecutorBignumCalc_Fp12 executorBignumCalc_Fp12(CF_OPERATION("BignumCalc_Fp12"), modules, options); | 
71  | 12.7k  |     static ExecutorBignumCalc_Mod_BLS12_381_R executorBignumCalc_mod_bls12_381_r(CF_OPERATION("BignumCalc_Mod_BLS12_381_R"), modules, options); | 
72  | 12.7k  |     static ExecutorBignumCalc_Mod_BLS12_381_P executorBignumCalc_mod_bls12_381_p(CF_OPERATION("BignumCalc_Mod_BLS12_381_P"), modules, options); | 
73  | 12.7k  |     static ExecutorBignumCalc_Mod_BLS12_377_R executorBignumCalc_mod_bls12_377_r(CF_OPERATION("BignumCalc_Mod_BLS12_377_R"), modules, options); | 
74  | 12.7k  |     static ExecutorBignumCalc_Mod_BLS12_377_P executorBignumCalc_mod_bls12_377_p(CF_OPERATION("BignumCalc_Mod_BLS12_377_P"), modules, options); | 
75  | 12.7k  |     static ExecutorBignumCalc_Mod_BN128_R executorBignumCalc_mod_bn128_r(CF_OPERATION("BignumCalc_Mod_BN128_R"), modules, options); | 
76  | 12.7k  |     static ExecutorBignumCalc_Mod_BN128_P executorBignumCalc_mod_bn128_p(CF_OPERATION("BignumCalc_Mod_BN128_P"), modules, options); | 
77  | 12.7k  |     static ExecutorBignumCalc_Mod_Vesta_R executorBignumCalc_mod_vesta_r(CF_OPERATION("BignumCalc_Mod_Vesta_R"), modules, options); | 
78  | 12.7k  |     static ExecutorBignumCalc_Mod_Vesta_P executorBignumCalc_mod_vesta_p(CF_OPERATION("BignumCalc_Mod_Vesta_P"), modules, options); | 
79  | 12.7k  |     static ExecutorBignumCalc_Mod_ED25519 executorBignumCalc_mod_ed25519(CF_OPERATION("BignumCalc_Mod_ED25519"), modules, options); | 
80  | 12.7k  |     static ExecutorBignumCalc_Mod_Edwards_R executorBignumCalc_mod_edwards_r(CF_OPERATION("BignumCalc_Mod_Edwards_R"), modules, options); | 
81  | 12.7k  |     static ExecutorBignumCalc_Mod_Edwards_P executorBignumCalc_mod_edwards_p(CF_OPERATION("BignumCalc_Mod_Edwards_P"), modules, options); | 
82  | 12.7k  |     static ExecutorBignumCalc_Mod_Goldilocks executorBignumCalc_mod_goldilocks(CF_OPERATION("BignumCalc_Mod_Goldilocks"), modules, options); | 
83  | 12.7k  |     static ExecutorBignumCalc_Mod_MNT4_R executorBignumCalc_mod_mnt4_r(CF_OPERATION("BignumCalc_Mod_MNT4_R"), modules, options); | 
84  | 12.7k  |     static ExecutorBignumCalc_Mod_MNT4_P executorBignumCalc_mod_mnt4_p(CF_OPERATION("BignumCalc_Mod_MNT4_P"), modules, options); | 
85  | 12.7k  |     static ExecutorBignumCalc_Mod_MNT6_R executorBignumCalc_mod_mnt6_r(CF_OPERATION("BignumCalc_Mod_MNT6_R"), modules, options); | 
86  | 12.7k  |     static ExecutorBignumCalc_Mod_MNT6_P executorBignumCalc_mod_mnt6_p(CF_OPERATION("BignumCalc_Mod_MNT6_P"), modules, options); | 
87  | 12.7k  |     static ExecutorBignumCalc_Mod_2Exp64 executorBignumCalc_mod_2exp64(CF_OPERATION("BignumCalc_Mod_2Exp64"), modules, options); | 
88  | 12.7k  |     static ExecutorBignumCalc_Mod_2Exp128 executorBignumCalc_mod_2exp128(CF_OPERATION("BignumCalc_Mod_2Exp128"), modules, options); | 
89  | 12.7k  |     static ExecutorBignumCalc_Mod_2Exp256 executorBignumCalc_mod_2exp256(CF_OPERATION("BignumCalc_Mod_2Exp256"), modules, options); | 
90  | 12.7k  |     static ExecutorBignumCalc_Mod_2Exp512 executorBignumCalc_mod_2exp512(CF_OPERATION("BignumCalc_Mod_2Exp512"), modules, options); | 
91  | 12.7k  |     static ExecutorBignumCalc_Mod_SECP256K1 executorBignumCalc_mod_secp256k1(CF_OPERATION("BignumCalc_Mod_SECP256K1"), modules, options); | 
92  | 12.7k  |     static ExecutorBignumCalc_Mod_SECP256K1_P executorBignumCalc_mod_secp256k1_p(CF_OPERATION("BignumCalc_Mod_SECP256K1_P"), modules, options); | 
93  | 12.7k  |     static ExecutorBLS_PrivateToPublic executorBLS_PrivateToPublic(CF_OPERATION("BLS_PrivateToPublic"), modules, options); | 
94  | 12.7k  |     static ExecutorBLS_PrivateToPublic_G2 executorBLS_PrivateToPublic_G2(CF_OPERATION("BLS_PrivateToPublic_G2"), modules, options); | 
95  | 12.7k  |     static ExecutorBLS_Sign executorBLS_Sign(CF_OPERATION("BLS_Sign"), modules, options); | 
96  | 12.7k  |     static ExecutorBLS_Verify executorBLS_Verify(CF_OPERATION("BLS_Verify"), modules, options); | 
97  | 12.7k  |     static ExecutorBLS_BatchSign executorBLS_BatchSign(CF_OPERATION("BLS_BatchSign"), modules, options); | 
98  | 12.7k  |     static ExecutorBLS_BatchVerify executorBLS_BatchVerify(CF_OPERATION("BLS_BatchVerify"), modules, options); | 
99  | 12.7k  |     static ExecutorBLS_Aggregate_G1 executorBLS_Aggregate_G1(CF_OPERATION("BLS_Aggregate_G1"), modules, options); | 
100  | 12.7k  |     static ExecutorBLS_Aggregate_G2 executorBLS_Aggregate_G2(CF_OPERATION("BLS_Aggregate_G2"), modules, options); | 
101  | 12.7k  |     static ExecutorBLS_Pairing executorBLS_Pairing(CF_OPERATION("BLS_Pairing"), modules, options); | 
102  | 12.7k  |     static ExecutorBLS_MillerLoop executorBLS_MillerLoop(CF_OPERATION("BLS_MillerLoop"), modules, options); | 
103  | 12.7k  |     static ExecutorBLS_FinalExp executorBLS_FinalExp(CF_OPERATION("BLS_FinalExp"), modules, options); | 
104  | 12.7k  |     static ExecutorBLS_HashToG1 executorBLS_HashToG1(CF_OPERATION("BLS_HashToG1"), modules, options); | 
105  | 12.7k  |     static ExecutorBLS_HashToG2 executorBLS_HashToG2(CF_OPERATION("BLS_HashToG2"), modules, options); | 
106  | 12.7k  |     static ExecutorBLS_MapToG1 executorBLS_MapToG1(CF_OPERATION("BLS_MapToG1"), modules, options); | 
107  | 12.7k  |     static ExecutorBLS_MapToG2 executorBLS_MapToG2(CF_OPERATION("BLS_MapToG2"), modules, options); | 
108  | 12.7k  |     static ExecutorBLS_IsG1OnCurve executorBLS_IsG1OnCurve(CF_OPERATION("BLS_IsG1OnCurve"), modules, options); | 
109  | 12.7k  |     static ExecutorBLS_IsG2OnCurve executorBLS_IsG2OnCurve(CF_OPERATION("BLS_IsG2OnCurve"), modules, options); | 
110  | 12.7k  |     static ExecutorBLS_GenerateKeyPair executorBLS_GenerateKeyPair(CF_OPERATION("BLS_GenerateKeyPair"), modules, options); | 
111  | 12.7k  |     static ExecutorBLS_Decompress_G1 executorBLS_Decompress_G1(CF_OPERATION("BLS_Decompress_G1"), modules, options); | 
112  | 12.7k  |     static ExecutorBLS_Compress_G1 executorBLS_Compress_G1(CF_OPERATION("BLS_Compress_G1"), modules, options); | 
113  | 12.7k  |     static ExecutorBLS_Decompress_G2 executorBLS_Decompress_G2(CF_OPERATION("BLS_Decompress_G2"), modules, options); | 
114  | 12.7k  |     static ExecutorBLS_Compress_G2 executorBLS_Compress_G2(CF_OPERATION("BLS_Compress_G2"), modules, options); | 
115  | 12.7k  |     static ExecutorBLS_G1_Add executorBLS_G1_Add(CF_OPERATION("BLS_G1_Add"), modules, options); | 
116  | 12.7k  |     static ExecutorBLS_G1_Mul executorBLS_G1_Mul(CF_OPERATION("BLS_G1_Mul"), modules, options); | 
117  | 12.7k  |     static ExecutorBLS_G1_IsEq executorBLS_G1_IsEq(CF_OPERATION("BLS_G1_IsEq"), modules, options); | 
118  | 12.7k  |     static ExecutorBLS_G1_Neg executorBLS_G1_Neg(CF_OPERATION("BLS_G1_Neg"), modules, options); | 
119  | 12.7k  |     static ExecutorBLS_G2_Add executorBLS_G2_Add(CF_OPERATION("BLS_G2_Add"), modules, options); | 
120  | 12.7k  |     static ExecutorBLS_G2_Mul executorBLS_G2_Mul(CF_OPERATION("BLS_G2_Mul"), modules, options); | 
121  | 12.7k  |     static ExecutorBLS_G2_IsEq executorBLS_G2_IsEq(CF_OPERATION("BLS_G2_IsEq"), modules, options); | 
122  | 12.7k  |     static ExecutorBLS_G2_Neg executorBLS_G2_Neg(CF_OPERATION("BLS_G2_Neg"), modules, options); | 
123  | 12.7k  |     static ExecutorBLS_G1_MultiExp executorBLS_G1_MultiExp(CF_OPERATION("BLS_G1_MultiExp"), modules, options); | 
124  | 12.7k  |     static ExecutorMisc executorMisc(CF_OPERATION("Misc"), modules, options); | 
125  | 12.7k  |     static ExecutorSR25519_Verify executorSR25519_Verify(CF_OPERATION("SR25519_Verify"), modules, options); | 
126  |  |  | 
127  | 12.7k  |     try { | 
128  |  |  | 
129  | 12.7k  |         Datasource ds(data, size);  | 
130  |  |  | 
131  | 12.7k  |         const auto operation = ds.Get<uint64_t>();  | 
132  |  |  | 
133  | 12.7k  |         if ( !options.operations.Have(operation) ) { | 
134  | 106  |             return;  | 
135  | 106  |         }  | 
136  |  |  | 
137  | 12.6k  |         const auto payload = ds.GetData(0, 1);  | 
138  |  |  | 
139  | 12.6k  |         switch ( operation ) { | 
140  | 887  |             case CF_OPERATION("Digest"): | 
141  | 887  |                 executorDigest.Run(ds, payload.data(), payload.size());  | 
142  | 887  |                 break;  | 
143  | 751  |             case CF_OPERATION("HMAC"): | 
144  | 751  |                 executorHMAC.Run(ds, payload.data(), payload.size());  | 
145  | 751  |                 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  | 0  |             case CF_OPERATION("KDF_HKDF"): | 
162  | 0  |                 executorKDF_HKDF.Run(ds, payload.data(), payload.size());  | 
163  | 0  |                 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  | 515  |             case CF_OPERATION("ECC_PrivateToPublic"): | 
198  | 515  |                 executorECC_PrivateToPublic.Run(ds, payload.data(), payload.size());  | 
199  | 515  |                 break;  | 
200  | 262  |             case CF_OPERATION("ECC_ValidatePubkey"): | 
201  | 262  |                 executorECC_ValidatePubkey.Run(ds, payload.data(), payload.size());  | 
202  | 262  |                 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  | 530  |             case CF_OPERATION("ECDSA_Sign"): | 
210  | 530  |                 executorECDSA_Sign.Run(ds, payload.data(), payload.size());  | 
211  | 530  |                 break;  | 
212  | 146  |             case CF_OPERATION("ECGDSA_Sign"): | 
213  | 146  |                 executorECGDSA_Sign.Run(ds, payload.data(), payload.size());  | 
214  | 146  |                 break;  | 
215  | 118  |             case CF_OPERATION("ECRDSA_Sign"): | 
216  | 118  |                 executorECRDSA_Sign.Run(ds, payload.data(), payload.size());  | 
217  | 118  |                 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  | 261  |             case CF_OPERATION("ECDSA_Verify"): | 
225  | 261  |                 executorECDSA_Verify.Run(ds, payload.data(), payload.size());  | 
226  | 261  |                 break;  | 
227  | 167  |             case CF_OPERATION("ECGDSA_Verify"): | 
228  | 167  |                 executorECGDSA_Verify.Run(ds, payload.data(), payload.size());  | 
229  | 167  |                 break;  | 
230  | 103  |             case CF_OPERATION("ECRDSA_Verify"): | 
231  | 103  |                 executorECRDSA_Verify.Run(ds, payload.data(), payload.size());  | 
232  | 103  |                 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  | 81  |             case CF_OPERATION("ECDH_Derive"): | 
255  | 81  |                 executorECDH_Derive.Run(ds, payload.data(), payload.size());  | 
256  | 81  |                 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  | 274  |             case CF_OPERATION("ECC_Point_Add"): | 
264  | 274  |                 executorECC_Point_Add.Run(ds, payload.data(), payload.size());  | 
265  | 274  |                 break;  | 
266  | 0  |             case CF_OPERATION("ECC_Point_Sub"): | 
267  | 0  |                 executorECC_Point_Sub.Run(ds, payload.data(), payload.size());  | 
268  | 0  |                 break;  | 
269  | 442  |             case CF_OPERATION("ECC_Point_Mul"): | 
270  | 442  |                 executorECC_Point_Mul.Run(ds, payload.data(), payload.size());  | 
271  | 442  |                 break;  | 
272  | 128  |             case CF_OPERATION("ECC_Point_Neg"): | 
273  | 128  |                 executorECC_Point_Neg.Run(ds, payload.data(), payload.size());  | 
274  | 128  |                 break;  | 
275  | 292  |             case CF_OPERATION("ECC_Point_Dbl"): | 
276  | 292  |                 executorECC_Point_Dbl.Run(ds, payload.data(), payload.size());  | 
277  | 292  |                 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  | 7.63k  |             case CF_OPERATION("BignumCalc"): | 
288  | 7.63k  |                 executorBignumCalc.Run(ds, payload.data(), payload.size());  | 
289  | 7.63k  |                 break;  | 
290  | 0  |             case CF_OPERATION("BignumCalc_Fp2"): | 
291  | 0  |                 executorBignumCalc_Fp2.Run(ds, payload.data(), payload.size());  | 
292  | 0  |                 break;  | 
293  | 0  |             case CF_OPERATION("BignumCalc_Fp12"): | 
294  | 0  |                 executorBignumCalc_Fp12.Run(ds, payload.data(), payload.size());  | 
295  | 0  |                 break;  | 
296  | 0  |             case CF_OPERATION("BignumCalc_Mod_BLS12_381_R"): | 
297  | 0  |                 executorBignumCalc_mod_bls12_381_r.Run(ds, payload.data(), payload.size());  | 
298  | 0  |                 break;  | 
299  | 0  |             case CF_OPERATION("BignumCalc_Mod_BLS12_381_P"): | 
300  | 0  |                 executorBignumCalc_mod_bls12_381_p.Run(ds, payload.data(), payload.size());  | 
301  | 0  |                 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  | 0  |             case CF_OPERATION("BLS_PrivateToPublic"): | 
363  | 0  |                 executorBLS_PrivateToPublic.Run(ds, payload.data(), payload.size());  | 
364  | 0  |                 break;  | 
365  | 0  |             case CF_OPERATION("BLS_PrivateToPublic_G2"): | 
366  | 0  |                 executorBLS_PrivateToPublic_G2.Run(ds, payload.data(), payload.size());  | 
367  | 0  |                 break;  | 
368  | 0  |             case CF_OPERATION("BLS_Sign"): | 
369  | 0  |                 executorBLS_Sign.Run(ds, payload.data(), payload.size());  | 
370  | 0  |                 break;  | 
371  | 0  |             case CF_OPERATION("BLS_Verify"): | 
372  | 0  |                 executorBLS_Verify.Run(ds, payload.data(), payload.size());  | 
373  | 0  |                 break;  | 
374  | 0  |             case CF_OPERATION("BLS_BatchSign"): | 
375  | 0  |                 executorBLS_BatchSign.Run(ds, payload.data(), payload.size());  | 
376  | 0  |                 break;  | 
377  | 0  |             case CF_OPERATION("BLS_BatchVerify"): | 
378  | 0  |                 executorBLS_BatchVerify.Run(ds, payload.data(), payload.size());  | 
379  | 0  |                 break;  | 
380  | 0  |             case CF_OPERATION("BLS_Aggregate_G1"): | 
381  | 0  |                 executorBLS_Aggregate_G1.Run(ds, payload.data(), payload.size());  | 
382  | 0  |                 break;  | 
383  | 0  |             case CF_OPERATION("BLS_Aggregate_G2"): | 
384  | 0  |                 executorBLS_Aggregate_G2.Run(ds, payload.data(), payload.size());  | 
385  | 0  |                 break;  | 
386  | 0  |             case CF_OPERATION("BLS_Pairing"): | 
387  | 0  |                 executorBLS_Pairing.Run(ds, payload.data(), payload.size());  | 
388  | 0  |                 break;  | 
389  | 0  |             case CF_OPERATION("BLS_MillerLoop"): | 
390  | 0  |                 executorBLS_MillerLoop.Run(ds, payload.data(), payload.size());  | 
391  | 0  |                 break;  | 
392  | 0  |             case CF_OPERATION("BLS_FinalExp"): | 
393  | 0  |                 executorBLS_FinalExp.Run(ds, payload.data(), payload.size());  | 
394  | 0  |                 break;  | 
395  | 0  |             case CF_OPERATION("BLS_HashToG1"): | 
396  | 0  |                 executorBLS_HashToG1.Run(ds, payload.data(), payload.size());  | 
397  | 0  |                 break;  | 
398  | 0  |             case CF_OPERATION("BLS_HashToG2"): | 
399  | 0  |                 executorBLS_HashToG2.Run(ds, payload.data(), payload.size());  | 
400  | 0  |                 break;  | 
401  | 0  |             case CF_OPERATION("BLS_MapToG1"): | 
402  | 0  |                 executorBLS_MapToG1.Run(ds, payload.data(), payload.size());  | 
403  | 0  |                 break;  | 
404  | 0  |             case CF_OPERATION("BLS_MapToG2"): | 
405  | 0  |                 executorBLS_MapToG2.Run(ds, payload.data(), payload.size());  | 
406  | 0  |                 break;  | 
407  | 0  |             case CF_OPERATION("BLS_IsG1OnCurve"): | 
408  | 0  |                 executorBLS_IsG1OnCurve.Run(ds, payload.data(), payload.size());  | 
409  | 0  |                 break;  | 
410  | 0  |             case CF_OPERATION("BLS_IsG2OnCurve"): | 
411  | 0  |                 executorBLS_IsG2OnCurve.Run(ds, payload.data(), payload.size());  | 
412  | 0  |                 break;  | 
413  | 0  |             case CF_OPERATION("BLS_GenerateKeyPair"): | 
414  | 0  |                 executorBLS_GenerateKeyPair.Run(ds, payload.data(), payload.size());  | 
415  | 0  |                 break;  | 
416  | 0  |             case CF_OPERATION("BLS_Decompress_G1"): | 
417  | 0  |                 executorBLS_Decompress_G1.Run(ds, payload.data(), payload.size());  | 
418  | 0  |                 break;  | 
419  | 0  |             case CF_OPERATION("BLS_Compress_G1"): | 
420  | 0  |                 executorBLS_Compress_G1.Run(ds, payload.data(), payload.size());  | 
421  | 0  |                 break;  | 
422  | 0  |             case CF_OPERATION("BLS_Decompress_G2"): | 
423  | 0  |                 executorBLS_Decompress_G2.Run(ds, payload.data(), payload.size());  | 
424  | 0  |                 break;  | 
425  | 0  |             case CF_OPERATION("BLS_Compress_G2"): | 
426  | 0  |                 executorBLS_Compress_G2.Run(ds, payload.data(), payload.size());  | 
427  | 0  |                 break;  | 
428  | 0  |             case CF_OPERATION("BLS_G1_Add"): | 
429  | 0  |                 executorBLS_G1_Add.Run(ds, payload.data(), payload.size());  | 
430  | 0  |                 break;  | 
431  | 0  |             case CF_OPERATION("BLS_G1_Mul"): | 
432  | 0  |                 executorBLS_G1_Mul.Run(ds, payload.data(), payload.size());  | 
433  | 0  |                 break;  | 
434  | 0  |             case CF_OPERATION("BLS_G1_IsEq"): | 
435  | 0  |                 executorBLS_G1_IsEq.Run(ds, payload.data(), payload.size());  | 
436  | 0  |                 break;  | 
437  | 0  |             case CF_OPERATION("BLS_G1_Neg"): | 
438  | 0  |                 executorBLS_G1_Neg.Run(ds, payload.data(), payload.size());  | 
439  | 0  |                 break;  | 
440  | 0  |             case CF_OPERATION("BLS_G2_Add"): | 
441  | 0  |                 executorBLS_G2_Add.Run(ds, payload.data(), payload.size());  | 
442  | 0  |                 break;  | 
443  | 0  |             case CF_OPERATION("BLS_G2_Mul"): | 
444  | 0  |                 executorBLS_G2_Mul.Run(ds, payload.data(), payload.size());  | 
445  | 0  |                 break;  | 
446  | 0  |             case CF_OPERATION("BLS_G2_IsEq"): | 
447  | 0  |                 executorBLS_G2_IsEq.Run(ds, payload.data(), payload.size());  | 
448  | 0  |                 break;  | 
449  | 0  |             case CF_OPERATION("BLS_G2_Neg"): | 
450  | 0  |                 executorBLS_G2_Neg.Run(ds, payload.data(), payload.size());  | 
451  | 0  |                 break;  | 
452  | 0  |             case CF_OPERATION("BLS_G1_MultiExp"): | 
453  | 0  |                 executorBLS_G1_MultiExp.Run(ds, payload.data(), payload.size());  | 
454  | 0  |                 break;  | 
455  | 0  |             case CF_OPERATION("Misc"): | 
456  | 0  |                 executorMisc.Run(ds, payload.data(), payload.size());  | 
457  | 0  |                 break;  | 
458  | 0  |             case CF_OPERATION("SR25519_Verify"): | 
459  | 0  |                 executorSR25519_Verify.Run(ds, payload.data(), payload.size());  | 
460  | 0  |                 break;  | 
461  | 12.6k  |         }  | 
462  | 12.6k  |     } catch ( Datasource::OutOfData& ) { | 
463  | 351  |     }  | 
464  | 12.7k  | };  | 
465  |  |  | 
466  |  | Driver::Driver(const Options options) :  | 
467  |  |     options(options)  | 
468  | 2  | { } | 
469  |  |  | 
470  | 2  | const Options* Driver::GetOptionsPtr(void) const { | 
471  | 2  |     return &options;  | 
472  | 2  | }  | 
473  |  |  | 
474  |  | } /* namespace cryptofuzz */  |