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