/src/cryptofuzz/executor.cpp
Line  | Count  | Source (jump to first uncovered line)  | 
1  |  | #include "executor.h"  | 
2  |  | #include "tests.h"  | 
3  |  | #include "mutatorpool.h"  | 
4  |  | #include "config.h"  | 
5  |  | #include <cryptofuzz/util.h>  | 
6  |  | #include <fuzzing/memory.hpp>  | 
7  |  | #include <algorithm>  | 
8  |  | #include <set>  | 
9  |  | #include <boost/multiprecision/cpp_int.hpp>  | 
10  |  |  | 
11  |  | uint32_t PRNG(void);  | 
12  |  |  | 
13  | 227k  | #define RETURN_IF_DISABLED(option, id) if ( !option.Have(id) ) return std::nullopt;  | 
14  |  |  | 
15  |  | namespace cryptofuzz { | 
16  |  |  | 
17  | 97.3k  | static std::string GxCoordMutate(const uint64_t curveID, std::string coord) { | 
18  | 97.3k  |     if ( (PRNG()%10) != 0 ) { | 
19  | 87.4k  |         return coord;  | 
20  | 87.4k  |     }  | 
21  |  |  | 
22  | 9.88k  |     if ( curveID == CF_ECC_CURVE("BLS12_381") ) { | 
23  | 8.73k  |         const static auto prime = boost::multiprecision::cpp_int("4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787"); | 
24  | 8.73k  |         return boost::multiprecision::cpp_int(boost::multiprecision::cpp_int(coord) + prime).str();  | 
25  | 8.73k  |     } else if ( curveID == CF_ECC_CURVE("alt_bn128") ) { | 
26  | 120  |         const static auto prime = boost::multiprecision::cpp_int("21888242871839275222246405745257275088696311157297823662689037894645226208583"); | 
27  | 120  |         return boost::multiprecision::cpp_int(boost::multiprecision::cpp_int(coord) + prime).str();  | 
28  | 1.02k  |     } else { | 
29  | 1.02k  |         return coord;  | 
30  | 1.02k  |     }  | 
31  | 9.88k  | }  | 
32  | 19.1k  | static void G1AddToPool(const uint64_t curveID, const std::string& g1_x, const std::string& g1_y) { | 
33  | 19.1k  |     Pool_CurveBLSG1.Set({ curveID, GxCoordMutate(curveID, g1_x), GxCoordMutate(curveID, g1_y) }); | 
34  | 19.1k  | }  | 
35  |  |  | 
36  |  | static void G2AddToPool(const uint64_t curveID,  | 
37  |  |                         const std::string& g2_v,  | 
38  |  |                         const std::string& g2_w,  | 
39  |  |                         const std::string& g2_x,  | 
40  | 14.7k  |                         const std::string& g2_y) { | 
41  |  |  | 
42  | 14.7k  |     Pool_CurveBLSG2.Set({ curveID, | 
43  | 14.7k  |                                     GxCoordMutate(curveID, g2_v),  | 
44  | 14.7k  |                                     GxCoordMutate(curveID, g2_w),  | 
45  | 14.7k  |                                     GxCoordMutate(curveID, g2_x),  | 
46  | 14.7k  |                                     GxCoordMutate(curveID, g2_y)  | 
47  | 14.7k  |     });  | 
48  | 14.7k  | }  | 
49  |  |  | 
50  |  | /* Specialization for operation::Digest */  | 
51  | 0  | template<> void ExecutorBase<component::Digest, operation::Digest>::postprocess(std::shared_ptr<Module> module, operation::Digest& op, const ExecutorBase<component::Digest, operation::Digest>::ResultPair& result) const { | 
52  | 0  |     (void)module;  | 
53  | 0  |     (void)op;  | 
54  |  | 
  | 
55  | 0  |     if ( result.second != std::nullopt ) { | 
56  | 0  |         fuzzing::memory::memory_test_msan(result.second->GetPtr(), result.second->GetSize());  | 
57  | 0  |     }  | 
58  | 0  | }  | 
59  |  |  | 
60  | 0  | template<> std::optional<component::Digest> ExecutorBase<component::Digest, operation::Digest>::callModule(std::shared_ptr<Module> module, operation::Digest& op) const { | 
61  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
62  |  | 
  | 
63  | 0  |     return module->OpDigest(op);  | 
64  | 0  | }  | 
65  |  |  | 
66  |  | /* Specialization for operation::HMAC */  | 
67  | 0  | template<> void ExecutorBase<component::MAC, operation::HMAC>::postprocess(std::shared_ptr<Module> module, operation::HMAC& op, const ExecutorBase<component::MAC, operation::HMAC>::ResultPair& result) const { | 
68  | 0  |     (void)module;  | 
69  | 0  |     (void)op;  | 
70  |  | 
  | 
71  | 0  |     if ( result.second != std::nullopt ) { | 
72  | 0  |         fuzzing::memory::memory_test_msan(result.second->GetPtr(), result.second->GetSize());  | 
73  | 0  |     }  | 
74  | 0  | }  | 
75  |  |  | 
76  | 0  | template<> std::optional<component::MAC> ExecutorBase<component::MAC, operation::HMAC>::callModule(std::shared_ptr<Module> module, operation::HMAC& op) const { | 
77  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
78  |  | 
  | 
79  | 0  |     return module->OpHMAC(op);  | 
80  | 0  | }  | 
81  |  |  | 
82  |  | /* Specialization for operation::UMAC */  | 
83  | 0  | template<> void ExecutorBase<component::MAC, operation::UMAC>::postprocess(std::shared_ptr<Module> module, operation::UMAC& op, const ExecutorBase<component::MAC, operation::UMAC>::ResultPair& result) const { | 
84  | 0  |     (void)module;  | 
85  | 0  |     (void)op;  | 
86  |  | 
  | 
87  | 0  |     if ( result.second != std::nullopt ) { | 
88  | 0  |         fuzzing::memory::memory_test_msan(result.second->GetPtr(), result.second->GetSize());  | 
89  | 0  |     }  | 
90  | 0  | }  | 
91  |  |  | 
92  | 0  | template<> std::optional<component::MAC> ExecutorBase<component::MAC, operation::UMAC>::callModule(std::shared_ptr<Module> module, operation::UMAC& op) const { | 
93  | 0  |     return module->OpUMAC(op);  | 
94  | 0  | }  | 
95  |  |  | 
96  |  | /* Specialization for operation::CMAC */  | 
97  | 0  | template<> void ExecutorBase<component::MAC, operation::CMAC>::postprocess(std::shared_ptr<Module> module, operation::CMAC& op, const ExecutorBase<component::MAC, operation::CMAC>::ResultPair& result) const { | 
98  | 0  |     (void)module;  | 
99  | 0  |     (void)op;  | 
100  |  | 
  | 
101  | 0  |     if ( result.second != std::nullopt ) { | 
102  | 0  |         fuzzing::memory::memory_test_msan(result.second->GetPtr(), result.second->GetSize());  | 
103  | 0  |     }  | 
104  | 0  | }  | 
105  |  |  | 
106  | 0  | template<> std::optional<component::MAC> ExecutorBase<component::MAC, operation::CMAC>::callModule(std::shared_ptr<Module> module, operation::CMAC& op) const { | 
107  | 0  |     RETURN_IF_DISABLED(options.ciphers, op.cipher.cipherType.Get());  | 
108  |  | 
  | 
109  | 0  |     return module->OpCMAC(op);  | 
110  | 0  | }  | 
111  |  |  | 
112  |  | /* Specialization for operation::SymmetricEncrypt */  | 
113  | 0  | template<> void ExecutorBase<component::Ciphertext, operation::SymmetricEncrypt>::postprocess(std::shared_ptr<Module> module, operation::SymmetricEncrypt& op, const ExecutorBase<component::Ciphertext, operation::SymmetricEncrypt>::ResultPair& result) const { | 
114  | 0  |     if ( options.noDecrypt == true ) { | 
115  | 0  |         return;  | 
116  | 0  |     }  | 
117  |  |  | 
118  | 0  |     if ( result.second != std::nullopt ) { | 
119  | 0  |         fuzzing::memory::memory_test_msan(result.second->ciphertext.GetPtr(), result.second->ciphertext.GetSize());  | 
120  | 0  |         if ( result.second->tag != std::nullopt ) { | 
121  | 0  |             fuzzing::memory::memory_test_msan(result.second->tag->GetPtr(), result.second->tag->GetSize());  | 
122  | 0  |         }  | 
123  | 0  |     }  | 
124  |  | 
  | 
125  | 0  |     if ( op.cleartext.GetSize() > 0 && result.second != std::nullopt && result.second->ciphertext.GetSize() > 0 ) { | 
126  | 0  |         using fuzzing::datasource::ID;  | 
127  |  | 
  | 
128  | 0  |         bool tryDecrypt = true;  | 
129  |  | 
  | 
130  | 0  |         if ( module->ID == CF_MODULE("OpenSSL") ) { | 
131  | 0  |             switch ( op.cipher.cipherType.Get() ) { | 
132  | 0  |                 case    ID("Cryptofuzz/Cipher/AES_128_OCB"): | 
133  | 0  |                 case    ID("Cryptofuzz/Cipher/AES_256_OCB"): | 
134  | 0  |                     tryDecrypt = false;  | 
135  | 0  |                     break;  | 
136  | 0  |                 case    ID("Cryptofuzz/Cipher/AES_128_GCM"): | 
137  | 0  |                 case    ID("Cryptofuzz/Cipher/AES_192_GCM"): | 
138  | 0  |                 case    ID("Cryptofuzz/Cipher/AES_256_GCM"): | 
139  | 0  |                 case    ID("Cryptofuzz/Cipher/AES_128_CCM"): | 
140  | 0  |                 case    ID("Cryptofuzz/Cipher/AES_192_CCM"): | 
141  | 0  |                 case    ID("Cryptofuzz/Cipher/AES_256_CCM"): | 
142  | 0  |                 case    ID("Cryptofuzz/Cipher/ARIA_128_CCM"): | 
143  | 0  |                 case    ID("Cryptofuzz/Cipher/ARIA_192_CCM"): | 
144  | 0  |                 case    ID("Cryptofuzz/Cipher/ARIA_256_CCM"): | 
145  | 0  |                 case    ID("Cryptofuzz/Cipher/ARIA_128_GCM"): | 
146  | 0  |                 case    ID("Cryptofuzz/Cipher/ARIA_192_GCM"): | 
147  | 0  |                 case    ID("Cryptofuzz/Cipher/ARIA_256_GCM"): | 
148  | 0  |                     if ( op.tagSize == std::nullopt ) { | 
149  |  |                         /* OpenSSL fails to decrypt its own CCM and GCM ciphertexts if  | 
150  |  |                          * a tag is not included  | 
151  |  |                          */  | 
152  | 0  |                         tryDecrypt = false;  | 
153  | 0  |                     }  | 
154  | 0  |                     break;  | 
155  | 0  |             }  | 
156  | 0  |         }  | 
157  |  |  | 
158  | 0  |         if ( tryDecrypt == true ) { | 
159  |  |             /* Try to decrypt the encrypted data */  | 
160  |  |  | 
161  |  |             /* Construct a SymmetricDecrypt instance with the SymmetricEncrypt instance */  | 
162  | 0  |             auto opDecrypt = operation::SymmetricDecrypt(  | 
163  |  |                     /* The SymmetricEncrypt instance */  | 
164  | 0  |                     op,  | 
165  |  |  | 
166  |  |                     /* The ciphertext generated by OpSymmetricEncrypt */  | 
167  | 0  |                     *(result.second),  | 
168  |  |  | 
169  |  |                     /* The size of the output buffer that OpSymmetricDecrypt() must use. */  | 
170  | 0  |                     op.cleartext.GetSize() + 32,  | 
171  |  | 
  | 
172  | 0  |                     op.aad,  | 
173  |  |  | 
174  |  |                     /* Empty modifier */  | 
175  | 0  |                     {}); | 
176  |  | 
  | 
177  | 0  |             const auto cleartext = module->OpSymmetricDecrypt(opDecrypt);  | 
178  |  | 
  | 
179  | 0  |             if ( cleartext == std::nullopt ) { | 
180  |  |                 /* Decryption failed, OpSymmetricDecrypt() returned std::nullopt */  | 
181  | 0  |                 printf("Cannot decrypt ciphertext\n\n"); | 
182  | 0  |                 printf("Operation:\n%s\n", op.ToString().c_str()); | 
183  | 0  |                 printf("Ciphertext: %s\n", util::HexDump(result.second->ciphertext.Get()).c_str()); | 
184  | 0  |                 printf("Tag: %s\n", result.second->tag ? util::HexDump(result.second->tag->Get()).c_str() : "nullopt"); | 
185  | 0  |                 abort(  | 
186  | 0  |                         {module->name}, | 
187  | 0  |                         op.Name(),  | 
188  | 0  |                         op.GetAlgorithmString(),  | 
189  | 0  |                         "cannot decrypt ciphertext"  | 
190  | 0  |                 );  | 
191  | 0  |             } else if ( cleartext->Get() != op.cleartext.Get() ) { | 
192  |  |                 /* Decryption ostensibly succeeded, but the cleartext returned by OpSymmetricDecrypt()  | 
193  |  |                  * does not match to original cleartext */  | 
194  |  | 
  | 
195  | 0  |                 printf("Cannot decrypt ciphertext (but decryption ostensibly succeeded)\n\n"); | 
196  | 0  |                 printf("Operation:\n%s\n", op.ToString().c_str()); | 
197  | 0  |                 printf("Ciphertext: %s\n", util::HexDump(result.second->ciphertext.Get()).c_str()); | 
198  | 0  |                 printf("Tag: %s\n", result.second->tag ? util::HexDump(result.second->tag->Get()).c_str() : "nullopt"); | 
199  | 0  |                 printf("Purported cleartext: %s\n", util::HexDump(cleartext->Get()).c_str()); | 
200  | 0  |                 abort(  | 
201  | 0  |                         {module->name}, | 
202  | 0  |                         op.Name(),  | 
203  | 0  |                         op.GetAlgorithmString(),  | 
204  | 0  |                         "cannot decrypt ciphertext"  | 
205  | 0  |                 );  | 
206  | 0  |             }  | 
207  | 0  |         }  | 
208  | 0  |     }  | 
209  | 0  | }  | 
210  |  |  | 
211  | 0  | template<> std::optional<component::Ciphertext> ExecutorBase<component::Ciphertext, operation::SymmetricEncrypt>::callModule(std::shared_ptr<Module> module, operation::SymmetricEncrypt& op) const { | 
212  | 0  |     RETURN_IF_DISABLED(options.ciphers , op.cipher.cipherType.Get());  | 
213  |  | 
  | 
214  | 0  |     return module->OpSymmetricEncrypt(op);  | 
215  | 0  | }  | 
216  |  |  | 
217  |  | /* Specialization for operation::SymmetricDecrypt */  | 
218  | 0  | template<> void ExecutorBase<component::MAC, operation::SymmetricDecrypt>::postprocess(std::shared_ptr<Module> module, operation::SymmetricDecrypt& op, const ExecutorBase<component::MAC, operation::SymmetricDecrypt>::ResultPair& result) const { | 
219  | 0  |     (void)module;  | 
220  | 0  |     (void)op;  | 
221  |  | 
  | 
222  | 0  |     if ( result.second != std::nullopt ) { | 
223  | 0  |         fuzzing::memory::memory_test_msan(result.second->GetPtr(), result.second->GetSize());  | 
224  | 0  |     }  | 
225  | 0  | }  | 
226  |  |  | 
227  | 0  | template<> std::optional<component::MAC> ExecutorBase<component::MAC, operation::SymmetricDecrypt>::callModule(std::shared_ptr<Module> module, operation::SymmetricDecrypt& op) const { | 
228  | 0  |     RETURN_IF_DISABLED(options.ciphers , op.cipher.cipherType.Get());  | 
229  |  | 
  | 
230  | 0  |     return module->OpSymmetricDecrypt(op);  | 
231  | 0  | }  | 
232  |  |  | 
233  |  | /* Specialization for operation::KDF_SCRYPT */  | 
234  | 0  | template<> void ExecutorBase<component::Key, operation::KDF_SCRYPT>::postprocess(std::shared_ptr<Module> module, operation::KDF_SCRYPT& op, const ExecutorBase<component::Key, operation::KDF_SCRYPT>::ResultPair& result) const { | 
235  | 0  |     (void)module;  | 
236  | 0  |     (void)op;  | 
237  |  | 
  | 
238  | 0  |     if ( result.second != std::nullopt ) { | 
239  | 0  |         fuzzing::memory::memory_test_msan(result.second->GetPtr(), result.second->GetSize());  | 
240  | 0  |     }  | 
241  | 0  | }  | 
242  |  |  | 
243  | 0  | template<> std::optional<component::Key> ExecutorBase<component::Key, operation::KDF_SCRYPT>::callModule(std::shared_ptr<Module> module, operation::KDF_SCRYPT& op) const { | 
244  | 0  |     return module->OpKDF_SCRYPT(op);  | 
245  | 0  | }  | 
246  |  |  | 
247  |  | /* Specialization for operation::KDF_HKDF */  | 
248  | 2.03k  | template<> void ExecutorBase<component::Key, operation::KDF_HKDF>::postprocess(std::shared_ptr<Module> module, operation::KDF_HKDF& op, const ExecutorBase<component::Key, operation::KDF_HKDF>::ResultPair& result) const { | 
249  | 2.03k  |     (void)module;  | 
250  | 2.03k  |     (void)op;  | 
251  |  |  | 
252  | 2.03k  |     if ( result.second != std::nullopt ) { | 
253  | 222  |         fuzzing::memory::memory_test_msan(result.second->GetPtr(), result.second->GetSize());  | 
254  | 222  |     }  | 
255  | 2.03k  | }  | 
256  |  |  | 
257  | 2.03k  | template<> std::optional<component::Key> ExecutorBase<component::Key, operation::KDF_HKDF>::callModule(std::shared_ptr<Module> module, operation::KDF_HKDF& op) const { | 
258  | 2.03k  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
259  |  |  | 
260  | 1.53k  |     return module->OpKDF_HKDF(op);  | 
261  | 2.03k  | }  | 
262  |  |  | 
263  |  | /* Specialization for operation::KDF_PBKDF */  | 
264  | 0  | template<> void ExecutorBase<component::Key, operation::KDF_PBKDF>::postprocess(std::shared_ptr<Module> module, operation::KDF_PBKDF& op, const ExecutorBase<component::Key, operation::KDF_PBKDF>::ResultPair& result) const { | 
265  | 0  |     (void)module;  | 
266  | 0  |     (void)op;  | 
267  |  | 
  | 
268  | 0  |     if ( result.second != std::nullopt ) { | 
269  | 0  |         fuzzing::memory::memory_test_msan(result.second->GetPtr(), result.second->GetSize());  | 
270  | 0  |     }  | 
271  | 0  | }  | 
272  |  |  | 
273  | 0  | template<> std::optional<component::Key> ExecutorBase<component::Key, operation::KDF_PBKDF>::callModule(std::shared_ptr<Module> module, operation::KDF_PBKDF& op) const { | 
274  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
275  |  | 
  | 
276  | 0  |     return module->OpKDF_PBKDF(op);  | 
277  | 0  | }  | 
278  |  |  | 
279  |  | /* Specialization for operation::KDF_PBKDF1 */  | 
280  | 0  | template<> void ExecutorBase<component::Key, operation::KDF_PBKDF1>::postprocess(std::shared_ptr<Module> module, operation::KDF_PBKDF1& op, const ExecutorBase<component::Key, operation::KDF_PBKDF1>::ResultPair& result) const { | 
281  | 0  |     (void)module;  | 
282  | 0  |     (void)op;  | 
283  |  | 
  | 
284  | 0  |     if ( result.second != std::nullopt ) { | 
285  | 0  |         fuzzing::memory::memory_test_msan(result.second->GetPtr(), result.second->GetSize());  | 
286  | 0  |     }  | 
287  | 0  | }  | 
288  |  |  | 
289  | 0  | template<> std::optional<component::Key> ExecutorBase<component::Key, operation::KDF_PBKDF1>::callModule(std::shared_ptr<Module> module, operation::KDF_PBKDF1& op) const { | 
290  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
291  |  | 
  | 
292  | 0  |     return module->OpKDF_PBKDF1(op);  | 
293  | 0  | }  | 
294  |  |  | 
295  |  | /* Specialization for operation::KDF_PBKDF2 */  | 
296  | 0  | template<> void ExecutorBase<component::Key, operation::KDF_PBKDF2>::postprocess(std::shared_ptr<Module> module, operation::KDF_PBKDF2& op, const ExecutorBase<component::Key, operation::KDF_PBKDF2>::ResultPair& result) const { | 
297  | 0  |     (void)module;  | 
298  | 0  |     (void)op;  | 
299  |  | 
  | 
300  | 0  |     if ( result.second != std::nullopt ) { | 
301  | 0  |         fuzzing::memory::memory_test_msan(result.second->GetPtr(), result.second->GetSize());  | 
302  | 0  |     }  | 
303  | 0  | }  | 
304  |  |  | 
305  | 0  | template<> std::optional<component::Key> ExecutorBase<component::Key, operation::KDF_PBKDF2>::callModule(std::shared_ptr<Module> module, operation::KDF_PBKDF2& op) const { | 
306  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
307  |  | 
  | 
308  | 0  |     return module->OpKDF_PBKDF2(op);  | 
309  | 0  | }  | 
310  |  |  | 
311  |  | /* Specialization for operation::KDF_ARGON2 */  | 
312  | 0  | template<> void ExecutorBase<component::Key, operation::KDF_ARGON2>::postprocess(std::shared_ptr<Module> module, operation::KDF_ARGON2& op, const ExecutorBase<component::Key, operation::KDF_ARGON2>::ResultPair& result) const { | 
313  | 0  |     (void)module;  | 
314  | 0  |     (void)op;  | 
315  |  | 
  | 
316  | 0  |     if ( result.second != std::nullopt ) { | 
317  | 0  |         fuzzing::memory::memory_test_msan(result.second->GetPtr(), result.second->GetSize());  | 
318  | 0  |     }  | 
319  | 0  | }  | 
320  |  |  | 
321  | 0  | template<> std::optional<component::Key> ExecutorBase<component::Key, operation::KDF_ARGON2>::callModule(std::shared_ptr<Module> module, operation::KDF_ARGON2& op) const { | 
322  | 0  |     return module->OpKDF_ARGON2(op);  | 
323  | 0  | }  | 
324  |  |  | 
325  |  | /* Specialization for operation::KDF_SSH */  | 
326  | 0  | template<> void ExecutorBase<component::Key, operation::KDF_SSH>::postprocess(std::shared_ptr<Module> module, operation::KDF_SSH& op, const ExecutorBase<component::Key, operation::KDF_SSH>::ResultPair& result) const { | 
327  | 0  |     (void)module;  | 
328  | 0  |     (void)op;  | 
329  |  | 
  | 
330  | 0  |     if ( result.second != std::nullopt ) { | 
331  | 0  |         fuzzing::memory::memory_test_msan(result.second->GetPtr(), result.second->GetSize());  | 
332  | 0  |     }  | 
333  | 0  | }  | 
334  |  |  | 
335  | 0  | template<> std::optional<component::Key> ExecutorBase<component::Key, operation::KDF_SSH>::callModule(std::shared_ptr<Module> module, operation::KDF_SSH& op) const { | 
336  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
337  |  | 
  | 
338  | 0  |     return module->OpKDF_SSH(op);  | 
339  | 0  | }  | 
340  |  |  | 
341  |  | /* Specialization for operation::KDF_TLS1_PRF */  | 
342  | 0  | template<> void ExecutorBase<component::Key, operation::KDF_TLS1_PRF>::postprocess(std::shared_ptr<Module> module, operation::KDF_TLS1_PRF& op, const ExecutorBase<component::Key, operation::KDF_TLS1_PRF>::ResultPair& result) const { | 
343  | 0  |     (void)module;  | 
344  | 0  |     (void)op;  | 
345  |  | 
  | 
346  | 0  |     if ( result.second != std::nullopt ) { | 
347  | 0  |         fuzzing::memory::memory_test_msan(result.second->GetPtr(), result.second->GetSize());  | 
348  | 0  |     }  | 
349  | 0  | }  | 
350  |  |  | 
351  | 0  | template<> std::optional<component::Key> ExecutorBase<component::Key, operation::KDF_TLS1_PRF>::callModule(std::shared_ptr<Module> module, operation::KDF_TLS1_PRF& op) const { | 
352  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
353  |  | 
  | 
354  | 0  |     return module->OpKDF_TLS1_PRF(op);  | 
355  | 0  | }  | 
356  |  |  | 
357  |  | /* Specialization for operation::KDF_X963 */  | 
358  | 0  | template<> void ExecutorBase<component::Key, operation::KDF_X963>::postprocess(std::shared_ptr<Module> module, operation::KDF_X963& op, const ExecutorBase<component::Key, operation::KDF_X963>::ResultPair& result) const { | 
359  | 0  |     (void)module;  | 
360  | 0  |     (void)op;  | 
361  |  | 
  | 
362  | 0  |     if ( result.second != std::nullopt ) { | 
363  | 0  |         fuzzing::memory::memory_test_msan(result.second->GetPtr(), result.second->GetSize());  | 
364  | 0  |     }  | 
365  | 0  | }  | 
366  |  |  | 
367  | 0  | template<> std::optional<component::Key> ExecutorBase<component::Key, operation::KDF_X963>::callModule(std::shared_ptr<Module> module, operation::KDF_X963& op) const { | 
368  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
369  |  | 
  | 
370  | 0  |     return module->OpKDF_X963(op);  | 
371  | 0  | }  | 
372  |  |  | 
373  |  | /* Specialization for operation::KDF_BCRYPT */  | 
374  | 0  | template<> void ExecutorBase<component::Key, operation::KDF_BCRYPT>::postprocess(std::shared_ptr<Module> module, operation::KDF_BCRYPT& op, const ExecutorBase<component::Key, operation::KDF_BCRYPT>::ResultPair& result) const { | 
375  | 0  |     (void)module;  | 
376  | 0  |     (void)op;  | 
377  |  | 
  | 
378  | 0  |     if ( result.second != std::nullopt ) { | 
379  | 0  |         fuzzing::memory::memory_test_msan(result.second->GetPtr(), result.second->GetSize());  | 
380  | 0  |     }  | 
381  | 0  | }  | 
382  |  |  | 
383  | 0  | template<> std::optional<component::Key> ExecutorBase<component::Key, operation::KDF_BCRYPT>::callModule(std::shared_ptr<Module> module, operation::KDF_BCRYPT& op) const { | 
384  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
385  |  | 
  | 
386  | 0  |     return module->OpKDF_BCRYPT(op);  | 
387  | 0  | }  | 
388  |  |  | 
389  |  | /* Specialization for operation::KDF_SP_800_108 */  | 
390  | 0  | template<> void ExecutorBase<component::Key, operation::KDF_SP_800_108>::postprocess(std::shared_ptr<Module> module, operation::KDF_SP_800_108& op, const ExecutorBase<component::Key, operation::KDF_SP_800_108>::ResultPair& result) const { | 
391  | 0  |     (void)module;  | 
392  | 0  |     (void)op;  | 
393  |  | 
  | 
394  | 0  |     if ( result.second != std::nullopt ) { | 
395  | 0  |         fuzzing::memory::memory_test_msan(result.second->GetPtr(), result.second->GetSize());  | 
396  | 0  |     }  | 
397  | 0  | }  | 
398  |  |  | 
399  | 0  | template<> std::optional<component::Key> ExecutorBase<component::Key, operation::KDF_SP_800_108>::callModule(std::shared_ptr<Module> module, operation::KDF_SP_800_108& op) const { | 
400  | 0  |     if ( op.mech.mode == true ) { | 
401  | 0  |         RETURN_IF_DISABLED(options.digests, op.mech.type.Get());  | 
402  | 0  |     }  | 
403  |  |  | 
404  | 0  |     return module->OpKDF_SP_800_108(op);  | 
405  | 0  | }  | 
406  |  |  | 
407  |  | /* Specialization for operation::KDF_SRTP */  | 
408  | 0  | template<> void ExecutorBase<component::Key3, operation::KDF_SRTP>::postprocess(std::shared_ptr<Module> module, operation::KDF_SRTP& op, const ExecutorBase<component::Key3, operation::KDF_SRTP>::ResultPair& result) const { | 
409  | 0  |     (void)module;  | 
410  | 0  |     (void)op;  | 
411  | 0  |     (void)result;  | 
412  | 0  | }  | 
413  |  |  | 
414  | 0  | template<> std::optional<component::Key3> ExecutorBase<component::Key3, operation::KDF_SRTP>::callModule(std::shared_ptr<Module> module, operation::KDF_SRTP& op) const { | 
415  | 0  |     return module->OpKDF_SRTP(op);  | 
416  | 0  | }  | 
417  |  |  | 
418  |  | /* Specialization for operation::KDF_SRTCP */  | 
419  | 0  | template<> void ExecutorBase<component::Key3, operation::KDF_SRTCP>::postprocess(std::shared_ptr<Module> module, operation::KDF_SRTCP& op, const ExecutorBase<component::Key3, operation::KDF_SRTCP>::ResultPair& result) const { | 
420  | 0  |     (void)module;  | 
421  | 0  |     (void)op;  | 
422  | 0  |     (void)result;  | 
423  | 0  | }  | 
424  |  |  | 
425  | 0  | template<> std::optional<component::Key3> ExecutorBase<component::Key3, operation::KDF_SRTCP>::callModule(std::shared_ptr<Module> module, operation::KDF_SRTCP& op) const { | 
426  | 0  |     return module->OpKDF_SRTCP(op);  | 
427  | 0  | }  | 
428  |  |  | 
429  |  | /* Specialization for operation::ECC_PrivateToPublic */  | 
430  | 0  | template<> void ExecutorBase<component::ECC_PublicKey, operation::ECC_PrivateToPublic>::postprocess(std::shared_ptr<Module> module, operation::ECC_PrivateToPublic& op, const ExecutorBase<component::ECC_PublicKey, operation::ECC_PrivateToPublic>::ResultPair& result) const { | 
431  | 0  |     (void)module;  | 
432  |  | 
  | 
433  | 0  |     if ( result.second != std::nullopt  ) { | 
434  | 0  |         const auto curveID = op.curveType.Get();  | 
435  | 0  |         const auto privkey = op.priv.ToTrimmedString();  | 
436  | 0  |         const auto pub_x = result.second->first.ToTrimmedString();  | 
437  | 0  |         const auto pub_y = result.second->second.ToTrimmedString();  | 
438  |  | 
  | 
439  | 0  |         Pool_CurvePrivkey.Set({ curveID, privkey }); | 
440  | 0  |         Pool_CurveKeypair.Set({ curveID, privkey, pub_x, pub_y }); | 
441  | 0  |         Pool_CurveECC_Point.Set({ curveID, pub_x, pub_y }); | 
442  |  | 
  | 
443  | 0  |         if ( pub_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(pub_x); } | 
444  | 0  |         if ( pub_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(pub_y); } | 
445  | 0  |     }  | 
446  | 0  | }  | 
447  |  |  | 
448  | 0  | template<> std::optional<component::ECC_PublicKey> ExecutorBase<component::ECC_PublicKey, operation::ECC_PrivateToPublic>::callModule(std::shared_ptr<Module> module, operation::ECC_PrivateToPublic& op) const { | 
449  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
450  |  | 
  | 
451  | 0  |     const size_t size = op.priv.ToTrimmedString().size();  | 
452  |  | 
  | 
453  | 0  |     if ( size == 0 || size > 4096 ) { | 
454  | 0  |         return std::nullopt;  | 
455  | 0  |     }  | 
456  |  |  | 
457  | 0  |     return module->OpECC_PrivateToPublic(op);  | 
458  | 0  | }  | 
459  |  |  | 
460  |  | /* Specialization for operation::ECC_ValidatePubkey */  | 
461  | 0  | template<> void ExecutorBase<bool, operation::ECC_ValidatePubkey>::postprocess(std::shared_ptr<Module> module, operation::ECC_ValidatePubkey& op, const ExecutorBase<bool, operation::ECC_ValidatePubkey>::ResultPair& result) const { | 
462  | 0  |     (void)module;  | 
463  | 0  |     (void)op;  | 
464  | 0  |     (void)result;  | 
465  | 0  | }  | 
466  |  |  | 
467  | 0  | template<> std::optional<bool> ExecutorBase<bool, operation::ECC_ValidatePubkey>::callModule(std::shared_ptr<Module> module, operation::ECC_ValidatePubkey& op) const { | 
468  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
469  |  | 
  | 
470  | 0  |     return module->OpECC_ValidatePubkey(op);  | 
471  | 0  | }  | 
472  |  |  | 
473  |  | /* Specialization for operation::ECC_GenerateKeyPair */  | 
474  |  |  | 
475  |  | /* Do not compare DH_GenerateKeyPair results, because the result can be produced indeterministically */  | 
476  |  | template <>  | 
477  | 0  | void ExecutorBase<component::DH_KeyPair, operation::DH_GenerateKeyPair>::compare(const std::vector< std::pair<std::shared_ptr<Module>, operation::DH_GenerateKeyPair> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { | 
478  | 0  |     (void)operations;  | 
479  | 0  |     (void)results;  | 
480  | 0  |     (void)data;  | 
481  | 0  |     (void)size;  | 
482  | 0  | }  | 
483  |  |  | 
484  | 0  | template<> void ExecutorBase<component::ECC_KeyPair, operation::ECC_GenerateKeyPair>::postprocess(std::shared_ptr<Module> module, operation::ECC_GenerateKeyPair& op, const ExecutorBase<component::ECC_KeyPair, operation::ECC_GenerateKeyPair>::ResultPair& result) const { | 
485  | 0  |     (void)module;  | 
486  |  | 
  | 
487  | 0  |     if ( result.second != std::nullopt  ) { | 
488  | 0  |         const auto curveID = op.curveType.Get();  | 
489  | 0  |         const auto privkey = result.second->priv.ToTrimmedString();  | 
490  | 0  |         const auto pub_x = result.second->pub.first.ToTrimmedString();  | 
491  | 0  |         const auto pub_y = result.second->pub.second.ToTrimmedString();  | 
492  |  | 
  | 
493  | 0  |         Pool_CurvePrivkey.Set({ curveID, privkey }); | 
494  | 0  |         Pool_CurveKeypair.Set({ curveID, privkey, pub_x, pub_y }); | 
495  | 0  |         Pool_CurveECC_Point.Set({ curveID, pub_x, pub_y }); | 
496  |  | 
  | 
497  | 0  |         { | 
498  | 0  |             auto opValidate = operation::ECC_ValidatePubkey(  | 
499  | 0  |                     op.curveType,  | 
500  | 0  |                     result.second->pub,  | 
501  | 0  |                     op.modifier);  | 
502  |  | 
  | 
503  | 0  |             const auto validateResult = module->OpECC_ValidatePubkey(opValidate);  | 
504  | 0  |             CF_ASSERT(  | 
505  | 0  |                     validateResult == std::nullopt ||  | 
506  | 0  |                     *validateResult == true,  | 
507  | 0  |                     "Cannot validate generated public key");  | 
508  | 0  |         }  | 
509  | 0  |     }  | 
510  | 0  | }  | 
511  |  |  | 
512  | 0  | template<> std::optional<component::ECC_KeyPair> ExecutorBase<component::ECC_KeyPair, operation::ECC_GenerateKeyPair>::callModule(std::shared_ptr<Module> module, operation::ECC_GenerateKeyPair& op) const { | 
513  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
514  |  | 
  | 
515  | 0  |     return module->OpECC_GenerateKeyPair(op);  | 
516  | 0  | }  | 
517  |  |  | 
518  |  | /* Specialization for operation::ECCSI_Sign */  | 
519  | 0  | template<> void ExecutorBase<component::ECCSI_Signature, operation::ECCSI_Sign>::postprocess(std::shared_ptr<Module> module, operation::ECCSI_Sign& op, const ExecutorBase<component::ECCSI_Signature, operation::ECCSI_Sign>::ResultPair& result) const { | 
520  | 0  |     (void)module;  | 
521  |  | 
  | 
522  | 0  |     if ( result.second != std::nullopt  ) { | 
523  | 0  |         const auto curveID = op.curveType.Get();  | 
524  | 0  |         const auto cleartext = op.cleartext.ToHex();  | 
525  | 0  |         const auto id = op.id.ToHex();  | 
526  | 0  |         const auto pub_x = result.second->pub.first.ToTrimmedString();  | 
527  | 0  |         const auto pub_y = result.second->pub.second.ToTrimmedString();  | 
528  | 0  |         const auto pvt_x = result.second->pvt.first.ToTrimmedString();  | 
529  | 0  |         const auto pvt_y = result.second->pvt.second.ToTrimmedString();  | 
530  | 0  |         const auto sig_r = result.second->signature.first.ToTrimmedString();  | 
531  | 0  |         const auto sig_s = result.second->signature.second.ToTrimmedString();  | 
532  |  | 
  | 
533  | 0  |         Pool_CurveECCSISignature.Set({ | 
534  | 0  |                 curveID,  | 
535  | 0  |                 cleartext,  | 
536  | 0  |                 id,  | 
537  | 0  |                 pub_x, pub_y,  | 
538  | 0  |                 pvt_x, pvt_y,  | 
539  | 0  |                 sig_r, sig_s});  | 
540  | 0  |         Pool_CurveECC_Point.Set({ curveID, pub_x, pub_y }); | 
541  | 0  |         Pool_CurveECC_Point.Set({ curveID, pvt_x, pvt_y }); | 
542  | 0  |         Pool_CurveECC_Point.Set({ curveID, sig_r, sig_s }); | 
543  |  | 
  | 
544  | 0  |         if ( pub_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(pub_x); } | 
545  | 0  |         if ( pub_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(pub_y); } | 
546  | 0  |         if ( pvt_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(pvt_x); } | 
547  | 0  |         if ( pvt_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(pvt_y); } | 
548  | 0  |         if ( sig_r.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(sig_r); } | 
549  | 0  |         if ( sig_s.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(sig_s); } | 
550  |  | 
  | 
551  | 0  |         { | 
552  | 0  |             auto opVerify = operation::ECCSI_Verify(  | 
553  | 0  |                     op,  | 
554  | 0  |                     *(result.second),  | 
555  | 0  |                     op.modifier);  | 
556  |  | 
  | 
557  | 0  |             const auto verifyResult = module->OpECCSI_Verify(opVerify);  | 
558  | 0  |             CF_ASSERT(  | 
559  | 0  |                     verifyResult == std::nullopt ||  | 
560  | 0  |                     *verifyResult == true,  | 
561  | 0  |                     "Cannot verify generated signature");  | 
562  | 0  |         }  | 
563  | 0  |     }  | 
564  | 0  | }  | 
565  |  |  | 
566  | 0  | template<> std::optional<component::ECCSI_Signature> ExecutorBase<component::ECCSI_Signature, operation::ECCSI_Sign>::callModule(std::shared_ptr<Module> module, operation::ECCSI_Sign& op) const { | 
567  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
568  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
569  |  | 
  | 
570  | 0  |     const size_t size = op.priv.ToTrimmedString().size();  | 
571  |  | 
  | 
572  | 0  |     if ( size == 0 || size > 4096 ) { | 
573  | 0  |         return std::nullopt;  | 
574  | 0  |     }  | 
575  |  |  | 
576  | 0  |     return module->OpECCSI_Sign(op);  | 
577  | 0  | }  | 
578  |  |  | 
579  |  | /* Specialization for operation::ECDSA_Sign */  | 
580  | 0  | template<> void ExecutorBase<component::ECDSA_Signature, operation::ECDSA_Sign>::postprocess(std::shared_ptr<Module> module, operation::ECDSA_Sign& op, const ExecutorBase<component::ECDSA_Signature, operation::ECDSA_Sign>::ResultPair& result) const { | 
581  | 0  |     (void)module;  | 
582  |  | 
  | 
583  | 0  |     if ( result.second != std::nullopt  ) { | 
584  | 0  |         const auto curveID = op.curveType.Get();  | 
585  | 0  |         const auto cleartext = op.cleartext.ToHex();  | 
586  | 0  |         const auto pub_x = result.second->pub.first.ToTrimmedString();  | 
587  | 0  |         const auto pub_y = result.second->pub.second.ToTrimmedString();  | 
588  | 0  |         const auto sig_r = result.second->signature.first.ToTrimmedString();  | 
589  | 0  |         const auto sig_s = result.second->signature.second.ToTrimmedString();  | 
590  |  | 
  | 
591  | 0  |         Pool_CurveECDSASignature.Set({ curveID, cleartext, pub_x, pub_y, sig_r, sig_s}); | 
592  | 0  |         Pool_CurveECC_Point.Set({ curveID, pub_x, pub_y }); | 
593  | 0  |         Pool_CurveECC_Point.Set({ curveID, sig_r, sig_s }); | 
594  |  | 
  | 
595  | 0  |         if ( pub_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(pub_x); } | 
596  | 0  |         if ( pub_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(pub_y); } | 
597  | 0  |         if ( sig_r.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(sig_r); } | 
598  | 0  |         if ( sig_s.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(sig_s); } | 
599  |  | 
  | 
600  | 0  |         { | 
601  | 0  |             auto opVerify = operation::ECDSA_Verify(  | 
602  | 0  |                     op,  | 
603  | 0  |                     *(result.second),  | 
604  | 0  |                     op.modifier);  | 
605  |  | 
  | 
606  | 0  |             const auto verifyResult = module->OpECDSA_Verify(opVerify);  | 
607  | 0  |             CF_ASSERT(  | 
608  | 0  |                     verifyResult == std::nullopt ||  | 
609  | 0  |                     *verifyResult == true,  | 
610  | 0  |                     "Cannot verify generated signature");  | 
611  | 0  |         }  | 
612  | 0  |     }  | 
613  | 0  | }  | 
614  |  |  | 
615  | 0  | template<> std::optional<component::ECDSA_Signature> ExecutorBase<component::ECDSA_Signature, operation::ECDSA_Sign>::callModule(std::shared_ptr<Module> module, operation::ECDSA_Sign& op) const { | 
616  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
617  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
618  |  | 
  | 
619  | 0  |     const size_t size = op.priv.ToTrimmedString().size();  | 
620  |  | 
  | 
621  | 0  |     if ( size == 0 || size > 4096 ) { | 
622  | 0  |         return std::nullopt;  | 
623  | 0  |     }  | 
624  |  |  | 
625  | 0  |     return module->OpECDSA_Sign(op);  | 
626  | 0  | }  | 
627  |  |  | 
628  |  | /* Specialization for operation::ECGDSA_Sign */  | 
629  | 0  | template<> void ExecutorBase<component::ECGDSA_Signature, operation::ECGDSA_Sign>::postprocess(std::shared_ptr<Module> module, operation::ECGDSA_Sign& op, const ExecutorBase<component::ECGDSA_Signature, operation::ECGDSA_Sign>::ResultPair& result) const { | 
630  | 0  |     (void)module;  | 
631  |  | 
  | 
632  | 0  |     if ( result.second != std::nullopt  ) { | 
633  | 0  |         const auto curveID = op.curveType.Get();  | 
634  | 0  |         const auto cleartext = op.cleartext.ToHex();  | 
635  | 0  |         const auto pub_x = result.second->pub.first.ToTrimmedString();  | 
636  | 0  |         const auto pub_y = result.second->pub.second.ToTrimmedString();  | 
637  | 0  |         const auto sig_r = result.second->signature.first.ToTrimmedString();  | 
638  | 0  |         const auto sig_s = result.second->signature.second.ToTrimmedString();  | 
639  |  | 
  | 
640  | 0  |         Pool_CurveECDSASignature.Set({ curveID, cleartext, pub_x, pub_y, sig_r, sig_s}); | 
641  | 0  |         Pool_CurveECC_Point.Set({ curveID, pub_x, pub_y }); | 
642  | 0  |         Pool_CurveECC_Point.Set({ curveID, sig_r, sig_s }); | 
643  |  | 
  | 
644  | 0  |         if ( pub_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(pub_x); } | 
645  | 0  |         if ( pub_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(pub_y); } | 
646  | 0  |         if ( sig_r.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(sig_r); } | 
647  | 0  |         if ( sig_s.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(sig_s); } | 
648  | 0  |     }  | 
649  | 0  | }  | 
650  |  |  | 
651  | 0  | template<> std::optional<component::ECGDSA_Signature> ExecutorBase<component::ECGDSA_Signature, operation::ECGDSA_Sign>::callModule(std::shared_ptr<Module> module, operation::ECGDSA_Sign& op) const { | 
652  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
653  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
654  |  | 
  | 
655  | 0  |     const size_t size = op.priv.ToTrimmedString().size();  | 
656  |  | 
  | 
657  | 0  |     if ( size == 0 || size > 4096 ) { | 
658  | 0  |         return std::nullopt;  | 
659  | 0  |     }  | 
660  |  |  | 
661  | 0  |     return module->OpECGDSA_Sign(op);  | 
662  | 0  | }  | 
663  |  |  | 
664  |  | /* Specialization for operation::ECRDSA_Sign */  | 
665  | 0  | template<> void ExecutorBase<component::ECRDSA_Signature, operation::ECRDSA_Sign>::postprocess(std::shared_ptr<Module> module, operation::ECRDSA_Sign& op, const ExecutorBase<component::ECRDSA_Signature, operation::ECRDSA_Sign>::ResultPair& result) const { | 
666  | 0  |     (void)module;  | 
667  |  | 
  | 
668  | 0  |     if ( result.second != std::nullopt  ) { | 
669  | 0  |         const auto curveID = op.curveType.Get();  | 
670  | 0  |         const auto cleartext = op.cleartext.ToHex();  | 
671  | 0  |         const auto pub_x = result.second->pub.first.ToTrimmedString();  | 
672  | 0  |         const auto pub_y = result.second->pub.second.ToTrimmedString();  | 
673  | 0  |         const auto sig_r = result.second->signature.first.ToTrimmedString();  | 
674  | 0  |         const auto sig_s = result.second->signature.second.ToTrimmedString();  | 
675  |  | 
  | 
676  | 0  |         Pool_CurveECDSASignature.Set({ curveID, cleartext, pub_x, pub_y, sig_r, sig_s}); | 
677  | 0  |         Pool_CurveECC_Point.Set({ curveID, pub_x, pub_y }); | 
678  | 0  |         Pool_CurveECC_Point.Set({ curveID, sig_r, sig_s }); | 
679  |  | 
  | 
680  | 0  |         if ( pub_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(pub_x); } | 
681  | 0  |         if ( pub_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(pub_y); } | 
682  | 0  |         if ( sig_r.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(sig_r); } | 
683  | 0  |         if ( sig_s.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(sig_s); } | 
684  | 0  |     }  | 
685  | 0  | }  | 
686  |  |  | 
687  | 0  | template<> std::optional<component::ECRDSA_Signature> ExecutorBase<component::ECRDSA_Signature, operation::ECRDSA_Sign>::callModule(std::shared_ptr<Module> module, operation::ECRDSA_Sign& op) const { | 
688  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
689  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
690  |  | 
  | 
691  | 0  |     const size_t size = op.priv.ToTrimmedString().size();  | 
692  |  | 
  | 
693  | 0  |     if ( size == 0 || size > 4096 ) { | 
694  | 0  |         return std::nullopt;  | 
695  | 0  |     }  | 
696  |  |  | 
697  | 0  |     return module->OpECRDSA_Sign(op);  | 
698  | 0  | }  | 
699  |  |  | 
700  |  | /* Specialization for operation::Schnorr_Sign */  | 
701  | 0  | template<> void ExecutorBase<component::Schnorr_Signature, operation::Schnorr_Sign>::postprocess(std::shared_ptr<Module> module, operation::Schnorr_Sign& op, const ExecutorBase<component::Schnorr_Signature, operation::Schnorr_Sign>::ResultPair& result) const { | 
702  | 0  |     (void)module;  | 
703  |  | 
  | 
704  | 0  |     if ( result.second != std::nullopt  ) { | 
705  | 0  |         const auto curveID = op.curveType.Get();  | 
706  | 0  |         const auto cleartext = op.cleartext.ToHex();  | 
707  | 0  |         const auto pub_x = result.second->pub.first.ToTrimmedString();  | 
708  | 0  |         const auto pub_y = result.second->pub.second.ToTrimmedString();  | 
709  | 0  |         const auto sig_r = result.second->signature.first.ToTrimmedString();  | 
710  | 0  |         const auto sig_s = result.second->signature.second.ToTrimmedString();  | 
711  |  | 
  | 
712  | 0  |         Pool_CurveECDSASignature.Set({ curveID, cleartext, pub_x, pub_y, sig_r, sig_s}); | 
713  | 0  |         Pool_CurveECC_Point.Set({ curveID, pub_x, pub_y }); | 
714  | 0  |         Pool_CurveECC_Point.Set({ curveID, sig_r, sig_s }); | 
715  |  | 
  | 
716  | 0  |         if ( pub_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(pub_x); } | 
717  | 0  |         if ( pub_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(pub_y); } | 
718  | 0  |         if ( sig_r.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(sig_r); } | 
719  | 0  |         if ( sig_s.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(sig_s); } | 
720  | 0  |     }  | 
721  | 0  | }  | 
722  |  |  | 
723  | 0  | template<> std::optional<component::Schnorr_Signature> ExecutorBase<component::Schnorr_Signature, operation::Schnorr_Sign>::callModule(std::shared_ptr<Module> module, operation::Schnorr_Sign& op) const { | 
724  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
725  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
726  |  | 
  | 
727  | 0  |     const size_t size = op.priv.ToTrimmedString().size();  | 
728  |  | 
  | 
729  | 0  |     if ( size == 0 || size > 4096 ) { | 
730  | 0  |         return std::nullopt;  | 
731  | 0  |     }  | 
732  |  |  | 
733  | 0  |     return module->OpSchnorr_Sign(op);  | 
734  | 0  | }  | 
735  |  |  | 
736  |  | /* Specialization for operation::ECCSI_Verify */  | 
737  | 0  | template<> void ExecutorBase<bool, operation::ECCSI_Verify>::postprocess(std::shared_ptr<Module> module, operation::ECCSI_Verify& op, const ExecutorBase<bool, operation::ECCSI_Verify>::ResultPair& result) const { | 
738  | 0  |     (void)module;  | 
739  | 0  |     (void)op;  | 
740  | 0  |     (void)result;  | 
741  | 0  | }  | 
742  |  |  | 
743  | 0  | template<> std::optional<bool> ExecutorBase<bool, operation::ECCSI_Verify>::callModule(std::shared_ptr<Module> module, operation::ECCSI_Verify& op) const { | 
744  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
745  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
746  |  | 
  | 
747  | 0  |     return module->OpECCSI_Verify(op);  | 
748  | 0  | }  | 
749  |  |  | 
750  |  | /* Specialization for operation::ECDSA_Verify */  | 
751  | 0  | template<> void ExecutorBase<bool, operation::ECDSA_Verify>::postprocess(std::shared_ptr<Module> module, operation::ECDSA_Verify& op, const ExecutorBase<bool, operation::ECDSA_Verify>::ResultPair& result) const { | 
752  | 0  |     (void)module;  | 
753  | 0  |     (void)op;  | 
754  | 0  |     (void)result;  | 
755  | 0  | }  | 
756  |  |  | 
757  | 0  | template<> std::optional<bool> ExecutorBase<bool, operation::ECDSA_Verify>::callModule(std::shared_ptr<Module> module, operation::ECDSA_Verify& op) const { | 
758  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
759  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
760  |  |  | 
761  |  |     /* Intentionally do not constrain the size of the public key or  | 
762  |  |      * signature (like we do for BignumCalc).  | 
763  |  |      *  | 
764  |  |      * If any large public key or signature causes a time-out (or  | 
765  |  |      * worse), this is something that needs attention;  | 
766  |  |      * because verifiers sometimes process untrusted public keys,  | 
767  |  |      * signatures or both, they should be resistant to bugs  | 
768  |  |      * arising from large inputs.  | 
769  |  |      */  | 
770  |  | 
  | 
771  | 0  |     return module->OpECDSA_Verify(op);  | 
772  | 0  | }  | 
773  |  |  | 
774  |  | /* Specialization for operation::ECGDSA_Verify */  | 
775  | 0  | template<> void ExecutorBase<bool, operation::ECGDSA_Verify>::postprocess(std::shared_ptr<Module> module, operation::ECGDSA_Verify& op, const ExecutorBase<bool, operation::ECGDSA_Verify>::ResultPair& result) const { | 
776  | 0  |     (void)module;  | 
777  | 0  |     (void)op;  | 
778  | 0  |     (void)result;  | 
779  | 0  | }  | 
780  |  |  | 
781  | 0  | template<> std::optional<bool> ExecutorBase<bool, operation::ECGDSA_Verify>::callModule(std::shared_ptr<Module> module, operation::ECGDSA_Verify& op) const { | 
782  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
783  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
784  |  |  | 
785  |  |     /* Intentionally do not constrain the size of the public key or  | 
786  |  |      * signature (like we do for BignumCalc).  | 
787  |  |      *  | 
788  |  |      * If any large public key or signature causes a time-out (or  | 
789  |  |      * worse), this is something that needs attention;  | 
790  |  |      * because verifiers sometimes process untrusted public keys,  | 
791  |  |      * signatures or both, they should be resistant to bugs  | 
792  |  |      * arising from large inputs.  | 
793  |  |      */  | 
794  |  | 
  | 
795  | 0  |     return module->OpECGDSA_Verify(op);  | 
796  | 0  | }  | 
797  |  |  | 
798  |  | /* Specialization for operation::ECRDSA_Verify */  | 
799  | 0  | template<> void ExecutorBase<bool, operation::ECRDSA_Verify>::postprocess(std::shared_ptr<Module> module, operation::ECRDSA_Verify& op, const ExecutorBase<bool, operation::ECRDSA_Verify>::ResultPair& result) const { | 
800  | 0  |     (void)module;  | 
801  | 0  |     (void)op;  | 
802  | 0  |     (void)result;  | 
803  | 0  | }  | 
804  |  |  | 
805  | 0  | template<> std::optional<bool> ExecutorBase<bool, operation::ECRDSA_Verify>::callModule(std::shared_ptr<Module> module, operation::ECRDSA_Verify& op) const { | 
806  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
807  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
808  |  |  | 
809  |  |     /* Intentionally do not constrain the size of the public key or  | 
810  |  |      * signature (like we do for BignumCalc).  | 
811  |  |      *  | 
812  |  |      * If any large public key or signature causes a time-out (or  | 
813  |  |      * worse), this is something that needs attention;  | 
814  |  |      * because verifiers sometimes process untrusted public keys,  | 
815  |  |      * signatures or both, they should be resistant to bugs  | 
816  |  |      * arising from large inputs.  | 
817  |  |      */  | 
818  |  | 
  | 
819  | 0  |     return module->OpECRDSA_Verify(op);  | 
820  | 0  | }  | 
821  |  |  | 
822  |  | /* Specialization for operation::Schnorr_Verify */  | 
823  | 0  | template<> void ExecutorBase<bool, operation::Schnorr_Verify>::postprocess(std::shared_ptr<Module> module, operation::Schnorr_Verify& op, const ExecutorBase<bool, operation::Schnorr_Verify>::ResultPair& result) const { | 
824  | 0  |     (void)module;  | 
825  | 0  |     (void)op;  | 
826  | 0  |     (void)result;  | 
827  | 0  | }  | 
828  |  |  | 
829  | 0  | template<> std::optional<bool> ExecutorBase<bool, operation::Schnorr_Verify>::callModule(std::shared_ptr<Module> module, operation::Schnorr_Verify& op) const { | 
830  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
831  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
832  |  |  | 
833  |  |     /* Intentionally do not constrain the size of the public key or  | 
834  |  |      * signature (like we do for BignumCalc).  | 
835  |  |      *  | 
836  |  |      * If any large public key or signature causes a time-out (or  | 
837  |  |      * worse), this is something that needs attention;  | 
838  |  |      * because verifiers sometimes process untrusted public keys,  | 
839  |  |      * signatures or both, they should be resistant to bugs  | 
840  |  |      * arising from large inputs.  | 
841  |  |      */  | 
842  |  | 
  | 
843  | 0  |     return module->OpSchnorr_Verify(op);  | 
844  | 0  | }  | 
845  |  |  | 
846  | 0  | template<> void ExecutorBase<component::ECC_PublicKey, operation::ECDSA_Recover>::postprocess(std::shared_ptr<Module> module, operation::ECDSA_Recover& op, const ExecutorBase<component::ECC_PublicKey, operation::ECDSA_Recover>::ResultPair& result) const { | 
847  | 0  |     (void)module;  | 
848  | 0  |     (void)op;  | 
849  | 0  |     (void)result;  | 
850  | 0  | }  | 
851  |  |  | 
852  | 0  | template<> std::optional<component::ECC_PublicKey> ExecutorBase<component::ECC_PublicKey, operation::ECDSA_Recover>::callModule(std::shared_ptr<Module> module, operation::ECDSA_Recover& op) const { | 
853  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
854  | 0  |     RETURN_IF_DISABLED(options.digests, op.digestType.Get());  | 
855  |  | 
  | 
856  | 0  |     return module->OpECDSA_Recover(op);  | 
857  | 0  | }  | 
858  |  |  | 
859  |  | /* Specialization for operation::DSA_Verify */  | 
860  | 0  | template<> void ExecutorBase<bool, operation::DSA_Verify>::updateExtraCounters(const uint64_t moduleID, operation::DSA_Verify& op) const { | 
861  | 0  |     (void)moduleID;  | 
862  | 0  |     (void)op;  | 
863  |  |  | 
864  |  |     /* TODO */  | 
865  | 0  | }  | 
866  |  |  | 
867  | 0  | template<> void ExecutorBase<bool, operation::DSA_Verify>::postprocess(std::shared_ptr<Module> module, operation::DSA_Verify& op, const ExecutorBase<bool, operation::DSA_Verify>::ResultPair& result) const { | 
868  | 0  |     (void)module;  | 
869  | 0  |     (void)op;  | 
870  | 0  |     (void)result;  | 
871  | 0  | }  | 
872  |  |  | 
873  | 0  | template<> std::optional<bool> ExecutorBase<bool, operation::DSA_Verify>::callModule(std::shared_ptr<Module> module, operation::DSA_Verify& op) const { | 
874  | 0  |     const std::vector<size_t> sizes = { | 
875  | 0  |         op.parameters.p.ToTrimmedString().size(),  | 
876  | 0  |         op.parameters.q.ToTrimmedString().size(),  | 
877  | 0  |         op.parameters.g.ToTrimmedString().size(),  | 
878  | 0  |         op.pub.ToTrimmedString().size(),  | 
879  | 0  |         op.signature.first.ToTrimmedString().size(),  | 
880  | 0  |         op.signature.second.ToTrimmedString().size(),  | 
881  | 0  |     };  | 
882  |  | 
  | 
883  | 0  |     for (const auto& size : sizes) { | 
884  | 0  |         if ( size == 0 || size > 4096 ) { | 
885  | 0  |             return std::nullopt;  | 
886  | 0  |         }  | 
887  | 0  |     }  | 
888  |  |  | 
889  | 0  |     return module->OpDSA_Verify(op);  | 
890  | 0  | }  | 
891  |  |  | 
892  |  | /* Specialization for operation::DSA_Sign */  | 
893  |  | /* Do not compare DSA_Sign results, because the result can be produced indeterministically */  | 
894  |  | template <>  | 
895  | 0  | void ExecutorBase<component::DSA_Signature, operation::DSA_Sign>::compare(const std::vector< std::pair<std::shared_ptr<Module>, operation::DSA_Sign> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { | 
896  | 0  |     (void)operations;  | 
897  | 0  |     (void)results;  | 
898  | 0  |     (void)data;  | 
899  | 0  |     (void)size;  | 
900  | 0  | }  | 
901  | 0  | template<> void ExecutorBase<component::DSA_Signature, operation::DSA_Sign>::updateExtraCounters(const uint64_t moduleID, operation::DSA_Sign& op) const { | 
902  | 0  |     (void)moduleID;  | 
903  | 0  |     (void)op;  | 
904  |  |  | 
905  |  |     /* TODO */  | 
906  | 0  | }  | 
907  |  |  | 
908  | 0  | template<> void ExecutorBase<component::DSA_Signature, operation::DSA_Sign>::postprocess(std::shared_ptr<Module> module, operation::DSA_Sign& op, const ExecutorBase<component::DSA_Signature, operation::DSA_Sign>::ResultPair& result) const { | 
909  | 0  |     (void)module;  | 
910  | 0  |     (void)op;  | 
911  | 0  |     if ( result.second != std::nullopt ) { | 
912  | 0  |         const auto cleartext = op.cleartext.ToHex();  | 
913  | 0  |         const auto p = op.parameters.p.ToTrimmedString();  | 
914  | 0  |         const auto q = op.parameters.q.ToTrimmedString();  | 
915  | 0  |         const auto g = op.parameters.g.ToTrimmedString();  | 
916  | 0  |         const auto r = result.second->signature.first.ToTrimmedString();  | 
917  | 0  |         const auto s = result.second->signature.second.ToTrimmedString();  | 
918  | 0  |         const auto pub = result.second->pub.ToTrimmedString();  | 
919  |  | 
  | 
920  | 0  |         Pool_DSASignature.Set({ | 
921  | 0  |                 cleartext,  | 
922  | 0  |                 p,  | 
923  | 0  |                 q,  | 
924  | 0  |                 g,  | 
925  | 0  |                 pub,  | 
926  | 0  |                 r,  | 
927  | 0  |                 s  | 
928  | 0  |         });  | 
929  |  | 
  | 
930  | 0  |         if ( r.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(r); } | 
931  | 0  |         if ( s.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(s); } | 
932  | 0  |     }  | 
933  | 0  | }  | 
934  |  |  | 
935  | 0  | template<> std::optional<component::DSA_Signature> ExecutorBase<component::DSA_Signature, operation::DSA_Sign>::callModule(std::shared_ptr<Module> module, operation::DSA_Sign& op) const { | 
936  | 0  |     const std::vector<size_t> sizes = { | 
937  | 0  |         op.parameters.p.ToTrimmedString().size(),  | 
938  | 0  |         op.parameters.q.ToTrimmedString().size(),  | 
939  | 0  |         op.parameters.g.ToTrimmedString().size(),  | 
940  | 0  |         op.priv.ToTrimmedString().size(),  | 
941  | 0  |     };  | 
942  |  | 
  | 
943  | 0  |     for (const auto& size : sizes) { | 
944  | 0  |         if ( size == 0 || size > 4096 ) { | 
945  | 0  |             return std::nullopt;  | 
946  | 0  |         }  | 
947  | 0  |     }  | 
948  |  |  | 
949  | 0  |     return module->OpDSA_Sign(op);  | 
950  | 0  | }  | 
951  |  |  | 
952  |  | /* Specialization for operation::DSA_PrivateToPublic */  | 
953  |  |  | 
954  | 0  | template<> void ExecutorBase<component::Bignum, operation::DSA_PrivateToPublic>::updateExtraCounters(const uint64_t moduleID, operation::DSA_PrivateToPublic& op) const { | 
955  | 0  |     (void)moduleID;  | 
956  | 0  |     (void)op;  | 
957  |  |  | 
958  |  |     /* TODO */  | 
959  | 0  | }  | 
960  |  |  | 
961  | 0  | template<> void ExecutorBase<component::Bignum, operation::DSA_PrivateToPublic>::postprocess(std::shared_ptr<Module> module, operation::DSA_PrivateToPublic& op, const ExecutorBase<component::Bignum, operation::DSA_PrivateToPublic>::ResultPair& result) const { | 
962  | 0  |     (void)result;  | 
963  | 0  |     (void)module;  | 
964  | 0  |     (void)op;  | 
965  | 0  |     if ( result.second != std::nullopt ) { | 
966  |  |         //Pool_DSA_PubPriv.Set({pub, priv}); | 
967  | 0  |     }  | 
968  | 0  | }  | 
969  |  |  | 
970  | 0  | template<> std::optional<component::Bignum> ExecutorBase<component::Bignum, operation::DSA_PrivateToPublic>::callModule(std::shared_ptr<Module> module, operation::DSA_PrivateToPublic& op) const { | 
971  | 0  |     return module->OpDSA_PrivateToPublic(op);  | 
972  | 0  | }  | 
973  |  |  | 
974  |  | /* Specialization for operation::DSA_GenerateKeyPair */  | 
975  |  |  | 
976  |  | /* Do not compare DSA_GenerateKeyPair results, because the result can be produced indeterministically */  | 
977  |  | template <>  | 
978  | 0  | void ExecutorBase<component::DSA_KeyPair, operation::DSA_GenerateKeyPair>::compare(const std::vector< std::pair<std::shared_ptr<Module>, operation::DSA_GenerateKeyPair> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { | 
979  | 0  |     (void)operations;  | 
980  | 0  |     (void)results;  | 
981  | 0  |     (void)data;  | 
982  | 0  |     (void)size;  | 
983  | 0  | }  | 
984  |  |  | 
985  | 0  | template<> void ExecutorBase<component::DSA_KeyPair, operation::DSA_GenerateKeyPair>::updateExtraCounters(const uint64_t moduleID, operation::DSA_GenerateKeyPair& op) const { | 
986  | 0  |     (void)moduleID;  | 
987  | 0  |     (void)op;  | 
988  |  |  | 
989  |  |     /* TODO */  | 
990  | 0  | }  | 
991  |  |  | 
992  | 0  | template<> void ExecutorBase<component::DSA_KeyPair, operation::DSA_GenerateKeyPair>::postprocess(std::shared_ptr<Module> module, operation::DSA_GenerateKeyPair& op, const ExecutorBase<component::DSA_KeyPair, operation::DSA_GenerateKeyPair>::ResultPair& result) const { | 
993  | 0  |     (void)result;  | 
994  | 0  |     (void)module;  | 
995  | 0  |     (void)op;  | 
996  | 0  |     if ( result.second != std::nullopt && (PRNG() % 4) == 0 ) { | 
997  | 0  |         const auto priv = result.second->first.ToTrimmedString();  | 
998  | 0  |         const auto pub = result.second->second.ToTrimmedString();  | 
999  |  | 
  | 
1000  | 0  |         Pool_DSA_PubPriv.Set({pub, priv}); | 
1001  | 0  |     }  | 
1002  | 0  | }  | 
1003  |  |  | 
1004  | 0  | template<> std::optional<component::DSA_KeyPair> ExecutorBase<component::DSA_KeyPair, operation::DSA_GenerateKeyPair>::callModule(std::shared_ptr<Module> module, operation::DSA_GenerateKeyPair& op) const { | 
1005  | 0  |     const std::vector<size_t> sizes = { | 
1006  | 0  |         op.p.ToTrimmedString().size(),  | 
1007  | 0  |         op.q.ToTrimmedString().size(),  | 
1008  | 0  |         op.g.ToTrimmedString().size(),  | 
1009  | 0  |     };  | 
1010  |  | 
  | 
1011  | 0  |     for (const auto& size : sizes) { | 
1012  | 0  |         if ( size == 0 || size > 4096 ) { | 
1013  | 0  |             return std::nullopt;  | 
1014  | 0  |         }  | 
1015  | 0  |     }  | 
1016  |  |  | 
1017  | 0  |     return module->OpDSA_GenerateKeyPair(op);  | 
1018  | 0  | }  | 
1019  |  |  | 
1020  |  | /* Specialization for operation::DSA_GenerateParameters */  | 
1021  |  |  | 
1022  |  | /* Do not compare DSA_GenerateParameters results, because the result can be produced indeterministically */  | 
1023  |  | template <>  | 
1024  | 0  | void ExecutorBase<component::DSA_Parameters, operation::DSA_GenerateParameters>::compare(const std::vector< std::pair<std::shared_ptr<Module>, operation::DSA_GenerateParameters> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { | 
1025  | 0  |     (void)operations;  | 
1026  | 0  |     (void)results;  | 
1027  | 0  |     (void)data;  | 
1028  | 0  |     (void)size;  | 
1029  | 0  | }  | 
1030  |  |  | 
1031  | 0  | template<> void ExecutorBase<component::DSA_Parameters, operation::DSA_GenerateParameters>::updateExtraCounters(const uint64_t moduleID, operation::DSA_GenerateParameters& op) const { | 
1032  | 0  |     (void)moduleID;  | 
1033  | 0  |     (void)op;  | 
1034  |  |  | 
1035  |  |     /* TODO */  | 
1036  | 0  | }  | 
1037  |  |  | 
1038  | 0  | template<> void ExecutorBase<component::DSA_Parameters, operation::DSA_GenerateParameters>::postprocess(std::shared_ptr<Module> module, operation::DSA_GenerateParameters& op, const ExecutorBase<component::DSA_Parameters, operation::DSA_GenerateParameters>::ResultPair& result) const { | 
1039  | 0  |     (void)result;  | 
1040  | 0  |     (void)module;  | 
1041  | 0  |     (void)op;  | 
1042  | 0  |     if ( result.second != std::nullopt && (PRNG() % 4) == 0 ) { | 
1043  | 0  |         const auto P = result.second->p.ToTrimmedString();  | 
1044  | 0  |         const auto Q = result.second->q.ToTrimmedString();  | 
1045  | 0  |         const auto G = result.second->g.ToTrimmedString();  | 
1046  |  | 
  | 
1047  | 0  |         Pool_DSA_PQG.Set({P, Q, G}); | 
1048  |  | 
  | 
1049  | 0  |         if ( P.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(P); } | 
1050  | 0  |         if ( Q.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(Q); } | 
1051  | 0  |         if ( G.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(G); } | 
1052  | 0  |     }  | 
1053  | 0  | }  | 
1054  |  |  | 
1055  | 0  | template<> std::optional<component::DSA_Parameters> ExecutorBase<component::DSA_Parameters, operation::DSA_GenerateParameters>::callModule(std::shared_ptr<Module> module, operation::DSA_GenerateParameters& op) const { | 
1056  | 0  |     return module->OpDSA_GenerateParameters(op);  | 
1057  | 0  | }  | 
1058  |  |  | 
1059  |  | /* Specialization for operation::ECDH_Derive */  | 
1060  | 0  | template<> void ExecutorBase<component::Secret, operation::ECDH_Derive>::postprocess(std::shared_ptr<Module> module, operation::ECDH_Derive& op, const ExecutorBase<component::Secret, operation::ECDH_Derive>::ResultPair& result) const { | 
1061  | 0  |     (void)module;  | 
1062  | 0  |     (void)op;  | 
1063  | 0  |     (void)result;  | 
1064  | 0  | }  | 
1065  |  |  | 
1066  | 0  | template<> std::optional<component::Secret> ExecutorBase<component::Secret, operation::ECDH_Derive>::callModule(std::shared_ptr<Module> module, operation::ECDH_Derive& op) const { | 
1067  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
1068  |  | 
  | 
1069  | 0  |     return module->OpECDH_Derive(op);  | 
1070  | 0  | }  | 
1071  |  |  | 
1072  |  | /* Specialization for operation::ECIES_Encrypt */  | 
1073  |  | template <>  | 
1074  | 0  | void ExecutorBase<component::Ciphertext, operation::ECIES_Encrypt>::compare(const std::vector< std::pair<std::shared_ptr<Module>, operation::ECIES_Encrypt> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { | 
1075  | 0  |     (void)operations;  | 
1076  | 0  |     (void)results;  | 
1077  | 0  |     (void)data;  | 
1078  | 0  |     (void)size;  | 
1079  | 0  | }  | 
1080  | 0  | template<> void ExecutorBase<component::Ciphertext, operation::ECIES_Encrypt>::postprocess(std::shared_ptr<Module> module, operation::ECIES_Encrypt& op, const ExecutorBase<component::Ciphertext, operation::ECIES_Encrypt>::ResultPair& result) const { | 
1081  | 0  |     (void)module;  | 
1082  | 0  |     (void)op;  | 
1083  | 0  |     (void)result;  | 
1084  | 0  | }  | 
1085  |  |  | 
1086  | 0  | template<> std::optional<component::Ciphertext> ExecutorBase<component::Ciphertext, operation::ECIES_Encrypt>::callModule(std::shared_ptr<Module> module, operation::ECIES_Encrypt& op) const { | 
1087  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
1088  |  | 
  | 
1089  | 0  |     return module->OpECIES_Encrypt(op);  | 
1090  | 0  | }  | 
1091  |  |  | 
1092  |  | /* Specialization for operation::ECIES_Decrypt */  | 
1093  | 0  | template<> void ExecutorBase<component::Cleartext, operation::ECIES_Decrypt>::postprocess(std::shared_ptr<Module> module, operation::ECIES_Decrypt& op, const ExecutorBase<component::Cleartext, operation::ECIES_Decrypt>::ResultPair& result) const { | 
1094  | 0  |     (void)module;  | 
1095  | 0  |     (void)op;  | 
1096  | 0  |     (void)result;  | 
1097  | 0  | }  | 
1098  |  |  | 
1099  | 0  | template<> std::optional<component::Cleartext> ExecutorBase<component::Cleartext, operation::ECIES_Decrypt>::callModule(std::shared_ptr<Module> module, operation::ECIES_Decrypt& op) const { | 
1100  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
1101  |  | 
  | 
1102  | 0  |     return module->OpECIES_Decrypt(op);  | 
1103  | 0  | }  | 
1104  |  |  | 
1105  |  | /* Specialization for operation::ECC_Point_Add */  | 
1106  | 0  | template<> void ExecutorBase<component::ECC_Point, operation::ECC_Point_Add>::postprocess(std::shared_ptr<Module> module, operation::ECC_Point_Add& op, const ExecutorBase<component::ECC_Point, operation::ECC_Point_Add>::ResultPair& result) const { | 
1107  | 0  |     (void)module;  | 
1108  |  | 
  | 
1109  | 0  |     if ( result.second != std::nullopt  ) { | 
1110  | 0  |         const auto curveID = op.curveType.Get();  | 
1111  | 0  |         const auto x = result.second->first.ToTrimmedString();  | 
1112  | 0  |         const auto y = result.second->second.ToTrimmedString();  | 
1113  |  | 
  | 
1114  | 0  |         Pool_CurveECC_Point.Set({ curveID, x, y }); | 
1115  |  | 
  | 
1116  | 0  |         if ( x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(x); } | 
1117  | 0  |         if ( y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(y); } | 
1118  | 0  |     }  | 
1119  | 0  | }  | 
1120  |  |  | 
1121  | 0  | template<> std::optional<component::ECC_Point> ExecutorBase<component::ECC_Point, operation::ECC_Point_Add>::callModule(std::shared_ptr<Module> module, operation::ECC_Point_Add& op) const { | 
1122  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
1123  |  | 
  | 
1124  | 0  |     return module->OpECC_Point_Add(op);  | 
1125  | 0  | }  | 
1126  |  |  | 
1127  |  | /* Specialization for operation::ECC_Point_Sub */  | 
1128  | 0  | template<> void ExecutorBase<component::ECC_Point, operation::ECC_Point_Sub>::postprocess(std::shared_ptr<Module> module, operation::ECC_Point_Sub& op, const ExecutorBase<component::ECC_Point, operation::ECC_Point_Sub>::ResultPair& result) const { | 
1129  | 0  |     (void)module;  | 
1130  |  | 
  | 
1131  | 0  |     if ( result.second != std::nullopt  ) { | 
1132  | 0  |         const auto curveID = op.curveType.Get();  | 
1133  | 0  |         const auto x = result.second->first.ToTrimmedString();  | 
1134  | 0  |         const auto y = result.second->second.ToTrimmedString();  | 
1135  |  | 
  | 
1136  | 0  |         Pool_CurveECC_Point.Set({ curveID, x, y }); | 
1137  |  | 
  | 
1138  | 0  |         if ( x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(x); } | 
1139  | 0  |         if ( y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(y); } | 
1140  | 0  |     }  | 
1141  | 0  | }  | 
1142  |  |  | 
1143  | 0  | template<> std::optional<component::ECC_Point> ExecutorBase<component::ECC_Point, operation::ECC_Point_Sub>::callModule(std::shared_ptr<Module> module, operation::ECC_Point_Sub& op) const { | 
1144  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
1145  |  | 
  | 
1146  | 0  |     return module->OpECC_Point_Sub(op);  | 
1147  | 0  | }  | 
1148  |  |  | 
1149  |  | /* Specialization for operation::ECC_Point_Mul */  | 
1150  | 0  | template<> void ExecutorBase<component::ECC_Point, operation::ECC_Point_Mul>::postprocess(std::shared_ptr<Module> module, operation::ECC_Point_Mul& op, const ExecutorBase<component::ECC_Point, operation::ECC_Point_Mul>::ResultPair& result) const { | 
1151  | 0  |     (void)module;  | 
1152  |  | 
  | 
1153  | 0  |     if ( result.second != std::nullopt  ) { | 
1154  | 0  |         const auto curveID = op.curveType.Get();  | 
1155  | 0  |         const auto x = result.second->first.ToTrimmedString();  | 
1156  | 0  |         const auto y = result.second->second.ToTrimmedString();  | 
1157  |  | 
  | 
1158  | 0  |         Pool_CurveECC_Point.Set({ curveID, x, y }); | 
1159  |  | 
  | 
1160  | 0  |         if ( x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(x); } | 
1161  | 0  |         if ( y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(y); } | 
1162  | 0  |     }  | 
1163  | 0  | }  | 
1164  |  |  | 
1165  | 0  | template<> std::optional<component::ECC_Point> ExecutorBase<component::ECC_Point, operation::ECC_Point_Mul>::callModule(std::shared_ptr<Module> module, operation::ECC_Point_Mul& op) const { | 
1166  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
1167  |  | 
  | 
1168  | 0  |     return module->OpECC_Point_Mul(op);  | 
1169  | 0  | }  | 
1170  |  |  | 
1171  |  | /* Specialization for operation::ECC_Point_Neg */  | 
1172  | 0  | template<> void ExecutorBase<component::ECC_Point, operation::ECC_Point_Neg>::postprocess(std::shared_ptr<Module> module, operation::ECC_Point_Neg& op, const ExecutorBase<component::ECC_Point, operation::ECC_Point_Neg>::ResultPair& result) const { | 
1173  | 0  |     (void)module;  | 
1174  |  | 
  | 
1175  | 0  |     if ( result.second != std::nullopt  ) { | 
1176  | 0  |         const auto curveID = op.curveType.Get();  | 
1177  | 0  |         const auto x = result.second->first.ToTrimmedString();  | 
1178  | 0  |         const auto y = result.second->second.ToTrimmedString();  | 
1179  |  | 
  | 
1180  | 0  |         Pool_CurveECC_Point.Set({ curveID, x, y }); | 
1181  |  | 
  | 
1182  | 0  |         if ( x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(x); } | 
1183  | 0  |         if ( y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(y); } | 
1184  | 0  |     }  | 
1185  | 0  | }  | 
1186  |  |  | 
1187  | 0  | template<> std::optional<component::ECC_Point> ExecutorBase<component::ECC_Point, operation::ECC_Point_Neg>::callModule(std::shared_ptr<Module> module, operation::ECC_Point_Neg& op) const { | 
1188  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
1189  |  | 
  | 
1190  | 0  |     return module->OpECC_Point_Neg(op);  | 
1191  | 0  | }  | 
1192  |  |  | 
1193  |  | /* Specialization for operation::ECC_Point_Dbl */  | 
1194  | 0  | template<> void ExecutorBase<component::ECC_Point, operation::ECC_Point_Dbl>::postprocess(std::shared_ptr<Module> module, operation::ECC_Point_Dbl& op, const ExecutorBase<component::ECC_Point, operation::ECC_Point_Dbl>::ResultPair& result) const { | 
1195  | 0  |     (void)module;  | 
1196  |  | 
  | 
1197  | 0  |     if ( result.second != std::nullopt  ) { | 
1198  | 0  |         const auto curveID = op.curveType.Get();  | 
1199  | 0  |         const auto x = result.second->first.ToTrimmedString();  | 
1200  | 0  |         const auto y = result.second->second.ToTrimmedString();  | 
1201  |  | 
  | 
1202  | 0  |         Pool_CurveECC_Point.Set({ curveID, x, y }); | 
1203  |  | 
  | 
1204  | 0  |         if ( x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(x); } | 
1205  | 0  |         if ( y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(y); } | 
1206  | 0  |     }  | 
1207  | 0  | }  | 
1208  |  |  | 
1209  | 0  | template<> std::optional<component::ECC_Point> ExecutorBase<component::ECC_Point, operation::ECC_Point_Dbl>::callModule(std::shared_ptr<Module> module, operation::ECC_Point_Dbl& op) const { | 
1210  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
1211  |  | 
  | 
1212  | 0  |     return module->OpECC_Point_Dbl(op);  | 
1213  | 0  | }  | 
1214  |  |  | 
1215  |  | /* Specialization for operation::ECC_Point_Cmp */  | 
1216  | 0  | template<> void ExecutorBase<bool, operation::ECC_Point_Cmp>::postprocess(std::shared_ptr<Module> module, operation::ECC_Point_Cmp& op, const ExecutorBase<bool, operation::ECC_Point_Cmp>::ResultPair& result) const { | 
1217  | 0  |     (void)module;  | 
1218  | 0  |     (void)result;  | 
1219  | 0  |     (void)op;  | 
1220  | 0  | }  | 
1221  |  |  | 
1222  | 0  | template<> std::optional<bool> ExecutorBase<bool, operation::ECC_Point_Cmp>::callModule(std::shared_ptr<Module> module, operation::ECC_Point_Cmp& op) const { | 
1223  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
1224  |  | 
  | 
1225  | 0  |     return module->OpECC_Point_Cmp(op);  | 
1226  | 0  | }  | 
1227  |  |  | 
1228  |  | /* Specialization for operation::DH_Derive */  | 
1229  | 0  | template<> void ExecutorBase<component::Bignum, operation::DH_Derive>::postprocess(std::shared_ptr<Module> module, operation::DH_Derive& op, const ExecutorBase<component::Bignum, operation::DH_Derive>::ResultPair& result) const { | 
1230  | 0  |     (void)module;  | 
1231  | 0  |     (void)op;  | 
1232  | 0  |     (void)result;  | 
1233  | 0  | }  | 
1234  |  |  | 
1235  | 0  | template<> std::optional<component::Bignum> ExecutorBase<component::Bignum, operation::DH_Derive>::callModule(std::shared_ptr<Module> module, operation::DH_Derive& op) const { | 
1236  | 0  |     if ( op.prime.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1237  | 0  |     if ( op.base.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1238  | 0  |     if ( op.pub.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1239  | 0  |     if ( op.priv.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1240  |  |  | 
1241  | 0  |     return module->OpDH_Derive(op);  | 
1242  | 0  | }  | 
1243  |  |  | 
1244  |  | /* Specialization for operation::DH_GenerateKeyPair */  | 
1245  | 0  | template<> void ExecutorBase<component::DH_KeyPair, operation::DH_GenerateKeyPair>::postprocess(std::shared_ptr<Module> module, operation::DH_GenerateKeyPair& op, const ExecutorBase<component::DH_KeyPair, operation::DH_GenerateKeyPair>::ResultPair& result) const { | 
1246  | 0  |     (void)result;  | 
1247  | 0  |     (void)op;  | 
1248  | 0  |     (void)module;  | 
1249  |  | 
  | 
1250  | 0  |     if ( result.second != std::nullopt && (PRNG() % 4) == 0 ) { | 
1251  | 0  |         const auto priv = result.second->first.ToTrimmedString();  | 
1252  | 0  |         const auto pub = result.second->second.ToTrimmedString();  | 
1253  |  | 
  | 
1254  | 0  |         Pool_DH_PrivateKey.Set(priv);  | 
1255  | 0  |         Pool_DH_PublicKey.Set(pub);  | 
1256  | 0  |     }  | 
1257  | 0  | }  | 
1258  |  |  | 
1259  | 0  | template<> std::optional<component::DH_KeyPair> ExecutorBase<component::DH_KeyPair, operation::DH_GenerateKeyPair>::callModule(std::shared_ptr<Module> module, operation::DH_GenerateKeyPair& op) const { | 
1260  | 0  |     if ( op.prime.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1261  | 0  |     if ( op.base.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1262  |  |  | 
1263  | 0  |     return module->OpDH_GenerateKeyPair(op);  | 
1264  | 0  | }  | 
1265  |  |  | 
1266  |  | /* Specialization for operation::BignumCalc */  | 
1267  | 105k  | template<> void ExecutorBase<component::Bignum, operation::BignumCalc>::postprocess(std::shared_ptr<Module> module, operation::BignumCalc& op, const ExecutorBase<component::Bignum, operation::BignumCalc>::ResultPair& result) const { | 
1268  | 105k  |     (void)module;  | 
1269  | 105k  |     (void)op;  | 
1270  |  |  | 
1271  | 105k  |     if ( result.second != std::nullopt  ) { | 
1272  | 19.1k  |         const auto bignum = result.second->ToTrimmedString();  | 
1273  |  |  | 
1274  | 19.1k  |         if ( bignum.size() <= config::kMaxBignumSize ) { | 
1275  | 19.1k  |             Pool_Bignum.Set(bignum);  | 
1276  | 19.1k  |             if ( op.calcOp.Is(CF_CALCOP("Prime()")) ) { | 
1277  | 1.02k  |                 Pool_Bignum_Primes.Set(bignum);  | 
1278  | 1.02k  |             }  | 
1279  | 19.1k  |         }  | 
1280  | 19.1k  |         if ( op.calcOp.Is(CF_CALCOP("IsPrime(A)")) ) { | 
1281  | 450  |             if ( bignum == "1" ) { | 
1282  | 106  |                 Pool_Bignum_Primes.Set(op.bn0.ToTrimmedString());  | 
1283  | 106  |             }  | 
1284  | 450  |         }  | 
1285  | 19.1k  |     }  | 
1286  | 105k  | }  | 
1287  |  |  | 
1288  | 105k  | std::optional<component::Bignum> ExecutorBignumCalc::callModule(std::shared_ptr<Module> module, operation::BignumCalc& op) const { | 
1289  | 105k  |     RETURN_IF_DISABLED(options.calcOps, op.calcOp.Get());  | 
1290  |  |  | 
1291  |  |     /* Prevent timeouts */  | 
1292  | 105k  |     if ( op.bn0.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1293  | 105k  |     if ( op.bn1.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1294  | 105k  |     if ( op.bn2.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1295  | 105k  |     if ( op.bn3.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1296  |  |  | 
1297  | 105k  |     if ( op.modulo != std::nullopt && !module->SupportsModularBignumCalc() ) { | 
1298  | 0  |         return std::nullopt;  | 
1299  | 0  |     }  | 
1300  |  |  | 
1301  | 105k  |     switch ( op.calcOp.Get() ) { | 
1302  | 332  |         case    CF_CALCOP("SetBit(A,B)"): | 
1303  |  |             /* Don't allow setting very high bit positions (risk of memory exhaustion) */  | 
1304  | 332  |             if ( op.bn1.GetSize() > 4 ) { | 
1305  | 15  |                 return std::nullopt;  | 
1306  | 15  |             }  | 
1307  | 317  |             break;  | 
1308  | 317  |         case    CF_CALCOP("Exp(A,B)"): | 
1309  | 255  |             if ( op.bn0.GetSize() > 5 || op.bn1.GetSize() > 2 ) { | 
1310  | 36  |                 return std::nullopt;  | 
1311  | 36  |             }  | 
1312  | 219  |             break;  | 
1313  | 219  |         case    CF_CALCOP("ModLShift(A,B,C)"): | 
1314  | 41  |             if ( op.bn1.GetSize() > 4 ) { | 
1315  | 18  |                 return std::nullopt;  | 
1316  | 18  |             }  | 
1317  | 23  |             break;  | 
1318  | 68  |         case    CF_CALCOP("Exp2(A)"): | 
1319  | 68  |             if ( op.bn0.GetSize() > 4 ) { | 
1320  | 32  |                 return std::nullopt;  | 
1321  | 32  |             }  | 
1322  | 36  |             break;  | 
1323  | 105k  |     }  | 
1324  |  |  | 
1325  | 105k  |     return module->OpBignumCalc(op);  | 
1326  | 105k  | }  | 
1327  |  |  | 
1328  |  | /* Specialization for operation::BignumCalc_Fp2 */  | 
1329  | 10.7k  | template<> void ExecutorBase<component::Fp2, operation::BignumCalc_Fp2>::postprocess(std::shared_ptr<Module> module, operation::BignumCalc_Fp2& op, const ExecutorBase<component::Fp2, operation::BignumCalc_Fp2>::ResultPair& result) const { | 
1330  | 10.7k  |     (void)module;  | 
1331  | 10.7k  |     (void)op;  | 
1332  |  |  | 
1333  | 10.7k  |     if ( result.second != std::nullopt  ) { | 
1334  | 1.78k  |         const auto bignum_first = result.second->first.ToTrimmedString();  | 
1335  | 1.78k  |         const auto bignum_second = result.second->second.ToTrimmedString();  | 
1336  |  |  | 
1337  | 1.78k  |         if ( bignum_first.size() <= config::kMaxBignumSize ) { | 
1338  | 1.78k  |             Pool_Bignum.Set(bignum_first);  | 
1339  | 1.78k  |         }  | 
1340  | 1.78k  |         if ( bignum_second.size() <= config::kMaxBignumSize ) { | 
1341  | 1.78k  |             Pool_Bignum.Set(bignum_second);  | 
1342  | 1.78k  |         }  | 
1343  | 1.78k  |     }  | 
1344  | 10.7k  | }  | 
1345  |  |  | 
1346  | 10.7k  | std::optional<component::Fp2> ExecutorBignumCalc_Fp2::callModule(std::shared_ptr<Module> module, operation::BignumCalc_Fp2& op) const { | 
1347  | 10.7k  |     RETURN_IF_DISABLED(options.calcOps, op.calcOp.Get());  | 
1348  |  |  | 
1349  |  |     /* Prevent timeouts */  | 
1350  | 10.7k  |     if ( op.bn0.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1351  | 10.7k  |     if ( op.bn0.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1352  | 10.6k  |     if ( op.bn1.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1353  | 10.6k  |     if ( op.bn1.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1354  | 10.6k  |     if ( op.bn2.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1355  | 10.6k  |     if ( op.bn2.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1356  | 10.6k  |     if ( op.bn3.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1357  | 10.6k  |     if ( op.bn3.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1358  |  |  | 
1359  | 10.6k  |     if ( op.modulo != std::nullopt && !module->SupportsModularBignumCalc() ) { | 
1360  | 0  |         return std::nullopt;  | 
1361  | 0  |     }  | 
1362  |  |  | 
1363  | 10.6k  |     return module->OpBignumCalc_Fp2(op);  | 
1364  | 10.6k  | }  | 
1365  |  |  | 
1366  |  | /* Specialization for operation::BignumCalc_Fp12 */  | 
1367  | 6.84k  | template<> void ExecutorBase<component::Fp12, operation::BignumCalc_Fp12>::postprocess(std::shared_ptr<Module> module, operation::BignumCalc_Fp12& op, const ExecutorBase<component::Fp12, operation::BignumCalc_Fp12>::ResultPair& result) const { | 
1368  | 6.84k  |     (void)module;  | 
1369  | 6.84k  |     (void)op;  | 
1370  |  |  | 
1371  | 6.84k  |     if ( result.second != std::nullopt  ) { | 
1372  | 1.24k  |         Pool_Fp12.Set({ | 
1373  | 1.24k  |                 result.second->bn1.ToTrimmedString(),  | 
1374  | 1.24k  |                 result.second->bn2.ToTrimmedString(),  | 
1375  | 1.24k  |                 result.second->bn3.ToTrimmedString(),  | 
1376  | 1.24k  |                 result.second->bn4.ToTrimmedString(),  | 
1377  | 1.24k  |                 result.second->bn5.ToTrimmedString(),  | 
1378  | 1.24k  |                 result.second->bn6.ToTrimmedString(),  | 
1379  | 1.24k  |                 result.second->bn7.ToTrimmedString(),  | 
1380  | 1.24k  |                 result.second->bn8.ToTrimmedString(),  | 
1381  | 1.24k  |                 result.second->bn9.ToTrimmedString(),  | 
1382  | 1.24k  |                 result.second->bn10.ToTrimmedString(),  | 
1383  | 1.24k  |                 result.second->bn11.ToTrimmedString(),  | 
1384  | 1.24k  |                 result.second->bn12.ToTrimmedString()  | 
1385  | 1.24k  |         });  | 
1386  |  |         /* TODO */  | 
1387  |  | #if 0  | 
1388  |  |         const auto bignum_first = result.second->first.ToTrimmedString();  | 
1389  |  |         const auto bignum_second = result.second->second.ToTrimmedString();  | 
1390  |  |  | 
1391  |  |         if ( bignum_first.size() <= config::kMaxBignumSize ) { | 
1392  |  |             Pool_Bignum.Set(bignum_first);  | 
1393  |  |         }  | 
1394  |  |         if ( bignum_second.size() <= config::kMaxBignumSize ) { | 
1395  |  |             Pool_Bignum.Set(bignum_second);  | 
1396  |  |         }  | 
1397  |  | #endif  | 
1398  | 1.24k  |     }  | 
1399  | 6.84k  | }  | 
1400  |  |  | 
1401  | 6.84k  | std::optional<component::Fp12> ExecutorBignumCalc_Fp12::callModule(std::shared_ptr<Module> module, operation::BignumCalc_Fp12& op) const { | 
1402  | 6.84k  |     RETURN_IF_DISABLED(options.calcOps, op.calcOp.Get());  | 
1403  |  |  | 
1404  |  |     /* Prevent timeouts */  | 
1405  | 6.84k  |     if ( op.bn0.bn1.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1406  | 6.82k  |     if ( op.bn0.bn2.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1407  | 6.80k  |     if ( op.bn0.bn3.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1408  | 6.77k  |     if ( op.bn0.bn4.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1409  | 6.75k  |     if ( op.bn0.bn5.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1410  | 6.74k  |     if ( op.bn0.bn6.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1411  | 6.72k  |     if ( op.bn0.bn7.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1412  | 6.70k  |     if ( op.bn0.bn8.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1413  | 6.68k  |     if ( op.bn0.bn9.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1414  | 6.66k  |     if ( op.bn0.bn10.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1415  | 6.63k  |     if ( op.bn0.bn11.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1416  | 6.60k  |     if ( op.bn0.bn12.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1417  |  |  | 
1418  | 6.58k  |     if ( op.bn1.bn1.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1419  | 6.55k  |     if ( op.bn1.bn2.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1420  | 6.53k  |     if ( op.bn1.bn3.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1421  | 6.50k  |     if ( op.bn1.bn4.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1422  | 6.48k  |     if ( op.bn1.bn5.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1423  | 6.46k  |     if ( op.bn1.bn6.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1424  | 6.43k  |     if ( op.bn1.bn7.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1425  | 6.40k  |     if ( op.bn1.bn8.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1426  | 6.38k  |     if ( op.bn1.bn9.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1427  | 6.36k  |     if ( op.bn1.bn10.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1428  | 6.33k  |     if ( op.bn1.bn11.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1429  | 6.31k  |     if ( op.bn1.bn12.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1430  |  |  | 
1431  | 6.28k  |     if ( op.bn2.bn1.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1432  | 6.25k  |     if ( op.bn2.bn2.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1433  | 6.23k  |     if ( op.bn2.bn3.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1434  | 6.20k  |     if ( op.bn2.bn4.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1435  | 6.17k  |     if ( op.bn2.bn5.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1436  | 6.15k  |     if ( op.bn2.bn6.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1437  | 6.12k  |     if ( op.bn2.bn7.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1438  | 6.10k  |     if ( op.bn2.bn8.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1439  | 6.07k  |     if ( op.bn2.bn9.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1440  | 6.04k  |     if ( op.bn2.bn10.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1441  | 6.02k  |     if ( op.bn2.bn11.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1442  | 5.99k  |     if ( op.bn2.bn12.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1443  |  |  | 
1444  | 5.97k  |     if ( op.bn3.bn1.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1445  | 5.93k  |     if ( op.bn3.bn2.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1446  | 5.90k  |     if ( op.bn3.bn3.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1447  | 5.87k  |     if ( op.bn3.bn4.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1448  | 5.85k  |     if ( op.bn3.bn5.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1449  | 5.82k  |     if ( op.bn3.bn6.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1450  | 5.79k  |     if ( op.bn3.bn7.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1451  | 5.76k  |     if ( op.bn3.bn8.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1452  | 5.73k  |     if ( op.bn3.bn9.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1453  | 5.70k  |     if ( op.bn3.bn10.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1454  | 5.68k  |     if ( op.bn3.bn11.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1455  | 5.65k  |     if ( op.bn3.bn12.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1456  |  |  | 
1457  | 5.62k  |     if ( op.modulo != std::nullopt && !module->SupportsModularBignumCalc() ) { | 
1458  | 0  |         return std::nullopt;  | 
1459  | 0  |     }  | 
1460  |  |  | 
1461  | 5.62k  |     return module->OpBignumCalc_Fp12(op);  | 
1462  | 5.62k  | }  | 
1463  |  |  | 
1464  |  | /* Specialization for operation::BLS_PrivateToPublic */  | 
1465  | 14.6k  | template<> void ExecutorBase<component::BLS_PublicKey, operation::BLS_PrivateToPublic>::postprocess(std::shared_ptr<Module> module, operation::BLS_PrivateToPublic& op, const ExecutorBase<component::BLS_PublicKey, operation::BLS_PrivateToPublic>::ResultPair& result) const { | 
1466  | 14.6k  |     (void)module;  | 
1467  |  |  | 
1468  | 14.6k  |     if ( result.second != std::nullopt  ) { | 
1469  | 8.32k  |         const auto curveID = op.curveType.Get();  | 
1470  | 8.32k  |         const auto g1_x = result.second->first.ToTrimmedString();  | 
1471  | 8.32k  |         const auto g1_y = result.second->second.ToTrimmedString();  | 
1472  |  |  | 
1473  | 8.32k  |         G1AddToPool(curveID, g1_x, g1_y);  | 
1474  |  |  | 
1475  | 8.32k  |         if ( g1_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_x); } | 
1476  | 8.32k  |         if ( g1_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_y); } | 
1477  | 8.32k  |     }  | 
1478  | 14.6k  | }  | 
1479  |  |  | 
1480  | 14.6k  | template<> std::optional<component::BLS_PublicKey> ExecutorBase<component::BLS_PublicKey, operation::BLS_PrivateToPublic>::callModule(std::shared_ptr<Module> module, operation::BLS_PrivateToPublic& op) const { | 
1481  | 14.6k  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
1482  |  |  | 
1483  | 14.5k  |     const size_t size = op.priv.ToTrimmedString().size();  | 
1484  |  |  | 
1485  | 14.5k  |     if ( size == 0 || size > 4096 ) { | 
1486  | 5  |         return std::nullopt;  | 
1487  | 5  |     }  | 
1488  |  |  | 
1489  | 14.5k  |     return module->OpBLS_PrivateToPublic(op);  | 
1490  | 14.5k  | }  | 
1491  |  |  | 
1492  |  | /* Specialization for operation::BLS_PrivateToPublic_G2 */  | 
1493  | 2.58k  | template<> void ExecutorBase<component::G2, operation::BLS_PrivateToPublic_G2>::postprocess(std::shared_ptr<Module> module, operation::BLS_PrivateToPublic_G2& op, const ExecutorBase<component::G2, operation::BLS_PrivateToPublic_G2>::ResultPair& result) const { | 
1494  | 2.58k  |     (void)module;  | 
1495  | 2.58k  |     if ( result.second != std::nullopt  ) { | 
1496  | 905  |         const auto curveID = op.curveType.Get();  | 
1497  | 905  |         const auto g2_v = result.second->first.first.ToTrimmedString();  | 
1498  | 905  |         const auto g2_w = result.second->first.second.ToTrimmedString();  | 
1499  | 905  |         const auto g2_x = result.second->second.first.ToTrimmedString();  | 
1500  | 905  |         const auto g2_y = result.second->second.second.ToTrimmedString();  | 
1501  |  |  | 
1502  | 905  |         G2AddToPool(curveID, g2_v, g2_w, g2_x, g2_y);  | 
1503  |  |  | 
1504  | 905  |         if ( g2_v.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_v); } | 
1505  | 905  |         if ( g2_w.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_w); } | 
1506  | 905  |         if ( g2_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_x); } | 
1507  | 905  |         if ( g2_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_y); } | 
1508  | 905  |     }  | 
1509  | 2.58k  | }  | 
1510  |  |  | 
1511  | 2.58k  | template<> std::optional<component::G2> ExecutorBase<component::G2, operation::BLS_PrivateToPublic_G2>::callModule(std::shared_ptr<Module> module, operation::BLS_PrivateToPublic_G2& op) const { | 
1512  | 2.58k  |     const size_t size = op.priv.ToTrimmedString().size();  | 
1513  |  |  | 
1514  | 2.58k  |     if ( size == 0 || size > 4096 ) { | 
1515  | 10  |         return std::nullopt;  | 
1516  | 10  |     }  | 
1517  |  |  | 
1518  | 2.57k  |     return module->OpBLS_PrivateToPublic_G2(op);  | 
1519  | 2.58k  | }  | 
1520  |  |  | 
1521  |  | /* Specialization for operation::BLS_Sign */  | 
1522  | 3.70k  | template<> void ExecutorBase<component::BLS_Signature, operation::BLS_Sign>::postprocess(std::shared_ptr<Module> module, operation::BLS_Sign& op, const ExecutorBase<component::BLS_Signature, operation::BLS_Sign>::ResultPair& result) const { | 
1523  | 3.70k  |     (void)module;  | 
1524  |  |  | 
1525  | 3.70k  |     if ( result.second != std::nullopt  ) { | 
1526  | 1.63k  |         const auto curveID = op.curveType.Get();  | 
1527  | 1.63k  |         const auto point_v = op.hashOrPoint ? op.point.first.first.ToTrimmedString() : "";  | 
1528  | 1.63k  |         const auto point_w = op.hashOrPoint ? op.point.first.second.ToTrimmedString() : "";  | 
1529  | 1.63k  |         const auto point_x = op.hashOrPoint ? op.point.second.first.ToTrimmedString() : "";  | 
1530  | 1.63k  |         const auto point_y = op.hashOrPoint ? op.point.second.second.ToTrimmedString() : "";  | 
1531  | 1.63k  |         const auto cleartext = op.hashOrPoint ? op.cleartext.ToHex() : "";  | 
1532  | 1.63k  |         const auto dest = op.dest.ToHex();  | 
1533  | 1.63k  |         const auto aug = op.aug.ToHex();  | 
1534  | 1.63k  |         const auto pub_x = result.second->pub.first.ToTrimmedString();  | 
1535  | 1.63k  |         const auto pub_y = result.second->pub.second.ToTrimmedString();  | 
1536  | 1.63k  |         const auto sig_v = result.second->signature.first.first.ToTrimmedString();  | 
1537  | 1.63k  |         const auto sig_w = result.second->signature.first.second.ToTrimmedString();  | 
1538  | 1.63k  |         const auto sig_x = result.second->signature.second.first.ToTrimmedString();  | 
1539  | 1.63k  |         const auto sig_y = result.second->signature.second.second.ToTrimmedString();  | 
1540  |  |  | 
1541  | 1.63k  |         G1AddToPool(curveID, pub_x, pub_y);  | 
1542  | 1.63k  |         G2AddToPool(curveID, sig_v, sig_w, sig_x, sig_y);  | 
1543  | 1.63k  |         Pool_CurveBLSSignature.Set({ curveID, op.hashOrPoint, point_v, point_w, point_x, point_y, cleartext, dest, aug, pub_x, pub_y, sig_v, sig_w, sig_x, sig_y}); | 
1544  |  |  | 
1545  | 1.63k  |         if ( pub_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(pub_x); } | 
1546  | 1.63k  |         if ( pub_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(pub_y); } | 
1547  | 1.63k  |         if ( sig_v.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(sig_v); } | 
1548  | 1.63k  |         if ( sig_w.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(sig_w); } | 
1549  | 1.63k  |         if ( sig_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(sig_x); } | 
1550  | 1.63k  |         if ( sig_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(sig_y); } | 
1551  | 1.63k  |     }  | 
1552  | 3.70k  | }  | 
1553  |  |  | 
1554  | 3.70k  | template<> std::optional<component::BLS_Signature> ExecutorBase<component::BLS_Signature, operation::BLS_Sign>::callModule(std::shared_ptr<Module> module, operation::BLS_Sign& op) const { | 
1555  | 3.70k  |     const size_t size = op.priv.ToTrimmedString().size();  | 
1556  |  |  | 
1557  | 3.70k  |     if ( size == 0 || size > 4096 ) { | 
1558  | 10  |         return std::nullopt;  | 
1559  | 10  |     }  | 
1560  |  |  | 
1561  | 3.69k  |     return module->OpBLS_Sign(op);  | 
1562  | 3.70k  | }  | 
1563  |  |  | 
1564  |  | /* Specialization for operation::BLS_Verify */  | 
1565  | 816  | template<> void ExecutorBase<bool, operation::BLS_Verify>::postprocess(std::shared_ptr<Module> module, operation::BLS_Verify& op, const ExecutorBase<bool, operation::BLS_Verify>::ResultPair& result) const { | 
1566  | 816  |     (void)module;  | 
1567  | 816  |     (void)op;  | 
1568  | 816  |     (void)result;  | 
1569  | 816  | }  | 
1570  |  |  | 
1571  | 816  | template<> std::optional<bool> ExecutorBase<bool, operation::BLS_Verify>::callModule(std::shared_ptr<Module> module, operation::BLS_Verify& op) const { | 
1572  |  | #if 0  | 
1573  |  |     const std::vector<size_t> sizes = { | 
1574  |  |         op.pub.first.ToTrimmedString().size(),  | 
1575  |  |         op.pub.second.ToTrimmedString().size(),  | 
1576  |  |         op.signature.first.ToTrimmedString().size(),  | 
1577  |  |         op.signature.second.ToTrimmedString().size(),  | 
1578  |  |     };  | 
1579  |  |  | 
1580  |  |     for (const auto& size : sizes) { | 
1581  |  |         if ( size == 0 || size > 4096 ) { | 
1582  |  |             return std::nullopt;  | 
1583  |  |         }  | 
1584  |  |     }  | 
1585  |  | #endif  | 
1586  |  |  | 
1587  | 816  |     return module->OpBLS_Verify(op);  | 
1588  | 816  | }  | 
1589  |  |  | 
1590  |  | /* Specialization for operation::BLS_BatchSign */  | 
1591  | 0  | template<> void ExecutorBase<component::BLS_BatchSignature, operation::BLS_BatchSign>::postprocess(std::shared_ptr<Module> module, operation::BLS_BatchSign& op, const ExecutorBase<component::BLS_BatchSignature, operation::BLS_BatchSign>::ResultPair& result) const { | 
1592  | 0  |     (void)module;  | 
1593  | 0  |     (void)op;  | 
1594  |  | 
  | 
1595  | 0  |     if ( result.second != std::nullopt  ) { | 
1596  | 0  |         std::vector< std::pair<BLS_BatchSignature_::G1, BLS_BatchSignature_::G2> > msgpub;  | 
1597  | 0  |         for (const auto& mp : result.second->msgpub) { | 
1598  | 0  |             msgpub.push_back(  | 
1599  | 0  |                     std::pair<BLS_BatchSignature_::G1, BLS_BatchSignature_::G2>{ | 
1600  | 0  |                         { | 
1601  | 0  |                             mp.first.first.ToTrimmedString(),  | 
1602  | 0  |                             mp.first.second.ToTrimmedString()  | 
1603  | 0  |                         },  | 
1604  | 0  |                         { | 
1605  | 0  |                             mp.second.first.first.ToTrimmedString(),  | 
1606  | 0  |                             mp.second.first.second.ToTrimmedString(),  | 
1607  | 0  |                             mp.second.second.first.ToTrimmedString(),  | 
1608  | 0  |                             mp.second.second.second.ToTrimmedString()  | 
1609  | 0  |                         }  | 
1610  | 0  |                     }  | 
1611  | 0  |             );  | 
1612  | 0  |             G1AddToPool(CF_ECC_CURVE("BLS12_381"), mp.first.first.ToTrimmedString(), mp.first.second.ToTrimmedString()); | 
1613  | 0  |             Pool_CurveBLSG2.Set({ | 
1614  | 0  |                     CF_ECC_CURVE("BLS12_381"), | 
1615  | 0  |                     mp.second.first.first.ToTrimmedString(),  | 
1616  | 0  |                     mp.second.first.second.ToTrimmedString(),  | 
1617  | 0  |                     mp.second.second.first.ToTrimmedString(),  | 
1618  | 0  |                     mp.second.second.second.ToTrimmedString()  | 
1619  | 0  |             });  | 
1620  | 0  |         }  | 
1621  | 0  |         Pool_BLS_BatchSignature.Set({msgpub}); | 
1622  | 0  |     }  | 
1623  | 0  | }  | 
1624  |  |  | 
1625  | 0  | template<> std::optional<component::BLS_BatchSignature> ExecutorBase<component::BLS_BatchSignature, operation::BLS_BatchSign>::callModule(std::shared_ptr<Module> module, operation::BLS_BatchSign& op) const { | 
1626  | 0  |     return module->OpBLS_BatchSign(op);  | 
1627  | 0  | }  | 
1628  |  |  | 
1629  |  | /* Specialization for operation::BLS_BatchVerify */  | 
1630  | 4.00k  | template<> void ExecutorBase<bool, operation::BLS_BatchVerify>::postprocess(std::shared_ptr<Module> module, operation::BLS_BatchVerify& op, const ExecutorBase<bool, operation::BLS_BatchVerify>::ResultPair& result) const { | 
1631  | 4.00k  |     (void)module;  | 
1632  | 4.00k  |     (void)op;  | 
1633  | 4.00k  |     (void)result;  | 
1634  | 4.00k  | }  | 
1635  |  |  | 
1636  | 4.00k  | template<> std::optional<bool> ExecutorBase<bool, operation::BLS_BatchVerify>::callModule(std::shared_ptr<Module> module, operation::BLS_BatchVerify& op) const { | 
1637  | 4.00k  |     return module->OpBLS_BatchVerify(op);  | 
1638  | 4.00k  | }  | 
1639  |  |  | 
1640  |  | /* Specialization for operation::BLS_Aggregate_G1 */  | 
1641  | 644  | template<> void ExecutorBase<component::G1, operation::BLS_Aggregate_G1>::postprocess(std::shared_ptr<Module> module, operation::BLS_Aggregate_G1& op, const ExecutorBase<component::G1, operation::BLS_Aggregate_G1>::ResultPair& result) const { | 
1642  | 644  |     (void)module;  | 
1643  | 644  |     (void)op;  | 
1644  | 644  |     (void)result;  | 
1645  | 644  | }  | 
1646  |  |  | 
1647  | 644  | template<> std::optional<component::G1> ExecutorBase<component::G1, operation::BLS_Aggregate_G1>::callModule(std::shared_ptr<Module> module, operation::BLS_Aggregate_G1& op) const { | 
1648  | 644  |     return module->OpBLS_Aggregate_G1(op);  | 
1649  | 644  | }  | 
1650  |  |  | 
1651  |  | /* Specialization for operation::BLS_Aggregate_G2 */  | 
1652  | 743  | template<> void ExecutorBase<component::G2, operation::BLS_Aggregate_G2>::postprocess(std::shared_ptr<Module> module, operation::BLS_Aggregate_G2& op, const ExecutorBase<component::G2, operation::BLS_Aggregate_G2>::ResultPair& result) const { | 
1653  | 743  |     (void)module;  | 
1654  | 743  |     (void)op;  | 
1655  | 743  |     (void)result;  | 
1656  | 743  | }  | 
1657  |  |  | 
1658  | 743  | template<> std::optional<component::G2> ExecutorBase<component::G2, operation::BLS_Aggregate_G2>::callModule(std::shared_ptr<Module> module, operation::BLS_Aggregate_G2& op) const { | 
1659  | 743  |     return module->OpBLS_Aggregate_G2(op);  | 
1660  | 743  | }  | 
1661  |  |  | 
1662  |  | /* Specialization for operation::BLS_Pairing */  | 
1663  | 737  | template<> void ExecutorBase<component::Fp12, operation::BLS_Pairing>::postprocess(std::shared_ptr<Module> module, operation::BLS_Pairing& op, const ExecutorBase<component::Fp12, operation::BLS_Pairing>::ResultPair& result) const { | 
1664  | 737  |     (void)module;  | 
1665  | 737  |     (void)op;  | 
1666  |  |  | 
1667  | 737  |     if ( result.second != std::nullopt  ) { | 
1668  | 143  |         Pool_Fp12.Set({ | 
1669  | 143  |                 result.second->bn1.ToTrimmedString(),  | 
1670  | 143  |                 result.second->bn2.ToTrimmedString(),  | 
1671  | 143  |                 result.second->bn3.ToTrimmedString(),  | 
1672  | 143  |                 result.second->bn4.ToTrimmedString(),  | 
1673  | 143  |                 result.second->bn5.ToTrimmedString(),  | 
1674  | 143  |                 result.second->bn6.ToTrimmedString(),  | 
1675  | 143  |                 result.second->bn7.ToTrimmedString(),  | 
1676  | 143  |                 result.second->bn8.ToTrimmedString(),  | 
1677  | 143  |                 result.second->bn9.ToTrimmedString(),  | 
1678  | 143  |                 result.second->bn10.ToTrimmedString(),  | 
1679  | 143  |                 result.second->bn11.ToTrimmedString(),  | 
1680  | 143  |                 result.second->bn12.ToTrimmedString()  | 
1681  | 143  |         });  | 
1682  | 143  |     }  | 
1683  | 737  | }  | 
1684  |  |  | 
1685  | 737  | template<> std::optional<component::Fp12> ExecutorBase<component::Fp12, operation::BLS_Pairing>::callModule(std::shared_ptr<Module> module, operation::BLS_Pairing& op) const { | 
1686  | 737  |     return module->OpBLS_Pairing(op);  | 
1687  | 737  | }  | 
1688  |  |  | 
1689  |  | /* Specialization for operation::BLS_MillerLoop */  | 
1690  | 0  | template<> void ExecutorBase<component::Fp12, operation::BLS_MillerLoop>::postprocess(std::shared_ptr<Module> module, operation::BLS_MillerLoop& op, const ExecutorBase<component::Fp12, operation::BLS_MillerLoop>::ResultPair& result) const { | 
1691  | 0  |     (void)module;  | 
1692  | 0  |     (void)op;  | 
1693  |  | 
  | 
1694  | 0  |     if ( result.second != std::nullopt  ) { | 
1695  | 0  |         Pool_Fp12.Set({ | 
1696  | 0  |                 result.second->bn1.ToTrimmedString(),  | 
1697  | 0  |                 result.second->bn2.ToTrimmedString(),  | 
1698  | 0  |                 result.second->bn3.ToTrimmedString(),  | 
1699  | 0  |                 result.second->bn4.ToTrimmedString(),  | 
1700  | 0  |                 result.second->bn5.ToTrimmedString(),  | 
1701  | 0  |                 result.second->bn6.ToTrimmedString(),  | 
1702  | 0  |                 result.second->bn7.ToTrimmedString(),  | 
1703  | 0  |                 result.second->bn8.ToTrimmedString(),  | 
1704  | 0  |                 result.second->bn9.ToTrimmedString(),  | 
1705  | 0  |                 result.second->bn10.ToTrimmedString(),  | 
1706  | 0  |                 result.second->bn11.ToTrimmedString(),  | 
1707  | 0  |                 result.second->bn12.ToTrimmedString()  | 
1708  | 0  |         });  | 
1709  | 0  |     }  | 
1710  | 0  | }  | 
1711  |  |  | 
1712  | 0  | template<> std::optional<component::Fp12> ExecutorBase<component::Fp12, operation::BLS_MillerLoop>::callModule(std::shared_ptr<Module> module, operation::BLS_MillerLoop& op) const { | 
1713  | 0  |     return module->OpBLS_MillerLoop(op);  | 
1714  | 0  | }  | 
1715  |  |  | 
1716  |  | /* Specialization for operation::BLS_FinalExp */  | 
1717  | 1.13k  | template<> void ExecutorBase<component::Fp12, operation::BLS_FinalExp>::postprocess(std::shared_ptr<Module> module, operation::BLS_FinalExp& op, const ExecutorBase<component::Fp12, operation::BLS_FinalExp>::ResultPair& result) const { | 
1718  | 1.13k  |     (void)module;  | 
1719  | 1.13k  |     (void)op;  | 
1720  |  |  | 
1721  | 1.13k  |     if ( result.second != std::nullopt  ) { | 
1722  | 578  |         Pool_Fp12.Set({ | 
1723  | 578  |                 result.second->bn1.ToTrimmedString(),  | 
1724  | 578  |                 result.second->bn2.ToTrimmedString(),  | 
1725  | 578  |                 result.second->bn3.ToTrimmedString(),  | 
1726  | 578  |                 result.second->bn4.ToTrimmedString(),  | 
1727  | 578  |                 result.second->bn5.ToTrimmedString(),  | 
1728  | 578  |                 result.second->bn6.ToTrimmedString(),  | 
1729  | 578  |                 result.second->bn7.ToTrimmedString(),  | 
1730  | 578  |                 result.second->bn8.ToTrimmedString(),  | 
1731  | 578  |                 result.second->bn9.ToTrimmedString(),  | 
1732  | 578  |                 result.second->bn10.ToTrimmedString(),  | 
1733  | 578  |                 result.second->bn11.ToTrimmedString(),  | 
1734  | 578  |                 result.second->bn12.ToTrimmedString()  | 
1735  | 578  |         });  | 
1736  | 578  |     }  | 
1737  | 1.13k  | }  | 
1738  |  |  | 
1739  | 1.13k  | template<> std::optional<component::Fp12> ExecutorBase<component::Fp12, operation::BLS_FinalExp>::callModule(std::shared_ptr<Module> module, operation::BLS_FinalExp& op) const { | 
1740  | 1.13k  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
1741  | 1.01k  |     return module->OpBLS_FinalExp(op);  | 
1742  | 1.13k  | }  | 
1743  |  |  | 
1744  |  | /* Specialization for operation::BLS_HashToG1 */  | 
1745  | 895  | template<> void ExecutorBase<component::G1, operation::BLS_HashToG1>::postprocess(std::shared_ptr<Module> module, operation::BLS_HashToG1& op, const ExecutorBase<component::G1, operation::BLS_HashToG1>::ResultPair& result) const { | 
1746  | 895  |     (void)module;  | 
1747  |  |  | 
1748  | 895  |     if ( result.second != std::nullopt  ) { | 
1749  | 452  |         const auto curveID = op.curveType.Get();  | 
1750  | 452  |         const auto g1_x = result.second->first.ToTrimmedString();  | 
1751  | 452  |         const auto g1_y = result.second->second.ToTrimmedString();  | 
1752  |  |  | 
1753  | 452  |         G1AddToPool(curveID, g1_x, g1_y);  | 
1754  |  |  | 
1755  | 452  |         if ( g1_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_x); } | 
1756  | 452  |         if ( g1_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_y); } | 
1757  | 452  |     }  | 
1758  | 895  | }  | 
1759  |  |  | 
1760  | 895  | template<> std::optional<component::G1> ExecutorBase<component::G1, operation::BLS_HashToG1>::callModule(std::shared_ptr<Module> module, operation::BLS_HashToG1& op) const { | 
1761  | 895  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
1762  | 716  |     return module->OpBLS_HashToG1(op);  | 
1763  | 895  | }  | 
1764  |  |  | 
1765  |  | /* Specialization for operation::BLS_MapToG1 */  | 
1766  | 1.07k  | template<> void ExecutorBase<component::G1, operation::BLS_MapToG1>::postprocess(std::shared_ptr<Module> module, operation::BLS_MapToG1& op, const ExecutorBase<component::G1, operation::BLS_MapToG1>::ResultPair& result) const { | 
1767  | 1.07k  |     (void)module;  | 
1768  |  |  | 
1769  | 1.07k  |     if ( result.second != std::nullopt  ) { | 
1770  | 418  |         const auto curveID = op.curveType.Get();  | 
1771  | 418  |         const auto g1_x = result.second->first.ToTrimmedString();  | 
1772  | 418  |         const auto g1_y = result.second->second.ToTrimmedString();  | 
1773  |  |  | 
1774  | 418  |         G1AddToPool(curveID, g1_x, g1_y);  | 
1775  |  |  | 
1776  | 418  |         if ( g1_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_x); } | 
1777  | 418  |         if ( g1_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_y); } | 
1778  | 418  |     }  | 
1779  | 1.07k  | }  | 
1780  |  |  | 
1781  | 1.07k  | template<> std::optional<component::G1> ExecutorBase<component::G1, operation::BLS_MapToG1>::callModule(std::shared_ptr<Module> module, operation::BLS_MapToG1& op) const { | 
1782  | 1.07k  |     return module->OpBLS_MapToG1(op);  | 
1783  | 1.07k  | }  | 
1784  |  |  | 
1785  |  | /* Specialization for operation::BLS_MapToG2 */  | 
1786  | 722  | template<> void ExecutorBase<component::G2, operation::BLS_MapToG2>::postprocess(std::shared_ptr<Module> module, operation::BLS_MapToG2& op, const ExecutorBase<component::G2, operation::BLS_MapToG2>::ResultPair& result) const { | 
1787  | 722  |     (void)module;  | 
1788  |  |  | 
1789  | 722  |     if ( result.second != std::nullopt  ) { | 
1790  | 237  |         const auto curveID = op.curveType.Get();  | 
1791  | 237  |         const auto g2_v = result.second->first.first.ToTrimmedString();  | 
1792  | 237  |         const auto g2_w = result.second->first.second.ToTrimmedString();  | 
1793  | 237  |         const auto g2_x = result.second->second.first.ToTrimmedString();  | 
1794  | 237  |         const auto g2_y = result.second->second.second.ToTrimmedString();  | 
1795  |  |  | 
1796  | 237  |         G2AddToPool(curveID, g2_v, g2_w, g2_x, g2_y);  | 
1797  |  |  | 
1798  | 237  |         if ( g2_v.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_v); } | 
1799  | 237  |         if ( g2_w.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_w); } | 
1800  | 237  |         if ( g2_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_x); } | 
1801  | 237  |         if ( g2_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_y); } | 
1802  | 237  |     }  | 
1803  | 722  | }  | 
1804  |  |  | 
1805  | 722  | template<> std::optional<component::G2> ExecutorBase<component::G2, operation::BLS_MapToG2>::callModule(std::shared_ptr<Module> module, operation::BLS_MapToG2& op) const { | 
1806  | 722  |     return module->OpBLS_MapToG2(op);  | 
1807  | 722  | }  | 
1808  |  |  | 
1809  |  | /* Specialization for operation::BLS_IsG1OnCurve */  | 
1810  | 6.66k  | template<> void ExecutorBase<bool, operation::BLS_IsG1OnCurve>::postprocess(std::shared_ptr<Module> module, operation::BLS_IsG1OnCurve& op, const ExecutorBase<bool, operation::BLS_IsG1OnCurve>::ResultPair& result) const { | 
1811  | 6.66k  |     (void)module;  | 
1812  | 6.66k  |     (void)op;  | 
1813  | 6.66k  |     (void)result;  | 
1814  | 6.66k  | }  | 
1815  |  |  | 
1816  | 6.66k  | template<> std::optional<bool> ExecutorBase<bool, operation::BLS_IsG1OnCurve>::callModule(std::shared_ptr<Module> module, operation::BLS_IsG1OnCurve& op) const { | 
1817  | 6.66k  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
1818  | 6.55k  |     if ( op.g1.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1819  | 6.54k  |     if ( op.g1.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1820  |  |  | 
1821  | 6.53k  |     return module->OpBLS_IsG1OnCurve(op);  | 
1822  | 6.54k  | }  | 
1823  |  |  | 
1824  |  | /* Specialization for operation::BLS_IsG2OnCurve */  | 
1825  | 9.92k  | template<> void ExecutorBase<bool, operation::BLS_IsG2OnCurve>::postprocess(std::shared_ptr<Module> module, operation::BLS_IsG2OnCurve& op, const ExecutorBase<bool, operation::BLS_IsG2OnCurve>::ResultPair& result) const { | 
1826  | 9.92k  |     (void)module;  | 
1827  | 9.92k  |     (void)op;  | 
1828  | 9.92k  |     (void)result;  | 
1829  | 9.92k  | }  | 
1830  |  |  | 
1831  | 9.92k  | template<> std::optional<bool> ExecutorBase<bool, operation::BLS_IsG2OnCurve>::callModule(std::shared_ptr<Module> module, operation::BLS_IsG2OnCurve& op) const { | 
1832  | 9.92k  |     if ( op.g2.first.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1833  | 9.91k  |     if ( op.g2.first.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1834  | 9.89k  |     if ( op.g2.second.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1835  | 9.87k  |     if ( op.g2.second.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1836  |  |  | 
1837  | 9.86k  |     return module->OpBLS_IsG2OnCurve(op);  | 
1838  | 9.87k  | }  | 
1839  |  |  | 
1840  |  | /* Specialization for operation::BLS_GenerateKeyPair */  | 
1841  | 518  | template<> void ExecutorBase<component::BLS_KeyPair, operation::BLS_GenerateKeyPair>::postprocess(std::shared_ptr<Module> module, operation::BLS_GenerateKeyPair& op, const ExecutorBase<component::BLS_KeyPair, operation::BLS_GenerateKeyPair>::ResultPair& result) const { | 
1842  | 518  |     (void)module;  | 
1843  |  |  | 
1844  | 518  |     if ( result.second != std::nullopt  ) { | 
1845  | 108  |         const auto curveID = op.curveType.Get();  | 
1846  | 108  |         const auto priv = result.second->priv.ToTrimmedString();  | 
1847  | 108  |         const auto g1_x = result.second->pub.first.ToTrimmedString();  | 
1848  | 108  |         const auto g1_y = result.second->pub.second.ToTrimmedString();  | 
1849  |  |  | 
1850  | 108  |         G1AddToPool(curveID, g1_x, g1_y);  | 
1851  |  |  | 
1852  | 108  |         if ( priv.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(priv); } | 
1853  | 108  |         if ( g1_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_x); } | 
1854  | 108  |         if ( g1_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_y); } | 
1855  | 108  |     }  | 
1856  | 518  | }  | 
1857  |  |  | 
1858  | 518  | template<> std::optional<component::BLS_KeyPair> ExecutorBase<component::BLS_KeyPair, operation::BLS_GenerateKeyPair>::callModule(std::shared_ptr<Module> module, operation::BLS_GenerateKeyPair& op) const { | 
1859  | 518  |     return module->OpBLS_GenerateKeyPair(op);  | 
1860  | 518  | }  | 
1861  |  |  | 
1862  |  | /* Specialization for operation::BLS_Decompress_G1 */  | 
1863  | 1.23k  | template<> void ExecutorBase<component::G1, operation::BLS_Decompress_G1>::postprocess(std::shared_ptr<Module> module, operation::BLS_Decompress_G1& op, const ExecutorBase<component::G1, operation::BLS_Decompress_G1>::ResultPair& result) const { | 
1864  | 1.23k  |     (void)module;  | 
1865  |  |  | 
1866  | 1.23k  |     if ( result.second != std::nullopt  ) { | 
1867  | 342  |         const auto curveID = op.curveType.Get();  | 
1868  | 342  |         const auto g1_x = result.second->first.ToTrimmedString();  | 
1869  | 342  |         const auto g1_y = result.second->second.ToTrimmedString();  | 
1870  |  |  | 
1871  | 342  |         G1AddToPool(curveID, g1_x, g1_y);  | 
1872  |  |  | 
1873  | 342  |         if ( g1_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_x); } | 
1874  | 342  |         if ( g1_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_y); } | 
1875  | 342  |     }  | 
1876  | 1.23k  | }  | 
1877  |  |  | 
1878  | 1.23k  | template<> std::optional<component::G1> ExecutorBase<component::G1, operation::BLS_Decompress_G1>::callModule(std::shared_ptr<Module> module, operation::BLS_Decompress_G1& op) const { | 
1879  | 1.23k  |     return module->OpBLS_Decompress_G1(op);  | 
1880  | 1.23k  | }  | 
1881  |  |  | 
1882  |  | /* Specialization for operation::BLS_Compress_G1 */  | 
1883  | 585  | template<> void ExecutorBase<component::Bignum, operation::BLS_Compress_G1>::postprocess(std::shared_ptr<Module> module, operation::BLS_Compress_G1& op, const ExecutorBase<component::Bignum, operation::BLS_Compress_G1>::ResultPair& result) const { | 
1884  | 585  |     (void)module;  | 
1885  | 585  |     (void)op;  | 
1886  |  |  | 
1887  | 585  |     if ( result.second != std::nullopt  ) { | 
1888  | 144  |         const auto compressed = result.second->ToTrimmedString();  | 
1889  |  |  | 
1890  | 144  |         if ( compressed.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(compressed); } | 
1891  | 144  |     }  | 
1892  | 585  | }  | 
1893  |  |  | 
1894  | 585  | template<> std::optional<component::Bignum> ExecutorBase<component::Bignum, operation::BLS_Compress_G1>::callModule(std::shared_ptr<Module> module, operation::BLS_Compress_G1& op) const { | 
1895  | 585  |     return module->OpBLS_Compress_G1(op);  | 
1896  | 585  | }  | 
1897  |  |  | 
1898  |  | /* Specialization for operation::BLS_Decompress_G2 */  | 
1899  | 724  | template<> void ExecutorBase<component::G2, operation::BLS_Decompress_G2>::postprocess(std::shared_ptr<Module> module, operation::BLS_Decompress_G2& op, const ExecutorBase<component::G2, operation::BLS_Decompress_G2>::ResultPair& result) const { | 
1900  | 724  |     (void)module;  | 
1901  |  |  | 
1902  | 724  |     if ( result.second != std::nullopt  ) { | 
1903  | 227  |         const auto curveID = op.curveType.Get();  | 
1904  | 227  |         const auto g2_v = result.second->first.first.ToTrimmedString();  | 
1905  | 227  |         const auto g2_w = result.second->first.second.ToTrimmedString();  | 
1906  | 227  |         const auto g2_x = result.second->second.first.ToTrimmedString();  | 
1907  | 227  |         const auto g2_y = result.second->second.second.ToTrimmedString();  | 
1908  |  |  | 
1909  | 227  |         G2AddToPool(curveID, g2_v, g2_w, g2_x, g2_y);  | 
1910  |  |  | 
1911  | 227  |         if ( g2_v.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_v); } | 
1912  | 227  |         if ( g2_w.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_w); } | 
1913  | 227  |         if ( g2_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_x); } | 
1914  | 227  |         if ( g2_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_y); } | 
1915  | 227  |     }  | 
1916  | 724  | }  | 
1917  |  |  | 
1918  | 724  | template<> std::optional<component::G2> ExecutorBase<component::G2, operation::BLS_Decompress_G2>::callModule(std::shared_ptr<Module> module, operation::BLS_Decompress_G2& op) const { | 
1919  | 724  |     return module->OpBLS_Decompress_G2(op);  | 
1920  | 724  | }  | 
1921  |  |  | 
1922  |  | /* Specialization for operation::BLS_Compress_G2 */  | 
1923  | 643  | template<> void ExecutorBase<component::G1, operation::BLS_Compress_G2>::postprocess(std::shared_ptr<Module> module, operation::BLS_Compress_G2& op, const ExecutorBase<component::G1, operation::BLS_Compress_G2>::ResultPair& result) const { | 
1924  | 643  |     (void)module;  | 
1925  |  |  | 
1926  | 643  |     if ( result.second != std::nullopt  ) { | 
1927  | 182  |         const auto curveID = op.curveType.Get();  | 
1928  | 182  |         const auto g1_x = result.second->first.ToTrimmedString();  | 
1929  | 182  |         const auto g1_y = result.second->second.ToTrimmedString();  | 
1930  |  |  | 
1931  | 182  |         G1AddToPool(curveID, g1_x, g1_y);  | 
1932  |  |  | 
1933  | 182  |         if ( g1_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_x); } | 
1934  | 182  |         if ( g1_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_y); } | 
1935  | 182  |     }  | 
1936  | 643  | }  | 
1937  |  |  | 
1938  | 643  | template<> std::optional<component::G1> ExecutorBase<component::G1, operation::BLS_Compress_G2>::callModule(std::shared_ptr<Module> module, operation::BLS_Compress_G2& op) const { | 
1939  | 643  |     return module->OpBLS_Compress_G2(op);  | 
1940  | 643  | }  | 
1941  |  |  | 
1942  |  | /* Specialization for operation::BLS_G1_Add */  | 
1943  | 12.4k  | template<> void ExecutorBase<component::G1, operation::BLS_G1_Add>::postprocess(std::shared_ptr<Module> module, operation::BLS_G1_Add& op, const ExecutorBase<component::G1, operation::BLS_G1_Add>::ResultPair& result) const { | 
1944  | 12.4k  |     (void)module;  | 
1945  |  |  | 
1946  | 12.4k  |     if ( result.second != std::nullopt  ) { | 
1947  | 2.37k  |         const auto curveID = op.curveType.Get();  | 
1948  | 2.37k  |         const auto g1_x = result.second->first.ToTrimmedString();  | 
1949  | 2.37k  |         const auto g1_y = result.second->second.ToTrimmedString();  | 
1950  |  |  | 
1951  | 2.37k  |         G1AddToPool(curveID, g1_x, g1_y);  | 
1952  |  |  | 
1953  | 2.37k  |         if ( g1_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_x); } | 
1954  | 2.37k  |         if ( g1_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_y); } | 
1955  | 2.37k  |     }  | 
1956  | 12.4k  | }  | 
1957  |  |  | 
1958  | 12.4k  | template<> std::optional<component::G1> ExecutorBase<component::G1, operation::BLS_G1_Add>::callModule(std::shared_ptr<Module> module, operation::BLS_G1_Add& op) const { | 
1959  | 12.4k  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
1960  | 12.3k  |     if ( op.a.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1961  | 12.3k  |     if ( op.a.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1962  | 12.3k  |     if ( op.b.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1963  | 12.3k  |     if ( op.b.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1964  |  |  | 
1965  | 12.3k  |     return module->OpBLS_G1_Add(op);  | 
1966  | 12.3k  | }  | 
1967  |  |  | 
1968  |  | /* Specialization for operation::BLS_G1_Mul */  | 
1969  | 8.37k  | template<> void ExecutorBase<component::G1, operation::BLS_G1_Mul>::postprocess(std::shared_ptr<Module> module, operation::BLS_G1_Mul& op, const ExecutorBase<component::G1, operation::BLS_G1_Mul>::ResultPair& result) const { | 
1970  | 8.37k  |     (void)module;  | 
1971  |  |  | 
1972  | 8.37k  |     if ( result.second != std::nullopt  ) { | 
1973  | 451  |         const auto curveID = op.curveType.Get();  | 
1974  | 451  |         const auto g1_x = result.second->first.ToTrimmedString();  | 
1975  | 451  |         const auto g1_y = result.second->second.ToTrimmedString();  | 
1976  |  |  | 
1977  | 451  |         G1AddToPool(curveID, g1_x, g1_y);  | 
1978  |  |  | 
1979  | 451  |         if ( g1_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_x); } | 
1980  | 451  |         if ( g1_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_y); } | 
1981  | 451  |     }  | 
1982  | 8.37k  | }  | 
1983  |  |  | 
1984  | 8.37k  | template<> std::optional<component::G1> ExecutorBase<component::G1, operation::BLS_G1_Mul>::callModule(std::shared_ptr<Module> module, operation::BLS_G1_Mul& op) const { | 
1985  | 8.37k  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
1986  | 8.29k  |     if ( op.a.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1987  | 8.27k  |     if ( op.a.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1988  | 8.26k  |     if ( op.b.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
1989  |  |  | 
1990  | 8.24k  |     return module->OpBLS_G1_Mul(op);  | 
1991  | 8.26k  | }  | 
1992  |  |  | 
1993  |  | /* Specialization for operation::BLS_G1_IsEq */  | 
1994  | 1.00k  | template<> void ExecutorBase<bool, operation::BLS_G1_IsEq>::postprocess(std::shared_ptr<Module> module, operation::BLS_G1_IsEq& op, const ExecutorBase<bool, operation::BLS_G1_IsEq>::ResultPair& result) const { | 
1995  | 1.00k  |     (void)module;  | 
1996  | 1.00k  |     (void)op;  | 
1997  | 1.00k  |     (void)result;  | 
1998  | 1.00k  | }  | 
1999  |  |  | 
2000  | 1.00k  | template<> std::optional<bool> ExecutorBase<bool, operation::BLS_G1_IsEq>::callModule(std::shared_ptr<Module> module, operation::BLS_G1_IsEq& op) const { | 
2001  | 1.00k  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
2002  | 871  |     if ( op.a.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2003  | 852  |     if ( op.a.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2004  | 826  |     if ( op.b.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2005  | 816  |     if ( op.b.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2006  |  |  | 
2007  | 798  |     return module->OpBLS_G1_IsEq(op);  | 
2008  | 816  | }  | 
2009  |  |  | 
2010  |  | /* Specialization for operation::BLS_G1_Neg */  | 
2011  | 11.7k  | template<> void ExecutorBase<component::G1, operation::BLS_G1_Neg>::postprocess(std::shared_ptr<Module> module, operation::BLS_G1_Neg& op, const ExecutorBase<component::G1, operation::BLS_G1_Neg>::ResultPair& result) const { | 
2012  | 11.7k  |     (void)module;  | 
2013  |  |  | 
2014  | 11.7k  |     if ( result.second != std::nullopt  ) { | 
2015  | 4.81k  |         const auto curveID = op.curveType.Get();  | 
2016  | 4.81k  |         const auto g1_x = result.second->first.ToTrimmedString();  | 
2017  | 4.81k  |         const auto g1_y = result.second->second.ToTrimmedString();  | 
2018  |  |  | 
2019  | 4.81k  |         G1AddToPool(curveID, g1_x, g1_y);  | 
2020  |  |  | 
2021  | 4.81k  |         if ( g1_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_x); } | 
2022  | 4.81k  |         if ( g1_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_y); } | 
2023  | 4.81k  |     }  | 
2024  | 11.7k  | }  | 
2025  |  |  | 
2026  | 11.7k  | template<> std::optional<component::G1> ExecutorBase<component::G1, operation::BLS_G1_Neg>::callModule(std::shared_ptr<Module> module, operation::BLS_G1_Neg& op) const { | 
2027  | 11.7k  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
2028  | 11.6k  |     if ( op.a.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2029  | 11.6k  |     if ( op.a.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2030  |  |  | 
2031  | 11.6k  |     return module->OpBLS_G1_Neg(op);  | 
2032  | 11.6k  | }  | 
2033  |  |  | 
2034  |  | /* Specialization for operation::BLS_G2_Add */  | 
2035  | 12.3k  | template<> void ExecutorBase<component::G2, operation::BLS_G2_Add>::postprocess(std::shared_ptr<Module> module, operation::BLS_G2_Add& op, const ExecutorBase<component::G2, operation::BLS_G2_Add>::ResultPair& result) const { | 
2036  | 12.3k  |     (void)module;  | 
2037  |  |  | 
2038  | 12.3k  |     if ( result.second != std::nullopt  ) { | 
2039  | 2.67k  |         const auto curveID = op.curveType.Get();  | 
2040  | 2.67k  |         const auto g2_v = result.second->first.first.ToTrimmedString();  | 
2041  | 2.67k  |         const auto g2_w = result.second->first.second.ToTrimmedString();  | 
2042  | 2.67k  |         const auto g2_x = result.second->second.first.ToTrimmedString();  | 
2043  | 2.67k  |         const auto g2_y = result.second->second.second.ToTrimmedString();  | 
2044  |  |  | 
2045  | 2.67k  |         G2AddToPool(curveID, g2_v, g2_w, g2_x, g2_y);  | 
2046  |  |  | 
2047  | 2.67k  |         if ( g2_v.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_v); } | 
2048  | 2.67k  |         if ( g2_w.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_w); } | 
2049  | 2.67k  |         if ( g2_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_x); } | 
2050  | 2.67k  |         if ( g2_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_y); } | 
2051  | 2.67k  |     }  | 
2052  | 12.3k  | }  | 
2053  |  |  | 
2054  | 12.3k  | template<> std::optional<component::G2> ExecutorBase<component::G2, operation::BLS_G2_Add>::callModule(std::shared_ptr<Module> module, operation::BLS_G2_Add& op) const { | 
2055  | 12.3k  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
2056  | 12.2k  |     if ( op.a.first.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2057  | 12.2k  |     if ( op.a.first.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2058  | 12.2k  |     if ( op.a.second.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2059  | 12.2k  |     if ( op.a.second.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2060  | 12.2k  |     if ( op.b.first.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2061  | 12.1k  |     if ( op.b.first.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2062  | 12.1k  |     if ( op.b.second.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2063  | 12.1k  |     if ( op.b.second.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2064  |  |  | 
2065  | 12.1k  |     return module->OpBLS_G2_Add(op);  | 
2066  | 12.1k  | }  | 
2067  |  |  | 
2068  |  | /* Specialization for operation::BLS_G2_Mul */  | 
2069  | 19.8k  | template<> void ExecutorBase<component::G2, operation::BLS_G2_Mul>::postprocess(std::shared_ptr<Module> module, operation::BLS_G2_Mul& op, const ExecutorBase<component::G2, operation::BLS_G2_Mul>::ResultPair& result) const { | 
2070  | 19.8k  |     (void)module;  | 
2071  |  |  | 
2072  | 19.8k  |     if ( result.second != std::nullopt  ) { | 
2073  | 4.12k  |         const auto curveID = op.curveType.Get();  | 
2074  | 4.12k  |         const auto g2_v = result.second->first.first.ToTrimmedString();  | 
2075  | 4.12k  |         const auto g2_w = result.second->first.second.ToTrimmedString();  | 
2076  | 4.12k  |         const auto g2_x = result.second->second.first.ToTrimmedString();  | 
2077  | 4.12k  |         const auto g2_y = result.second->second.second.ToTrimmedString();  | 
2078  |  |  | 
2079  | 4.12k  |         G2AddToPool(curveID, g2_v, g2_w, g2_x, g2_y);  | 
2080  |  |  | 
2081  | 4.12k  |         if ( g2_v.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_v); } | 
2082  | 4.12k  |         if ( g2_w.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_w); } | 
2083  | 4.12k  |         if ( g2_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_x); } | 
2084  | 4.12k  |         if ( g2_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_y); } | 
2085  | 4.12k  |     }  | 
2086  | 19.8k  | }  | 
2087  |  |  | 
2088  | 19.8k  | template<> std::optional<component::G2> ExecutorBase<component::G2, operation::BLS_G2_Mul>::callModule(std::shared_ptr<Module> module, operation::BLS_G2_Mul& op) const { | 
2089  | 19.8k  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
2090  | 19.8k  |     if ( op.a.first.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2091  | 19.8k  |     if ( op.a.first.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2092  | 19.7k  |     if ( op.a.second.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2093  | 19.7k  |     if ( op.a.second.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2094  | 19.7k  |     if ( op.b.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2095  |  |  | 
2096  | 19.7k  |     return module->OpBLS_G2_Mul(op);  | 
2097  | 19.7k  | }  | 
2098  |  |  | 
2099  |  | /* Specialization for operation::BLS_G2_IsEq */  | 
2100  | 1.11k  | template<> void ExecutorBase<bool, operation::BLS_G2_IsEq>::postprocess(std::shared_ptr<Module> module, operation::BLS_G2_IsEq& op, const ExecutorBase<bool, operation::BLS_G2_IsEq>::ResultPair& result) const { | 
2101  | 1.11k  |     (void)module;  | 
2102  | 1.11k  |     (void)op;  | 
2103  | 1.11k  |     (void)result;  | 
2104  | 1.11k  | }  | 
2105  |  |  | 
2106  | 1.11k  | template<> std::optional<bool> ExecutorBase<bool, operation::BLS_G2_IsEq>::callModule(std::shared_ptr<Module> module, operation::BLS_G2_IsEq& op) const { | 
2107  | 1.11k  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
2108  | 991  |     if ( op.a.first.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2109  | 981  |     if ( op.a.first.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2110  | 963  |     if ( op.a.second.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2111  | 953  |     if ( op.a.second.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2112  | 935  |     if ( op.b.first.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2113  | 917  |     if ( op.b.first.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2114  | 899  |     if ( op.b.second.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2115  | 880  |     if ( op.b.second.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2116  |  |  | 
2117  | 862  |     return module->OpBLS_G2_IsEq(op);  | 
2118  | 880  | }  | 
2119  |  |  | 
2120  |  | /* Specialization for operation::BLS_G2_Neg */  | 
2121  | 10.7k  | template<> void ExecutorBase<component::G2, operation::BLS_G2_Neg>::postprocess(std::shared_ptr<Module> module, operation::BLS_G2_Neg& op, const ExecutorBase<component::G2, operation::BLS_G2_Neg>::ResultPair& result) const { | 
2122  | 10.7k  |     (void)module;  | 
2123  |  |  | 
2124  | 10.7k  |     if ( result.second != std::nullopt  ) { | 
2125  | 4.37k  |         const auto curveID = op.curveType.Get();  | 
2126  | 4.37k  |         const auto g2_v = result.second->first.first.ToTrimmedString();  | 
2127  | 4.37k  |         const auto g2_w = result.second->first.second.ToTrimmedString();  | 
2128  | 4.37k  |         const auto g2_x = result.second->second.first.ToTrimmedString();  | 
2129  | 4.37k  |         const auto g2_y = result.second->second.second.ToTrimmedString();  | 
2130  |  |  | 
2131  | 4.37k  |         G2AddToPool(curveID, g2_v, g2_w, g2_x, g2_y);  | 
2132  |  |  | 
2133  | 4.37k  |         if ( g2_v.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_v); } | 
2134  | 4.37k  |         if ( g2_w.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_w); } | 
2135  | 4.37k  |         if ( g2_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_x); } | 
2136  | 4.37k  |         if ( g2_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_y); } | 
2137  | 4.37k  |     }  | 
2138  | 10.7k  | }  | 
2139  |  |  | 
2140  | 10.7k  | template<> std::optional<component::G2> ExecutorBase<component::G2, operation::BLS_G2_Neg>::callModule(std::shared_ptr<Module> module, operation::BLS_G2_Neg& op) const { | 
2141  | 10.7k  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
2142  | 10.6k  |     if ( op.a.first.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2143  | 10.5k  |     if ( op.a.first.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2144  | 10.5k  |     if ( op.a.second.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2145  | 10.5k  |     if ( op.a.second.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2146  |  |  | 
2147  | 10.5k  |     return module->OpBLS_G2_Neg(op);  | 
2148  | 10.5k  | }  | 
2149  |  |  | 
2150  |  | /* Specialization for operation::BLS_G1_MultiExp */  | 
2151  | 0  | template<> void ExecutorBase<component::G1, operation::BLS_G1_MultiExp>::postprocess(std::shared_ptr<Module> module, operation::BLS_G1_MultiExp& op, const ExecutorBase<component::G1, operation::BLS_G1_MultiExp>::ResultPair& result) const { | 
2152  | 0  |     (void)module;  | 
2153  |  | 
  | 
2154  | 0  |     if ( result.second != std::nullopt  ) { | 
2155  | 0  |         const auto curveID = op.curveType.Get();  | 
2156  | 0  |         const auto g1_x = result.second->first.ToTrimmedString();  | 
2157  | 0  |         const auto g1_y = result.second->second.ToTrimmedString();  | 
2158  |  | 
  | 
2159  | 0  |         G1AddToPool(curveID, g1_x, g1_y);  | 
2160  |  | 
  | 
2161  | 0  |         if ( g1_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_x); } | 
2162  | 0  |         if ( g1_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g1_y); } | 
2163  | 0  |     }  | 
2164  | 0  | }  | 
2165  |  |  | 
2166  | 0  | template<> std::optional<component::G1> ExecutorBase<component::G1, operation::BLS_G1_MultiExp>::callModule(std::shared_ptr<Module> module, operation::BLS_G1_MultiExp& op) const { | 
2167  | 0  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
2168  |  | 
  | 
2169  | 0  |     for (const auto& point_scalar : op.points_scalars.points_scalars) { | 
2170  | 0  |         if ( point_scalar.first.first.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2171  | 0  |         if ( point_scalar.first.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2172  | 0  |         if ( point_scalar.second.GetSize() > config::kMaxBignumSize ) return std::nullopt;  | 
2173  | 0  |     }  | 
2174  |  |  | 
2175  | 0  |     return module->OpBLS_G1_MultiExp(op);  | 
2176  | 0  | }  | 
2177  |  |  | 
2178  |  | /* Specialization for operation::Misc */  | 
2179  | 1.97k  | template<> void ExecutorBase<Buffer, operation::Misc>::postprocess(std::shared_ptr<Module> module, operation::Misc& op, const ExecutorBase<Buffer, operation::Misc>::ResultPair& result) const { | 
2180  | 1.97k  |     (void)module;  | 
2181  | 1.97k  |     (void)op;  | 
2182  | 1.97k  |     (void)result;  | 
2183  | 1.97k  | }  | 
2184  |  |  | 
2185  | 1.97k  | template<> std::optional<Buffer> ExecutorBase<Buffer, operation::Misc>::callModule(std::shared_ptr<Module> module, operation::Misc& op) const { | 
2186  | 1.97k  |     return module->OpMisc(op);  | 
2187  | 1.97k  | }  | 
2188  |  |  | 
2189  |  | /* Specialization for operation::BLS_HashToG2 */  | 
2190  | 1.10k  | template<> void ExecutorBase<component::G2, operation::BLS_HashToG2>::postprocess(std::shared_ptr<Module> module, operation::BLS_HashToG2& op, const ExecutorBase<component::G2, operation::BLS_HashToG2>::ResultPair& result) const { | 
2191  | 1.10k  |     (void)module;  | 
2192  |  |  | 
2193  | 1.10k  |     if ( result.second != std::nullopt  ) { | 
2194  | 623  |         const auto curveID = op.curveType.Get();  | 
2195  | 623  |         const auto g2_v = result.second->first.first.ToTrimmedString();  | 
2196  | 623  |         const auto g2_w = result.second->first.second.ToTrimmedString();  | 
2197  | 623  |         const auto g2_x = result.second->second.first.ToTrimmedString();  | 
2198  | 623  |         const auto g2_y = result.second->second.second.ToTrimmedString();  | 
2199  |  |  | 
2200  | 623  |         G2AddToPool(curveID, g2_v, g2_w, g2_x, g2_y);  | 
2201  |  |  | 
2202  | 623  |         if ( g2_v.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_v); } | 
2203  | 623  |         if ( g2_w.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_w); } | 
2204  | 623  |         if ( g2_x.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_x); } | 
2205  | 623  |         if ( g2_y.size() <= config::kMaxBignumSize ) { Pool_Bignum.Set(g2_y); } | 
2206  | 623  |     }  | 
2207  | 1.10k  | }  | 
2208  |  |  | 
2209  | 1.10k  | template<> std::optional<component::G2> ExecutorBase<component::G2, operation::BLS_HashToG2>::callModule(std::shared_ptr<Module> module, operation::BLS_HashToG2& op) const { | 
2210  | 1.10k  |     RETURN_IF_DISABLED(options.curves, op.curveType.Get());  | 
2211  | 997  |     return module->OpBLS_HashToG2(op);  | 
2212  | 1.10k  | }  | 
2213  |  |  | 
2214  |  | ExecutorBignumCalc::ExecutorBignumCalc(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2215  |  |     ExecutorBase<component::Bignum, operation::BignumCalc>::ExecutorBase(operationID, modules, options)  | 
2216  | 46  | { } | 
2217  | 44  | void ExecutorBignumCalc::SetModulo(const std::string& modulo) { | 
2218  | 44  |     this->modulo = component::Bignum(modulo);  | 
2219  | 44  | }  | 
2220  |  |  | 
2221  |  | ExecutorBignumCalc_Mod_BLS12_381_R::ExecutorBignumCalc_Mod_BLS12_381_R(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2222  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2223  | 2  |     CF_NORET(SetModulo("52435875175126190479447740508185965837690552500527637822603658699938581184513")); | 
2224  | 2  | }  | 
2225  |  |  | 
2226  |  | ExecutorBignumCalc_Mod_BLS12_381_P::ExecutorBignumCalc_Mod_BLS12_381_P(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2227  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2228  | 2  |     CF_NORET(SetModulo("4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787")); | 
2229  | 2  | }  | 
2230  |  |  | 
2231  |  | ExecutorBignumCalc_Mod_BLS12_377_R::ExecutorBignumCalc_Mod_BLS12_377_R(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2232  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2233  | 2  |     CF_NORET(SetModulo("8444461749428370424248824938781546531375899335154063827935233455917409239041")); | 
2234  | 2  | }  | 
2235  |  |  | 
2236  |  | ExecutorBignumCalc_Mod_BLS12_377_P::ExecutorBignumCalc_Mod_BLS12_377_P(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2237  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2238  | 2  |     CF_NORET(SetModulo("258664426012969094010652733694893533536393512754914660539884262666720468348340822774968888139573360124440321458177")); | 
2239  | 2  | }  | 
2240  |  |  | 
2241  |  | ExecutorBignumCalc_Mod_BN128_R::ExecutorBignumCalc_Mod_BN128_R(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2242  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2243  | 2  |     CF_NORET(SetModulo("21888242871839275222246405745257275088548364400416034343698204186575808495617")); | 
2244  | 2  | }  | 
2245  |  |  | 
2246  |  | ExecutorBignumCalc_Mod_BN128_P::ExecutorBignumCalc_Mod_BN128_P(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2247  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2248  | 2  |     CF_NORET(SetModulo("21888242871839275222246405745257275088696311157297823662689037894645226208583")); | 
2249  | 2  | }  | 
2250  |  |  | 
2251  |  | ExecutorBignumCalc_Mod_Vesta_R::ExecutorBignumCalc_Mod_Vesta_R(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2252  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2253  | 2  |     CF_NORET(SetModulo("28948022309329048855892746252171976963363056481941560715954676764349967630337")); | 
2254  | 2  | }  | 
2255  |  |  | 
2256  |  | ExecutorBignumCalc_Mod_Vesta_P::ExecutorBignumCalc_Mod_Vesta_P(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2257  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2258  | 2  |     CF_NORET(SetModulo("28948022309329048855892746252171976963363056481941647379679742748393362948097")); | 
2259  | 2  | }  | 
2260  |  |  | 
2261  |  | ExecutorBignumCalc_Mod_ED25519::ExecutorBignumCalc_Mod_ED25519(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2262  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2263  | 2  |     CF_NORET(SetModulo("57896044618658097711785492504343953926634992332820282019728792003956564819949")); | 
2264  | 2  | }  | 
2265  |  |  | 
2266  |  | ExecutorBignumCalc_Mod_Edwards_R::ExecutorBignumCalc_Mod_Edwards_R(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2267  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2268  | 2  |     CF_NORET(SetModulo("1552511030102430251236801561344621993261920897571225601")); | 
2269  | 2  | }  | 
2270  |  |  | 
2271  |  | ExecutorBignumCalc_Mod_Edwards_P::ExecutorBignumCalc_Mod_Edwards_P(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2272  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2273  | 2  |     CF_NORET(SetModulo("6210044120409721004947206240885978274523751269793792001")); | 
2274  | 2  | }  | 
2275  |  |  | 
2276  |  | ExecutorBignumCalc_Mod_Goldilocks::ExecutorBignumCalc_Mod_Goldilocks(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2277  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2278  | 2  |     CF_NORET(SetModulo("18446744069414584321")); | 
2279  | 2  | }  | 
2280  |  |  | 
2281  |  | ExecutorBignumCalc_Mod_MNT4_R::ExecutorBignumCalc_Mod_MNT4_R(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2282  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2283  | 2  |     CF_NORET(SetModulo("475922286169261325753349249653048451545124878552823515553267735739164647307408490559963137")); | 
2284  | 2  | }  | 
2285  |  |  | 
2286  |  | ExecutorBignumCalc_Mod_MNT4_P::ExecutorBignumCalc_Mod_MNT4_P(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2287  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2288  | 2  |     CF_NORET(SetModulo("475922286169261325753349249653048451545124879242694725395555128576210262817955800483758081")); | 
2289  | 2  | }  | 
2290  |  |  | 
2291  |  | ExecutorBignumCalc_Mod_MNT6_R::ExecutorBignumCalc_Mod_MNT6_R(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2292  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2293  | 2  |     CF_NORET(SetModulo("475922286169261325753349249653048451545124879242694725395555128576210262817955800483758081")); | 
2294  | 2  | }  | 
2295  |  |  | 
2296  |  | ExecutorBignumCalc_Mod_MNT6_P::ExecutorBignumCalc_Mod_MNT6_P(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2297  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2298  | 2  |     CF_NORET(SetModulo("237961143084630662876674624826524225772562439621347362697777564288105131408977900241879040")); | 
2299  | 2  | }  | 
2300  |  |  | 
2301  |  | ExecutorBignumCalc_Mod_2Exp64::ExecutorBignumCalc_Mod_2Exp64(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2302  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2303  | 2  |     CF_NORET(SetModulo("18446744073709551616")); | 
2304  | 2  | }  | 
2305  |  |  | 
2306  |  | ExecutorBignumCalc_Mod_2Exp128::ExecutorBignumCalc_Mod_2Exp128(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2307  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2308  | 2  |     CF_NORET(SetModulo("340282366920938463463374607431768211456")); | 
2309  | 2  | }  | 
2310  |  |  | 
2311  |  | ExecutorBignumCalc_Mod_2Exp256::ExecutorBignumCalc_Mod_2Exp256(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2312  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2313  | 2  |     CF_NORET(SetModulo("115792089237316195423570985008687907853269984665640564039457584007913129639936")); | 
2314  | 2  | }  | 
2315  |  |  | 
2316  |  | ExecutorBignumCalc_Mod_2Exp512::ExecutorBignumCalc_Mod_2Exp512(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2317  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2318  | 2  |     CF_NORET(SetModulo("13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096")); | 
2319  | 2  | }  | 
2320  |  |  | 
2321  |  | ExecutorBignumCalc_Mod_SECP256K1::ExecutorBignumCalc_Mod_SECP256K1(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2322  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2323  | 2  |     CF_NORET(SetModulo("115792089237316195423570985008687907852837564279074904382605163141518161494337")); | 
2324  | 2  | }  | 
2325  |  |  | 
2326  |  | ExecutorBignumCalc_Mod_SECP256K1_P::ExecutorBignumCalc_Mod_SECP256K1_P(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2327  | 2  |     ExecutorBignumCalc::ExecutorBignumCalc(operationID, modules, options) { | 
2328  | 2  |     CF_NORET(SetModulo("115792089237316195423570985008687907853269984665640564039457584007908834671663")); | 
2329  | 2  | }  | 
2330  |  |  | 
2331  |  | ExecutorBignumCalc_Fp2::ExecutorBignumCalc_Fp2(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2332  |  |     ExecutorBase<component::Fp2, operation::BignumCalc_Fp2>::ExecutorBase(operationID, modules, options)  | 
2333  | 2  | { } | 
2334  | 0  | void ExecutorBignumCalc_Fp2::SetModulo(const std::string& modulo) { | 
2335  | 0  |     this->modulo = component::Bignum(modulo);  | 
2336  | 0  | }  | 
2337  |  |  | 
2338  |  | ExecutorBignumCalc_Fp12::ExecutorBignumCalc_Fp12(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2339  |  |     ExecutorBase<component::Fp12, operation::BignumCalc_Fp12>::ExecutorBase(operationID, modules, options)  | 
2340  | 2  | { } | 
2341  | 0  | void ExecutorBignumCalc_Fp12::SetModulo(const std::string& modulo) { | 
2342  | 0  |     this->modulo = component::Bignum(modulo);  | 
2343  | 0  | }  | 
2344  |  |  | 
2345  |  | template <class ResultType, class OperationType>  | 
2346  |  | ExecutorBase<ResultType, OperationType>::ExecutorBase(const uint64_t operationID, const std::map<uint64_t, std::shared_ptr<Module> >& modules, const Options& options) :  | 
2347  |  |     operationID(operationID),  | 
2348  |  |     modules(modules),  | 
2349  |  |     options(options)  | 
2350  | 214  | { | 
2351  | 214  | } cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Digest>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::HMAC>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::UMAC>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::CMAC>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Ciphertext, cryptofuzz::operation::SymmetricEncrypt>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::SymmetricDecrypt>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SCRYPT>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_HKDF>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_TLS1_PRF>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF1>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF2>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_ARGON2>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SSH>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_X963>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_BCRYPT>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SP_800_108>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTP>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTCP>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_PrivateToPublic>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_ValidatePubkey>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::ECC_KeyPair, cryptofuzz::operation::ECC_GenerateKeyPair>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::ECCSI_Signature, cryptofuzz::operation::ECCSI_Sign>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECDSA_Sign>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECGDSA_Sign>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECRDSA_Sign>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::Schnorr_Sign>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECCSI_Verify>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECDSA_Verify>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECGDSA_Verify>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECRDSA_Verify>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::Schnorr_Verify>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECDSA_Recover>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::DSA_Verify>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::DSA_Signature, cryptofuzz::operation::DSA_Sign>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::DSA_Parameters, cryptofuzz::operation::DSA_GenerateParameters>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DSA_PrivateToPublic>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::DSA_GenerateKeyPair>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECDH_Derive>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Ciphertext, cryptofuzz::operation::ECIES_Encrypt>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECIES_Decrypt>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Add>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Sub>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Mul>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Neg>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Dbl>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_Point_Cmp>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::DH_GenerateKeyPair>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DH_Derive>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::BignumCalc>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 46  | { |  2351  | 46  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BignumCalc_Fp2>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BignumCalc_Fp12>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_PrivateToPublic>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_PrivateToPublic_G2>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_Signature, cryptofuzz::operation::BLS_Sign>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_Verify>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_BatchSignature, cryptofuzz::operation::BLS_BatchSign>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_BatchVerify>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Aggregate_G1>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Aggregate_G2>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_Pairing>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_MillerLoop>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_FinalExp>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_HashToG1>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_HashToG2>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_MapToG1>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_MapToG2>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG1OnCurve>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG2OnCurve>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_KeyPair, cryptofuzz::operation::BLS_GenerateKeyPair>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Decompress_G1>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::BLS_Compress_G1>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Decompress_G2>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Compress_G2>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Add>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Mul>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G1_IsEq>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Neg>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Add>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Mul>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G2_IsEq>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Neg>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_MultiExp>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Misc>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::SR25519_Verify>::ExecutorBase(unsigned long, std::__1::map<unsigned long, std::__1::shared_ptr<cryptofuzz::Module>, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, std::__1::shared_ptr<cryptofuzz::Module> > > > const&, cryptofuzz::Options const&) Line  | Count  | Source  |  2350  | 2  | { |  2351  | 2  | }  |  
  | 
2352  |  |  | 
2353  |  | /* Specialization for operation::SR25519_Verify */  | 
2354  | 0  | template<> void ExecutorBase<bool, operation::SR25519_Verify>::postprocess(std::shared_ptr<Module> module, operation::SR25519_Verify& op, const ExecutorBase<bool, operation::SR25519_Verify>::ResultPair& result) const { | 
2355  | 0  |     (void)module;  | 
2356  | 0  |     (void)op;  | 
2357  | 0  |     (void)result;  | 
2358  | 0  | }  | 
2359  |  |  | 
2360  | 0  | template<> std::optional<bool> ExecutorBase<bool, operation::SR25519_Verify>::callModule(std::shared_ptr<Module> module, operation::SR25519_Verify& op) const { | 
2361  | 0  |     return module->OpSR25519_Verify(op);  | 
2362  | 0  | }  | 
2363  |  |  | 
2364  |  | template <class ResultType, class OperationType>  | 
2365  | 214  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { | 
2366  | 214  | } cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Digest>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::HMAC>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::UMAC>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::CMAC>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Ciphertext, cryptofuzz::operation::SymmetricEncrypt>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::SymmetricDecrypt>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SCRYPT>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_HKDF>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_TLS1_PRF>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF1>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF2>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_ARGON2>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SSH>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_X963>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_BCRYPT>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SP_800_108>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTP>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTCP>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_PrivateToPublic>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_ValidatePubkey>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::ECC_KeyPair, cryptofuzz::operation::ECC_GenerateKeyPair>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::ECCSI_Signature, cryptofuzz::operation::ECCSI_Sign>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECDSA_Sign>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECGDSA_Sign>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECRDSA_Sign>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::Schnorr_Sign>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECCSI_Verify>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECDSA_Verify>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECGDSA_Verify>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECRDSA_Verify>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::Schnorr_Verify>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECDSA_Recover>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::DSA_Verify>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::DSA_Signature, cryptofuzz::operation::DSA_Sign>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::DSA_Parameters, cryptofuzz::operation::DSA_GenerateParameters>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DSA_PrivateToPublic>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::DSA_GenerateKeyPair>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECDH_Derive>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Ciphertext, cryptofuzz::operation::ECIES_Encrypt>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECIES_Decrypt>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Add>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Sub>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Mul>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Neg>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Dbl>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_Point_Cmp>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::DH_GenerateKeyPair>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DH_Derive>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::BignumCalc>::~ExecutorBase() Line  | Count  | Source  |  2365  | 46  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 46  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BignumCalc_Fp2>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BignumCalc_Fp12>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_PrivateToPublic>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_PrivateToPublic_G2>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_Signature, cryptofuzz::operation::BLS_Sign>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_Verify>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_BatchSignature, cryptofuzz::operation::BLS_BatchSign>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_BatchVerify>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Aggregate_G1>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Aggregate_G2>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_Pairing>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_MillerLoop>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_FinalExp>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_HashToG1>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_HashToG2>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_MapToG1>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_MapToG2>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG1OnCurve>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG2OnCurve>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_KeyPair, cryptofuzz::operation::BLS_GenerateKeyPair>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Decompress_G1>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::BLS_Compress_G1>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Decompress_G2>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Compress_G2>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Add>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Mul>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G1_IsEq>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Neg>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Add>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Mul>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G2_IsEq>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Neg>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_MultiExp>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Misc>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::SR25519_Verify>::~ExecutorBase() Line  | Count  | Source  |  2365  | 2  | ExecutorBase<ResultType, OperationType>::~ExecutorBase() { |  2366  | 2  | }  |  
  | 
2367  |  |  | 
2368  |  | /* Filter away the values in the set that are std::nullopt */  | 
2369  |  | template <class ResultType, class OperationType>  | 
2370  | 49.0k  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { | 
2371  | 49.0k  |     ResultSet ret;  | 
2372  |  |  | 
2373  | 257k  |     for (const auto& result : results) { | 
2374  | 257k  |         if ( result.second == std::nullopt ) { | 
2375  | 189k  |             continue;  | 
2376  | 189k  |         }  | 
2377  |  |  | 
2378  | 68.1k  |         ret.push_back(result);  | 
2379  | 68.1k  |     }  | 
2380  |  |  | 
2381  | 49.0k  |     return ret;  | 
2382  | 49.0k  | } Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Digest>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::HMAC>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::UMAC>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::CMAC>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Ciphertext, cryptofuzz::operation::SymmetricEncrypt>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Ciphertext> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Ciphertext> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::SymmetricDecrypt>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SCRYPT>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&) const cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_HKDF>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&) const Line  | Count  | Source  |  2370  | 309  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 309  |     ResultSet ret;  |  2372  |  |  |  2373  | 2.03k  |     for (const auto& result : results) { |  2374  | 2.03k  |         if ( result.second == std::nullopt ) { |  2375  | 1.81k  |             continue;  |  2376  | 1.81k  |         }  |  2377  |  |  |  2378  | 222  |         ret.push_back(result);  |  2379  | 222  |     }  |  2380  |  |  |  2381  | 309  |     return ret;  |  2382  | 309  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_TLS1_PRF>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF1>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF2>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_ARGON2>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SSH>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_X963>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_BCRYPT>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SP_800_108>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTP>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<std::__1::array<cryptofuzz::Buffer, 3ul> > >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<std::__1::array<cryptofuzz::Buffer, 3ul> > > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTCP>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<std::__1::array<cryptofuzz::Buffer, 3ul> > >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<std::__1::array<cryptofuzz::Buffer, 3ul> > > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_PrivateToPublic>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_ValidatePubkey>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECC_KeyPair, cryptofuzz::operation::ECC_GenerateKeyPair>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECC_KeyPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECC_KeyPair> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECCSI_Signature, cryptofuzz::operation::ECCSI_Sign>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECCSI_Signature> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECCSI_Signature> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECDSA_Sign>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECDSA_Signature> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECDSA_Signature> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECGDSA_Sign>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECDSA_Signature> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECDSA_Signature> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECRDSA_Sign>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECDSA_Signature> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECDSA_Signature> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::Schnorr_Sign>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECDSA_Signature> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECDSA_Signature> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECCSI_Verify>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECDSA_Verify>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECGDSA_Verify>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECRDSA_Verify>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::Schnorr_Verify>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECDSA_Recover>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::DSA_Verify>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::DSA_Signature, cryptofuzz::operation::DSA_Sign>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::DSA_Signature> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::DSA_Signature> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::DSA_Parameters, cryptofuzz::operation::DSA_GenerateParameters>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::DSA_Parameters> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::DSA_Parameters> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DSA_PrivateToPublic>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Bignum> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Bignum> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::DSA_GenerateKeyPair>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECDH_Derive>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Ciphertext, cryptofuzz::operation::ECIES_Encrypt>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Ciphertext> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Ciphertext> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECIES_Decrypt>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Add>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Sub>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Mul>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Neg>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Dbl>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_Point_Cmp>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::DH_GenerateKeyPair>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DH_Derive>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Bignum> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Bignum> > > > const&) const cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::BignumCalc>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Bignum> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Bignum> > > > const&) const Line  | Count  | Source  |  2370  | 20.6k  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 20.6k  |     ResultSet ret;  |  2372  |  |  |  2373  | 105k  |     for (const auto& result : results) { |  2374  | 105k  |         if ( result.second == std::nullopt ) { |  2375  | 86.3k  |             continue;  |  2376  | 86.3k  |         }  |  2377  |  |  |  2378  | 19.1k  |         ret.push_back(result);  |  2379  | 19.1k  |     }  |  2380  |  |  |  2381  | 20.6k  |     return ret;  |  2382  | 20.6k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BignumCalc_Fp2>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const Line  | Count  | Source  |  2370  | 1.96k  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 1.96k  |     ResultSet ret;  |  2372  |  |  |  2373  | 10.7k  |     for (const auto& result : results) { |  2374  | 10.7k  |         if ( result.second == std::nullopt ) { |  2375  | 8.93k  |             continue;  |  2376  | 8.93k  |         }  |  2377  |  |  |  2378  | 1.78k  |         ret.push_back(result);  |  2379  | 1.78k  |     }  |  2380  |  |  |  2381  | 1.96k  |     return ret;  |  2382  | 1.96k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BignumCalc_Fp12>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Fp12> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Fp12> > > > const&) const Line  | Count  | Source  |  2370  | 1.18k  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 1.18k  |     ResultSet ret;  |  2372  |  |  |  2373  | 6.84k  |     for (const auto& result : results) { |  2374  | 6.84k  |         if ( result.second == std::nullopt ) { |  2375  | 5.60k  |             continue;  |  2376  | 5.60k  |         }  |  2377  |  |  |  2378  | 1.24k  |         ret.push_back(result);  |  2379  | 1.24k  |     }  |  2380  |  |  |  2381  | 1.18k  |     return ret;  |  2382  | 1.18k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_PrivateToPublic>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const Line  | Count  | Source  |  2370  | 2.89k  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 2.89k  |     ResultSet ret;  |  2372  |  |  |  2373  | 14.6k  |     for (const auto& result : results) { |  2374  | 14.6k  |         if ( result.second == std::nullopt ) { |  2375  | 6.36k  |             continue;  |  2376  | 6.36k  |         }  |  2377  |  |  |  2378  | 8.32k  |         ret.push_back(result);  |  2379  | 8.32k  |     }  |  2380  |  |  |  2381  | 2.89k  |     return ret;  |  2382  | 2.89k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_PrivateToPublic_G2>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> > > > const&) const Line  | Count  | Source  |  2370  | 494  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 494  |     ResultSet ret;  |  2372  |  |  |  2373  | 2.58k  |     for (const auto& result : results) { |  2374  | 2.58k  |         if ( result.second == std::nullopt ) { |  2375  | 1.68k  |             continue;  |  2376  | 1.68k  |         }  |  2377  |  |  |  2378  | 905  |         ret.push_back(result);  |  2379  | 905  |     }  |  2380  |  |  |  2381  | 494  |     return ret;  |  2382  | 494  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_Signature, cryptofuzz::operation::BLS_Sign>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BLS_Signature> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BLS_Signature> > > > const&) const Line  | Count  | Source  |  2370  | 590  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 590  |     ResultSet ret;  |  2372  |  |  |  2373  | 3.70k  |     for (const auto& result : results) { |  2374  | 3.70k  |         if ( result.second == std::nullopt ) { |  2375  | 2.06k  |             continue;  |  2376  | 2.06k  |         }  |  2377  |  |  |  2378  | 1.63k  |         ret.push_back(result);  |  2379  | 1.63k  |     }  |  2380  |  |  |  2381  | 590  |     return ret;  |  2382  | 590  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_Verify>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&) const Line  | Count  | Source  |  2370  | 128  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 128  |     ResultSet ret;  |  2372  |  |  |  2373  | 816  |     for (const auto& result : results) { |  2374  | 816  |         if ( result.second == std::nullopt ) { |  2375  | 708  |             continue;  |  2376  | 708  |         }  |  2377  |  |  |  2378  | 108  |         ret.push_back(result);  |  2379  | 108  |     }  |  2380  |  |  |  2381  | 128  |     return ret;  |  2382  | 128  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_BatchSignature, cryptofuzz::operation::BLS_BatchSign>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BLS_BatchSignature> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BLS_BatchSignature> > > > const&) const cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_BatchVerify>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&) const Line  | Count  | Source  |  2370  | 754  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 754  |     ResultSet ret;  |  2372  |  |  |  2373  | 4.00k  |     for (const auto& result : results) { |  2374  | 4.00k  |         if ( result.second == std::nullopt ) { |  2375  | 3.82k  |             continue;  |  2376  | 3.82k  |         }  |  2377  |  |  |  2378  | 184  |         ret.push_back(result);  |  2379  | 184  |     }  |  2380  |  |  |  2381  | 754  |     return ret;  |  2382  | 754  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Aggregate_G1>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const Line  | Count  | Source  |  2370  | 100  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 100  |     ResultSet ret;  |  2372  |  |  |  2373  | 644  |     for (const auto& result : results) { |  2374  | 644  |         if ( result.second == std::nullopt ) { |  2375  | 574  |             continue;  |  2376  | 574  |         }  |  2377  |  |  |  2378  | 70  |         ret.push_back(result);  |  2379  | 70  |     }  |  2380  |  |  |  2381  | 100  |     return ret;  |  2382  | 100  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Aggregate_G2>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> > > > const&) const Line  | Count  | Source  |  2370  | 115  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 115  |     ResultSet ret;  |  2372  |  |  |  2373  | 743  |     for (const auto& result : results) { |  2374  | 743  |         if ( result.second == std::nullopt ) { |  2375  | 668  |             continue;  |  2376  | 668  |         }  |  2377  |  |  |  2378  | 75  |         ret.push_back(result);  |  2379  | 75  |     }  |  2380  |  |  |  2381  | 115  |     return ret;  |  2382  | 115  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_Pairing>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Fp12> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Fp12> > > > const&) const Line  | Count  | Source  |  2370  | 116  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 116  |     ResultSet ret;  |  2372  |  |  |  2373  | 737  |     for (const auto& result : results) { |  2374  | 737  |         if ( result.second == std::nullopt ) { |  2375  | 594  |             continue;  |  2376  | 594  |         }  |  2377  |  |  |  2378  | 143  |         ret.push_back(result);  |  2379  | 143  |     }  |  2380  |  |  |  2381  | 116  |     return ret;  |  2382  | 116  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_MillerLoop>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Fp12> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Fp12> > > > const&) const cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_FinalExp>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Fp12> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Fp12> > > > const&) const Line  | Count  | Source  |  2370  | 201  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 201  |     ResultSet ret;  |  2372  |  |  |  2373  | 1.13k  |     for (const auto& result : results) { |  2374  | 1.13k  |         if ( result.second == std::nullopt ) { |  2375  | 559  |             continue;  |  2376  | 559  |         }  |  2377  |  |  |  2378  | 578  |         ret.push_back(result);  |  2379  | 578  |     }  |  2380  |  |  |  2381  | 201  |     return ret;  |  2382  | 201  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_HashToG1>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const Line  | Count  | Source  |  2370  | 158  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 158  |     ResultSet ret;  |  2372  |  |  |  2373  | 895  |     for (const auto& result : results) { |  2374  | 895  |         if ( result.second == std::nullopt ) { |  2375  | 443  |             continue;  |  2376  | 443  |         }  |  2377  |  |  |  2378  | 452  |         ret.push_back(result);  |  2379  | 452  |     }  |  2380  |  |  |  2381  | 158  |     return ret;  |  2382  | 158  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_HashToG2>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> > > > const&) const Line  | Count  | Source  |  2370  | 202  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 202  |     ResultSet ret;  |  2372  |  |  |  2373  | 1.10k  |     for (const auto& result : results) { |  2374  | 1.10k  |         if ( result.second == std::nullopt ) { |  2375  | 477  |             continue;  |  2376  | 477  |         }  |  2377  |  |  |  2378  | 623  |         ret.push_back(result);  |  2379  | 623  |     }  |  2380  |  |  |  2381  | 202  |     return ret;  |  2382  | 202  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_MapToG1>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const Line  | Count  | Source  |  2370  | 193  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 193  |     ResultSet ret;  |  2372  |  |  |  2373  | 1.07k  |     for (const auto& result : results) { |  2374  | 1.07k  |         if ( result.second == std::nullopt ) { |  2375  | 652  |             continue;  |  2376  | 652  |         }  |  2377  |  |  |  2378  | 418  |         ret.push_back(result);  |  2379  | 418  |     }  |  2380  |  |  |  2381  | 193  |     return ret;  |  2382  | 193  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_MapToG2>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> > > > const&) const Line  | Count  | Source  |  2370  | 122  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 122  |     ResultSet ret;  |  2372  |  |  |  2373  | 722  |     for (const auto& result : results) { |  2374  | 722  |         if ( result.second == std::nullopt ) { |  2375  | 485  |             continue;  |  2376  | 485  |         }  |  2377  |  |  |  2378  | 237  |         ret.push_back(result);  |  2379  | 237  |     }  |  2380  |  |  |  2381  | 122  |     return ret;  |  2382  | 122  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG1OnCurve>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&) const Line  | Count  | Source  |  2370  | 1.25k  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 1.25k  |     ResultSet ret;  |  2372  |  |  |  2373  | 6.66k  |     for (const auto& result : results) { |  2374  | 6.66k  |         if ( result.second == std::nullopt ) { |  2375  | 1.89k  |             continue;  |  2376  | 1.89k  |         }  |  2377  |  |  |  2378  | 4.77k  |         ret.push_back(result);  |  2379  | 4.77k  |     }  |  2380  |  |  |  2381  | 1.25k  |     return ret;  |  2382  | 1.25k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG2OnCurve>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&) const Line  | Count  | Source  |  2370  | 1.90k  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 1.90k  |     ResultSet ret;  |  2372  |  |  |  2373  | 9.92k  |     for (const auto& result : results) { |  2374  | 9.92k  |         if ( result.second == std::nullopt ) { |  2375  | 2.97k  |             continue;  |  2376  | 2.97k  |         }  |  2377  |  |  |  2378  | 6.94k  |         ret.push_back(result);  |  2379  | 6.94k  |     }  |  2380  |  |  |  2381  | 1.90k  |     return ret;  |  2382  | 1.90k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_KeyPair, cryptofuzz::operation::BLS_GenerateKeyPair>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BLS_KeyPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BLS_KeyPair> > > > const&) const Line  | Count  | Source  |  2370  | 80  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 80  |     ResultSet ret;  |  2372  |  |  |  2373  | 518  |     for (const auto& result : results) { |  2374  | 518  |         if ( result.second == std::nullopt ) { |  2375  | 410  |             continue;  |  2376  | 410  |         }  |  2377  |  |  |  2378  | 108  |         ret.push_back(result);  |  2379  | 108  |     }  |  2380  |  |  |  2381  | 80  |     return ret;  |  2382  | 80  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Decompress_G1>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const Line  | Count  | Source  |  2370  | 218  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 218  |     ResultSet ret;  |  2372  |  |  |  2373  | 1.23k  |     for (const auto& result : results) { |  2374  | 1.23k  |         if ( result.second == std::nullopt ) { |  2375  | 892  |             continue;  |  2376  | 892  |         }  |  2377  |  |  |  2378  | 342  |         ret.push_back(result);  |  2379  | 342  |     }  |  2380  |  |  |  2381  | 218  |     return ret;  |  2382  | 218  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::BLS_Compress_G1>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Bignum> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Bignum> > > > const&) const Line  | Count  | Source  |  2370  | 97  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 97  |     ResultSet ret;  |  2372  |  |  |  2373  | 585  |     for (const auto& result : results) { |  2374  | 585  |         if ( result.second == std::nullopt ) { |  2375  | 441  |             continue;  |  2376  | 441  |         }  |  2377  |  |  |  2378  | 144  |         ret.push_back(result);  |  2379  | 144  |     }  |  2380  |  |  |  2381  | 97  |     return ret;  |  2382  | 97  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Decompress_G2>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> > > > const&) const Line  | Count  | Source  |  2370  | 114  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 114  |     ResultSet ret;  |  2372  |  |  |  2373  | 724  |     for (const auto& result : results) { |  2374  | 724  |         if ( result.second == std::nullopt ) { |  2375  | 497  |             continue;  |  2376  | 497  |         }  |  2377  |  |  |  2378  | 227  |         ret.push_back(result);  |  2379  | 227  |     }  |  2380  |  |  |  2381  | 114  |     return ret;  |  2382  | 114  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Compress_G2>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const Line  | Count  | Source  |  2370  | 98  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 98  |     ResultSet ret;  |  2372  |  |  |  2373  | 643  |     for (const auto& result : results) { |  2374  | 643  |         if ( result.second == std::nullopt ) { |  2375  | 461  |             continue;  |  2376  | 461  |         }  |  2377  |  |  |  2378  | 182  |         ret.push_back(result);  |  2379  | 182  |     }  |  2380  |  |  |  2381  | 98  |     return ret;  |  2382  | 98  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Add>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const Line  | Count  | Source  |  2370  | 2.35k  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 2.35k  |     ResultSet ret;  |  2372  |  |  |  2373  | 12.4k  |     for (const auto& result : results) { |  2374  | 12.4k  |         if ( result.second == std::nullopt ) { |  2375  | 10.0k  |             continue;  |  2376  | 10.0k  |         }  |  2377  |  |  |  2378  | 2.37k  |         ret.push_back(result);  |  2379  | 2.37k  |     }  |  2380  |  |  |  2381  | 2.35k  |     return ret;  |  2382  | 2.35k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Mul>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const Line  | Count  | Source  |  2370  | 1.58k  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 1.58k  |     ResultSet ret;  |  2372  |  |  |  2373  | 8.37k  |     for (const auto& result : results) { |  2374  | 8.37k  |         if ( result.second == std::nullopt ) { |  2375  | 7.92k  |             continue;  |  2376  | 7.92k  |         }  |  2377  |  |  |  2378  | 451  |         ret.push_back(result);  |  2379  | 451  |     }  |  2380  |  |  |  2381  | 1.58k  |     return ret;  |  2382  | 1.58k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G1_IsEq>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&) const Line  | Count  | Source  |  2370  | 162  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 162  |     ResultSet ret;  |  2372  |  |  |  2373  | 1.00k  |     for (const auto& result : results) { |  2374  | 1.00k  |         if ( result.second == std::nullopt ) { |  2375  | 744  |             continue;  |  2376  | 744  |         }  |  2377  |  |  |  2378  | 260  |         ret.push_back(result);  |  2379  | 260  |     }  |  2380  |  |  |  2381  | 162  |     return ret;  |  2382  | 162  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Neg>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const Line  | Count  | Source  |  2370  | 2.27k  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 2.27k  |     ResultSet ret;  |  2372  |  |  |  2373  | 11.7k  |     for (const auto& result : results) { |  2374  | 11.7k  |         if ( result.second == std::nullopt ) { |  2375  | 6.98k  |             continue;  |  2376  | 6.98k  |         }  |  2377  |  |  |  2378  | 4.81k  |         ret.push_back(result);  |  2379  | 4.81k  |     }  |  2380  |  |  |  2381  | 2.27k  |     return ret;  |  2382  | 2.27k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Add>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> > > > const&) const Line  | Count  | Source  |  2370  | 2.35k  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 2.35k  |     ResultSet ret;  |  2372  |  |  |  2373  | 12.3k  |     for (const auto& result : results) { |  2374  | 12.3k  |         if ( result.second == std::nullopt ) { |  2375  | 9.66k  |             continue;  |  2376  | 9.66k  |         }  |  2377  |  |  |  2378  | 2.67k  |         ret.push_back(result);  |  2379  | 2.67k  |     }  |  2380  |  |  |  2381  | 2.35k  |     return ret;  |  2382  | 2.35k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Mul>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> > > > const&) const Line  | Count  | Source  |  2370  | 3.87k  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 3.87k  |     ResultSet ret;  |  2372  |  |  |  2373  | 19.8k  |     for (const auto& result : results) { |  2374  | 19.8k  |         if ( result.second == std::nullopt ) { |  2375  | 15.7k  |             continue;  |  2376  | 15.7k  |         }  |  2377  |  |  |  2378  | 4.12k  |         ret.push_back(result);  |  2379  | 4.12k  |     }  |  2380  |  |  |  2381  | 3.87k  |     return ret;  |  2382  | 3.87k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G2_IsEq>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&) const Line  | Count  | Source  |  2370  | 182  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 182  |     ResultSet ret;  |  2372  |  |  |  2373  | 1.11k  |     for (const auto& result : results) { |  2374  | 1.11k  |         if ( result.second == std::nullopt ) { |  2375  | 949  |             continue;  |  2376  | 949  |         }  |  2377  |  |  |  2378  | 169  |         ret.push_back(result);  |  2379  | 169  |     }  |  2380  |  |  |  2381  | 182  |     return ret;  |  2382  | 182  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Neg>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> > > > const&) const Line  | Count  | Source  |  2370  | 2.04k  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 2.04k  |     ResultSet ret;  |  2372  |  |  |  2373  | 10.7k  |     for (const auto& result : results) { |  2374  | 10.7k  |         if ( result.second == std::nullopt ) { |  2375  | 6.33k  |             continue;  |  2376  | 6.33k  |         }  |  2377  |  |  |  2378  | 4.37k  |         ret.push_back(result);  |  2379  | 4.37k  |     }  |  2380  |  |  |  2381  | 2.04k  |     return ret;  |  2382  | 2.04k  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_MultiExp>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&) const cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Misc>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&) const Line  | Count  | Source  |  2370  | 299  | typename ExecutorBase<ResultType, OperationType>::ResultSet ExecutorBase<ResultType, OperationType>::filter(const ResultSet& results) const { |  2371  | 299  |     ResultSet ret;  |  2372  |  |  |  2373  | 1.97k  |     for (const auto& result : results) { |  2374  | 1.97k  |         if ( result.second == std::nullopt ) { |  2375  | 1.97k  |             continue;  |  2376  | 1.97k  |         }  |  2377  |  |  |  2378  | 0  |         ret.push_back(result);  |  2379  | 0  |     }  |  2380  |  |  |  2381  | 299  |     return ret;  |  2382  | 299  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::SR25519_Verify>::filter(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&) const  | 
2383  |  |  | 
2384  |  | /* Do not compare ECC_GenerateKeyPair results, because the result can be produced indeterministically */  | 
2385  |  | template <>  | 
2386  | 0  | void ExecutorBase<component::ECC_KeyPair, operation::ECC_GenerateKeyPair>::compare(const std::vector< std::pair<std::shared_ptr<Module>, operation::ECC_GenerateKeyPair> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { | 
2387  | 0  |     (void)operations;  | 
2388  | 0  |     (void)results;  | 
2389  | 0  |     (void)data;  | 
2390  | 0  |     (void)size;  | 
2391  | 0  | }  | 
2392  |  |  | 
2393  |  | template <class ResultType, class OperationType>  | 
2394  | 13.7k  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { | 
2395  | 13.7k  |     (void)operation;  | 
2396  |  |  | 
2397  | 13.7k  |     return false;  | 
2398  | 13.7k  | } Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Digest>::dontCompare(cryptofuzz::operation::Digest const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::UMAC>::dontCompare(cryptofuzz::operation::UMAC const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SCRYPT>::dontCompare(cryptofuzz::operation::KDF_SCRYPT const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_HKDF>::dontCompare(cryptofuzz::operation::KDF_HKDF const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_TLS1_PRF>::dontCompare(cryptofuzz::operation::KDF_TLS1_PRF const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF>::dontCompare(cryptofuzz::operation::KDF_PBKDF const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF1>::dontCompare(cryptofuzz::operation::KDF_PBKDF1 const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF2>::dontCompare(cryptofuzz::operation::KDF_PBKDF2 const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_ARGON2>::dontCompare(cryptofuzz::operation::KDF_ARGON2 const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SSH>::dontCompare(cryptofuzz::operation::KDF_SSH const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_X963>::dontCompare(cryptofuzz::operation::KDF_X963 const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_BCRYPT>::dontCompare(cryptofuzz::operation::KDF_BCRYPT const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SP_800_108>::dontCompare(cryptofuzz::operation::KDF_SP_800_108 const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTP>::dontCompare(cryptofuzz::operation::KDF_SRTP const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTCP>::dontCompare(cryptofuzz::operation::KDF_SRTCP const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_PrivateToPublic>::dontCompare(cryptofuzz::operation::ECC_PrivateToPublic const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_ValidatePubkey>::dontCompare(cryptofuzz::operation::ECC_ValidatePubkey const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECC_KeyPair, cryptofuzz::operation::ECC_GenerateKeyPair>::dontCompare(cryptofuzz::operation::ECC_GenerateKeyPair const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::Schnorr_Sign>::dontCompare(cryptofuzz::operation::Schnorr_Sign const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECCSI_Verify>::dontCompare(cryptofuzz::operation::ECCSI_Verify const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECDSA_Verify>::dontCompare(cryptofuzz::operation::ECDSA_Verify const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECGDSA_Verify>::dontCompare(cryptofuzz::operation::ECGDSA_Verify const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECRDSA_Verify>::dontCompare(cryptofuzz::operation::ECRDSA_Verify const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::Schnorr_Verify>::dontCompare(cryptofuzz::operation::Schnorr_Verify const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECDSA_Recover>::dontCompare(cryptofuzz::operation::ECDSA_Recover const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::DSA_Verify>::dontCompare(cryptofuzz::operation::DSA_Verify const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::DSA_Signature, cryptofuzz::operation::DSA_Sign>::dontCompare(cryptofuzz::operation::DSA_Sign const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::DSA_Parameters, cryptofuzz::operation::DSA_GenerateParameters>::dontCompare(cryptofuzz::operation::DSA_GenerateParameters const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DSA_PrivateToPublic>::dontCompare(cryptofuzz::operation::DSA_PrivateToPublic const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::DSA_GenerateKeyPair>::dontCompare(cryptofuzz::operation::DSA_GenerateKeyPair const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECDH_Derive>::dontCompare(cryptofuzz::operation::ECDH_Derive const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Ciphertext, cryptofuzz::operation::ECIES_Encrypt>::dontCompare(cryptofuzz::operation::ECIES_Encrypt const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECIES_Decrypt>::dontCompare(cryptofuzz::operation::ECIES_Decrypt const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Add>::dontCompare(cryptofuzz::operation::ECC_Point_Add const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Sub>::dontCompare(cryptofuzz::operation::ECC_Point_Sub const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Mul>::dontCompare(cryptofuzz::operation::ECC_Point_Mul const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Neg>::dontCompare(cryptofuzz::operation::ECC_Point_Neg const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Dbl>::dontCompare(cryptofuzz::operation::ECC_Point_Dbl const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_Point_Cmp>::dontCompare(cryptofuzz::operation::ECC_Point_Cmp const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::DH_GenerateKeyPair>::dontCompare(cryptofuzz::operation::DH_GenerateKeyPair const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DH_Derive>::dontCompare(cryptofuzz::operation::DH_Derive const&) const cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BignumCalc_Fp2>::dontCompare(cryptofuzz::operation::BignumCalc_Fp2 const&) const Line  | Count  | Source  |  2394  | 474  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 474  |     (void)operation;  |  2396  |  |  |  2397  | 474  |     return false;  |  2398  | 474  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BignumCalc_Fp12>::dontCompare(cryptofuzz::operation::BignumCalc_Fp12 const&) const Line  | Count  | Source  |  2394  | 365  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 365  |     (void)operation;  |  2396  |  |  |  2397  | 365  |     return false;  |  2398  | 365  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_PrivateToPublic>::dontCompare(cryptofuzz::operation::BLS_PrivateToPublic const&) const Line  | Count  | Source  |  2394  | 2.73k  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 2.73k  |     (void)operation;  |  2396  |  |  |  2397  | 2.73k  |     return false;  |  2398  | 2.73k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_PrivateToPublic_G2>::dontCompare(cryptofuzz::operation::BLS_PrivateToPublic_G2 const&) const Line  | Count  | Source  |  2394  | 424  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 424  |     (void)operation;  |  2396  |  |  |  2397  | 424  |     return false;  |  2398  | 424  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_Signature, cryptofuzz::operation::BLS_Sign>::dontCompare(cryptofuzz::operation::BLS_Sign const&) const Line  | Count  | Source  |  2394  | 506  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 506  |     (void)operation;  |  2396  |  |  |  2397  | 506  |     return false;  |  2398  | 506  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_Verify>::dontCompare(cryptofuzz::operation::BLS_Verify const&) const Line  | Count  | Source  |  2394  | 31  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 31  |     (void)operation;  |  2396  |  |  |  2397  | 31  |     return false;  |  2398  | 31  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_BatchSignature, cryptofuzz::operation::BLS_BatchSign>::dontCompare(cryptofuzz::operation::BLS_BatchSign const&) const cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_BatchVerify>::dontCompare(cryptofuzz::operation::BLS_BatchVerify const&) const Line  | Count  | Source  |  2394  | 51  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 51  |     (void)operation;  |  2396  |  |  |  2397  | 51  |     return false;  |  2398  | 51  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Aggregate_G1>::dontCompare(cryptofuzz::operation::BLS_Aggregate_G1 const&) const Line  | Count  | Source  |  2394  | 20  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 20  |     (void)operation;  |  2396  |  |  |  2397  | 20  |     return false;  |  2398  | 20  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Aggregate_G2>::dontCompare(cryptofuzz::operation::BLS_Aggregate_G2 const&) const Line  | Count  | Source  |  2394  | 22  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 22  |     (void)operation;  |  2396  |  |  |  2397  | 22  |     return false;  |  2398  | 22  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_Pairing>::dontCompare(cryptofuzz::operation::BLS_Pairing const&) const Line  | Count  | Source  |  2394  | 46  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 46  |     (void)operation;  |  2396  |  |  |  2397  | 46  |     return false;  |  2398  | 46  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_MillerLoop>::dontCompare(cryptofuzz::operation::BLS_MillerLoop const&) const cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_FinalExp>::dontCompare(cryptofuzz::operation::BLS_FinalExp const&) const Line  | Count  | Source  |  2394  | 169  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 169  |     (void)operation;  |  2396  |  |  |  2397  | 169  |     return false;  |  2398  | 169  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_HashToG1>::dontCompare(cryptofuzz::operation::BLS_HashToG1 const&) const Line  | Count  | Source  |  2394  | 132  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 132  |     (void)operation;  |  2396  |  |  |  2397  | 132  |     return false;  |  2398  | 132  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_HashToG2>::dontCompare(cryptofuzz::operation::BLS_HashToG2 const&) const Line  | Count  | Source  |  2394  | 187  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 187  |     (void)operation;  |  2396  |  |  |  2397  | 187  |     return false;  |  2398  | 187  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_MapToG1>::dontCompare(cryptofuzz::operation::BLS_MapToG1 const&) const Line  | Count  | Source  |  2394  | 170  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 170  |     (void)operation;  |  2396  |  |  |  2397  | 170  |     return false;  |  2398  | 170  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_MapToG2>::dontCompare(cryptofuzz::operation::BLS_MapToG2 const&) const Line  | Count  | Source  |  2394  | 85  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 85  |     (void)operation;  |  2396  |  |  |  2397  | 85  |     return false;  |  2398  | 85  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG1OnCurve>::dontCompare(cryptofuzz::operation::BLS_IsG1OnCurve const&) const Line  | Count  | Source  |  2394  | 1.21k  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 1.21k  |     (void)operation;  |  2396  |  |  |  2397  | 1.21k  |     return false;  |  2398  | 1.21k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG2OnCurve>::dontCompare(cryptofuzz::operation::BLS_IsG2OnCurve const&) const Line  | Count  | Source  |  2394  | 1.85k  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 1.85k  |     (void)operation;  |  2396  |  |  |  2397  | 1.85k  |     return false;  |  2398  | 1.85k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_KeyPair, cryptofuzz::operation::BLS_GenerateKeyPair>::dontCompare(cryptofuzz::operation::BLS_GenerateKeyPair const&) const Line  | Count  | Source  |  2394  | 29  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 29  |     (void)operation;  |  2396  |  |  |  2397  | 29  |     return false;  |  2398  | 29  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Decompress_G1>::dontCompare(cryptofuzz::operation::BLS_Decompress_G1 const&) const Line  | Count  | Source  |  2394  | 70  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 70  |     (void)operation;  |  2396  |  |  |  2397  | 70  |     return false;  |  2398  | 70  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::BLS_Compress_G1>::dontCompare(cryptofuzz::operation::BLS_Compress_G1 const&) const Line  | Count  | Source  |  2394  | 35  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 35  |     (void)operation;  |  2396  |  |  |  2397  | 35  |     return false;  |  2398  | 35  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Decompress_G2>::dontCompare(cryptofuzz::operation::BLS_Decompress_G2 const&) const Line  | Count  | Source  |  2394  | 72  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 72  |     (void)operation;  |  2396  |  |  |  2397  | 72  |     return false;  |  2398  | 72  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Compress_G2>::dontCompare(cryptofuzz::operation::BLS_Compress_G2 const&) const Line  | Count  | Source  |  2394  | 50  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 50  |     (void)operation;  |  2396  |  |  |  2397  | 50  |     return false;  |  2398  | 50  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Add>::dontCompare(cryptofuzz::operation::BLS_G1_Add const&) const Line  | Count  | Source  |  2394  | 29  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 29  |     (void)operation;  |  2396  |  |  |  2397  | 29  |     return false;  |  2398  | 29  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Mul>::dontCompare(cryptofuzz::operation::BLS_G1_Mul const&) const Line  | Count  | Source  |  2394  | 107  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 107  |     (void)operation;  |  2396  |  |  |  2397  | 107  |     return false;  |  2398  | 107  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G1_IsEq>::dontCompare(cryptofuzz::operation::BLS_G1_IsEq const&) const Line  | Count  | Source  |  2394  | 84  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 84  |     (void)operation;  |  2396  |  |  |  2397  | 84  |     return false;  |  2398  | 84  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Neg>::dontCompare(cryptofuzz::operation::BLS_G1_Neg const&) const Line  | Count  | Source  |  2394  | 2.19k  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 2.19k  |     (void)operation;  |  2396  |  |  |  2397  | 2.19k  |     return false;  |  2398  | 2.19k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Add>::dontCompare(cryptofuzz::operation::BLS_G2_Add const&) const Line  | Count  | Source  |  2394  | 358  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 358  |     (void)operation;  |  2396  |  |  |  2397  | 358  |     return false;  |  2398  | 358  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Mul>::dontCompare(cryptofuzz::operation::BLS_G2_Mul const&) const Line  | Count  | Source  |  2394  | 236  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 236  |     (void)operation;  |  2396  |  |  |  2397  | 236  |     return false;  |  2398  | 236  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G2_IsEq>::dontCompare(cryptofuzz::operation::BLS_G2_IsEq const&) const Line  | Count  | Source  |  2394  | 57  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 57  |     (void)operation;  |  2396  |  |  |  2397  | 57  |     return false;  |  2398  | 57  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Neg>::dontCompare(cryptofuzz::operation::BLS_G2_Neg const&) const Line  | Count  | Source  |  2394  | 1.98k  | bool ExecutorBase<ResultType, OperationType>::dontCompare(const OperationType& operation) const { |  2395  | 1.98k  |     (void)operation;  |  2396  |  |  |  2397  | 1.98k  |     return false;  |  2398  | 1.98k  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_MultiExp>::dontCompare(cryptofuzz::operation::BLS_G1_MultiExp const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Misc>::dontCompare(cryptofuzz::operation::Misc const&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::SR25519_Verify>::dontCompare(cryptofuzz::operation::SR25519_Verify const&) const  | 
2399  |  |  | 
2400  |  | template <>  | 
2401  | 3.54k  | bool ExecutorBase<component::Bignum, operation::BignumCalc>::dontCompare(const operation::BignumCalc& operation) const { | 
2402  | 3.54k  |     if ( operation.calcOp.Get() == CF_CALCOP("Rand()") ) { return true; } | 
2403  | 3.54k  |     if ( operation.calcOp.Get() == CF_CALCOP("RandMod(A)") ) { return true; } | 
2404  | 3.54k  |     if ( operation.calcOp.Get() == CF_CALCOP("Prime()") ) { return true; } | 
2405  | 3.54k  |     if ( operation.calcOp.Get() == CF_CALCOP("RandRange(A,B)") ) { return true; } | 
2406  |  |  | 
2407  | 3.54k  |     return false;  | 
2408  | 3.54k  | }  | 
2409  |  |  | 
2410  |  | template <>  | 
2411  | 0  | bool ExecutorBase<component::ECCSI_Signature, operation::ECCSI_Sign>::dontCompare(const operation::ECCSI_Sign& operation) const { | 
2412  | 0  |     (void)operation;  | 
2413  | 0  |     return true;  | 
2414  | 0  | }  | 
2415  |  |  | 
2416  |  | template <>  | 
2417  | 0  | bool ExecutorBase<component::ECDSA_Signature, operation::ECDSA_Sign>::dontCompare(const operation::ECDSA_Sign& operation) const { | 
2418  | 0  |     if (  | 
2419  | 0  |             operation.curveType.Get() != CF_ECC_CURVE("ed25519") && | 
2420  | 0  |             operation.curveType.Get() != CF_ECC_CURVE("ed448") ) { | 
2421  | 0  |         if ( operation.UseRandomNonce() ) { | 
2422  |  |             /* Don't compare ECDSA signatures comptued from a randomly generated nonce */  | 
2423  | 0  |             return true;  | 
2424  | 0  |         }  | 
2425  | 0  |     }  | 
2426  |  |  | 
2427  | 0  |     return false;  | 
2428  | 0  | }  | 
2429  |  |  | 
2430  |  | template <>  | 
2431  | 0  | bool ExecutorBase<component::ECGDSA_Signature, operation::ECGDSA_Sign>::dontCompare(const operation::ECGDSA_Sign& operation) const { | 
2432  | 0  |     if (  | 
2433  | 0  |             operation.curveType.Get() != CF_ECC_CURVE("ed25519") && | 
2434  | 0  |             operation.curveType.Get() != CF_ECC_CURVE("ed448") ) { | 
2435  | 0  |         if ( operation.UseRandomNonce() ) { | 
2436  |  |             /* Don't compare ECGDSA signatures comptued from a randomly generated nonce */  | 
2437  | 0  |             return true;  | 
2438  | 0  |         }  | 
2439  | 0  |     }  | 
2440  |  |  | 
2441  | 0  |     return false;  | 
2442  | 0  | }  | 
2443  |  |  | 
2444  |  | template <>  | 
2445  | 0  | bool ExecutorBase<component::ECRDSA_Signature, operation::ECRDSA_Sign>::dontCompare(const operation::ECRDSA_Sign& operation) const { | 
2446  | 0  |     if (  | 
2447  | 0  |             operation.curveType.Get() != CF_ECC_CURVE("ed25519") && | 
2448  | 0  |             operation.curveType.Get() != CF_ECC_CURVE("ed448") ) { | 
2449  | 0  |         if ( operation.UseRandomNonce() ) { | 
2450  |  |             /* Don't compare ECRDSA signatures comptued from a randomly generated nonce */  | 
2451  | 0  |             return true;  | 
2452  | 0  |         }  | 
2453  | 0  |     }  | 
2454  |  |  | 
2455  | 0  |     return false;  | 
2456  | 0  | }  | 
2457  |  |  | 
2458  |  | /* OpenSSL DES_EDE3_WRAP randomizes the IV, result is different each time */  | 
2459  |  | template <>  | 
2460  | 0  | bool ExecutorBase<component::Ciphertext, operation::SymmetricEncrypt>::dontCompare(const operation::SymmetricEncrypt& operation) const { | 
2461  | 0  |     if ( operation.cipher.cipherType.Get() == CF_CIPHER("DES_EDE3_WRAP") ) { return true; } | 
2462  |  |  | 
2463  | 0  |     return false;  | 
2464  | 0  | }  | 
2465  |  |  | 
2466  |  | template <>  | 
2467  | 0  | bool ExecutorBase<component::Cleartext, operation::SymmetricDecrypt>::dontCompare(const operation::SymmetricDecrypt& operation) const { | 
2468  | 0  |     if ( operation.cipher.cipherType.Get() == CF_CIPHER("DES_EDE3_WRAP") ) return true; | 
2469  |  |  | 
2470  | 0  |     return false;  | 
2471  | 0  | }  | 
2472  |  |  | 
2473  |  | template <>  | 
2474  | 0  | bool ExecutorBase<component::MAC, operation::CMAC>::dontCompare(const operation::CMAC& operation) const { | 
2475  | 0  |     if ( operation.cipher.cipherType.Get() == CF_CIPHER("DES_EDE3_WRAP") ) return true; | 
2476  |  |  | 
2477  | 0  |     return false;  | 
2478  | 0  | }  | 
2479  |  |  | 
2480  |  | template <>  | 
2481  | 0  | bool ExecutorBase<component::MAC, operation::HMAC>::dontCompare(const operation::HMAC& operation) const { | 
2482  | 0  |     if ( operation.cipher.cipherType.Get() == CF_CIPHER("DES_EDE3_WRAP") ) return true; | 
2483  |  |  | 
2484  | 0  |     return false;  | 
2485  | 0  | }  | 
2486  |  |  | 
2487  |  | template <class ResultType, class OperationType>  | 
2488  | 49.0k  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { | 
2489  | 49.0k  |     if ( results.size() < 2 ) { | 
2490  |  |         /* Nothing to compare. Don't even bother filtering. */  | 
2491  | 0  |         return;  | 
2492  | 0  |     }  | 
2493  |  |  | 
2494  | 49.0k  |     const auto filtered = filter(results);  | 
2495  |  |  | 
2496  | 49.0k  |     if ( filtered.size() < 2 ) { | 
2497  |  |         /* Nothing to compare */  | 
2498  | 31.7k  |         return;  | 
2499  | 31.7k  |     }  | 
2500  |  |  | 
2501  | 17.3k  |     if ( dontCompare(operations[0].second) == true ) { | 
2502  | 0  |         return;  | 
2503  | 0  |     }  | 
2504  |  |  | 
2505  | 55.5k  |     for (size_t i = 1; i < filtered.size(); i++) { | 
2506  | 38.2k  |         const std::optional<ResultType>& prev = filtered[i-1].second;  | 
2507  | 38.2k  |         const std::optional<ResultType>& cur = filtered[i].second;  | 
2508  |  |  | 
2509  | 38.2k  |         const bool equal = *prev == *cur;  | 
2510  |  |  | 
2511  | 38.2k  |         if ( !equal ) { | 
2512  |  |             /* Reconstruct operation */  | 
2513  | 0  |             const auto op = getOp(nullptr, data, size);  | 
2514  |  | 
  | 
2515  | 0  |             printf("Difference detected\n\n"); | 
2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); | 
2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); | 
2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); | 
2519  |  | 
  | 
2520  | 0  |             abort(  | 
2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, | 
2522  | 0  |                     op.Name(),  | 
2523  | 0  |                     op.GetAlgorithmString(),  | 
2524  | 0  |                     "difference"  | 
2525  | 0  |             );  | 
2526  | 0  |         }  | 
2527  | 38.2k  |     }  | 
2528  | 17.3k  | } Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Digest>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::Digest>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::Digest> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::HMAC>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::HMAC>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::HMAC> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::UMAC>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::UMAC>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::UMAC> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::CMAC>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::CMAC>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::CMAC> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Ciphertext, cryptofuzz::operation::SymmetricEncrypt>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::SymmetricEncrypt>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::SymmetricEncrypt> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Ciphertext> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Ciphertext> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::SymmetricDecrypt>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::SymmetricDecrypt>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::SymmetricDecrypt> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SCRYPT>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_SCRYPT>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_SCRYPT> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&, unsigned char const*, unsigned long) const cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_HKDF>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_HKDF>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_HKDF> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 309  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 309  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 309  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 309  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 309  |         return;  |  2499  | 309  |     }  |  2500  |  |  |  2501  | 0  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 0  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 0  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 0  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  | 
  |  2509  | 0  |         const bool equal = *prev == *cur;  |  2510  |  | 
  |  2511  | 0  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 0  |     }  |  2528  | 0  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_TLS1_PRF>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_TLS1_PRF>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_TLS1_PRF> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_PBKDF>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_PBKDF> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF1>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_PBKDF1>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_PBKDF1> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF2>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_PBKDF2>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_PBKDF2> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_ARGON2>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_ARGON2>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_ARGON2> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SSH>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_SSH>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_SSH> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_X963>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_X963>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_X963> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_BCRYPT>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_BCRYPT>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_BCRYPT> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SP_800_108>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_SP_800_108>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_SP_800_108> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTP>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_SRTP>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_SRTP> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<std::__1::array<cryptofuzz::Buffer, 3ul> > >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<std::__1::array<cryptofuzz::Buffer, 3ul> > > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTCP>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_SRTCP>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::KDF_SRTCP> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<std::__1::array<cryptofuzz::Buffer, 3ul> > >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<std::__1::array<cryptofuzz::Buffer, 3ul> > > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_PrivateToPublic>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECC_PrivateToPublic>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECC_PrivateToPublic> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_ValidatePubkey>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECC_ValidatePubkey>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECC_ValidatePubkey> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECCSI_Signature, cryptofuzz::operation::ECCSI_Sign>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECCSI_Sign>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECCSI_Sign> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECCSI_Signature> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECCSI_Signature> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECDSA_Sign>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECDSA_Sign>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECDSA_Sign> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECDSA_Signature> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECDSA_Signature> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECGDSA_Sign>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECGDSA_Sign>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECGDSA_Sign> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECDSA_Signature> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECDSA_Signature> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECRDSA_Sign>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECRDSA_Sign>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECRDSA_Sign> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECDSA_Signature> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECDSA_Signature> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::Schnorr_Sign>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::Schnorr_Sign>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::Schnorr_Sign> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECDSA_Signature> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::ECDSA_Signature> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECCSI_Verify>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECCSI_Verify>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECCSI_Verify> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECDSA_Verify>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECDSA_Verify>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECDSA_Verify> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECGDSA_Verify>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECGDSA_Verify>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECGDSA_Verify> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECRDSA_Verify>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECRDSA_Verify>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECRDSA_Verify> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::Schnorr_Verify>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::Schnorr_Verify>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::Schnorr_Verify> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECDSA_Recover>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECDSA_Recover>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECDSA_Recover> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::DSA_Verify>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::DSA_Verify>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::DSA_Verify> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DSA_PrivateToPublic>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::DSA_PrivateToPublic>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::DSA_PrivateToPublic> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Bignum> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Bignum> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECDH_Derive>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECDH_Derive>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECDH_Derive> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECIES_Decrypt>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECIES_Decrypt>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECIES_Decrypt> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Add>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECC_Point_Add>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECC_Point_Add> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Sub>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECC_Point_Sub>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECC_Point_Sub> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Mul>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECC_Point_Mul>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECC_Point_Mul> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Neg>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECC_Point_Neg>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECC_Point_Neg> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Dbl>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECC_Point_Dbl>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECC_Point_Dbl> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_Point_Cmp>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECC_Point_Cmp>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::ECC_Point_Cmp> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DH_Derive>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::DH_Derive>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::DH_Derive> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Bignum> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Bignum> > > > const&, unsigned char const*, unsigned long) const cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::BignumCalc>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BignumCalc>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BignumCalc> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Bignum> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Bignum> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 20.6k  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 20.6k  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 20.6k  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 20.6k  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 17.0k  |         return;  |  2499  | 17.0k  |     }  |  2500  |  |  |  2501  | 3.54k  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 14.8k  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 11.2k  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 11.2k  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 11.2k  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 11.2k  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 11.2k  |     }  |  2528  | 3.54k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BignumCalc_Fp2>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BignumCalc_Fp2>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BignumCalc_Fp2> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 1.96k  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 1.96k  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 1.96k  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 1.96k  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 1.48k  |         return;  |  2499  | 1.48k  |     }  |  2500  |  |  |  2501  | 474  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 1.76k  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 1.29k  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 1.29k  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 1.29k  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 1.29k  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 1.29k  |     }  |  2528  | 474  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BignumCalc_Fp12>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BignumCalc_Fp12>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BignumCalc_Fp12> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Fp12> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Fp12> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 1.18k  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 1.18k  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 1.18k  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 1.18k  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 822  |         return;  |  2499  | 822  |     }  |  2500  |  |  |  2501  | 365  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 1.19k  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 825  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 825  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 825  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 825  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 825  |     }  |  2528  | 365  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_PrivateToPublic>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_PrivateToPublic>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_PrivateToPublic> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 2.89k  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 2.89k  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 2.89k  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 2.89k  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 169  |         return;  |  2499  | 169  |     }  |  2500  |  |  |  2501  | 2.73k  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 8.29k  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 5.56k  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 5.56k  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 5.56k  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 5.56k  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 5.56k  |     }  |  2528  | 2.73k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_PrivateToPublic_G2>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_PrivateToPublic_G2>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_PrivateToPublic_G2> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 494  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 494  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 494  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 494  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 70  |         return;  |  2499  | 70  |     }  |  2500  |  |  |  2501  | 424  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 905  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 481  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 481  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 481  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 481  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 481  |     }  |  2528  | 424  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_Signature, cryptofuzz::operation::BLS_Sign>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_Sign>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_Sign> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BLS_Signature> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BLS_Signature> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 590  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 590  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 590  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 590  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 84  |         return;  |  2499  | 84  |     }  |  2500  |  |  |  2501  | 506  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 1.61k  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 1.10k  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 1.10k  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 1.10k  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 1.10k  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 1.10k  |     }  |  2528  | 506  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_Verify>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_Verify>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_Verify> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 128  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 128  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 128  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 128  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 97  |         return;  |  2499  | 97  |     }  |  2500  |  |  |  2501  | 31  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 93  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 62  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 62  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 62  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 62  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 62  |     }  |  2528  | 31  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_BatchSignature, cryptofuzz::operation::BLS_BatchSign>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_BatchSign>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_BatchSign> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BLS_BatchSignature> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BLS_BatchSignature> > > > const&, unsigned char const*, unsigned long) const cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_BatchVerify>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_BatchVerify>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_BatchVerify> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 754  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 754  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 754  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 754  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 703  |         return;  |  2499  | 703  |     }  |  2500  |  |  |  2501  | 51  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 173  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 122  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 122  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 122  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 122  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 122  |     }  |  2528  | 51  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Aggregate_G1>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_Aggregate_G1>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_Aggregate_G1> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 100  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 100  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 100  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 100  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 80  |         return;  |  2499  | 80  |     }  |  2500  |  |  |  2501  | 20  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 60  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 40  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 40  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 40  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 40  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 40  |     }  |  2528  | 20  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Aggregate_G2>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_Aggregate_G2>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_Aggregate_G2> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 115  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 115  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 115  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 115  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 93  |         return;  |  2499  | 93  |     }  |  2500  |  |  |  2501  | 22  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 68  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 46  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 46  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 46  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 46  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 46  |     }  |  2528  | 22  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_Pairing>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_Pairing>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_Pairing> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Fp12> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Fp12> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 116  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 116  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 116  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 116  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 70  |         return;  |  2499  | 70  |     }  |  2500  |  |  |  2501  | 46  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 129  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 83  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 83  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 83  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 83  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 83  |     }  |  2528  | 46  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_MillerLoop>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_MillerLoop>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_MillerLoop> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Fp12> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Fp12> > > > const&, unsigned char const*, unsigned long) const cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_FinalExp>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_FinalExp>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_FinalExp> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Fp12> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::Fp12> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 201  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 201  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 201  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 201  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 32  |         return;  |  2499  | 32  |     }  |  2500  |  |  |  2501  | 169  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 578  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 409  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 409  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 409  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 409  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 409  |     }  |  2528  | 169  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_HashToG1>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_HashToG1>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_HashToG1> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 158  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 158  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 158  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 158  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 26  |         return;  |  2499  | 26  |     }  |  2500  |  |  |  2501  | 132  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 452  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 320  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 320  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 320  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 320  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 320  |     }  |  2528  | 132  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_HashToG2>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_HashToG2>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_HashToG2> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 202  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 202  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 202  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 202  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 15  |         return;  |  2499  | 15  |     }  |  2500  |  |  |  2501  | 187  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 623  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 436  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 436  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 436  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 436  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 436  |     }  |  2528  | 187  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_MapToG1>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_MapToG1>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_MapToG1> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 193  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 193  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 193  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 193  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 23  |         return;  |  2499  | 23  |     }  |  2500  |  |  |  2501  | 170  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 415  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 245  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 245  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 245  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 245  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 245  |     }  |  2528  | 170  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_MapToG2>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_MapToG2>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_MapToG2> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 122  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 122  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 122  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 122  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 37  |         return;  |  2499  | 37  |     }  |  2500  |  |  |  2501  | 85  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 233  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 148  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 148  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 148  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 148  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 148  |     }  |  2528  | 85  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG1OnCurve>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_IsG1OnCurve>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_IsG1OnCurve> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 1.25k  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 1.25k  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 1.25k  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 1.25k  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 40  |         return;  |  2499  | 40  |     }  |  2500  |  |  |  2501  | 1.21k  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 4.75k  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 3.54k  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 3.54k  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 3.54k  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 3.54k  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 3.54k  |     }  |  2528  | 1.21k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG2OnCurve>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_IsG2OnCurve>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_IsG2OnCurve> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 1.90k  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 1.90k  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 1.90k  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 1.90k  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 43  |         return;  |  2499  | 43  |     }  |  2500  |  |  |  2501  | 1.85k  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 6.91k  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 5.05k  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 5.05k  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 5.05k  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 5.05k  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 5.05k  |     }  |  2528  | 1.85k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_KeyPair, cryptofuzz::operation::BLS_GenerateKeyPair>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_GenerateKeyPair>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_GenerateKeyPair> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BLS_KeyPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BLS_KeyPair> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 80  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 80  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 80  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 80  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 51  |         return;  |  2499  | 51  |     }  |  2500  |  |  |  2501  | 29  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 96  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 67  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 67  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 67  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 67  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 67  |     }  |  2528  | 29  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Decompress_G1>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_Decompress_G1>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_Decompress_G1> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 218  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 218  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 218  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 218  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 148  |         return;  |  2499  | 148  |     }  |  2500  |  |  |  2501  | 70  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 207  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 137  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 137  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 137  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 137  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 137  |     }  |  2528  | 70  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::BLS_Compress_G1>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_Compress_G1>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_Compress_G1> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Bignum> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Bignum> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 97  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 97  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 97  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 97  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 62  |         return;  |  2499  | 62  |     }  |  2500  |  |  |  2501  | 35  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 116  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 81  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 81  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 81  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 81  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 81  |     }  |  2528  | 35  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Decompress_G2>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_Decompress_G2>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_Decompress_G2> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 114  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 114  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 114  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 114  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 42  |         return;  |  2499  | 42  |     }  |  2500  |  |  |  2501  | 72  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 203  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 131  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 131  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 131  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 131  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 131  |     }  |  2528  | 72  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Compress_G2>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_Compress_G2>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_Compress_G2> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 98  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 98  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 98  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 98  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 48  |         return;  |  2499  | 48  |     }  |  2500  |  |  |  2501  | 50  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 169  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 119  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 119  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 119  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 119  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 119  |     }  |  2528  | 50  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Add>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_G1_Add>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_G1_Add> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 2.35k  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 2.35k  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 2.35k  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 2.35k  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 2.33k  |         return;  |  2499  | 2.33k  |     }  |  2500  |  |  |  2501  | 29  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 127  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 98  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 98  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 98  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 98  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 98  |     }  |  2528  | 29  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Mul>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_G1_Mul>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_G1_Mul> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 1.58k  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 1.58k  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 1.58k  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 1.58k  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 1.48k  |         return;  |  2499  | 1.48k  |     }  |  2500  |  |  |  2501  | 107  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 426  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 319  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 319  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 319  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 319  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 319  |     }  |  2528  | 107  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G1_IsEq>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_G1_IsEq>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_G1_IsEq> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 162  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 162  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 162  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 162  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 78  |         return;  |  2499  | 78  |     }  |  2500  |  |  |  2501  | 84  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 260  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 176  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 176  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 176  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 176  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 176  |     }  |  2528  | 84  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Neg>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_G1_Neg>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_G1_Neg> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 2.27k  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 2.27k  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 2.27k  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 2.27k  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 84  |         return;  |  2499  | 84  |     }  |  2500  |  |  |  2501  | 2.19k  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 4.78k  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 2.59k  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 2.59k  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 2.59k  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 2.59k  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 2.59k  |     }  |  2528  | 2.19k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Add>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_G2_Add>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_G2_Add> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 2.35k  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 2.35k  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 2.35k  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 2.35k  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 1.99k  |         return;  |  2499  | 1.99k  |     }  |  2500  |  |  |  2501  | 358  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 790  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 432  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 432  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 432  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 432  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 432  |     }  |  2528  | 358  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Mul>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_G2_Mul>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_G2_Mul> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 3.87k  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 3.87k  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 3.87k  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 3.87k  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 3.63k  |         return;  |  2499  | 3.63k  |     }  |  2500  |  |  |  2501  | 236  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 749  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 513  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 513  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 513  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 513  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 513  |     }  |  2528  | 236  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G2_IsEq>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_G2_IsEq>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_G2_IsEq> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 182  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 182  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 182  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 182  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 125  |         return;  |  2499  | 125  |     }  |  2500  |  |  |  2501  | 57  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 169  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 112  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 112  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 112  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 112  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 112  |     }  |  2528  | 57  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Neg>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_G2_Neg>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_G2_Neg> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::G2> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 2.04k  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 2.04k  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 2.04k  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 2.04k  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 64  |         return;  |  2499  | 64  |     }  |  2500  |  |  |  2501  | 1.98k  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 4.37k  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 2.38k  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 2.38k  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  |  |  2509  | 2.38k  |         const bool equal = *prev == *cur;  |  2510  |  |  |  2511  | 2.38k  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 2.38k  |     }  |  2528  | 1.98k  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_MultiExp>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_G1_MultiExp>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::BLS_G1_MultiExp> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::component::BignumPair> > > > const&, unsigned char const*, unsigned long) const cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Misc>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::Misc>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::Misc> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<cryptofuzz::Buffer> > > > const&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2488  | 299  | void ExecutorBase<ResultType, OperationType>::compare(const std::vector< std::pair<std::shared_ptr<Module>, OperationType> >& operations, const ResultSet& results, const uint8_t* data, const size_t size) const { |  2489  | 299  |     if ( results.size() < 2 ) { |  2490  |  |         /* Nothing to compare. Don't even bother filtering. */  |  2491  | 0  |         return;  |  2492  | 0  |     }  |  2493  |  |  |  2494  | 299  |     const auto filtered = filter(results);  |  2495  |  |  |  2496  | 299  |     if ( filtered.size() < 2 ) { |  2497  |  |         /* Nothing to compare */  |  2498  | 299  |         return;  |  2499  | 299  |     }  |  2500  |  |  |  2501  | 0  |     if ( dontCompare(operations[0].second) == true ) { |  2502  | 0  |         return;  |  2503  | 0  |     }  |  2504  |  |  |  2505  | 0  |     for (size_t i = 1; i < filtered.size(); i++) { |  2506  | 0  |         const std::optional<ResultType>& prev = filtered[i-1].second;  |  2507  | 0  |         const std::optional<ResultType>& cur = filtered[i].second;  |  2508  |  | 
  |  2509  | 0  |         const bool equal = *prev == *cur;  |  2510  |  | 
  |  2511  | 0  |         if ( !equal ) { |  2512  |  |             /* Reconstruct operation */  |  2513  | 0  |             const auto op = getOp(nullptr, data, size);  |  2514  |  | 
  |  2515  | 0  |             printf("Difference detected\n\n"); |  2516  | 0  |             printf("Operation:\n%s\n", op.ToString().c_str()); |  2517  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i-1].first->name.c_str(), util::ToString(*prev).c_str()); |  2518  | 0  |             printf("Module %s result:\n\n%s\n\n", filtered[i].first->name.c_str(), util::ToString(*cur).c_str()); |  2519  |  | 
  |  2520  | 0  |             abort(  |  2521  | 0  |                     {filtered[i-1].first->name.c_str(), filtered[i].first->name.c_str()}, |  2522  | 0  |                     op.Name(),  |  2523  | 0  |                     op.GetAlgorithmString(),  |  2524  | 0  |                     "difference"  |  2525  | 0  |             );  |  2526  | 0  |         }  |  2527  | 0  |     }  |  2528  | 0  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::SR25519_Verify>::compare(std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::SR25519_Verify>, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, cryptofuzz::operation::SR25519_Verify> > > const&, std::__1::vector<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> >, std::__1::allocator<std::__1::pair<std::__1::shared_ptr<cryptofuzz::Module>, std::__1::optional<bool> > > > const&, unsigned char const*, unsigned long) const  | 
2529  |  |  | 
2530  |  | template <class ResultType, class OperationType>  | 
2531  | 0  | void ExecutorBase<ResultType, OperationType>::abort(std::vector<std::string> moduleNames, const std::string operation, const std::string algorithm, const std::string reason) const { | 
2532  | 0  |     std::sort(moduleNames.begin(), moduleNames.end());  | 
2533  |  | 
  | 
2534  | 0  |     printf("CPU:\n"); | 
2535  | 0  |     system("cat /proc/cpuinfo | grep '^model name' | head -n1"); | 
2536  | 0  |     system("cat /proc/cpuinfo | grep '^flags' | head -n1"); | 
2537  |  | 
  | 
2538  | 0  |     printf("Assertion failure: "); | 
2539  | 0  |     for (const auto& moduleName : moduleNames) { | 
2540  | 0  |         printf("%s-", moduleName.c_str()); | 
2541  | 0  |     }  | 
2542  | 0  |     printf("%s-%s-%s\n", operation.c_str(), algorithm.c_str(), reason.c_str()); | 
2543  | 0  |     fflush(stdout);  | 
2544  |  | 
  | 
2545  | 0  |     ::abort();  | 
2546  | 0  | } Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Digest>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::HMAC>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::UMAC>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::CMAC>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Ciphertext, cryptofuzz::operation::SymmetricEncrypt>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::SymmetricDecrypt>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SCRYPT>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_HKDF>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_TLS1_PRF>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF1>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF2>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_ARGON2>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SSH>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_X963>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_BCRYPT>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SP_800_108>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTP>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTCP>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_PrivateToPublic>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_ValidatePubkey>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECC_KeyPair, cryptofuzz::operation::ECC_GenerateKeyPair>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECCSI_Signature, cryptofuzz::operation::ECCSI_Sign>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECDSA_Sign>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECGDSA_Sign>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECRDSA_Sign>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::Schnorr_Sign>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECCSI_Verify>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECDSA_Verify>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECGDSA_Verify>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECRDSA_Verify>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::Schnorr_Verify>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECDSA_Recover>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::DSA_Verify>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::DSA_Signature, cryptofuzz::operation::DSA_Sign>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::DSA_Parameters, cryptofuzz::operation::DSA_GenerateParameters>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DSA_PrivateToPublic>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::DSA_GenerateKeyPair>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECDH_Derive>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Ciphertext, cryptofuzz::operation::ECIES_Encrypt>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECIES_Decrypt>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Add>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Sub>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Mul>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Neg>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Dbl>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_Point_Cmp>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::DH_GenerateKeyPair>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DH_Derive>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::BignumCalc>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BignumCalc_Fp2>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BignumCalc_Fp12>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_PrivateToPublic>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_PrivateToPublic_G2>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_Signature, cryptofuzz::operation::BLS_Sign>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_Verify>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_BatchSignature, cryptofuzz::operation::BLS_BatchSign>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_BatchVerify>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Aggregate_G1>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Aggregate_G2>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_Pairing>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_MillerLoop>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_FinalExp>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_HashToG1>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_HashToG2>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_MapToG1>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_MapToG2>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG1OnCurve>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG2OnCurve>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_KeyPair, cryptofuzz::operation::BLS_GenerateKeyPair>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Decompress_G1>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::BLS_Compress_G1>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Decompress_G2>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Compress_G2>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Add>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Mul>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G1_IsEq>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Neg>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Add>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Mul>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G2_IsEq>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Neg>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_MultiExp>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Misc>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::SR25519_Verify>::abort(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const  | 
2547  |  |  | 
2548  |  | template <class ResultType, class OperationType>  | 
2549  | 51.9k  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { | 
2550  | 51.9k  |     (void)parentDs;  | 
2551  | 51.9k  |     return op;  | 
2552  | 51.9k  | } Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Digest>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::Digest) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::HMAC>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::HMAC) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::UMAC>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::UMAC) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::CMAC>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::CMAC) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Ciphertext, cryptofuzz::operation::SymmetricEncrypt>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::SymmetricEncrypt) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::SymmetricDecrypt>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::SymmetricDecrypt) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SCRYPT>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::KDF_SCRYPT) const cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_HKDF>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::KDF_HKDF) const Line  | Count  | Source  |  2549  | 1.17k  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 1.17k  |     (void)parentDs;  |  2551  | 1.17k  |     return op;  |  2552  | 1.17k  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_TLS1_PRF>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::KDF_TLS1_PRF) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::KDF_PBKDF) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF1>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::KDF_PBKDF1) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF2>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::KDF_PBKDF2) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_ARGON2>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::KDF_ARGON2) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SSH>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::KDF_SSH) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_X963>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::KDF_X963) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_BCRYPT>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::KDF_BCRYPT) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SP_800_108>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::KDF_SP_800_108) const Unexecuted instantiation: cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTP>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::KDF_SRTP) const Unexecuted instantiation: cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTCP>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::KDF_SRTCP) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_PrivateToPublic>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECC_PrivateToPublic) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_ValidatePubkey>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECC_ValidatePubkey) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECC_KeyPair, cryptofuzz::operation::ECC_GenerateKeyPair>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECC_GenerateKeyPair) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECCSI_Signature, cryptofuzz::operation::ECCSI_Sign>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECCSI_Sign) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECDSA_Sign>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECDSA_Sign) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECGDSA_Sign>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECGDSA_Sign) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECRDSA_Sign>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECRDSA_Sign) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::Schnorr_Sign>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::Schnorr_Sign) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECCSI_Verify>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECCSI_Verify) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECDSA_Verify>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECDSA_Verify) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECGDSA_Verify>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECGDSA_Verify) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECRDSA_Verify>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECRDSA_Verify) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::Schnorr_Verify>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::Schnorr_Verify) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECDSA_Recover>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECDSA_Recover) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::DSA_Verify>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::DSA_Verify) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::DSA_Signature, cryptofuzz::operation::DSA_Sign>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::DSA_Sign) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::DSA_Parameters, cryptofuzz::operation::DSA_GenerateParameters>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::DSA_GenerateParameters) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DSA_PrivateToPublic>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::DSA_PrivateToPublic) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::DSA_GenerateKeyPair>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::DSA_GenerateKeyPair) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECDH_Derive>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECDH_Derive) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Ciphertext, cryptofuzz::operation::ECIES_Encrypt>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECIES_Encrypt) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECIES_Decrypt>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECIES_Decrypt) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Add>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECC_Point_Add) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Sub>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECC_Point_Sub) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Mul>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECC_Point_Mul) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Neg>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECC_Point_Neg) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Dbl>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECC_Point_Dbl) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_Point_Cmp>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::ECC_Point_Cmp) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::DH_GenerateKeyPair>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::DH_GenerateKeyPair) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DH_Derive>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::DH_Derive) const cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::BignumCalc>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BignumCalc) const Line  | Count  | Source  |  2549  | 10.8k  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 10.8k  |     (void)parentDs;  |  2551  | 10.8k  |     return op;  |  2552  | 10.8k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BignumCalc_Fp2>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BignumCalc_Fp2) const Line  | Count  | Source  |  2549  | 2.93k  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 2.93k  |     (void)parentDs;  |  2551  | 2.93k  |     return op;  |  2552  | 2.93k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BignumCalc_Fp12>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BignumCalc_Fp12) const Line  | Count  | Source  |  2549  | 2.15k  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 2.15k  |     (void)parentDs;  |  2551  | 2.15k  |     return op;  |  2552  | 2.15k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_PrivateToPublic>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_PrivateToPublic) const Line  | Count  | Source  |  2549  | 3.18k  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 3.18k  |     (void)parentDs;  |  2551  | 3.18k  |     return op;  |  2552  | 3.18k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_PrivateToPublic_G2>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_PrivateToPublic_G2) const Line  | Count  | Source  |  2549  | 683  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 683  |     (void)parentDs;  |  2551  | 683  |     return op;  |  2552  | 683  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_Signature, cryptofuzz::operation::BLS_Sign>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_Sign) const Line  | Count  | Source  |  2549  | 1.40k  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 1.40k  |     (void)parentDs;  |  2551  | 1.40k  |     return op;  |  2552  | 1.40k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_Verify>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_Verify) const Line  | Count  | Source  |  2549  | 362  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 362  |     (void)parentDs;  |  2551  | 362  |     return op;  |  2552  | 362  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_BatchSignature, cryptofuzz::operation::BLS_BatchSign>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_BatchSign) const cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_BatchVerify>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_BatchVerify) const Line  | Count  | Source  |  2549  | 1.13k  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 1.13k  |     (void)parentDs;  |  2551  | 1.13k  |     return op;  |  2552  | 1.13k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Aggregate_G1>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_Aggregate_G1) const Line  | Count  | Source  |  2549  | 366  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 366  |     (void)parentDs;  |  2551  | 366  |     return op;  |  2552  | 366  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Aggregate_G2>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_Aggregate_G2) const Line  | Count  | Source  |  2549  | 413  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 413  |     (void)parentDs;  |  2551  | 413  |     return op;  |  2552  | 413  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_Pairing>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_Pairing) const Line  | Count  | Source  |  2549  | 328  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 328  |     (void)parentDs;  |  2551  | 328  |     return op;  |  2552  | 328  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_MillerLoop>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_MillerLoop) const cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_FinalExp>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_FinalExp) const Line  | Count  | Source  |  2549  | 390  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 390  |     (void)parentDs;  |  2551  | 390  |     return op;  |  2552  | 390  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_HashToG1>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_HashToG1) const Line  | Count  | Source  |  2549  | 323  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 323  |     (void)parentDs;  |  2551  | 323  |     return op;  |  2552  | 323  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_HashToG2>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_HashToG2) const Line  | Count  | Source  |  2549  | 348  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 348  |     (void)parentDs;  |  2551  | 348  |     return op;  |  2552  | 348  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_MapToG1>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_MapToG1) const Line  | Count  | Source  |  2549  | 353  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 353  |     (void)parentDs;  |  2551  | 353  |     return op;  |  2552  | 353  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_MapToG2>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_MapToG2) const Line  | Count  | Source  |  2549  | 279  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 279  |     (void)parentDs;  |  2551  | 279  |     return op;  |  2552  | 279  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG1OnCurve>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_IsG1OnCurve) const Line  | Count  | Source  |  2549  | 1.69k  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 1.69k  |     (void)parentDs;  |  2551  | 1.69k  |     return op;  |  2552  | 1.69k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG2OnCurve>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_IsG2OnCurve) const Line  | Count  | Source  |  2549  | 2.38k  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 2.38k  |     (void)parentDs;  |  2551  | 2.38k  |     return op;  |  2552  | 2.38k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_KeyPair, cryptofuzz::operation::BLS_GenerateKeyPair>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_GenerateKeyPair) const Line  | Count  | Source  |  2549  | 250  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 250  |     (void)parentDs;  |  2551  | 250  |     return op;  |  2552  | 250  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Decompress_G1>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_Decompress_G1) const Line  | Count  | Source  |  2549  | 426  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 426  |     (void)parentDs;  |  2551  | 426  |     return op;  |  2552  | 426  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::BLS_Compress_G1>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_Compress_G1) const Line  | Count  | Source  |  2549  | 253  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 253  |     (void)parentDs;  |  2551  | 253  |     return op;  |  2552  | 253  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Decompress_G2>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_Decompress_G2) const Line  | Count  | Source  |  2549  | 318  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 318  |     (void)parentDs;  |  2551  | 318  |     return op;  |  2552  | 318  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Compress_G2>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_Compress_G2) const Line  | Count  | Source  |  2549  | 306  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 306  |     (void)parentDs;  |  2551  | 306  |     return op;  |  2552  | 306  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Add>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_G1_Add) const Line  | Count  | Source  |  2549  | 3.05k  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 3.05k  |     (void)parentDs;  |  2551  | 3.05k  |     return op;  |  2552  | 3.05k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Mul>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_G1_Mul) const Line  | Count  | Source  |  2549  | 2.07k  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 2.07k  |     (void)parentDs;  |  2551  | 2.07k  |     return op;  |  2552  | 2.07k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G1_IsEq>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_G1_IsEq) const Line  | Count  | Source  |  2549  | 403  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 403  |     (void)parentDs;  |  2551  | 403  |     return op;  |  2552  | 403  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Neg>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_G1_Neg) const Line  | Count  | Source  |  2549  | 2.76k  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 2.76k  |     (void)parentDs;  |  2551  | 2.76k  |     return op;  |  2552  | 2.76k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Add>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_G2_Add) const Line  | Count  | Source  |  2549  | 2.97k  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 2.97k  |     (void)parentDs;  |  2551  | 2.97k  |     return op;  |  2552  | 2.97k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Mul>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_G2_Mul) const Line  | Count  | Source  |  2549  | 4.44k  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 4.44k  |     (void)parentDs;  |  2551  | 4.44k  |     return op;  |  2552  | 4.44k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G2_IsEq>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_G2_IsEq) const Line  | Count  | Source  |  2549  | 447  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 447  |     (void)parentDs;  |  2551  | 447  |     return op;  |  2552  | 447  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Neg>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_G2_Neg) const Line  | Count  | Source  |  2549  | 2.56k  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 2.56k  |     (void)parentDs;  |  2551  | 2.56k  |     return op;  |  2552  | 2.56k  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_MultiExp>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::BLS_G1_MultiExp) const cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Misc>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::Misc) const Line  | Count  | Source  |  2549  | 838  | OperationType ExecutorBase<ResultType, OperationType>::getOpPostprocess(Datasource* parentDs, OperationType op) const { |  2550  | 838  |     (void)parentDs;  |  2551  | 838  |     return op;  |  2552  | 838  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::SR25519_Verify>::getOpPostprocess(fuzzing::datasource::Datasource*, cryptofuzz::operation::SR25519_Verify) const  | 
2553  |  |  | 
2554  | 6.33k  | operation::BignumCalc ExecutorBignumCalc_Mod_BLS12_381_R::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2555  | 6.33k  |     (void)parentDs;  | 
2556  | 6.33k  |     op.modulo = modulo;  | 
2557  | 6.33k  |     return op;  | 
2558  | 6.33k  | }  | 
2559  |  |  | 
2560  | 5.85k  | operation::BignumCalc ExecutorBignumCalc_Mod_BLS12_381_P::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2561  | 5.85k  |     (void)parentDs;  | 
2562  | 5.85k  |     op.modulo = modulo;  | 
2563  | 5.85k  |     return op;  | 
2564  | 5.85k  | }  | 
2565  |  |  | 
2566  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_BLS12_377_R::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2567  | 0  |     (void)parentDs;  | 
2568  | 0  |     op.modulo = modulo;  | 
2569  | 0  |     return op;  | 
2570  | 0  | }  | 
2571  |  |  | 
2572  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_BLS12_377_P::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2573  | 0  |     (void)parentDs;  | 
2574  | 0  |     op.modulo = modulo;  | 
2575  | 0  |     return op;  | 
2576  | 0  | }  | 
2577  |  |  | 
2578  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_BN128_R::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2579  | 0  |     (void)parentDs;  | 
2580  | 0  |     op.modulo = modulo;  | 
2581  | 0  |     return op;  | 
2582  | 0  | }  | 
2583  |  |  | 
2584  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_BN128_P::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2585  | 0  |     (void)parentDs;  | 
2586  | 0  |     op.modulo = modulo;  | 
2587  | 0  |     return op;  | 
2588  | 0  | }  | 
2589  |  |  | 
2590  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_Vesta_R::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2591  | 0  |     (void)parentDs;  | 
2592  | 0  |     op.modulo = modulo;  | 
2593  | 0  |     return op;  | 
2594  | 0  | }  | 
2595  |  |  | 
2596  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_Vesta_P::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2597  | 0  |     (void)parentDs;  | 
2598  | 0  |     op.modulo = modulo;  | 
2599  | 0  |     return op;  | 
2600  | 0  | }  | 
2601  |  |  | 
2602  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_ED25519::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2603  | 0  |     (void)parentDs;  | 
2604  | 0  |     op.modulo = modulo;  | 
2605  | 0  |     return op;  | 
2606  | 0  | }  | 
2607  |  |  | 
2608  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_Edwards_R::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2609  | 0  |     (void)parentDs;  | 
2610  | 0  |     op.modulo = modulo;  | 
2611  | 0  |     return op;  | 
2612  | 0  | }  | 
2613  |  |  | 
2614  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_Edwards_P::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2615  | 0  |     (void)parentDs;  | 
2616  | 0  |     op.modulo = modulo;  | 
2617  | 0  |     return op;  | 
2618  | 0  | }  | 
2619  |  |  | 
2620  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_Goldilocks::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2621  | 0  |     (void)parentDs;  | 
2622  | 0  |     op.modulo = modulo;  | 
2623  | 0  |     return op;  | 
2624  | 0  | }  | 
2625  |  |  | 
2626  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_MNT4_R::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2627  | 0  |     (void)parentDs;  | 
2628  | 0  |     op.modulo = modulo;  | 
2629  | 0  |     return op;  | 
2630  | 0  | }  | 
2631  |  |  | 
2632  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_MNT4_P::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2633  | 0  |     (void)parentDs;  | 
2634  | 0  |     op.modulo = modulo;  | 
2635  | 0  |     return op;  | 
2636  | 0  | }  | 
2637  |  |  | 
2638  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_MNT6_R::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2639  | 0  |     (void)parentDs;  | 
2640  | 0  |     op.modulo = modulo;  | 
2641  | 0  |     return op;  | 
2642  | 0  | }  | 
2643  |  |  | 
2644  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_MNT6_P::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2645  | 0  |     (void)parentDs;  | 
2646  | 0  |     op.modulo = modulo;  | 
2647  | 0  |     return op;  | 
2648  | 0  | }  | 
2649  |  |  | 
2650  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_2Exp64::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2651  | 0  |     (void)parentDs;  | 
2652  | 0  |     op.modulo = modulo;  | 
2653  | 0  |     return op;  | 
2654  | 0  | }  | 
2655  |  |  | 
2656  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_2Exp128::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2657  | 0  |     (void)parentDs;  | 
2658  | 0  |     op.modulo = modulo;  | 
2659  | 0  |     return op;  | 
2660  | 0  | }  | 
2661  |  |  | 
2662  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_2Exp256::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2663  | 0  |     (void)parentDs;  | 
2664  | 0  |     op.modulo = modulo;  | 
2665  | 0  |     return op;  | 
2666  | 0  | }  | 
2667  |  |  | 
2668  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_2Exp512::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2669  | 0  |     (void)parentDs;  | 
2670  | 0  |     op.modulo = modulo;  | 
2671  | 0  |     return op;  | 
2672  | 0  | }  | 
2673  |  |  | 
2674  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_SECP256K1::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2675  | 0  |     (void)parentDs;  | 
2676  | 0  |     op.modulo = modulo;  | 
2677  | 0  |     return op;  | 
2678  | 0  | }  | 
2679  |  |  | 
2680  | 0  | operation::BignumCalc ExecutorBignumCalc_Mod_SECP256K1_P::getOpPostprocess(Datasource* parentDs, operation::BignumCalc op) const { | 
2681  | 0  |     (void)parentDs;  | 
2682  | 0  |     op.modulo = modulo;  | 
2683  | 0  |     return op;  | 
2684  | 0  | }  | 
2685  |  |  | 
2686  |  | template <class ResultType, class OperationType>  | 
2687  | 64.9k  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { | 
2688  | 64.9k  |     Datasource ds(data, size);  | 
2689  | 64.9k  |     if ( parentDs != nullptr ) { | 
2690  | 64.9k  |         auto modifier = parentDs->GetData(0);  | 
2691  | 64.9k  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  | 
2692  | 64.9k  |     } else { | 
2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  | 
2694  | 0  |     }  | 
2695  | 64.9k  | } Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Digest>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::HMAC>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::UMAC>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::CMAC>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Ciphertext, cryptofuzz::operation::SymmetricEncrypt>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::SymmetricDecrypt>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SCRYPT>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_HKDF>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 1.20k  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 1.20k  |     Datasource ds(data, size);  |  2689  | 1.20k  |     if ( parentDs != nullptr ) { |  2690  | 1.20k  |         auto modifier = parentDs->GetData(0);  |  2691  | 1.20k  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 1.20k  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 1.20k  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_TLS1_PRF>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF1>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF2>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_ARGON2>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SSH>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_X963>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_BCRYPT>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SP_800_108>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTP>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTCP>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_PrivateToPublic>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_ValidatePubkey>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECC_KeyPair, cryptofuzz::operation::ECC_GenerateKeyPair>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECCSI_Signature, cryptofuzz::operation::ECCSI_Sign>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECDSA_Sign>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECGDSA_Sign>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECRDSA_Sign>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::Schnorr_Sign>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECCSI_Verify>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECDSA_Verify>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECGDSA_Verify>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECRDSA_Verify>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::Schnorr_Verify>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECDSA_Recover>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::DSA_Verify>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::DSA_Signature, cryptofuzz::operation::DSA_Sign>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::DSA_Parameters, cryptofuzz::operation::DSA_GenerateParameters>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DSA_PrivateToPublic>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::DSA_GenerateKeyPair>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECDH_Derive>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Ciphertext, cryptofuzz::operation::ECIES_Encrypt>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECIES_Decrypt>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Add>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Sub>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Mul>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Neg>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Dbl>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_Point_Cmp>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::DH_GenerateKeyPair>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DH_Derive>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::BignumCalc>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 23.1k  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 23.1k  |     Datasource ds(data, size);  |  2689  | 23.1k  |     if ( parentDs != nullptr ) { |  2690  | 23.1k  |         auto modifier = parentDs->GetData(0);  |  2691  | 23.1k  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 23.1k  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 23.1k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BignumCalc_Fp2>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 2.95k  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 2.95k  |     Datasource ds(data, size);  |  2689  | 2.95k  |     if ( parentDs != nullptr ) { |  2690  | 2.95k  |         auto modifier = parentDs->GetData(0);  |  2691  | 2.95k  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 2.95k  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 2.95k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BignumCalc_Fp12>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 2.18k  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 2.18k  |     Datasource ds(data, size);  |  2689  | 2.18k  |     if ( parentDs != nullptr ) { |  2690  | 2.18k  |         auto modifier = parentDs->GetData(0);  |  2691  | 2.18k  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 2.18k  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 2.18k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_PrivateToPublic>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 3.19k  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 3.19k  |     Datasource ds(data, size);  |  2689  | 3.19k  |     if ( parentDs != nullptr ) { |  2690  | 3.19k  |         auto modifier = parentDs->GetData(0);  |  2691  | 3.19k  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 3.19k  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 3.19k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_PrivateToPublic_G2>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 695  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 695  |     Datasource ds(data, size);  |  2689  | 695  |     if ( parentDs != nullptr ) { |  2690  | 695  |         auto modifier = parentDs->GetData(0);  |  2691  | 695  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 695  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 695  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_Signature, cryptofuzz::operation::BLS_Sign>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 1.43k  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 1.43k  |     Datasource ds(data, size);  |  2689  | 1.43k  |     if ( parentDs != nullptr ) { |  2690  | 1.43k  |         auto modifier = parentDs->GetData(0);  |  2691  | 1.43k  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 1.43k  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 1.43k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_Verify>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 389  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 389  |     Datasource ds(data, size);  |  2689  | 389  |     if ( parentDs != nullptr ) { |  2690  | 389  |         auto modifier = parentDs->GetData(0);  |  2691  | 389  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 389  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 389  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_BatchSignature, cryptofuzz::operation::BLS_BatchSign>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_BatchVerify>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 1.26k  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 1.26k  |     Datasource ds(data, size);  |  2689  | 1.26k  |     if ( parentDs != nullptr ) { |  2690  | 1.26k  |         auto modifier = parentDs->GetData(0);  |  2691  | 1.26k  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 1.26k  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 1.26k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Aggregate_G1>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 491  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 491  |     Datasource ds(data, size);  |  2689  | 491  |     if ( parentDs != nullptr ) { |  2690  | 491  |         auto modifier = parentDs->GetData(0);  |  2691  | 491  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 491  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 491  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Aggregate_G2>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 529  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 529  |     Datasource ds(data, size);  |  2689  | 529  |     if ( parentDs != nullptr ) { |  2690  | 529  |         auto modifier = parentDs->GetData(0);  |  2691  | 529  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 529  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 529  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_Pairing>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 344  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 344  |     Datasource ds(data, size);  |  2689  | 344  |     if ( parentDs != nullptr ) { |  2690  | 344  |         auto modifier = parentDs->GetData(0);  |  2691  | 344  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 344  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 344  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_MillerLoop>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_FinalExp>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 420  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 420  |     Datasource ds(data, size);  |  2689  | 420  |     if ( parentDs != nullptr ) { |  2690  | 420  |         auto modifier = parentDs->GetData(0);  |  2691  | 420  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 420  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 420  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_HashToG1>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 340  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 340  |     Datasource ds(data, size);  |  2689  | 340  |     if ( parentDs != nullptr ) { |  2690  | 340  |         auto modifier = parentDs->GetData(0);  |  2691  | 340  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 340  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 340  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_HashToG2>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 364  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 364  |     Datasource ds(data, size);  |  2689  | 364  |     if ( parentDs != nullptr ) { |  2690  | 364  |         auto modifier = parentDs->GetData(0);  |  2691  | 364  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 364  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 364  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_MapToG1>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 368  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 368  |     Datasource ds(data, size);  |  2689  | 368  |     if ( parentDs != nullptr ) { |  2690  | 368  |         auto modifier = parentDs->GetData(0);  |  2691  | 368  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 368  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 368  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_MapToG2>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 295  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 295  |     Datasource ds(data, size);  |  2689  | 295  |     if ( parentDs != nullptr ) { |  2690  | 295  |         auto modifier = parentDs->GetData(0);  |  2691  | 295  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 295  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 295  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG1OnCurve>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 1.70k  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 1.70k  |     Datasource ds(data, size);  |  2689  | 1.70k  |     if ( parentDs != nullptr ) { |  2690  | 1.70k  |         auto modifier = parentDs->GetData(0);  |  2691  | 1.70k  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 1.70k  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 1.70k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG2OnCurve>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 2.39k  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 2.39k  |     Datasource ds(data, size);  |  2689  | 2.39k  |     if ( parentDs != nullptr ) { |  2690  | 2.39k  |         auto modifier = parentDs->GetData(0);  |  2691  | 2.39k  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 2.39k  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 2.39k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_KeyPair, cryptofuzz::operation::BLS_GenerateKeyPair>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 266  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 266  |     Datasource ds(data, size);  |  2689  | 266  |     if ( parentDs != nullptr ) { |  2690  | 266  |         auto modifier = parentDs->GetData(0);  |  2691  | 266  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 266  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 266  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Decompress_G1>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 440  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 440  |     Datasource ds(data, size);  |  2689  | 440  |     if ( parentDs != nullptr ) { |  2690  | 440  |         auto modifier = parentDs->GetData(0);  |  2691  | 440  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 440  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 440  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::BLS_Compress_G1>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 266  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 266  |     Datasource ds(data, size);  |  2689  | 266  |     if ( parentDs != nullptr ) { |  2690  | 266  |         auto modifier = parentDs->GetData(0);  |  2691  | 266  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 266  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 266  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Decompress_G2>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 330  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 330  |     Datasource ds(data, size);  |  2689  | 330  |     if ( parentDs != nullptr ) { |  2690  | 330  |         auto modifier = parentDs->GetData(0);  |  2691  | 330  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 330  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 330  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Compress_G2>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 320  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 320  |     Datasource ds(data, size);  |  2689  | 320  |     if ( parentDs != nullptr ) { |  2690  | 320  |         auto modifier = parentDs->GetData(0);  |  2691  | 320  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 320  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 320  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Add>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 3.07k  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 3.07k  |     Datasource ds(data, size);  |  2689  | 3.07k  |     if ( parentDs != nullptr ) { |  2690  | 3.07k  |         auto modifier = parentDs->GetData(0);  |  2691  | 3.07k  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 3.07k  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 3.07k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Mul>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 2.08k  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 2.08k  |     Datasource ds(data, size);  |  2689  | 2.08k  |     if ( parentDs != nullptr ) { |  2690  | 2.08k  |         auto modifier = parentDs->GetData(0);  |  2691  | 2.08k  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 2.08k  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 2.08k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G1_IsEq>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 418  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 418  |     Datasource ds(data, size);  |  2689  | 418  |     if ( parentDs != nullptr ) { |  2690  | 418  |         auto modifier = parentDs->GetData(0);  |  2691  | 418  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 418  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 418  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Neg>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 2.77k  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 2.77k  |     Datasource ds(data, size);  |  2689  | 2.77k  |     if ( parentDs != nullptr ) { |  2690  | 2.77k  |         auto modifier = parentDs->GetData(0);  |  2691  | 2.77k  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 2.77k  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 2.77k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Add>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 2.99k  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 2.99k  |     Datasource ds(data, size);  |  2689  | 2.99k  |     if ( parentDs != nullptr ) { |  2690  | 2.99k  |         auto modifier = parentDs->GetData(0);  |  2691  | 2.99k  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 2.99k  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 2.99k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Mul>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 4.46k  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 4.46k  |     Datasource ds(data, size);  |  2689  | 4.46k  |     if ( parentDs != nullptr ) { |  2690  | 4.46k  |         auto modifier = parentDs->GetData(0);  |  2691  | 4.46k  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 4.46k  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 4.46k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G2_IsEq>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 466  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 466  |     Datasource ds(data, size);  |  2689  | 466  |     if ( parentDs != nullptr ) { |  2690  | 466  |         auto modifier = parentDs->GetData(0);  |  2691  | 466  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 466  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 466  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Neg>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 2.57k  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 2.57k  |     Datasource ds(data, size);  |  2689  | 2.57k  |     if ( parentDs != nullptr ) { |  2690  | 2.57k  |         auto modifier = parentDs->GetData(0);  |  2691  | 2.57k  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 2.57k  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 2.57k  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_MultiExp>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Misc>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2687  | 850  | OperationType ExecutorBase<ResultType, OperationType>::getOp(Datasource* parentDs, const uint8_t* data, const size_t size) const { |  2688  | 850  |     Datasource ds(data, size);  |  2689  | 850  |     if ( parentDs != nullptr ) { |  2690  | 850  |         auto modifier = parentDs->GetData(0);  |  2691  | 850  |         return getOpPostprocess(parentDs, std::move( OperationType(ds, component::Modifier(modifier.data(), modifier.size())) ) );  |  2692  | 850  |     } else { |  2693  | 0  |         return std::move( OperationType(ds, component::Modifier(nullptr, 0)) );  |  2694  | 0  |     }  |  2695  | 850  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::SR25519_Verify>::getOp(fuzzing::datasource::Datasource*, unsigned char const*, unsigned long) const  | 
2696  |  |  | 
2697  |  | template <class ResultType, class OperationType>  | 
2698  | 64.1k  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { | 
2699  | 64.1k  |     auto moduleID = ds.Get<uint64_t>();  | 
2700  |  |  | 
2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  | 
2702  | 64.1k  |     if ( options.forceModule != std::nullopt ) { | 
2703  | 63.6k  |         moduleID = *options.forceModule;  | 
2704  | 63.6k  |     }  | 
2705  |  |  | 
2706  |  |     /* Skip if this is a disabled module */  | 
2707  | 64.1k  |     if ( options.disableModules.HaveExplicit(moduleID) ) { | 
2708  | 0  |         return nullptr;  | 
2709  | 0  |     }  | 
2710  |  |  | 
2711  | 64.1k  |     if ( modules.find(moduleID) == modules.end() ) { | 
2712  | 0  |         return nullptr;  | 
2713  | 0  |     }  | 
2714  |  |  | 
2715  | 64.1k  |     return modules.at(moduleID);  | 
2716  | 64.1k  | } Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Digest>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::HMAC>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::UMAC>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::CMAC>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Ciphertext, cryptofuzz::operation::SymmetricEncrypt>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::SymmetricDecrypt>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SCRYPT>::getModule(fuzzing::datasource::Datasource&) const cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_HKDF>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 1.17k  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 1.17k  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 1.17k  |     if ( options.forceModule != std::nullopt ) { |  2703  | 1.15k  |         moduleID = *options.forceModule;  |  2704  | 1.15k  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 1.17k  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 1.17k  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 1.17k  |     return modules.at(moduleID);  |  2716  | 1.17k  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_TLS1_PRF>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF1>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF2>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_ARGON2>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SSH>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_X963>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_BCRYPT>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SP_800_108>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTP>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTCP>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_PrivateToPublic>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_ValidatePubkey>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECC_KeyPair, cryptofuzz::operation::ECC_GenerateKeyPair>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECCSI_Signature, cryptofuzz::operation::ECCSI_Sign>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECDSA_Sign>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECGDSA_Sign>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECRDSA_Sign>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::Schnorr_Sign>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECCSI_Verify>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECDSA_Verify>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECGDSA_Verify>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECRDSA_Verify>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::Schnorr_Verify>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECDSA_Recover>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::DSA_Verify>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::DSA_Signature, cryptofuzz::operation::DSA_Sign>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::DSA_Parameters, cryptofuzz::operation::DSA_GenerateParameters>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DSA_PrivateToPublic>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::DSA_GenerateKeyPair>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECDH_Derive>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Ciphertext, cryptofuzz::operation::ECIES_Encrypt>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECIES_Decrypt>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Add>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Sub>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Mul>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Neg>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Dbl>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_Point_Cmp>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::DH_GenerateKeyPair>::getModule(fuzzing::datasource::Datasource&) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DH_Derive>::getModule(fuzzing::datasource::Datasource&) const cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::BignumCalc>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 23.0k  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 23.0k  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 23.0k  |     if ( options.forceModule != std::nullopt ) { |  2703  | 23.0k  |         moduleID = *options.forceModule;  |  2704  | 23.0k  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 23.0k  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 23.0k  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 23.0k  |     return modules.at(moduleID);  |  2716  | 23.0k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BignumCalc_Fp2>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 2.93k  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 2.93k  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 2.93k  |     if ( options.forceModule != std::nullopt ) { |  2703  | 2.92k  |         moduleID = *options.forceModule;  |  2704  | 2.92k  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 2.93k  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 2.93k  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 2.93k  |     return modules.at(moduleID);  |  2716  | 2.93k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BignumCalc_Fp12>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 2.15k  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 2.15k  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 2.15k  |     if ( options.forceModule != std::nullopt ) { |  2703  | 2.14k  |         moduleID = *options.forceModule;  |  2704  | 2.14k  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 2.15k  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 2.15k  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 2.15k  |     return modules.at(moduleID);  |  2716  | 2.15k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_PrivateToPublic>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 3.18k  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 3.18k  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 3.18k  |     if ( options.forceModule != std::nullopt ) { |  2703  | 3.14k  |         moduleID = *options.forceModule;  |  2704  | 3.14k  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 3.18k  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 3.18k  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 3.18k  |     return modules.at(moduleID);  |  2716  | 3.18k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_PrivateToPublic_G2>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 683  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 683  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 683  |     if ( options.forceModule != std::nullopt ) { |  2703  | 661  |         moduleID = *options.forceModule;  |  2704  | 661  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 683  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 683  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 683  |     return modules.at(moduleID);  |  2716  | 683  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_Signature, cryptofuzz::operation::BLS_Sign>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 1.40k  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 1.40k  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 1.40k  |     if ( options.forceModule != std::nullopt ) { |  2703  | 1.39k  |         moduleID = *options.forceModule;  |  2704  | 1.39k  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 1.40k  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 1.40k  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 1.40k  |     return modules.at(moduleID);  |  2716  | 1.40k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_Verify>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 362  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 362  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 362  |     if ( options.forceModule != std::nullopt ) { |  2703  | 354  |         moduleID = *options.forceModule;  |  2704  | 354  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 362  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 362  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 362  |     return modules.at(moduleID);  |  2716  | 362  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_BatchSignature, cryptofuzz::operation::BLS_BatchSign>::getModule(fuzzing::datasource::Datasource&) const cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_BatchVerify>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 1.13k  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 1.13k  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 1.13k  |     if ( options.forceModule != std::nullopt ) { |  2703  | 1.10k  |         moduleID = *options.forceModule;  |  2704  | 1.10k  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 1.13k  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 1.13k  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 1.13k  |     return modules.at(moduleID);  |  2716  | 1.13k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Aggregate_G1>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 366  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 366  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 366  |     if ( options.forceModule != std::nullopt ) { |  2703  | 340  |         moduleID = *options.forceModule;  |  2704  | 340  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 366  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 366  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 366  |     return modules.at(moduleID);  |  2716  | 366  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Aggregate_G2>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 413  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 413  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 413  |     if ( options.forceModule != std::nullopt ) { |  2703  | 383  |         moduleID = *options.forceModule;  |  2704  | 383  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 413  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 413  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 413  |     return modules.at(moduleID);  |  2716  | 413  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_Pairing>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 328  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 328  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 328  |     if ( options.forceModule != std::nullopt ) { |  2703  | 319  |         moduleID = *options.forceModule;  |  2704  | 319  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 328  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 328  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 328  |     return modules.at(moduleID);  |  2716  | 328  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_MillerLoop>::getModule(fuzzing::datasource::Datasource&) const cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_FinalExp>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 390  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 390  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 390  |     if ( options.forceModule != std::nullopt ) { |  2703  | 380  |         moduleID = *options.forceModule;  |  2704  | 380  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 390  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 390  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 390  |     return modules.at(moduleID);  |  2716  | 390  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_HashToG1>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 323  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 323  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 323  |     if ( options.forceModule != std::nullopt ) { |  2703  | 315  |         moduleID = *options.forceModule;  |  2704  | 315  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 323  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 323  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 323  |     return modules.at(moduleID);  |  2716  | 323  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_HashToG2>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 348  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 348  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 348  |     if ( options.forceModule != std::nullopt ) { |  2703  | 341  |         moduleID = *options.forceModule;  |  2704  | 341  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 348  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 348  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 348  |     return modules.at(moduleID);  |  2716  | 348  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_MapToG1>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 353  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 353  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 353  |     if ( options.forceModule != std::nullopt ) { |  2703  | 343  |         moduleID = *options.forceModule;  |  2704  | 343  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 353  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 353  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 353  |     return modules.at(moduleID);  |  2716  | 353  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_MapToG2>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 279  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 279  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 279  |     if ( options.forceModule != std::nullopt ) { |  2703  | 272  |         moduleID = *options.forceModule;  |  2704  | 272  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 279  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 279  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 279  |     return modules.at(moduleID);  |  2716  | 279  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG1OnCurve>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 1.69k  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 1.69k  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 1.69k  |     if ( options.forceModule != std::nullopt ) { |  2703  | 1.68k  |         moduleID = *options.forceModule;  |  2704  | 1.68k  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 1.69k  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 1.69k  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 1.69k  |     return modules.at(moduleID);  |  2716  | 1.69k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG2OnCurve>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 2.38k  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 2.38k  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 2.38k  |     if ( options.forceModule != std::nullopt ) { |  2703  | 2.37k  |         moduleID = *options.forceModule;  |  2704  | 2.37k  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 2.38k  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 2.38k  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 2.38k  |     return modules.at(moduleID);  |  2716  | 2.38k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_KeyPair, cryptofuzz::operation::BLS_GenerateKeyPair>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 250  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 250  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 250  |     if ( options.forceModule != std::nullopt ) { |  2703  | 243  |         moduleID = *options.forceModule;  |  2704  | 243  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 250  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 250  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 250  |     return modules.at(moduleID);  |  2716  | 250  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Decompress_G1>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 426  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 426  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 426  |     if ( options.forceModule != std::nullopt ) { |  2703  | 414  |         moduleID = *options.forceModule;  |  2704  | 414  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 426  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 426  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 426  |     return modules.at(moduleID);  |  2716  | 426  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::BLS_Compress_G1>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 253  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 253  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 253  |     if ( options.forceModule != std::nullopt ) { |  2703  | 246  |         moduleID = *options.forceModule;  |  2704  | 246  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 253  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 253  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 253  |     return modules.at(moduleID);  |  2716  | 253  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Decompress_G2>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 318  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 318  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 318  |     if ( options.forceModule != std::nullopt ) { |  2703  | 310  |         moduleID = *options.forceModule;  |  2704  | 310  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 318  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 318  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 318  |     return modules.at(moduleID);  |  2716  | 318  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Compress_G2>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 306  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 306  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 306  |     if ( options.forceModule != std::nullopt ) { |  2703  | 298  |         moduleID = *options.forceModule;  |  2704  | 298  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 306  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 306  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 306  |     return modules.at(moduleID);  |  2716  | 306  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Add>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 3.05k  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 3.05k  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 3.05k  |     if ( options.forceModule != std::nullopt ) { |  2703  | 3.05k  |         moduleID = *options.forceModule;  |  2704  | 3.05k  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 3.05k  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 3.05k  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 3.05k  |     return modules.at(moduleID);  |  2716  | 3.05k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Mul>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 2.07k  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 2.07k  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 2.07k  |     if ( options.forceModule != std::nullopt ) { |  2703  | 2.06k  |         moduleID = *options.forceModule;  |  2704  | 2.06k  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 2.07k  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 2.07k  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 2.07k  |     return modules.at(moduleID);  |  2716  | 2.07k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G1_IsEq>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 403  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 403  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 403  |     if ( options.forceModule != std::nullopt ) { |  2703  | 397  |         moduleID = *options.forceModule;  |  2704  | 397  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 403  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 403  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 403  |     return modules.at(moduleID);  |  2716  | 403  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Neg>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 2.76k  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 2.76k  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 2.76k  |     if ( options.forceModule != std::nullopt ) { |  2703  | 2.74k  |         moduleID = *options.forceModule;  |  2704  | 2.74k  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 2.76k  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 2.76k  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 2.76k  |     return modules.at(moduleID);  |  2716  | 2.76k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Add>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 2.97k  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 2.97k  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 2.97k  |     if ( options.forceModule != std::nullopt ) { |  2703  | 2.96k  |         moduleID = *options.forceModule;  |  2704  | 2.96k  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 2.97k  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 2.97k  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 2.97k  |     return modules.at(moduleID);  |  2716  | 2.97k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Mul>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 4.44k  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 4.44k  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 4.44k  |     if ( options.forceModule != std::nullopt ) { |  2703  | 4.43k  |         moduleID = *options.forceModule;  |  2704  | 4.43k  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 4.44k  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 4.44k  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 4.44k  |     return modules.at(moduleID);  |  2716  | 4.44k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G2_IsEq>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 447  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 447  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 447  |     if ( options.forceModule != std::nullopt ) { |  2703  | 439  |         moduleID = *options.forceModule;  |  2704  | 439  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 447  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 447  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 447  |     return modules.at(moduleID);  |  2716  | 447  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Neg>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 2.56k  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 2.56k  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 2.56k  |     if ( options.forceModule != std::nullopt ) { |  2703  | 2.55k  |         moduleID = *options.forceModule;  |  2704  | 2.55k  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 2.56k  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 2.56k  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 2.56k  |     return modules.at(moduleID);  |  2716  | 2.56k  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_MultiExp>::getModule(fuzzing::datasource::Datasource&) const cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Misc>::getModule(fuzzing::datasource::Datasource&) const Line  | Count  | Source  |  2698  | 838  | std::shared_ptr<Module> ExecutorBase<ResultType, OperationType>::getModule(Datasource& ds) const { |  2699  | 838  |     auto moduleID = ds.Get<uint64_t>();  |  2700  |  |  |  2701  |  |     /* Override the extracted module ID with the preferred one, if specified */  |  2702  | 838  |     if ( options.forceModule != std::nullopt ) { |  2703  | 830  |         moduleID = *options.forceModule;  |  2704  | 830  |     }  |  2705  |  |  |  2706  |  |     /* Skip if this is a disabled module */  |  2707  | 838  |     if ( options.disableModules.HaveExplicit(moduleID) ) { |  2708  | 0  |         return nullptr;  |  2709  | 0  |     }  |  2710  |  |  |  2711  | 838  |     if ( modules.find(moduleID) == modules.end() ) { |  2712  | 0  |         return nullptr;  |  2713  | 0  |     }  |  2714  |  |  |  2715  | 838  |     return modules.at(moduleID);  |  2716  | 838  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::SR25519_Verify>::getModule(fuzzing::datasource::Datasource&) const  | 
2717  |  |  | 
2718  |  | template <class ResultType, class OperationType>  | 
2719  | 50.6k  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { | 
2720  | 50.6k  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  | 
2721  |  |  | 
2722  | 50.6k  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  | 
2723  |  |  | 
2724  | 64.9k  |     do { | 
2725  | 64.9k  |         auto op = getOp(&parentDs, data, size);  | 
2726  | 64.9k  |         auto module = getModule(parentDs);  | 
2727  | 64.9k  |         if ( module == nullptr ) { | 
2728  | 0  |             continue;  | 
2729  | 0  |         }  | 
2730  |  |  | 
2731  | 64.9k  |         operations.push_back( {module, op} ); | 
2732  |  |  | 
2733  |  |         /* Limit number of operations per run to prevent time-outs */  | 
2734  | 64.9k  |         if ( operations.size() == OperationType::MaxOperations() ) { | 
2735  | 437  |             break;  | 
2736  | 437  |         }  | 
2737  | 64.9k  |     } while ( parentDs.Get<bool>() == true );  | 
2738  |  |  | 
2739  | 50.6k  |     if ( operations.empty() == true ) { | 
2740  | 0  |         return;  | 
2741  | 0  |     }  | 
2742  |  |  | 
2743  |  |     /* Enable this to run every operation on every loaded module */  | 
2744  | 50.6k  | #if 1  | 
2745  | 50.6k  |     { | 
2746  | 50.6k  |         std::set<uint64_t> moduleIDs;  | 
2747  | 245k  |         for (const auto& m : modules ) { | 
2748  | 245k  |             const auto moduleID = m.first;  | 
2749  |  |  | 
2750  |  |             /* Skip if this is a disabled module */  | 
2751  | 245k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { | 
2752  | 0  |                 continue;  | 
2753  | 0  |             }  | 
2754  |  |  | 
2755  | 245k  |             moduleIDs.insert(moduleID);  | 
2756  | 245k  |         }  | 
2757  |  |  | 
2758  | 50.6k  |         std::set<uint64_t> operationModuleIDs;  | 
2759  | 61.5k  |         for (const auto& op : operations) { | 
2760  | 61.5k  |             operationModuleIDs.insert(op.first->ID);  | 
2761  | 61.5k  |         }  | 
2762  |  |  | 
2763  | 50.6k  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  | 
2764  | 50.6k  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  | 
2765  | 50.6k  |         addModuleIDs.resize(it - addModuleIDs.begin());  | 
2766  |  |  | 
2767  | 196k  |         for (const auto& id : addModuleIDs) { | 
2768  | 196k  |             operations.push_back({ modules.at(id), operations[0].second}); | 
2769  | 196k  |         }  | 
2770  | 50.6k  |     }  | 
2771  | 50.6k  | #endif  | 
2772  |  |  | 
2773  | 50.6k  |     if ( operations.size() < options.minModules ) { | 
2774  | 0  |         return;  | 
2775  | 0  |     }  | 
2776  |  |  | 
2777  | 50.6k  |     if ( options.debug == true && !operations.empty() ) { | 
2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); | 
2779  | 0  |     }  | 
2780  | 308k  |     for (size_t i = 0; i < operations.size(); i++) { | 
2781  | 257k  |         auto& operation = operations[i];  | 
2782  |  |  | 
2783  | 257k  |         auto& module = operation.first;  | 
2784  | 257k  |         auto& op = operation.second;  | 
2785  |  |  | 
2786  | 257k  |         if ( i > 0 ) { | 
2787  | 208k  |             auto& prevModule = operations[i-1].first;  | 
2788  | 208k  |             auto& prevOp = operations[i].second;  | 
2789  |  |  | 
2790  | 208k  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { | 
2791  | 12.5k  |                 auto& curModifier = op.modifier.GetVectorPtr();  | 
2792  | 12.5k  |                 if ( curModifier.size() == 0 ) { | 
2793  | 2.72M  |                     for (size_t j = 0; j < 512; j++) { | 
2794  | 2.72M  |                         curModifier.push_back(1);  | 
2795  | 2.72M  |                     }  | 
2796  | 7.21k  |                 } else { | 
2797  | 2.27M  |                     for (auto& c : curModifier) { | 
2798  | 2.27M  |                         c++;  | 
2799  | 2.27M  |                     }  | 
2800  | 7.21k  |                 }  | 
2801  | 12.5k  |             }  | 
2802  | 208k  |         }  | 
2803  |  |  | 
2804  | 257k  |         if ( options.debug == true ) { | 
2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); | 
2806  | 0  |         }  | 
2807  |  |  | 
2808  | 257k  |         results.push_back( {module, std::move(callModule(module, op))} ); | 
2809  |  |  | 
2810  | 257k  |         const auto& result = results.back();  | 
2811  |  |  | 
2812  | 257k  |         if ( result.second != std::nullopt ) { | 
2813  | 68.1k  |             if ( options.jsonDumpFP != std::nullopt ) { | 
2814  | 0  |                 nlohmann::json j;  | 
2815  | 0  |                 j["operation"] = op.ToJSON();  | 
2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  | 
2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  | 
2818  | 0  |             }  | 
2819  | 68.1k  |         }  | 
2820  |  |  | 
2821  | 257k  |         if ( options.debug == true ) { | 
2822  | 0  |             printf("Module %s result:\n\n%s\n\n", | 
2823  | 0  |                     result.first->name.c_str(),  | 
2824  | 0  |                     result.second == std::nullopt ?  | 
2825  | 0  |                         "(empty)" :  | 
2826  | 0  |                         util::ToString(*result.second).c_str());  | 
2827  | 0  |         }  | 
2828  |  |  | 
2829  | 257k  |         if ( options.disableTests == false ) { | 
2830  | 257k  |             tests::test(op, result.second);  | 
2831  | 257k  |         }  | 
2832  |  |  | 
2833  | 257k  |         postprocess(module, op, result);  | 
2834  | 257k  |     }  | 
2835  |  |  | 
2836  | 50.6k  |     if ( options.noCompare == false ) { | 
2837  | 49.0k  |         compare(operations, results, data, size);  | 
2838  | 49.0k  |     }  | 
2839  | 50.6k  | } Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Digest>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::HMAC>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::UMAC>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::CMAC>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Ciphertext, cryptofuzz::operation::SymmetricEncrypt>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::SymmetricDecrypt>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SCRYPT>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_HKDF>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 378  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 378  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 378  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 1.20k  |     do { |  2725  | 1.20k  |         auto op = getOp(&parentDs, data, size);  |  2726  | 1.20k  |         auto module = getModule(parentDs);  |  2727  | 1.20k  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 1.20k  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 1.20k  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 2  |             break;  |  2736  | 2  |         }  |  2737  | 1.20k  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 378  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 378  | #if 1  |  2745  | 378  |     { |  2746  | 378  |         std::set<uint64_t> moduleIDs;  |  2747  | 1.54k  |         for (const auto& m : modules ) { |  2748  | 1.54k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 1.54k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 1.54k  |             moduleIDs.insert(moduleID);  |  2756  | 1.54k  |         }  |  2757  |  |  |  2758  | 378  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 802  |         for (const auto& op : operations) { |  2760  | 802  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 802  |         }  |  2762  |  |  |  2763  | 378  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 378  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 378  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 1.23k  |         for (const auto& id : addModuleIDs) { |  2768  | 1.23k  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 1.23k  |         }  |  2770  | 378  |     }  |  2771  | 378  | #endif  |  2772  |  |  |  2773  | 378  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 378  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 2.41k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 2.03k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 2.03k  |         auto& module = operation.first;  |  2784  | 2.03k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 2.03k  |         if ( i > 0 ) { |  2787  | 1.72k  |             auto& prevModule = operations[i-1].first;  |  2788  | 1.72k  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 1.72k  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 493  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 493  |                 if ( curModifier.size() == 0 ) { |  2793  | 211k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 211k  |                         curModifier.push_back(1);  |  2795  | 211k  |                     }  |  2796  | 413  |                 } else { |  2797  | 1.08k  |                     for (auto& c : curModifier) { |  2798  | 1.08k  |                         c++;  |  2799  | 1.08k  |                     }  |  2800  | 80  |                 }  |  2801  | 493  |             }  |  2802  | 1.72k  |         }  |  2803  |  |  |  2804  | 2.03k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 2.03k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 2.03k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 2.03k  |         if ( result.second != std::nullopt ) { |  2813  | 222  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 222  |         }  |  2820  |  |  |  2821  | 2.03k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 2.03k  |         if ( options.disableTests == false ) { |  2830  | 2.03k  |             tests::test(op, result.second);  |  2831  | 2.03k  |         }  |  2832  |  |  |  2833  | 2.03k  |         postprocess(module, op, result);  |  2834  | 2.03k  |     }  |  2835  |  |  |  2836  | 378  |     if ( options.noCompare == false ) { |  2837  | 309  |         compare(operations, results, data, size);  |  2838  | 309  |     }  |  2839  | 378  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_TLS1_PRF>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF1>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_PBKDF2>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_ARGON2>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SSH>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_X963>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_BCRYPT>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::KDF_SP_800_108>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTP>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<std::__1::array<cryptofuzz::Buffer, 3ul>, cryptofuzz::operation::KDF_SRTCP>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_PrivateToPublic>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_ValidatePubkey>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECC_KeyPair, cryptofuzz::operation::ECC_GenerateKeyPair>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECCSI_Signature, cryptofuzz::operation::ECCSI_Sign>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECDSA_Sign>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECGDSA_Sign>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::ECRDSA_Sign>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::ECDSA_Signature, cryptofuzz::operation::Schnorr_Sign>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECCSI_Verify>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECDSA_Verify>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECGDSA_Verify>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECRDSA_Verify>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::Schnorr_Verify>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECDSA_Recover>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::DSA_Verify>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::DSA_Signature, cryptofuzz::operation::DSA_Sign>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::DSA_Parameters, cryptofuzz::operation::DSA_GenerateParameters>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DSA_PrivateToPublic>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::DSA_GenerateKeyPair>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECDH_Derive>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Ciphertext, cryptofuzz::operation::ECIES_Encrypt>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::ECIES_Decrypt>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Add>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Sub>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Mul>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Neg>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::ECC_Point_Dbl>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::ECC_Point_Cmp>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::DH_GenerateKeyPair>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::DH_Derive>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::BignumCalc>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 20.7k  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 20.7k  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 20.7k  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 23.1k  |     do { |  2725  | 23.1k  |         auto op = getOp(&parentDs, data, size);  |  2726  | 23.1k  |         auto module = getModule(parentDs);  |  2727  | 23.1k  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 23.1k  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 23.1k  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 70  |             break;  |  2736  | 70  |         }  |  2737  | 23.1k  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 20.7k  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 20.7k  | #if 1  |  2745  | 20.7k  |     { |  2746  | 20.7k  |         std::set<uint64_t> moduleIDs;  |  2747  | 103k  |         for (const auto& m : modules ) { |  2748  | 103k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 103k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 103k  |             moduleIDs.insert(moduleID);  |  2756  | 103k  |         }  |  2757  |  |  |  2758  | 20.7k  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 22.9k  |         for (const auto& op : operations) { |  2760  | 22.9k  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 22.9k  |         }  |  2762  |  |  |  2763  | 20.7k  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 20.7k  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 20.7k  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 82.5k  |         for (const auto& id : addModuleIDs) { |  2768  | 82.5k  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 82.5k  |         }  |  2770  | 20.7k  |     }  |  2771  | 20.7k  | #endif  |  2772  |  |  |  2773  | 20.7k  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 20.7k  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 126k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 105k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 105k  |         auto& module = operation.first;  |  2784  | 105k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 105k  |         if ( i > 0 ) { |  2787  | 84.8k  |             auto& prevModule = operations[i-1].first;  |  2788  | 84.8k  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 84.8k  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 2.32k  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 2.32k  |                 if ( curModifier.size() == 0 ) { |  2793  | 476k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 475k  |                         curModifier.push_back(1);  |  2795  | 475k  |                     }  |  2796  | 1.39k  |                 } else { |  2797  | 431k  |                     for (auto& c : curModifier) { |  2798  | 431k  |                         c++;  |  2799  | 431k  |                     }  |  2800  | 1.39k  |                 }  |  2801  | 2.32k  |             }  |  2802  | 84.8k  |         }  |  2803  |  |  |  2804  | 105k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 105k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 105k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 105k  |         if ( result.second != std::nullopt ) { |  2813  | 19.1k  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 19.1k  |         }  |  2820  |  |  |  2821  | 105k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 105k  |         if ( options.disableTests == false ) { |  2830  | 105k  |             tests::test(op, result.second);  |  2831  | 105k  |         }  |  2832  |  |  |  2833  | 105k  |         postprocess(module, op, result);  |  2834  | 105k  |     }  |  2835  |  |  |  2836  | 20.7k  |     if ( options.noCompare == false ) { |  2837  | 20.6k  |         compare(operations, results, data, size);  |  2838  | 20.6k  |     }  |  2839  | 20.7k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BignumCalc_Fp2>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 1.99k  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 1.99k  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 1.99k  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 2.95k  |     do { |  2725  | 2.95k  |         auto op = getOp(&parentDs, data, size);  |  2726  | 2.95k  |         auto module = getModule(parentDs);  |  2727  | 2.95k  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 2.95k  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 2.95k  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 32  |             break;  |  2736  | 32  |         }  |  2737  | 2.95k  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 1.99k  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 1.99k  | #if 1  |  2745  | 1.99k  |     { |  2746  | 1.99k  |         std::set<uint64_t> moduleIDs;  |  2747  | 9.80k  |         for (const auto& m : modules ) { |  2748  | 9.80k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 9.80k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 9.80k  |             moduleIDs.insert(moduleID);  |  2756  | 9.80k  |         }  |  2757  |  |  |  2758  | 1.99k  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 2.87k  |         for (const auto& op : operations) { |  2760  | 2.87k  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 2.87k  |         }  |  2762  |  |  |  2763  | 1.99k  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 1.99k  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 1.99k  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 7.84k  |         for (const auto& id : addModuleIDs) { |  2768  | 7.84k  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 7.84k  |         }  |  2770  | 1.99k  |     }  |  2771  | 1.99k  | #endif  |  2772  |  |  |  2773  | 1.99k  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 1.99k  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 12.7k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 10.7k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 10.7k  |         auto& module = operation.first;  |  2784  | 10.7k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 10.7k  |         if ( i > 0 ) { |  2787  | 8.75k  |             auto& prevModule = operations[i-1].first;  |  2788  | 8.75k  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 8.75k  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 916  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 916  |                 if ( curModifier.size() == 0 ) { |  2793  | 253k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 252k  |                         curModifier.push_back(1);  |  2795  | 252k  |                     }  |  2796  | 494  |                 } else { |  2797  | 20.9k  |                     for (auto& c : curModifier) { |  2798  | 20.9k  |                         c++;  |  2799  | 20.9k  |                     }  |  2800  | 422  |                 }  |  2801  | 916  |             }  |  2802  | 8.75k  |         }  |  2803  |  |  |  2804  | 10.7k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 10.7k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 10.7k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 10.7k  |         if ( result.second != std::nullopt ) { |  2813  | 1.78k  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 1.78k  |         }  |  2820  |  |  |  2821  | 10.7k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 10.7k  |         if ( options.disableTests == false ) { |  2830  | 10.7k  |             tests::test(op, result.second);  |  2831  | 10.7k  |         }  |  2832  |  |  |  2833  | 10.7k  |         postprocess(module, op, result);  |  2834  | 10.7k  |     }  |  2835  |  |  |  2836  | 1.99k  |     if ( options.noCompare == false ) { |  2837  | 1.96k  |         compare(operations, results, data, size);  |  2838  | 1.96k  |     }  |  2839  | 1.99k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BignumCalc_Fp12>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 1.22k  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 1.22k  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 1.22k  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 2.18k  |     do { |  2725  | 2.18k  |         auto op = getOp(&parentDs, data, size);  |  2726  | 2.18k  |         auto module = getModule(parentDs);  |  2727  | 2.18k  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 2.18k  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 2.18k  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 27  |             break;  |  2736  | 27  |         }  |  2737  | 2.18k  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 1.22k  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 1.22k  | #if 1  |  2745  | 1.22k  |     { |  2746  | 1.22k  |         std::set<uint64_t> moduleIDs;  |  2747  | 5.93k  |         for (const auto& m : modules ) { |  2748  | 5.93k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 5.93k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 5.93k  |             moduleIDs.insert(moduleID);  |  2756  | 5.93k  |         }  |  2757  |  |  |  2758  | 1.22k  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 2.10k  |         for (const auto& op : operations) { |  2760  | 2.10k  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 2.10k  |         }  |  2762  |  |  |  2763  | 1.22k  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 1.22k  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 1.22k  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 4.74k  |         for (const auto& id : addModuleIDs) { |  2768  | 4.74k  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 4.74k  |         }  |  2770  | 1.22k  |     }  |  2771  | 1.22k  | #endif  |  2772  |  |  |  2773  | 1.22k  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 1.22k  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 8.07k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 6.84k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 6.84k  |         auto& module = operation.first;  |  2784  | 6.84k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 6.84k  |         if ( i > 0 ) { |  2787  | 5.66k  |             auto& prevModule = operations[i-1].first;  |  2788  | 5.66k  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 5.66k  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 914  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 914  |                 if ( curModifier.size() == 0 ) { |  2793  | 271k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 271k  |                         curModifier.push_back(1);  |  2795  | 271k  |                     }  |  2796  | 530  |                 } else { |  2797  | 51.3k  |                     for (auto& c : curModifier) { |  2798  | 51.3k  |                         c++;  |  2799  | 51.3k  |                     }  |  2800  | 384  |                 }  |  2801  | 914  |             }  |  2802  | 5.66k  |         }  |  2803  |  |  |  2804  | 6.84k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 6.84k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 6.84k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 6.84k  |         if ( result.second != std::nullopt ) { |  2813  | 1.24k  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 1.24k  |         }  |  2820  |  |  |  2821  | 6.84k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 6.84k  |         if ( options.disableTests == false ) { |  2830  | 6.84k  |             tests::test(op, result.second);  |  2831  | 6.84k  |         }  |  2832  |  |  |  2833  | 6.84k  |         postprocess(module, op, result);  |  2834  | 6.84k  |     }  |  2835  |  |  |  2836  | 1.22k  |     if ( options.noCompare == false ) { |  2837  | 1.18k  |         compare(operations, results, data, size);  |  2838  | 1.18k  |     }  |  2839  | 1.22k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_PrivateToPublic>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 2.95k  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 2.95k  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 2.95k  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 3.19k  |     do { |  2725  | 3.19k  |         auto op = getOp(&parentDs, data, size);  |  2726  | 3.19k  |         auto module = getModule(parentDs);  |  2727  | 3.19k  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 3.19k  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 3.19k  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 8  |             break;  |  2736  | 8  |         }  |  2737  | 3.19k  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 2.95k  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 2.95k  | #if 1  |  2745  | 2.95k  |     { |  2746  | 2.95k  |         std::set<uint64_t> moduleIDs;  |  2747  | 14.4k  |         for (const auto& m : modules ) { |  2748  | 14.4k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 14.4k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 14.4k  |             moduleIDs.insert(moduleID);  |  2756  | 14.4k  |         }  |  2757  |  |  |  2758  | 2.95k  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 3.08k  |         for (const auto& op : operations) { |  2760  | 3.08k  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 3.08k  |         }  |  2762  |  |  |  2763  | 2.95k  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 2.95k  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 2.95k  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 11.5k  |         for (const auto& id : addModuleIDs) { |  2768  | 11.5k  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 11.5k  |         }  |  2770  | 2.95k  |     }  |  2771  | 2.95k  | #endif  |  2772  |  |  |  2773  | 2.95k  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 2.95k  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 17.6k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 14.6k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 14.6k  |         auto& module = operation.first;  |  2784  | 14.6k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 14.6k  |         if ( i > 0 ) { |  2787  | 11.7k  |             auto& prevModule = operations[i-1].first;  |  2788  | 11.7k  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 11.7k  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 187  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 187  |                 if ( curModifier.size() == 0 ) { |  2793  | 35.3k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 35.3k  |                         curModifier.push_back(1);  |  2795  | 35.3k  |                     }  |  2796  | 118  |                 } else { |  2797  | 26.8k  |                     for (auto& c : curModifier) { |  2798  | 26.8k  |                         c++;  |  2799  | 26.8k  |                     }  |  2800  | 118  |                 }  |  2801  | 187  |             }  |  2802  | 11.7k  |         }  |  2803  |  |  |  2804  | 14.6k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 14.6k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 14.6k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 14.6k  |         if ( result.second != std::nullopt ) { |  2813  | 8.32k  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 8.32k  |         }  |  2820  |  |  |  2821  | 14.6k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 14.6k  |         if ( options.disableTests == false ) { |  2830  | 14.6k  |             tests::test(op, result.second);  |  2831  | 14.6k  |         }  |  2832  |  |  |  2833  | 14.6k  |         postprocess(module, op, result);  |  2834  | 14.6k  |     }  |  2835  |  |  |  2836  | 2.95k  |     if ( options.noCompare == false ) { |  2837  | 2.89k  |         compare(operations, results, data, size);  |  2838  | 2.89k  |     }  |  2839  | 2.95k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_PrivateToPublic_G2>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 536  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 536  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 536  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 695  |     do { |  2725  | 695  |         auto op = getOp(&parentDs, data, size);  |  2726  | 695  |         auto module = getModule(parentDs);  |  2727  | 695  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 695  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 695  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 6  |             break;  |  2736  | 6  |         }  |  2737  | 695  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 536  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 536  | #if 1  |  2745  | 536  |     { |  2746  | 536  |         std::set<uint64_t> moduleIDs;  |  2747  | 2.47k  |         for (const auto& m : modules ) { |  2748  | 2.47k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 2.47k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 2.47k  |             moduleIDs.insert(moduleID);  |  2756  | 2.47k  |         }  |  2757  |  |  |  2758  | 536  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 609  |         for (const auto& op : operations) { |  2760  | 609  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 609  |         }  |  2762  |  |  |  2763  | 536  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 536  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 536  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 1.97k  |         for (const auto& id : addModuleIDs) { |  2768  | 1.97k  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 1.97k  |         }  |  2770  | 536  |     }  |  2771  | 536  | #endif  |  2772  |  |  |  2773  | 536  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 536  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 3.12k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 2.58k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 2.58k  |         auto& module = operation.first;  |  2784  | 2.58k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 2.58k  |         if ( i > 0 ) { |  2787  | 2.09k  |             auto& prevModule = operations[i-1].first;  |  2788  | 2.09k  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 2.09k  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 115  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 115  |                 if ( curModifier.size() == 0 ) { |  2793  | 21.5k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 21.5k  |                         curModifier.push_back(1);  |  2795  | 21.5k  |                     }  |  2796  | 73  |                 } else { |  2797  | 2.20k  |                     for (auto& c : curModifier) { |  2798  | 2.20k  |                         c++;  |  2799  | 2.20k  |                     }  |  2800  | 73  |                 }  |  2801  | 115  |             }  |  2802  | 2.09k  |         }  |  2803  |  |  |  2804  | 2.58k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 2.58k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 2.58k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 2.58k  |         if ( result.second != std::nullopt ) { |  2813  | 905  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 905  |         }  |  2820  |  |  |  2821  | 2.58k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 2.58k  |         if ( options.disableTests == false ) { |  2830  | 2.58k  |             tests::test(op, result.second);  |  2831  | 2.58k  |         }  |  2832  |  |  |  2833  | 2.58k  |         postprocess(module, op, result);  |  2834  | 2.58k  |     }  |  2835  |  |  |  2836  | 536  |     if ( options.noCompare == false ) { |  2837  | 494  |         compare(operations, results, data, size);  |  2838  | 494  |     }  |  2839  | 536  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_Signature, cryptofuzz::operation::BLS_Sign>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 631  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 631  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 631  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 1.43k  |     do { |  2725  | 1.43k  |         auto op = getOp(&parentDs, data, size);  |  2726  | 1.43k  |         auto module = getModule(parentDs);  |  2727  | 1.43k  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 1.43k  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 1.43k  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 55  |             break;  |  2736  | 55  |         }  |  2737  | 1.43k  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 631  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 631  | #if 1  |  2745  | 631  |     { |  2746  | 631  |         std::set<uint64_t> moduleIDs;  |  2747  | 2.95k  |         for (const auto& m : modules ) { |  2748  | 2.95k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 2.95k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 2.95k  |             moduleIDs.insert(moduleID);  |  2756  | 2.95k  |         }  |  2757  |  |  |  2758  | 631  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 1.34k  |         for (const auto& op : operations) { |  2760  | 1.34k  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 1.34k  |         }  |  2762  |  |  |  2763  | 631  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 631  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 631  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 2.36k  |         for (const auto& id : addModuleIDs) { |  2768  | 2.36k  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 2.36k  |         }  |  2770  | 631  |     }  |  2771  | 631  | #endif  |  2772  |  |  |  2773  | 631  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 631  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 4.33k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 3.70k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 3.70k  |         auto& module = operation.first;  |  2784  | 3.70k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 3.70k  |         if ( i > 0 ) { |  2787  | 3.11k  |             auto& prevModule = operations[i-1].first;  |  2788  | 3.11k  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 3.11k  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 757  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 757  |                 if ( curModifier.size() == 0 ) { |  2793  | 276k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 275k  |                         curModifier.push_back(1);  |  2795  | 275k  |                     }  |  2796  | 539  |                 } else { |  2797  | 16.6k  |                     for (auto& c : curModifier) { |  2798  | 16.6k  |                         c++;  |  2799  | 16.6k  |                     }  |  2800  | 218  |                 }  |  2801  | 757  |             }  |  2802  | 3.11k  |         }  |  2803  |  |  |  2804  | 3.70k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 3.70k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 3.70k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 3.70k  |         if ( result.second != std::nullopt ) { |  2813  | 1.63k  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 1.63k  |         }  |  2820  |  |  |  2821  | 3.70k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 3.70k  |         if ( options.disableTests == false ) { |  2830  | 3.70k  |             tests::test(op, result.second);  |  2831  | 3.70k  |         }  |  2832  |  |  |  2833  | 3.70k  |         postprocess(module, op, result);  |  2834  | 3.70k  |     }  |  2835  |  |  |  2836  | 631  |     if ( options.noCompare == false ) { |  2837  | 590  |         compare(operations, results, data, size);  |  2838  | 590  |     }  |  2839  | 631  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_Verify>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 171  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 171  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 171  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 389  |     do { |  2725  | 389  |         auto op = getOp(&parentDs, data, size);  |  2726  | 389  |         auto module = getModule(parentDs);  |  2727  | 389  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 389  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 389  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 5  |             break;  |  2736  | 5  |         }  |  2737  | 389  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 171  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 171  | #if 1  |  2745  | 171  |     { |  2746  | 171  |         std::set<uint64_t> moduleIDs;  |  2747  | 640  |         for (const auto& m : modules ) { |  2748  | 640  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 640  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 640  |             moduleIDs.insert(moduleID);  |  2756  | 640  |         }  |  2757  |  |  |  2758  | 171  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 304  |         for (const auto& op : operations) { |  2760  | 304  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 304  |         }  |  2762  |  |  |  2763  | 171  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 171  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 171  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 512  |         for (const auto& id : addModuleIDs) { |  2768  | 512  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 512  |         }  |  2770  | 171  |     }  |  2771  | 171  | #endif  |  2772  |  |  |  2773  | 171  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 171  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 987  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 816  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 816  |         auto& module = operation.first;  |  2784  | 816  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 816  |         if ( i > 0 ) { |  2787  | 688  |             auto& prevModule = operations[i-1].first;  |  2788  | 688  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 688  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 176  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 176  |                 if ( curModifier.size() == 0 ) { |  2793  | 44.6k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 44.5k  |                         curModifier.push_back(1);  |  2795  | 44.5k  |                     }  |  2796  | 89  |                 } else { |  2797  | 4.11k  |                     for (auto& c : curModifier) { |  2798  | 4.11k  |                         c++;  |  2799  | 4.11k  |                     }  |  2800  | 89  |                 }  |  2801  | 176  |             }  |  2802  | 688  |         }  |  2803  |  |  |  2804  | 816  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 816  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 816  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 816  |         if ( result.second != std::nullopt ) { |  2813  | 108  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 108  |         }  |  2820  |  |  |  2821  | 816  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 816  |         if ( options.disableTests == false ) { |  2830  | 816  |             tests::test(op, result.second);  |  2831  | 816  |         }  |  2832  |  |  |  2833  | 816  |         postprocess(module, op, result);  |  2834  | 816  |     }  |  2835  |  |  |  2836  | 171  |     if ( options.noCompare == false ) { |  2837  | 128  |         compare(operations, results, data, size);  |  2838  | 128  |     }  |  2839  | 171  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_BatchSignature, cryptofuzz::operation::BLS_BatchSign>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_BatchVerify>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 938  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 938  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 938  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 1.26k  |     do { |  2725  | 1.26k  |         auto op = getOp(&parentDs, data, size);  |  2726  | 1.26k  |         auto module = getModule(parentDs);  |  2727  | 1.26k  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 1.26k  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 1.26k  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 9  |             break;  |  2736  | 9  |         }  |  2737  | 1.26k  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 938  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 938  | #if 1  |  2745  | 938  |     { |  2746  | 938  |         std::set<uint64_t> moduleIDs;  |  2747  | 3.77k  |         for (const auto& m : modules ) { |  2748  | 3.77k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 3.77k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 3.77k  |             moduleIDs.insert(moduleID);  |  2756  | 3.77k  |         }  |  2757  |  |  |  2758  | 938  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 988  |         for (const auto& op : operations) { |  2760  | 988  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 988  |         }  |  2762  |  |  |  2763  | 938  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 938  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 938  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 3.01k  |         for (const auto& id : addModuleIDs) { |  2768  | 3.01k  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 3.01k  |         }  |  2770  | 938  |     }  |  2771  | 938  | #endif  |  2772  |  |  |  2773  | 938  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 938  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 4.94k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 4.00k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 4.00k  |         auto& module = operation.first;  |  2784  | 4.00k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 4.00k  |         if ( i > 0 ) { |  2787  | 3.25k  |             auto& prevModule = operations[i-1].first;  |  2788  | 3.25k  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 3.25k  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 234  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 234  |                 if ( curModifier.size() == 0 ) { |  2793  | 81.5k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 81.4k  |                         curModifier.push_back(1);  |  2795  | 81.4k  |                     }  |  2796  | 159  |                 } else { |  2797  | 805  |                     for (auto& c : curModifier) { |  2798  | 805  |                         c++;  |  2799  | 805  |                     }  |  2800  | 75  |                 }  |  2801  | 234  |             }  |  2802  | 3.25k  |         }  |  2803  |  |  |  2804  | 4.00k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 4.00k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 4.00k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 4.00k  |         if ( result.second != std::nullopt ) { |  2813  | 184  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 184  |         }  |  2820  |  |  |  2821  | 4.00k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 4.00k  |         if ( options.disableTests == false ) { |  2830  | 4.00k  |             tests::test(op, result.second);  |  2831  | 4.00k  |         }  |  2832  |  |  |  2833  | 4.00k  |         postprocess(module, op, result);  |  2834  | 4.00k  |     }  |  2835  |  |  |  2836  | 938  |     if ( options.noCompare == false ) { |  2837  | 754  |         compare(operations, results, data, size);  |  2838  | 754  |     }  |  2839  | 938  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Aggregate_G1>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 268  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 268  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 268  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 491  |     do { |  2725  | 491  |         auto op = getOp(&parentDs, data, size);  |  2726  | 491  |         auto module = getModule(parentDs);  |  2727  | 491  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 491  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 491  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 9  |             break;  |  2736  | 9  |         }  |  2737  | 491  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 268  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 268  | #if 1  |  2745  | 268  |     { |  2746  | 268  |         std::set<uint64_t> moduleIDs;  |  2747  | 500  |         for (const auto& m : modules ) { |  2748  | 500  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 500  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 500  |             moduleIDs.insert(moduleID);  |  2756  | 500  |         }  |  2757  |  |  |  2758  | 268  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 268  |         for (const auto& op : operations) { |  2760  | 244  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 244  |         }  |  2762  |  |  |  2763  | 268  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 268  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 268  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 400  |         for (const auto& id : addModuleIDs) { |  2768  | 400  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 400  |         }  |  2770  | 268  |     }  |  2771  | 268  | #endif  |  2772  |  |  |  2773  | 268  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 268  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 912  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 644  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 644  |         auto& module = operation.first;  |  2784  | 644  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 644  |         if ( i > 0 ) { |  2787  | 544  |             auto& prevModule = operations[i-1].first;  |  2788  | 544  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 544  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 144  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 144  |                 if ( curModifier.size() == 0 ) { |  2793  | 46.1k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 46.0k  |                         curModifier.push_back(1);  |  2795  | 46.0k  |                     }  |  2796  | 90  |                 } else { |  2797  | 751  |                     for (auto& c : curModifier) { |  2798  | 751  |                         c++;  |  2799  | 751  |                     }  |  2800  | 54  |                 }  |  2801  | 144  |             }  |  2802  | 544  |         }  |  2803  |  |  |  2804  | 644  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 644  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 644  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 644  |         if ( result.second != std::nullopt ) { |  2813  | 70  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 70  |         }  |  2820  |  |  |  2821  | 644  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 644  |         if ( options.disableTests == false ) { |  2830  | 644  |             tests::test(op, result.second);  |  2831  | 644  |         }  |  2832  |  |  |  2833  | 644  |         postprocess(module, op, result);  |  2834  | 644  |     }  |  2835  |  |  |  2836  | 268  |     if ( options.noCompare == false ) { |  2837  | 100  |         compare(operations, results, data, size);  |  2838  | 100  |     }  |  2839  | 268  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Aggregate_G2>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 280  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 280  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 280  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 529  |     do { |  2725  | 529  |         auto op = getOp(&parentDs, data, size);  |  2726  | 529  |         auto module = getModule(parentDs);  |  2727  | 529  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 529  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 529  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 8  |             break;  |  2736  | 8  |         }  |  2737  | 529  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 280  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 280  | #if 1  |  2745  | 280  |     { |  2746  | 280  |         std::set<uint64_t> moduleIDs;  |  2747  | 575  |         for (const auto& m : modules ) { |  2748  | 575  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 575  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 575  |             moduleIDs.insert(moduleID);  |  2756  | 575  |         }  |  2757  |  |  |  2758  | 280  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 283  |         for (const auto& op : operations) { |  2760  | 283  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 283  |         }  |  2762  |  |  |  2763  | 280  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 280  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 280  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 460  |         for (const auto& id : addModuleIDs) { |  2768  | 460  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 460  |         }  |  2770  | 280  |     }  |  2771  | 280  | #endif  |  2772  |  |  |  2773  | 280  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 280  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 1.02k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 743  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 743  |         auto& module = operation.first;  |  2784  | 743  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 743  |         if ( i > 0 ) { |  2787  | 628  |             auto& prevModule = operations[i-1].first;  |  2788  | 628  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 628  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 168  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 168  |                 if ( curModifier.size() == 0 ) { |  2793  | 61.0k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 60.9k  |                         curModifier.push_back(1);  |  2795  | 60.9k  |                     }  |  2796  | 119  |                 } else { |  2797  | 557  |                     for (auto& c : curModifier) { |  2798  | 557  |                         c++;  |  2799  | 557  |                     }  |  2800  | 49  |                 }  |  2801  | 168  |             }  |  2802  | 628  |         }  |  2803  |  |  |  2804  | 743  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 743  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 743  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 743  |         if ( result.second != std::nullopt ) { |  2813  | 75  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 75  |         }  |  2820  |  |  |  2821  | 743  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 743  |         if ( options.disableTests == false ) { |  2830  | 743  |             tests::test(op, result.second);  |  2831  | 743  |         }  |  2832  |  |  |  2833  | 743  |         postprocess(module, op, result);  |  2834  | 743  |     }  |  2835  |  |  |  2836  | 280  |     if ( options.noCompare == false ) { |  2837  | 115  |         compare(operations, results, data, size);  |  2838  | 115  |     }  |  2839  | 280  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_Pairing>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 149  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 149  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 149  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 344  |     do { |  2725  | 344  |         auto op = getOp(&parentDs, data, size);  |  2726  | 344  |         auto module = getModule(parentDs);  |  2727  | 344  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 344  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 344  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 9  |             break;  |  2736  | 9  |         }  |  2737  | 344  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 149  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 149  | #if 1  |  2745  | 149  |     { |  2746  | 149  |         std::set<uint64_t> moduleIDs;  |  2747  | 580  |         for (const auto& m : modules ) { |  2748  | 580  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 580  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 580  |             moduleIDs.insert(moduleID);  |  2756  | 580  |         }  |  2757  |  |  |  2758  | 149  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 273  |         for (const auto& op : operations) { |  2760  | 273  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 273  |         }  |  2762  |  |  |  2763  | 149  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 149  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 149  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 464  |         for (const auto& id : addModuleIDs) { |  2768  | 464  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 464  |         }  |  2770  | 149  |     }  |  2771  | 149  | #endif  |  2772  |  |  |  2773  | 149  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 149  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 886  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 737  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 737  |         auto& module = operation.first;  |  2784  | 737  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 737  |         if ( i > 0 ) { |  2787  | 621  |             auto& prevModule = operations[i-1].first;  |  2788  | 621  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 621  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 157  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 157  |                 if ( curModifier.size() == 0 ) { |  2793  | 41.5k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 41.4k  |                         curModifier.push_back(1);  |  2795  | 41.4k  |                     }  |  2796  | 81  |                 } else { |  2797  | 1.78k  |                     for (auto& c : curModifier) { |  2798  | 1.78k  |                         c++;  |  2799  | 1.78k  |                     }  |  2800  | 76  |                 }  |  2801  | 157  |             }  |  2802  | 621  |         }  |  2803  |  |  |  2804  | 737  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 737  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 737  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 737  |         if ( result.second != std::nullopt ) { |  2813  | 143  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 143  |         }  |  2820  |  |  |  2821  | 737  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 737  |         if ( options.disableTests == false ) { |  2830  | 737  |             tests::test(op, result.second);  |  2831  | 737  |         }  |  2832  |  |  |  2833  | 737  |         postprocess(module, op, result);  |  2834  | 737  |     }  |  2835  |  |  |  2836  | 149  |     if ( options.noCompare == false ) { |  2837  | 116  |         compare(operations, results, data, size);  |  2838  | 116  |     }  |  2839  | 149  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_MillerLoop>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const cryptofuzz::ExecutorBase<cryptofuzz::component::Fp12, cryptofuzz::operation::BLS_FinalExp>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 248  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 248  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 248  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 420  |     do { |  2725  | 420  |         auto op = getOp(&parentDs, data, size);  |  2726  | 420  |         auto module = getModule(parentDs);  |  2727  | 420  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 420  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 420  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 6  |             break;  |  2736  | 6  |         }  |  2737  | 420  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 248  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 248  | #if 1  |  2745  | 248  |     { |  2746  | 248  |         std::set<uint64_t> moduleIDs;  |  2747  | 1.00k  |         for (const auto& m : modules ) { |  2748  | 1.00k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 1.00k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 1.00k  |             moduleIDs.insert(moduleID);  |  2756  | 1.00k  |         }  |  2757  |  |  |  2758  | 248  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 333  |         for (const auto& op : operations) { |  2760  | 333  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 333  |         }  |  2762  |  |  |  2763  | 248  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 248  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 248  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 804  |         for (const auto& id : addModuleIDs) { |  2768  | 804  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 804  |         }  |  2770  | 248  |     }  |  2771  | 248  | #endif  |  2772  |  |  |  2773  | 248  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 248  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 1.38k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 1.13k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 1.13k  |         auto& module = operation.first;  |  2784  | 1.13k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 1.13k  |         if ( i > 0 ) { |  2787  | 936  |             auto& prevModule = operations[i-1].first;  |  2788  | 936  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 936  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 132  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 132  |                 if ( curModifier.size() == 0 ) { |  2793  | 24.1k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 24.0k  |                         curModifier.push_back(1);  |  2795  | 24.0k  |                     }  |  2796  | 85  |                 } else { |  2797  | 4.78k  |                     for (auto& c : curModifier) { |  2798  | 4.78k  |                         c++;  |  2799  | 4.78k  |                     }  |  2800  | 85  |                 }  |  2801  | 132  |             }  |  2802  | 936  |         }  |  2803  |  |  |  2804  | 1.13k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 1.13k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 1.13k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 1.13k  |         if ( result.second != std::nullopt ) { |  2813  | 578  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 578  |         }  |  2820  |  |  |  2821  | 1.13k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 1.13k  |         if ( options.disableTests == false ) { |  2830  | 1.13k  |             tests::test(op, result.second);  |  2831  | 1.13k  |         }  |  2832  |  |  |  2833  | 1.13k  |         postprocess(module, op, result);  |  2834  | 1.13k  |     }  |  2835  |  |  |  2836  | 248  |     if ( options.noCompare == false ) { |  2837  | 201  |         compare(operations, results, data, size);  |  2838  | 201  |     }  |  2839  | 248  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_HashToG1>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 191  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 191  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 191  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 340  |     do { |  2725  | 340  |         auto op = getOp(&parentDs, data, size);  |  2726  | 340  |         auto module = getModule(parentDs);  |  2727  | 340  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 340  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 340  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 6  |             break;  |  2736  | 6  |         }  |  2737  | 340  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 191  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 191  | #if 1  |  2745  | 191  |     { |  2746  | 191  |         std::set<uint64_t> moduleIDs;  |  2747  | 790  |         for (const auto& m : modules ) { |  2748  | 790  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 790  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 790  |             moduleIDs.insert(moduleID);  |  2756  | 790  |         }  |  2757  |  |  |  2758  | 191  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 263  |         for (const auto& op : operations) { |  2760  | 263  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 263  |         }  |  2762  |  |  |  2763  | 191  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 191  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 191  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 632  |         for (const auto& id : addModuleIDs) { |  2768  | 632  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 632  |         }  |  2770  | 191  |     }  |  2771  | 191  | #endif  |  2772  |  |  |  2773  | 191  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 191  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 1.08k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 895  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 895  |         auto& module = operation.first;  |  2784  | 895  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 895  |         if ( i > 0 ) { |  2787  | 737  |             auto& prevModule = operations[i-1].first;  |  2788  | 737  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 737  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 105  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 105  |                 if ( curModifier.size() == 0 ) { |  2793  | 20.5k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 20.4k  |                         curModifier.push_back(1);  |  2795  | 20.4k  |                     }  |  2796  | 65  |                 } else { |  2797  | 41.8k  |                     for (auto& c : curModifier) { |  2798  | 41.8k  |                         c++;  |  2799  | 41.8k  |                     }  |  2800  | 65  |                 }  |  2801  | 105  |             }  |  2802  | 737  |         }  |  2803  |  |  |  2804  | 895  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 895  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 895  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 895  |         if ( result.second != std::nullopt ) { |  2813  | 452  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 452  |         }  |  2820  |  |  |  2821  | 895  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 895  |         if ( options.disableTests == false ) { |  2830  | 895  |             tests::test(op, result.second);  |  2831  | 895  |         }  |  2832  |  |  |  2833  | 895  |         postprocess(module, op, result);  |  2834  | 895  |     }  |  2835  |  |  |  2836  | 191  |     if ( options.noCompare == false ) { |  2837  | 158  |         compare(operations, results, data, size);  |  2838  | 158  |     }  |  2839  | 191  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_HashToG2>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 233  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 233  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 233  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 364  |     do { |  2725  | 364  |         auto op = getOp(&parentDs, data, size);  |  2726  | 364  |         auto module = getModule(parentDs);  |  2727  | 364  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 364  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 364  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 5  |             break;  |  2736  | 5  |         }  |  2737  | 364  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 233  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 233  | #if 1  |  2745  | 233  |     { |  2746  | 233  |         std::set<uint64_t> moduleIDs;  |  2747  | 1.01k  |         for (const auto& m : modules ) { |  2748  | 1.01k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 1.01k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 1.01k  |             moduleIDs.insert(moduleID);  |  2756  | 1.01k  |         }  |  2757  |  |  |  2758  | 233  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 292  |         for (const auto& op : operations) { |  2760  | 292  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 292  |         }  |  2762  |  |  |  2763  | 233  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 233  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 233  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 808  |         for (const auto& id : addModuleIDs) { |  2768  | 808  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 808  |         }  |  2770  | 233  |     }  |  2771  | 233  | #endif  |  2772  |  |  |  2773  | 233  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 233  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 1.33k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 1.10k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 1.10k  |         auto& module = operation.first;  |  2784  | 1.10k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 1.10k  |         if ( i > 0 ) { |  2787  | 898  |             auto& prevModule = operations[i-1].first;  |  2788  | 898  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 898  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 90  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 90  |                 if ( curModifier.size() == 0 ) { |  2793  | 19.4k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 19.4k  |                         curModifier.push_back(1);  |  2795  | 19.4k  |                     }  |  2796  | 52  |                 } else { |  2797  | 1.70k  |                     for (auto& c : curModifier) { |  2798  | 1.70k  |                         c++;  |  2799  | 1.70k  |                     }  |  2800  | 52  |                 }  |  2801  | 90  |             }  |  2802  | 898  |         }  |  2803  |  |  |  2804  | 1.10k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 1.10k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 1.10k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 1.10k  |         if ( result.second != std::nullopt ) { |  2813  | 623  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 623  |         }  |  2820  |  |  |  2821  | 1.10k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 1.10k  |         if ( options.disableTests == false ) { |  2830  | 1.10k  |             tests::test(op, result.second);  |  2831  | 1.10k  |         }  |  2832  |  |  |  2833  | 1.10k  |         postprocess(module, op, result);  |  2834  | 1.10k  |     }  |  2835  |  |  |  2836  | 233  |     if ( options.noCompare == false ) { |  2837  | 202  |         compare(operations, results, data, size);  |  2838  | 202  |     }  |  2839  | 233  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_MapToG1>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 224  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 224  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 224  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 368  |     do { |  2725  | 368  |         auto op = getOp(&parentDs, data, size);  |  2726  | 368  |         auto module = getModule(parentDs);  |  2727  | 368  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 368  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 368  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 7  |             break;  |  2736  | 7  |         }  |  2737  | 368  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 224  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 224  | #if 1  |  2745  | 224  |     { |  2746  | 224  |         std::set<uint64_t> moduleIDs;  |  2747  | 965  |         for (const auto& m : modules ) { |  2748  | 965  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 965  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 965  |             moduleIDs.insert(moduleID);  |  2756  | 965  |         }  |  2757  |  |  |  2758  | 224  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 298  |         for (const auto& op : operations) { |  2760  | 298  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 298  |         }  |  2762  |  |  |  2763  | 224  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 224  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 224  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 772  |         for (const auto& id : addModuleIDs) { |  2768  | 772  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 772  |         }  |  2770  | 224  |     }  |  2771  | 224  | #endif  |  2772  |  |  |  2773  | 224  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 224  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 1.29k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 1.07k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 1.07k  |         auto& module = operation.first;  |  2784  | 1.07k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 1.07k  |         if ( i > 0 ) { |  2787  | 877  |             auto& prevModule = operations[i-1].first;  |  2788  | 877  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 877  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 105  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 105  |                 if ( curModifier.size() == 0 ) { |  2793  | 17.4k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 17.4k  |                         curModifier.push_back(1);  |  2795  | 17.4k  |                     }  |  2796  | 71  |                 } else { |  2797  | 10.0k  |                     for (auto& c : curModifier) { |  2798  | 10.0k  |                         c++;  |  2799  | 10.0k  |                     }  |  2800  | 71  |                 }  |  2801  | 105  |             }  |  2802  | 877  |         }  |  2803  |  |  |  2804  | 1.07k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 1.07k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 1.07k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 1.07k  |         if ( result.second != std::nullopt ) { |  2813  | 418  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 418  |         }  |  2820  |  |  |  2821  | 1.07k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 1.07k  |         if ( options.disableTests == false ) { |  2830  | 1.07k  |             tests::test(op, result.second);  |  2831  | 1.07k  |         }  |  2832  |  |  |  2833  | 1.07k  |         postprocess(module, op, result);  |  2834  | 1.07k  |     }  |  2835  |  |  |  2836  | 224  |     if ( options.noCompare == false ) { |  2837  | 193  |         compare(operations, results, data, size);  |  2838  | 193  |     }  |  2839  | 224  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_MapToG2>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 151  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 151  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 151  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 295  |     do { |  2725  | 295  |         auto op = getOp(&parentDs, data, size);  |  2726  | 295  |         auto module = getModule(parentDs);  |  2727  | 295  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 295  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 295  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 5  |             break;  |  2736  | 5  |         }  |  2737  | 295  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 151  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 151  | #if 1  |  2745  | 151  |     { |  2746  | 151  |         std::set<uint64_t> moduleIDs;  |  2747  | 610  |         for (const auto& m : modules ) { |  2748  | 610  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 610  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 610  |             moduleIDs.insert(moduleID);  |  2756  | 610  |         }  |  2757  |  |  |  2758  | 151  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 234  |         for (const auto& op : operations) { |  2760  | 234  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 234  |         }  |  2762  |  |  |  2763  | 151  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 151  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 151  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 488  |         for (const auto& id : addModuleIDs) { |  2768  | 488  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 488  |         }  |  2770  | 151  |     }  |  2771  | 151  | #endif  |  2772  |  |  |  2773  | 151  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 151  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 873  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 722  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 722  |         auto& module = operation.first;  |  2784  | 722  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 722  |         if ( i > 0 ) { |  2787  | 600  |             auto& prevModule = operations[i-1].first;  |  2788  | 600  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 600  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 112  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 112  |                 if ( curModifier.size() == 0 ) { |  2793  | 24.1k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 24.0k  |                         curModifier.push_back(1);  |  2795  | 24.0k  |                     }  |  2796  | 65  |                 } else { |  2797  | 1.03k  |                     for (auto& c : curModifier) { |  2798  | 1.03k  |                         c++;  |  2799  | 1.03k  |                     }  |  2800  | 65  |                 }  |  2801  | 112  |             }  |  2802  | 600  |         }  |  2803  |  |  |  2804  | 722  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 722  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 722  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 722  |         if ( result.second != std::nullopt ) { |  2813  | 237  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 237  |         }  |  2820  |  |  |  2821  | 722  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 722  |         if ( options.disableTests == false ) { |  2830  | 722  |             tests::test(op, result.second);  |  2831  | 722  |         }  |  2832  |  |  |  2833  | 722  |         postprocess(module, op, result);  |  2834  | 722  |     }  |  2835  |  |  |  2836  | 151  |     if ( options.noCompare == false ) { |  2837  | 122  |         compare(operations, results, data, size);  |  2838  | 122  |     }  |  2839  | 151  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG1OnCurve>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 1.28k  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 1.28k  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 1.28k  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 1.70k  |     do { |  2725  | 1.70k  |         auto op = getOp(&parentDs, data, size);  |  2726  | 1.70k  |         auto module = getModule(parentDs);  |  2727  | 1.70k  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 1.70k  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 1.70k  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 11  |             break;  |  2736  | 11  |         }  |  2737  | 1.70k  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 1.28k  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 1.28k  | #if 1  |  2745  | 1.28k  |     { |  2746  | 1.28k  |         std::set<uint64_t> moduleIDs;  |  2747  | 6.28k  |         for (const auto& m : modules ) { |  2748  | 6.28k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 6.28k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 6.28k  |             moduleIDs.insert(moduleID);  |  2756  | 6.28k  |         }  |  2757  |  |  |  2758  | 1.28k  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 1.64k  |         for (const auto& op : operations) { |  2760  | 1.64k  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 1.64k  |         }  |  2762  |  |  |  2763  | 1.28k  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 1.28k  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 1.28k  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 5.02k  |         for (const auto& id : addModuleIDs) { |  2768  | 5.02k  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 5.02k  |         }  |  2770  | 1.28k  |     }  |  2771  | 1.28k  | #endif  |  2772  |  |  |  2773  | 1.28k  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 1.28k  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 7.95k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 6.66k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 6.66k  |         auto& module = operation.first;  |  2784  | 6.66k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 6.66k  |         if ( i > 0 ) { |  2787  | 5.41k  |             auto& prevModule = operations[i-1].first;  |  2788  | 5.41k  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 5.41k  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 384  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 384  |                 if ( curModifier.size() == 0 ) { |  2793  | 31.8k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 31.7k  |                         curModifier.push_back(1);  |  2795  | 31.7k  |                     }  |  2796  | 322  |                 } else { |  2797  | 156k  |                     for (auto& c : curModifier) { |  2798  | 156k  |                         c++;  |  2799  | 156k  |                     }  |  2800  | 322  |                 }  |  2801  | 384  |             }  |  2802  | 5.41k  |         }  |  2803  |  |  |  2804  | 6.66k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 6.66k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 6.66k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 6.66k  |         if ( result.second != std::nullopt ) { |  2813  | 4.77k  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 4.77k  |         }  |  2820  |  |  |  2821  | 6.66k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 6.66k  |         if ( options.disableTests == false ) { |  2830  | 6.66k  |             tests::test(op, result.second);  |  2831  | 6.66k  |         }  |  2832  |  |  |  2833  | 6.66k  |         postprocess(module, op, result);  |  2834  | 6.66k  |     }  |  2835  |  |  |  2836  | 1.28k  |     if ( options.noCompare == false ) { |  2837  | 1.25k  |         compare(operations, results, data, size);  |  2838  | 1.25k  |     }  |  2839  | 1.28k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_IsG2OnCurve>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 1.93k  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 1.93k  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 1.93k  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 2.39k  |     do { |  2725  | 2.39k  |         auto op = getOp(&parentDs, data, size);  |  2726  | 2.39k  |         auto module = getModule(parentDs);  |  2727  | 2.39k  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 2.39k  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 2.39k  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 6  |             break;  |  2736  | 6  |         }  |  2737  | 2.39k  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 1.93k  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 1.93k  | #if 1  |  2745  | 1.93k  |     { |  2746  | 1.93k  |         std::set<uint64_t> moduleIDs;  |  2747  | 9.50k  |         for (const auto& m : modules ) { |  2748  | 9.50k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 9.50k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 9.50k  |             moduleIDs.insert(moduleID);  |  2756  | 9.50k  |         }  |  2757  |  |  |  2758  | 1.93k  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 2.32k  |         for (const auto& op : operations) { |  2760  | 2.32k  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 2.32k  |         }  |  2762  |  |  |  2763  | 1.93k  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 1.93k  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 1.93k  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 7.60k  |         for (const auto& id : addModuleIDs) { |  2768  | 7.60k  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 7.60k  |         }  |  2770  | 1.93k  |     }  |  2771  | 1.93k  | #endif  |  2772  |  |  |  2773  | 1.93k  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 1.93k  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 11.8k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 9.92k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 9.92k  |         auto& module = operation.first;  |  2784  | 9.92k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 9.92k  |         if ( i > 0 ) { |  2787  | 8.02k  |             auto& prevModule = operations[i-1].first;  |  2788  | 8.02k  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 8.02k  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 425  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 425  |                 if ( curModifier.size() == 0 ) { |  2793  | 43.0k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 43.0k  |                         curModifier.push_back(1);  |  2795  | 43.0k  |                     }  |  2796  | 341  |                 } else { |  2797  | 186k  |                     for (auto& c : curModifier) { |  2798  | 186k  |                         c++;  |  2799  | 186k  |                     }  |  2800  | 341  |                 }  |  2801  | 425  |             }  |  2802  | 8.02k  |         }  |  2803  |  |  |  2804  | 9.92k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 9.92k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 9.92k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 9.92k  |         if ( result.second != std::nullopt ) { |  2813  | 6.94k  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 6.94k  |         }  |  2820  |  |  |  2821  | 9.92k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 9.92k  |         if ( options.disableTests == false ) { |  2830  | 9.92k  |             tests::test(op, result.second);  |  2831  | 9.92k  |         }  |  2832  |  |  |  2833  | 9.92k  |         postprocess(module, op, result);  |  2834  | 9.92k  |     }  |  2835  |  |  |  2836  | 1.93k  |     if ( options.noCompare == false ) { |  2837  | 1.90k  |         compare(operations, results, data, size);  |  2838  | 1.90k  |     }  |  2839  | 1.93k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BLS_KeyPair, cryptofuzz::operation::BLS_GenerateKeyPair>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 110  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 110  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 110  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 266  |     do { |  2725  | 266  |         auto op = getOp(&parentDs, data, size);  |  2726  | 266  |         auto module = getModule(parentDs);  |  2727  | 266  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 266  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 266  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 10  |             break;  |  2736  | 10  |         }  |  2737  | 266  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 110  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 110  | #if 1  |  2745  | 110  |     { |  2746  | 110  |         std::set<uint64_t> moduleIDs;  |  2747  | 400  |         for (const auto& m : modules ) { |  2748  | 400  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 400  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 400  |             moduleIDs.insert(moduleID);  |  2756  | 400  |         }  |  2757  |  |  |  2758  | 110  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 198  |         for (const auto& op : operations) { |  2760  | 198  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 198  |         }  |  2762  |  |  |  2763  | 110  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 110  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 110  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 320  |         for (const auto& id : addModuleIDs) { |  2768  | 320  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 320  |         }  |  2770  | 110  |     }  |  2771  | 110  | #endif  |  2772  |  |  |  2773  | 110  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 110  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 628  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 518  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 518  |         auto& module = operation.first;  |  2784  | 518  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 518  |         if ( i > 0 ) { |  2787  | 438  |             auto& prevModule = operations[i-1].first;  |  2788  | 438  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 438  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 118  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 118  |                 if ( curModifier.size() == 0 ) { |  2793  | 23.0k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 23.0k  |                         curModifier.push_back(1);  |  2795  | 23.0k  |                     }  |  2796  | 73  |                 } else { |  2797  | 679  |                     for (auto& c : curModifier) { |  2798  | 679  |                         c++;  |  2799  | 679  |                     }  |  2800  | 73  |                 }  |  2801  | 118  |             }  |  2802  | 438  |         }  |  2803  |  |  |  2804  | 518  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 518  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 518  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 518  |         if ( result.second != std::nullopt ) { |  2813  | 108  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 108  |         }  |  2820  |  |  |  2821  | 518  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 518  |         if ( options.disableTests == false ) { |  2830  | 518  |             tests::test(op, result.second);  |  2831  | 518  |         }  |  2832  |  |  |  2833  | 518  |         postprocess(module, op, result);  |  2834  | 518  |     }  |  2835  |  |  |  2836  | 110  |     if ( options.noCompare == false ) { |  2837  | 80  |         compare(operations, results, data, size);  |  2838  | 80  |     }  |  2839  | 110  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Decompress_G1>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 252  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 252  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 252  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 440  |     do { |  2725  | 440  |         auto op = getOp(&parentDs, data, size);  |  2726  | 440  |         auto module = getModule(parentDs);  |  2727  | 440  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 440  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 440  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 6  |             break;  |  2736  | 6  |         }  |  2737  | 440  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 252  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 252  | #if 1  |  2745  | 252  |     { |  2746  | 252  |         std::set<uint64_t> moduleIDs;  |  2747  | 1.09k  |         for (const auto& m : modules ) { |  2748  | 1.09k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 1.09k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 1.09k  |             moduleIDs.insert(moduleID);  |  2756  | 1.09k  |         }  |  2757  |  |  |  2758  | 252  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 362  |         for (const auto& op : operations) { |  2760  | 362  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 362  |         }  |  2762  |  |  |  2763  | 252  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 252  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 252  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 872  |         for (const auto& id : addModuleIDs) { |  2768  | 872  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 872  |         }  |  2770  | 252  |     }  |  2771  | 252  | #endif  |  2772  |  |  |  2773  | 252  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 252  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 1.48k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 1.23k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 1.23k  |         auto& module = operation.first;  |  2784  | 1.23k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 1.23k  |         if ( i > 0 ) { |  2787  | 1.01k  |             auto& prevModule = operations[i-1].first;  |  2788  | 1.01k  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 1.01k  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 144  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 144  |                 if ( curModifier.size() == 0 ) { |  2793  | 44.1k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 44.0k  |                         curModifier.push_back(1);  |  2795  | 44.0k  |                     }  |  2796  | 86  |                 } else { |  2797  | 4.83k  |                     for (auto& c : curModifier) { |  2798  | 4.83k  |                         c++;  |  2799  | 4.83k  |                     }  |  2800  | 58  |                 }  |  2801  | 144  |             }  |  2802  | 1.01k  |         }  |  2803  |  |  |  2804  | 1.23k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 1.23k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 1.23k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 1.23k  |         if ( result.second != std::nullopt ) { |  2813  | 342  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 342  |         }  |  2820  |  |  |  2821  | 1.23k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 1.23k  |         if ( options.disableTests == false ) { |  2830  | 1.23k  |             tests::test(op, result.second);  |  2831  | 1.23k  |         }  |  2832  |  |  |  2833  | 1.23k  |         postprocess(module, op, result);  |  2834  | 1.23k  |     }  |  2835  |  |  |  2836  | 252  |     if ( options.noCompare == false ) { |  2837  | 218  |         compare(operations, results, data, size);  |  2838  | 218  |     }  |  2839  | 252  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::Bignum, cryptofuzz::operation::BLS_Compress_G1>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 125  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 125  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 125  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 266  |     do { |  2725  | 266  |         auto op = getOp(&parentDs, data, size);  |  2726  | 266  |         auto module = getModule(parentDs);  |  2727  | 266  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 266  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 266  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 4  |             break;  |  2736  | 4  |         }  |  2737  | 266  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 125  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 125  | #if 1  |  2745  | 125  |     { |  2746  | 125  |         std::set<uint64_t> moduleIDs;  |  2747  | 485  |         for (const auto& m : modules ) { |  2748  | 485  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 485  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 485  |             moduleIDs.insert(moduleID);  |  2756  | 485  |         }  |  2757  |  |  |  2758  | 125  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 197  |         for (const auto& op : operations) { |  2760  | 197  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 197  |         }  |  2762  |  |  |  2763  | 125  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 125  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 125  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 388  |         for (const auto& id : addModuleIDs) { |  2768  | 388  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 388  |         }  |  2770  | 125  |     }  |  2771  | 125  | #endif  |  2772  |  |  |  2773  | 125  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 125  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 710  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 585  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 585  |         auto& module = operation.first;  |  2784  | 585  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 585  |         if ( i > 0 ) { |  2787  | 488  |             auto& prevModule = operations[i-1].first;  |  2788  | 488  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 488  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 100  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 100  |                 if ( curModifier.size() == 0 ) { |  2793  | 22.5k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 22.5k  |                         curModifier.push_back(1);  |  2795  | 22.5k  |                     }  |  2796  | 56  |                 } else { |  2797  | 1.05k  |                     for (auto& c : curModifier) { |  2798  | 1.05k  |                         c++;  |  2799  | 1.05k  |                     }  |  2800  | 56  |                 }  |  2801  | 100  |             }  |  2802  | 488  |         }  |  2803  |  |  |  2804  | 585  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 585  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 585  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 585  |         if ( result.second != std::nullopt ) { |  2813  | 144  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 144  |         }  |  2820  |  |  |  2821  | 585  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 585  |         if ( options.disableTests == false ) { |  2830  | 585  |             tests::test(op, result.second);  |  2831  | 585  |         }  |  2832  |  |  |  2833  | 585  |         postprocess(module, op, result);  |  2834  | 585  |     }  |  2835  |  |  |  2836  | 125  |     if ( options.noCompare == false ) { |  2837  | 97  |         compare(operations, results, data, size);  |  2838  | 97  |     }  |  2839  | 125  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_Decompress_G2>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 140  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 140  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 140  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 330  |     do { |  2725  | 330  |         auto op = getOp(&parentDs, data, size);  |  2726  | 330  |         auto module = getModule(parentDs);  |  2727  | 330  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 330  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 330  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 5  |             break;  |  2736  | 5  |         }  |  2737  | 330  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 140  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 140  | #if 1  |  2745  | 140  |     { |  2746  | 140  |         std::set<uint64_t> moduleIDs;  |  2747  | 570  |         for (const auto& m : modules ) { |  2748  | 570  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 570  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 570  |             moduleIDs.insert(moduleID);  |  2756  | 570  |         }  |  2757  |  |  |  2758  | 140  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 268  |         for (const auto& op : operations) { |  2760  | 268  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 268  |         }  |  2762  |  |  |  2763  | 140  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 140  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 140  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 456  |         for (const auto& id : addModuleIDs) { |  2768  | 456  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 456  |         }  |  2770  | 140  |     }  |  2771  | 140  | #endif  |  2772  |  |  |  2773  | 140  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 140  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 864  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 724  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 724  |         auto& module = operation.first;  |  2784  | 724  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 724  |         if ( i > 0 ) { |  2787  | 610  |             auto& prevModule = operations[i-1].first;  |  2788  | 610  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 610  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 154  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 154  |                 if ( curModifier.size() == 0 ) { |  2793  | 40.5k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 40.4k  |                         curModifier.push_back(1);  |  2795  | 40.4k  |                     }  |  2796  | 79  |                 } else { |  2797  | 1.56k  |                     for (auto& c : curModifier) { |  2798  | 1.56k  |                         c++;  |  2799  | 1.56k  |                     }  |  2800  | 75  |                 }  |  2801  | 154  |             }  |  2802  | 610  |         }  |  2803  |  |  |  2804  | 724  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 724  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 724  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 724  |         if ( result.second != std::nullopt ) { |  2813  | 227  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 227  |         }  |  2820  |  |  |  2821  | 724  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 724  |         if ( options.disableTests == false ) { |  2830  | 724  |             tests::test(op, result.second);  |  2831  | 724  |         }  |  2832  |  |  |  2833  | 724  |         postprocess(module, op, result);  |  2834  | 724  |     }  |  2835  |  |  |  2836  | 140  |     if ( options.noCompare == false ) { |  2837  | 114  |         compare(operations, results, data, size);  |  2838  | 114  |     }  |  2839  | 140  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_Compress_G2>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 127  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 127  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 127  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 320  |     do { |  2725  | 320  |         auto op = getOp(&parentDs, data, size);  |  2726  | 320  |         auto module = getModule(parentDs);  |  2727  | 320  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 320  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 320  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 8  |             break;  |  2736  | 8  |         }  |  2737  | 320  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 127  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 127  | #if 1  |  2745  | 127  |     { |  2746  | 127  |         std::set<uint64_t> moduleIDs;  |  2747  | 490  |         for (const auto& m : modules ) { |  2748  | 490  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 490  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 490  |             moduleIDs.insert(moduleID);  |  2756  | 490  |         }  |  2757  |  |  |  2758  | 127  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 251  |         for (const auto& op : operations) { |  2760  | 251  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 251  |         }  |  2762  |  |  |  2763  | 127  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 127  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 127  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 392  |         for (const auto& id : addModuleIDs) { |  2768  | 392  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 392  |         }  |  2770  | 127  |     }  |  2771  | 127  | #endif  |  2772  |  |  |  2773  | 127  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 127  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 770  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 643  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 643  |         auto& module = operation.first;  |  2784  | 643  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 643  |         if ( i > 0 ) { |  2787  | 545  |             auto& prevModule = operations[i-1].first;  |  2788  | 545  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 545  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 153  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 153  |                 if ( curModifier.size() == 0 ) { |  2793  | 28.7k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 28.6k  |                         curModifier.push_back(1);  |  2795  | 28.6k  |                     }  |  2796  | 97  |                 } else { |  2797  | 1.16k  |                     for (auto& c : curModifier) { |  2798  | 1.16k  |                         c++;  |  2799  | 1.16k  |                     }  |  2800  | 97  |                 }  |  2801  | 153  |             }  |  2802  | 545  |         }  |  2803  |  |  |  2804  | 643  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 643  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 643  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 643  |         if ( result.second != std::nullopt ) { |  2813  | 182  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 182  |         }  |  2820  |  |  |  2821  | 643  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 643  |         if ( options.disableTests == false ) { |  2830  | 643  |             tests::test(op, result.second);  |  2831  | 643  |         }  |  2832  |  |  |  2833  | 643  |         postprocess(module, op, result);  |  2834  | 643  |     }  |  2835  |  |  |  2836  | 127  |     if ( options.noCompare == false ) { |  2837  | 98  |         compare(operations, results, data, size);  |  2838  | 98  |     }  |  2839  | 127  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Add>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 2.39k  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 2.39k  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 2.39k  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 3.07k  |     do { |  2725  | 3.07k  |         auto op = getOp(&parentDs, data, size);  |  2726  | 3.07k  |         auto module = getModule(parentDs);  |  2727  | 3.07k  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 3.07k  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 3.07k  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 22  |             break;  |  2736  | 22  |         }  |  2737  | 3.07k  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 2.39k  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 2.39k  | #if 1  |  2745  | 2.39k  |     { |  2746  | 2.39k  |         std::set<uint64_t> moduleIDs;  |  2747  | 11.7k  |         for (const auto& m : modules ) { |  2748  | 11.7k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 11.7k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 11.7k  |             moduleIDs.insert(moduleID);  |  2756  | 11.7k  |         }  |  2757  |  |  |  2758  | 2.39k  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 3.00k  |         for (const auto& op : operations) { |  2760  | 3.00k  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 3.00k  |         }  |  2762  |  |  |  2763  | 2.39k  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 2.39k  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 2.39k  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 9.43k  |         for (const auto& id : addModuleIDs) { |  2768  | 9.43k  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 9.43k  |         }  |  2770  | 2.39k  |     }  |  2771  | 2.39k  | #endif  |  2772  |  |  |  2773  | 2.39k  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 2.39k  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 14.8k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 12.4k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 12.4k  |         auto& module = operation.first;  |  2784  | 12.4k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 12.4k  |         if ( i > 0 ) { |  2787  | 10.0k  |             auto& prevModule = operations[i-1].first;  |  2788  | 10.0k  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 10.0k  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 643  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 643  |                 if ( curModifier.size() == 0 ) { |  2793  | 82.5k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 82.4k  |                         curModifier.push_back(1);  |  2795  | 82.4k  |                     }  |  2796  | 482  |                 } else { |  2797  | 288k  |                     for (auto& c : curModifier) { |  2798  | 288k  |                         c++;  |  2799  | 288k  |                     }  |  2800  | 482  |                 }  |  2801  | 643  |             }  |  2802  | 10.0k  |         }  |  2803  |  |  |  2804  | 12.4k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 12.4k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 12.4k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 12.4k  |         if ( result.second != std::nullopt ) { |  2813  | 2.37k  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 2.37k  |         }  |  2820  |  |  |  2821  | 12.4k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 12.4k  |         if ( options.disableTests == false ) { |  2830  | 12.4k  |             tests::test(op, result.second);  |  2831  | 12.4k  |         }  |  2832  |  |  |  2833  | 12.4k  |         postprocess(module, op, result);  |  2834  | 12.4k  |     }  |  2835  |  |  |  2836  | 2.39k  |     if ( options.noCompare == false ) { |  2837  | 2.35k  |         compare(operations, results, data, size);  |  2838  | 2.35k  |     }  |  2839  | 2.39k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Mul>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 1.62k  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 1.62k  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 1.62k  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 2.08k  |     do { |  2725  | 2.08k  |         auto op = getOp(&parentDs, data, size);  |  2726  | 2.08k  |         auto module = getModule(parentDs);  |  2727  | 2.08k  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 2.08k  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 2.08k  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 17  |             break;  |  2736  | 17  |         }  |  2737  | 2.08k  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 1.62k  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 1.62k  | #if 1  |  2745  | 1.62k  |     { |  2746  | 1.62k  |         std::set<uint64_t> moduleIDs;  |  2747  | 7.94k  |         for (const auto& m : modules ) { |  2748  | 7.94k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 7.94k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 7.94k  |             moduleIDs.insert(moduleID);  |  2756  | 7.94k  |         }  |  2757  |  |  |  2758  | 1.62k  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 2.01k  |         for (const auto& op : operations) { |  2760  | 2.01k  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 2.01k  |         }  |  2762  |  |  |  2763  | 1.62k  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 1.62k  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 1.62k  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 6.35k  |         for (const auto& id : addModuleIDs) { |  2768  | 6.35k  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 6.35k  |         }  |  2770  | 1.62k  |     }  |  2771  | 1.62k  | #endif  |  2772  |  |  |  2773  | 1.62k  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 1.62k  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 9.99k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 8.37k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 8.37k  |         auto& module = operation.first;  |  2784  | 8.37k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 8.37k  |         if ( i > 0 ) { |  2787  | 6.78k  |             auto& prevModule = operations[i-1].first;  |  2788  | 6.78k  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 6.78k  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 430  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 430  |                 if ( curModifier.size() == 0 ) { |  2793  | 48.7k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 48.6k  |                         curModifier.push_back(1);  |  2795  | 48.6k  |                     }  |  2796  | 335  |                 } else { |  2797  | 164k  |                     for (auto& c : curModifier) { |  2798  | 164k  |                         c++;  |  2799  | 164k  |                     }  |  2800  | 335  |                 }  |  2801  | 430  |             }  |  2802  | 6.78k  |         }  |  2803  |  |  |  2804  | 8.37k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 8.37k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 8.37k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 8.37k  |         if ( result.second != std::nullopt ) { |  2813  | 451  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 451  |         }  |  2820  |  |  |  2821  | 8.37k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 8.37k  |         if ( options.disableTests == false ) { |  2830  | 8.37k  |             tests::test(op, result.second);  |  2831  | 8.37k  |         }  |  2832  |  |  |  2833  | 8.37k  |         postprocess(module, op, result);  |  2834  | 8.37k  |     }  |  2835  |  |  |  2836  | 1.62k  |     if ( options.noCompare == false ) { |  2837  | 1.58k  |         compare(operations, results, data, size);  |  2838  | 1.58k  |     }  |  2839  | 1.62k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G1_IsEq>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 189  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 189  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 189  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 418  |     do { |  2725  | 418  |         auto op = getOp(&parentDs, data, size);  |  2726  | 418  |         auto module = getModule(parentDs);  |  2727  | 418  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 418  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 418  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 8  |             break;  |  2736  | 8  |         }  |  2737  | 418  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 189  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 189  | #if 1  |  2745  | 189  |     { |  2746  | 189  |         std::set<uint64_t> moduleIDs;  |  2747  | 810  |         for (const auto& m : modules ) { |  2748  | 810  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 810  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 810  |             moduleIDs.insert(moduleID);  |  2756  | 810  |         }  |  2757  |  |  |  2758  | 189  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 356  |         for (const auto& op : operations) { |  2760  | 356  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 356  |         }  |  2762  |  |  |  2763  | 189  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 189  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 189  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 648  |         for (const auto& id : addModuleIDs) { |  2768  | 648  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 648  |         }  |  2770  | 189  |     }  |  2771  | 189  | #endif  |  2772  |  |  |  2773  | 189  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 189  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 1.19k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 1.00k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 1.00k  |         auto& module = operation.first;  |  2784  | 1.00k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 1.00k  |         if ( i > 0 ) { |  2787  | 842  |             auto& prevModule = operations[i-1].first;  |  2788  | 842  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 842  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 194  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 194  |                 if ( curModifier.size() == 0 ) { |  2793  | 42.0k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 41.9k  |                         curModifier.push_back(1);  |  2795  | 41.9k  |                     }  |  2796  | 112  |                 } else { |  2797  | 4.30k  |                     for (auto& c : curModifier) { |  2798  | 4.30k  |                         c++;  |  2799  | 4.30k  |                     }  |  2800  | 112  |                 }  |  2801  | 194  |             }  |  2802  | 842  |         }  |  2803  |  |  |  2804  | 1.00k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 1.00k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 1.00k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 1.00k  |         if ( result.second != std::nullopt ) { |  2813  | 260  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 260  |         }  |  2820  |  |  |  2821  | 1.00k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 1.00k  |         if ( options.disableTests == false ) { |  2830  | 1.00k  |             tests::test(op, result.second);  |  2831  | 1.00k  |         }  |  2832  |  |  |  2833  | 1.00k  |         postprocess(module, op, result);  |  2834  | 1.00k  |     }  |  2835  |  |  |  2836  | 189  |     if ( options.noCompare == false ) { |  2837  | 162  |         compare(operations, results, data, size);  |  2838  | 162  |     }  |  2839  | 189  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_Neg>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 2.30k  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 2.30k  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 2.30k  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 2.77k  |     do { |  2725  | 2.77k  |         auto op = getOp(&parentDs, data, size);  |  2726  | 2.77k  |         auto module = getModule(parentDs);  |  2727  | 2.77k  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 2.77k  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 2.77k  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 13  |             break;  |  2736  | 13  |         }  |  2737  | 2.77k  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 2.30k  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 2.30k  | #if 1  |  2745  | 2.30k  |     { |  2746  | 2.30k  |         std::set<uint64_t> moduleIDs;  |  2747  | 11.3k  |         for (const auto& m : modules ) { |  2748  | 11.3k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 11.3k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 11.3k  |             moduleIDs.insert(moduleID);  |  2756  | 11.3k  |         }  |  2757  |  |  |  2758  | 2.30k  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 2.70k  |         for (const auto& op : operations) { |  2760  | 2.70k  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 2.70k  |         }  |  2762  |  |  |  2763  | 2.30k  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 2.30k  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 2.30k  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 9.09k  |         for (const auto& id : addModuleIDs) { |  2768  | 9.09k  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 9.09k  |         }  |  2770  | 2.30k  |     }  |  2771  | 2.30k  | #endif  |  2772  |  |  |  2773  | 2.30k  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 2.30k  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 14.1k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 11.7k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 11.7k  |         auto& module = operation.first;  |  2784  | 11.7k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 11.7k  |         if ( i > 0 ) { |  2787  | 9.52k  |             auto& prevModule = operations[i-1].first;  |  2788  | 9.52k  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 9.52k  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 427  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 427  |                 if ( curModifier.size() == 0 ) { |  2793  | 74.8k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 74.7k  |                         curModifier.push_back(1);  |  2795  | 74.7k  |                     }  |  2796  | 281  |                 } else { |  2797  | 61.8k  |                     for (auto& c : curModifier) { |  2798  | 61.8k  |                         c++;  |  2799  | 61.8k  |                     }  |  2800  | 281  |                 }  |  2801  | 427  |             }  |  2802  | 9.52k  |         }  |  2803  |  |  |  2804  | 11.7k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 11.7k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 11.7k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 11.7k  |         if ( result.second != std::nullopt ) { |  2813  | 4.81k  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 4.81k  |         }  |  2820  |  |  |  2821  | 11.7k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 11.7k  |         if ( options.disableTests == false ) { |  2830  | 11.7k  |             tests::test(op, result.second);  |  2831  | 11.7k  |         }  |  2832  |  |  |  2833  | 11.7k  |         postprocess(module, op, result);  |  2834  | 11.7k  |     }  |  2835  |  |  |  2836  | 2.30k  |     if ( options.noCompare == false ) { |  2837  | 2.27k  |         compare(operations, results, data, size);  |  2838  | 2.27k  |     }  |  2839  | 2.30k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Add>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 2.39k  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 2.39k  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 2.39k  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 2.99k  |     do { |  2725  | 2.99k  |         auto op = getOp(&parentDs, data, size);  |  2726  | 2.99k  |         auto module = getModule(parentDs);  |  2727  | 2.99k  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 2.99k  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 2.99k  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 12  |             break;  |  2736  | 12  |         }  |  2737  | 2.99k  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 2.39k  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 2.39k  | #if 1  |  2745  | 2.39k  |     { |  2746  | 2.39k  |         std::set<uint64_t> moduleIDs;  |  2747  | 11.7k  |         for (const auto& m : modules ) { |  2748  | 11.7k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 11.7k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 11.7k  |             moduleIDs.insert(moduleID);  |  2756  | 11.7k  |         }  |  2757  |  |  |  2758  | 2.39k  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 2.91k  |         for (const auto& op : operations) { |  2760  | 2.91k  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 2.91k  |         }  |  2762  |  |  |  2763  | 2.39k  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 2.39k  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 2.39k  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 9.42k  |         for (const auto& id : addModuleIDs) { |  2768  | 9.42k  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 9.42k  |         }  |  2770  | 2.39k  |     }  |  2771  | 2.39k  | #endif  |  2772  |  |  |  2773  | 2.39k  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 2.39k  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 14.7k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 12.3k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 12.3k  |         auto& module = operation.first;  |  2784  | 12.3k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 12.3k  |         if ( i > 0 ) { |  2787  | 9.98k  |             auto& prevModule = operations[i-1].first;  |  2788  | 9.98k  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 9.98k  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 559  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 559  |                 if ( curModifier.size() == 0 ) { |  2793  | 77.9k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 77.8k  |                         curModifier.push_back(1);  |  2795  | 77.8k  |                     }  |  2796  | 407  |                 } else { |  2797  | 315k  |                     for (auto& c : curModifier) { |  2798  | 315k  |                         c++;  |  2799  | 315k  |                     }  |  2800  | 407  |                 }  |  2801  | 559  |             }  |  2802  | 9.98k  |         }  |  2803  |  |  |  2804  | 12.3k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 12.3k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 12.3k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 12.3k  |         if ( result.second != std::nullopt ) { |  2813  | 2.67k  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 2.67k  |         }  |  2820  |  |  |  2821  | 12.3k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 12.3k  |         if ( options.disableTests == false ) { |  2830  | 12.3k  |             tests::test(op, result.second);  |  2831  | 12.3k  |         }  |  2832  |  |  |  2833  | 12.3k  |         postprocess(module, op, result);  |  2834  | 12.3k  |     }  |  2835  |  |  |  2836  | 2.39k  |     if ( options.noCompare == false ) { |  2837  | 2.35k  |         compare(operations, results, data, size);  |  2838  | 2.35k  |     }  |  2839  | 2.39k  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Mul>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 3.90k  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 3.90k  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 3.90k  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 4.46k  |     do { |  2725  | 4.46k  |         auto op = getOp(&parentDs, data, size);  |  2726  | 4.46k  |         auto module = getModule(parentDs);  |  2727  | 4.46k  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 4.46k  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 4.46k  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 16  |             break;  |  2736  | 16  |         }  |  2737  | 4.46k  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 3.90k  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 3.90k  | #if 1  |  2745  | 3.90k  |     { |  2746  | 3.90k  |         std::set<uint64_t> moduleIDs;  |  2747  | 19.3k  |         for (const auto& m : modules ) { |  2748  | 19.3k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 19.3k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 19.3k  |             moduleIDs.insert(moduleID);  |  2756  | 19.3k  |         }  |  2757  |  |  |  2758  | 3.90k  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 4.39k  |         for (const auto& op : operations) { |  2760  | 4.39k  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 4.39k  |         }  |  2762  |  |  |  2763  | 3.90k  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 3.90k  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 3.90k  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 15.4k  |         for (const auto& id : addModuleIDs) { |  2768  | 15.4k  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 15.4k  |         }  |  2770  | 3.90k  |     }  |  2771  | 3.90k  | #endif  |  2772  |  |  |  2773  | 3.90k  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 3.90k  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 23.7k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 19.8k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 19.8k  |         auto& module = operation.first;  |  2784  | 19.8k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 19.8k  |         if ( i > 0 ) { |  2787  | 16.0k  |             auto& prevModule = operations[i-1].first;  |  2788  | 16.0k  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 16.0k  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 522  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 522  |                 if ( curModifier.size() == 0 ) { |  2793  | 72.8k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 72.7k  |                         curModifier.push_back(1);  |  2795  | 72.7k  |                     }  |  2796  | 380  |                 } else { |  2797  | 189k  |                     for (auto& c : curModifier) { |  2798  | 189k  |                         c++;  |  2799  | 189k  |                     }  |  2800  | 380  |                 }  |  2801  | 522  |             }  |  2802  | 16.0k  |         }  |  2803  |  |  |  2804  | 19.8k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 19.8k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 19.8k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 19.8k  |         if ( result.second != std::nullopt ) { |  2813  | 4.12k  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 4.12k  |         }  |  2820  |  |  |  2821  | 19.8k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 19.8k  |         if ( options.disableTests == false ) { |  2830  | 19.8k  |             tests::test(op, result.second);  |  2831  | 19.8k  |         }  |  2832  |  |  |  2833  | 19.8k  |         postprocess(module, op, result);  |  2834  | 19.8k  |     }  |  2835  |  |  |  2836  | 3.90k  |     if ( options.noCompare == false ) { |  2837  | 3.87k  |         compare(operations, results, data, size);  |  2838  | 3.87k  |     }  |  2839  | 3.90k  | }  |  
 cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::BLS_G2_IsEq>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 216  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 216  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 216  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 466  |     do { |  2725  | 466  |         auto op = getOp(&parentDs, data, size);  |  2726  | 466  |         auto module = getModule(parentDs);  |  2727  | 466  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 466  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 466  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 7  |             break;  |  2736  | 7  |         }  |  2737  | 466  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 216  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 216  | #if 1  |  2745  | 216  |     { |  2746  | 216  |         std::set<uint64_t> moduleIDs;  |  2747  | 910  |         for (const auto& m : modules ) { |  2748  | 910  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 910  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 910  |             moduleIDs.insert(moduleID);  |  2756  | 910  |         }  |  2757  |  |  |  2758  | 216  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 390  |         for (const auto& op : operations) { |  2760  | 390  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 390  |         }  |  2762  |  |  |  2763  | 216  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 216  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 216  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 728  |         for (const auto& id : addModuleIDs) { |  2768  | 728  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 728  |         }  |  2770  | 216  |     }  |  2771  | 216  | #endif  |  2772  |  |  |  2773  | 216  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 216  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 1.33k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 1.11k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 1.11k  |         auto& module = operation.first;  |  2784  | 1.11k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 1.11k  |         if ( i > 0 ) { |  2787  | 936  |             auto& prevModule = operations[i-1].first;  |  2788  | 936  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 936  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 208  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 208  |                 if ( curModifier.size() == 0 ) { |  2793  | 62.0k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 61.9k  |                         curModifier.push_back(1);  |  2795  | 61.9k  |                     }  |  2796  | 121  |                 } else { |  2797  | 44.0k  |                     for (auto& c : curModifier) { |  2798  | 44.0k  |                         c++;  |  2799  | 44.0k  |                     }  |  2800  | 87  |                 }  |  2801  | 208  |             }  |  2802  | 936  |         }  |  2803  |  |  |  2804  | 1.11k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 1.11k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 1.11k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 1.11k  |         if ( result.second != std::nullopt ) { |  2813  | 169  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 169  |         }  |  2820  |  |  |  2821  | 1.11k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 1.11k  |         if ( options.disableTests == false ) { |  2830  | 1.11k  |             tests::test(op, result.second);  |  2831  | 1.11k  |         }  |  2832  |  |  |  2833  | 1.11k  |         postprocess(module, op, result);  |  2834  | 1.11k  |     }  |  2835  |  |  |  2836  | 216  |     if ( options.noCompare == false ) { |  2837  | 182  |         compare(operations, results, data, size);  |  2838  | 182  |     }  |  2839  | 216  | }  |  
 cryptofuzz::ExecutorBase<cryptofuzz::component::G2, cryptofuzz::operation::BLS_G2_Neg>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 2.07k  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 2.07k  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 2.07k  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 2.57k  |     do { |  2725  | 2.57k  |         auto op = getOp(&parentDs, data, size);  |  2726  | 2.57k  |         auto module = getModule(parentDs);  |  2727  | 2.57k  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 2.57k  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 2.57k  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 6  |             break;  |  2736  | 6  |         }  |  2737  | 2.57k  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 2.07k  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 2.07k  | #if 1  |  2745  | 2.07k  |     { |  2746  | 2.07k  |         std::set<uint64_t> moduleIDs;  |  2747  | 10.2k  |         for (const auto& m : modules ) { |  2748  | 10.2k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 10.2k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 10.2k  |             moduleIDs.insert(moduleID);  |  2756  | 10.2k  |         }  |  2757  |  |  |  2758  | 2.07k  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 2.50k  |         for (const auto& op : operations) { |  2760  | 2.50k  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 2.50k  |         }  |  2762  |  |  |  2763  | 2.07k  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 2.07k  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 2.07k  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 8.19k  |         for (const auto& id : addModuleIDs) { |  2768  | 8.19k  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 8.19k  |         }  |  2770  | 2.07k  |     }  |  2771  | 2.07k  | #endif  |  2772  |  |  |  2773  | 2.07k  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 2.07k  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 12.7k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 10.7k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 10.7k  |         auto& module = operation.first;  |  2784  | 10.7k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 10.7k  |         if ( i > 0 ) { |  2787  | 8.65k  |             auto& prevModule = operations[i-1].first;  |  2788  | 8.65k  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 8.65k  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 459  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 459  |                 if ( curModifier.size() == 0 ) { |  2793  | 34.8k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 34.8k  |                         curModifier.push_back(1);  |  2795  | 34.8k  |                     }  |  2796  | 391  |                 } else { |  2797  | 192k  |                     for (auto& c : curModifier) { |  2798  | 192k  |                         c++;  |  2799  | 192k  |                     }  |  2800  | 391  |                 }  |  2801  | 459  |             }  |  2802  | 8.65k  |         }  |  2803  |  |  |  2804  | 10.7k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 10.7k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 10.7k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 10.7k  |         if ( result.second != std::nullopt ) { |  2813  | 4.37k  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 4.37k  |         }  |  2820  |  |  |  2821  | 10.7k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 10.7k  |         if ( options.disableTests == false ) { |  2830  | 10.7k  |             tests::test(op, result.second);  |  2831  | 10.7k  |         }  |  2832  |  |  |  2833  | 10.7k  |         postprocess(module, op, result);  |  2834  | 10.7k  |     }  |  2835  |  |  |  2836  | 2.07k  |     if ( options.noCompare == false ) { |  2837  | 2.04k  |         compare(operations, results, data, size);  |  2838  | 2.04k  |     }  |  2839  | 2.07k  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<cryptofuzz::component::BignumPair, cryptofuzz::operation::BLS_G1_MultiExp>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const cryptofuzz::ExecutorBase<cryptofuzz::Buffer, cryptofuzz::operation::Misc>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const Line  | Count  | Source  |  2719  | 327  | void ExecutorBase<ResultType, OperationType>::Run(Datasource& parentDs, const uint8_t* data, const size_t size) const { |  2720  | 327  |     typename ExecutorBase<ResultType, OperationType>::ResultSet results;  |  2721  |  |  |  2722  | 327  |     std::vector< std::pair<std::shared_ptr<Module>, OperationType> > operations;  |  2723  |  |  |  2724  | 850  |     do { |  2725  | 850  |         auto op = getOp(&parentDs, data, size);  |  2726  | 850  |         auto module = getModule(parentDs);  |  2727  | 850  |         if ( module == nullptr ) { |  2728  | 0  |             continue;  |  2729  | 0  |         }  |  2730  |  |  |  2731  | 850  |         operations.push_back( {module, op} ); |  2732  |  |  |  2733  |  |         /* Limit number of operations per run to prevent time-outs */  |  2734  | 850  |         if ( operations.size() == OperationType::MaxOperations() ) { |  2735  | 17  |             break;  |  2736  | 17  |         }  |  2737  | 850  |     } while ( parentDs.Get<bool>() == true );  |  2738  |  |  |  2739  | 327  |     if ( operations.empty() == true ) { |  2740  | 0  |         return;  |  2741  | 0  |     }  |  2742  |  |  |  2743  |  |     /* Enable this to run every operation on every loaded module */  |  2744  | 327  | #if 1  |  2745  | 327  |     { |  2746  | 327  |         std::set<uint64_t> moduleIDs;  |  2747  | 1.49k  |         for (const auto& m : modules ) { |  2748  | 1.49k  |             const auto moduleID = m.first;  |  2749  |  |  |  2750  |  |             /* Skip if this is a disabled module */  |  2751  | 1.49k  |             if ( options.disableModules.HaveExplicit(moduleID) ) { |  2752  | 0  |                 continue;  |  2753  | 0  |             }  |  2754  |  |  |  2755  | 1.49k  |             moduleIDs.insert(moduleID);  |  2756  | 1.49k  |         }  |  2757  |  |  |  2758  | 327  |         std::set<uint64_t> operationModuleIDs;  |  2759  | 778  |         for (const auto& op : operations) { |  2760  | 778  |             operationModuleIDs.insert(op.first->ID);  |  2761  | 778  |         }  |  2762  |  |  |  2763  | 327  |         std::vector<uint64_t> addModuleIDs(moduleIDs.size());  |  2764  | 327  |         auto it = std::set_difference(moduleIDs.begin(), moduleIDs.end(), operationModuleIDs.begin(), operationModuleIDs.end(), addModuleIDs.begin());  |  2765  | 327  |         addModuleIDs.resize(it - addModuleIDs.begin());  |  2766  |  |  |  2767  | 1.19k  |         for (const auto& id : addModuleIDs) { |  2768  | 1.19k  |             operations.push_back({ modules.at(id), operations[0].second}); |  2769  | 1.19k  |         }  |  2770  | 327  |     }  |  2771  | 327  | #endif  |  2772  |  |  |  2773  | 327  |     if ( operations.size() < options.minModules ) { |  2774  | 0  |         return;  |  2775  | 0  |     }  |  2776  |  |  |  2777  | 327  |     if ( options.debug == true && !operations.empty() ) { |  2778  | 0  |         printf("Running:\n%s\n", operations[0].second.ToString().c_str()); |  2779  | 0  |     }  |  2780  | 2.30k  |     for (size_t i = 0; i < operations.size(); i++) { |  2781  | 1.97k  |         auto& operation = operations[i];  |  2782  |  |  |  2783  | 1.97k  |         auto& module = operation.first;  |  2784  | 1.97k  |         auto& op = operation.second;  |  2785  |  |  |  2786  | 1.97k  |         if ( i > 0 ) { |  2787  | 1.67k  |             auto& prevModule = operations[i-1].first;  |  2788  | 1.67k  |             auto& prevOp = operations[i].second;  |  2789  |  |  |  2790  | 1.67k  |             if ( prevModule == module && prevOp.modifier == op.modifier ) { |  2791  | 479  |                 auto& curModifier = op.modifier.GetVectorPtr();  |  2792  | 479  |                 if ( curModifier.size() == 0 ) { |  2793  | 69.7k  |                     for (size_t j = 0; j < 512; j++) { |  2794  | 69.6k  |                         curModifier.push_back(1);  |  2795  | 69.6k  |                     }  |  2796  | 343  |                 } else { |  2797  | 40.6k  |                     for (auto& c : curModifier) { |  2798  | 40.6k  |                         c++;  |  2799  | 40.6k  |                     }  |  2800  | 343  |                 }  |  2801  | 479  |             }  |  2802  | 1.67k  |         }  |  2803  |  |  |  2804  | 1.97k  |         if ( options.debug == true ) { |  2805  | 0  |             printf("modifier: %s\n", util::HexDump(op.modifier.Get()).c_str()); |  2806  | 0  |         }  |  2807  |  |  |  2808  | 1.97k  |         results.push_back( {module, std::move(callModule(module, op))} ); |  2809  |  |  |  2810  | 1.97k  |         const auto& result = results.back();  |  2811  |  |  |  2812  | 1.97k  |         if ( result.second != std::nullopt ) { |  2813  | 0  |             if ( options.jsonDumpFP != std::nullopt ) { |  2814  | 0  |                 nlohmann::json j;  |  2815  | 0  |                 j["operation"] = op.ToJSON();  |  2816  | 0  |                 j["result"] = util::ToJSON(*result.second);  |  2817  | 0  |                 fprintf(*options.jsonDumpFP, "%s\n", j.dump().c_str());  |  2818  | 0  |             }  |  2819  | 0  |         }  |  2820  |  |  |  2821  | 1.97k  |         if ( options.debug == true ) { |  2822  | 0  |             printf("Module %s result:\n\n%s\n\n", |  2823  | 0  |                     result.first->name.c_str(),  |  2824  | 0  |                     result.second == std::nullopt ?  |  2825  | 0  |                         "(empty)" :  |  2826  | 0  |                         util::ToString(*result.second).c_str());  |  2827  | 0  |         }  |  2828  |  |  |  2829  | 1.97k  |         if ( options.disableTests == false ) { |  2830  | 1.97k  |             tests::test(op, result.second);  |  2831  | 1.97k  |         }  |  2832  |  |  |  2833  | 1.97k  |         postprocess(module, op, result);  |  2834  | 1.97k  |     }  |  2835  |  |  |  2836  | 327  |     if ( options.noCompare == false ) { |  2837  | 299  |         compare(operations, results, data, size);  |  2838  | 299  |     }  |  2839  | 327  | }  |  
 Unexecuted instantiation: cryptofuzz::ExecutorBase<bool, cryptofuzz::operation::SR25519_Verify>::Run(fuzzing::datasource::Datasource&, unsigned char const*, unsigned long) const  | 
2840  |  |  | 
2841  |  | /* Explicit template instantiation */  | 
2842  |  | template class ExecutorBase<component::Digest, operation::Digest>;  | 
2843  |  | template class ExecutorBase<component::MAC, operation::HMAC>;  | 
2844  |  | template class ExecutorBase<component::MAC, operation::UMAC>;  | 
2845  |  | template class ExecutorBase<component::MAC, operation::CMAC>;  | 
2846  |  | template class ExecutorBase<component::Ciphertext, operation::SymmetricEncrypt>;  | 
2847  |  | template class ExecutorBase<component::Cleartext, operation::SymmetricDecrypt>;  | 
2848  |  | template class ExecutorBase<component::Key, operation::KDF_SCRYPT>;  | 
2849  |  | template class ExecutorBase<component::Key, operation::KDF_HKDF>;  | 
2850  |  | template class ExecutorBase<component::Key, operation::KDF_TLS1_PRF>;  | 
2851  |  | template class ExecutorBase<component::Key, operation::KDF_PBKDF>;  | 
2852  |  | template class ExecutorBase<component::Key, operation::KDF_PBKDF1>;  | 
2853  |  | template class ExecutorBase<component::Key, operation::KDF_PBKDF2>;  | 
2854  |  | template class ExecutorBase<component::Key, operation::KDF_ARGON2>;  | 
2855  |  | template class ExecutorBase<component::Key, operation::KDF_SSH>;  | 
2856  |  | template class ExecutorBase<component::Key, operation::KDF_X963>;  | 
2857  |  | template class ExecutorBase<component::Key, operation::KDF_BCRYPT>;  | 
2858  |  | template class ExecutorBase<component::Key, operation::KDF_SP_800_108>;  | 
2859  |  | template class ExecutorBase<component::Key3, operation::KDF_SRTP>;  | 
2860  |  | template class ExecutorBase<component::Key3, operation::KDF_SRTCP>;  | 
2861  |  | template class ExecutorBase<component::ECC_PublicKey, operation::ECC_PrivateToPublic>;  | 
2862  |  | template class ExecutorBase<bool, operation::ECC_ValidatePubkey>;  | 
2863  |  | template class ExecutorBase<component::ECC_KeyPair, operation::ECC_GenerateKeyPair>;  | 
2864  |  | template class ExecutorBase<component::ECCSI_Signature, operation::ECCSI_Sign>;  | 
2865  |  | template class ExecutorBase<component::ECDSA_Signature, operation::ECDSA_Sign>;  | 
2866  |  | template class ExecutorBase<component::ECGDSA_Signature, operation::ECGDSA_Sign>;  | 
2867  |  | template class ExecutorBase<component::ECRDSA_Signature, operation::ECRDSA_Sign>;  | 
2868  |  | template class ExecutorBase<component::Schnorr_Signature, operation::Schnorr_Sign>;  | 
2869  |  | template class ExecutorBase<bool, operation::ECCSI_Verify>;  | 
2870  |  | template class ExecutorBase<bool, operation::ECDSA_Verify>;  | 
2871  |  | template class ExecutorBase<bool, operation::ECGDSA_Verify>;  | 
2872  |  | template class ExecutorBase<bool, operation::ECRDSA_Verify>;  | 
2873  |  | template class ExecutorBase<bool, operation::Schnorr_Verify>;  | 
2874  |  | template class ExecutorBase<component::ECC_PublicKey, operation::ECDSA_Recover>;  | 
2875  |  | template class ExecutorBase<bool, operation::DSA_Verify>;  | 
2876  |  | template class ExecutorBase<component::DSA_Signature, operation::DSA_Sign>;  | 
2877  |  | template class ExecutorBase<component::DSA_Parameters, operation::DSA_GenerateParameters>;  | 
2878  |  | template class ExecutorBase<component::Bignum, operation::DSA_PrivateToPublic>;  | 
2879  |  | template class ExecutorBase<component::DSA_KeyPair, operation::DSA_GenerateKeyPair>;  | 
2880  |  | template class ExecutorBase<component::Secret, operation::ECDH_Derive>;  | 
2881  |  | template class ExecutorBase<component::Ciphertext, operation::ECIES_Encrypt>;  | 
2882  |  | template class ExecutorBase<component::Cleartext, operation::ECIES_Decrypt>;  | 
2883  |  | template class ExecutorBase<component::ECC_Point, operation::ECC_Point_Add>;  | 
2884  |  | template class ExecutorBase<component::ECC_Point, operation::ECC_Point_Sub>;  | 
2885  |  | template class ExecutorBase<component::ECC_Point, operation::ECC_Point_Mul>;  | 
2886  |  | template class ExecutorBase<component::ECC_Point, operation::ECC_Point_Neg>;  | 
2887  |  | template class ExecutorBase<component::ECC_Point, operation::ECC_Point_Dbl>;  | 
2888  |  | template class ExecutorBase<bool, operation::ECC_Point_Cmp>;  | 
2889  |  | template class ExecutorBase<component::DH_KeyPair, operation::DH_GenerateKeyPair>;  | 
2890  |  | template class ExecutorBase<component::Bignum, operation::DH_Derive>;  | 
2891  |  | template class ExecutorBase<component::Bignum, operation::BignumCalc>;  | 
2892  |  | template class ExecutorBase<component::Fp2, operation::BignumCalc_Fp2>;  | 
2893  |  | template class ExecutorBase<component::Fp12, operation::BignumCalc_Fp12>;  | 
2894  |  | template class ExecutorBase<component::BLS_PublicKey, operation::BLS_PrivateToPublic>;  | 
2895  |  | template class ExecutorBase<component::G2, operation::BLS_PrivateToPublic_G2>;  | 
2896  |  | template class ExecutorBase<component::BLS_Signature, operation::BLS_Sign>;  | 
2897  |  | template class ExecutorBase<bool, operation::BLS_Verify>;  | 
2898  |  | template class ExecutorBase<component::BLS_BatchSignature, operation::BLS_BatchSign>;  | 
2899  |  | template class ExecutorBase<bool, operation::BLS_BatchVerify>;  | 
2900  |  | template class ExecutorBase<component::G1, operation::BLS_Aggregate_G1>;  | 
2901  |  | template class ExecutorBase<component::G2, operation::BLS_Aggregate_G2>;  | 
2902  |  | template class ExecutorBase<component::Fp12, operation::BLS_Pairing>;  | 
2903  |  | template class ExecutorBase<component::Fp12, operation::BLS_MillerLoop>;  | 
2904  |  | template class ExecutorBase<component::Fp12, operation::BLS_FinalExp>;  | 
2905  |  | template class ExecutorBase<component::G1, operation::BLS_HashToG1>;  | 
2906  |  | template class ExecutorBase<component::G2, operation::BLS_HashToG2>;  | 
2907  |  | template class ExecutorBase<component::G1, operation::BLS_MapToG1>;  | 
2908  |  | template class ExecutorBase<component::G2, operation::BLS_MapToG2>;  | 
2909  |  | template class ExecutorBase<bool, operation::BLS_IsG1OnCurve>;  | 
2910  |  | template class ExecutorBase<bool, operation::BLS_IsG2OnCurve>;  | 
2911  |  | template class ExecutorBase<component::BLS_KeyPair, operation::BLS_GenerateKeyPair>;  | 
2912  |  | template class ExecutorBase<component::G1, operation::BLS_Decompress_G1>;  | 
2913  |  | template class ExecutorBase<component::Bignum, operation::BLS_Compress_G1>;  | 
2914  |  | template class ExecutorBase<component::G2, operation::BLS_Decompress_G2>;  | 
2915  |  | template class ExecutorBase<component::G1, operation::BLS_Compress_G2>;  | 
2916  |  | template class ExecutorBase<component::G1, operation::BLS_G1_Add>;  | 
2917  |  | template class ExecutorBase<component::G1, operation::BLS_G1_Mul>;  | 
2918  |  | template class ExecutorBase<bool, operation::BLS_G1_IsEq>;  | 
2919  |  | template class ExecutorBase<component::G1, operation::BLS_G1_Neg>;  | 
2920  |  | template class ExecutorBase<component::G2, operation::BLS_G2_Add>;  | 
2921  |  | template class ExecutorBase<component::G2, operation::BLS_G2_Mul>;  | 
2922  |  | template class ExecutorBase<bool, operation::BLS_G2_IsEq>;  | 
2923  |  | template class ExecutorBase<component::G2, operation::BLS_G2_Neg>;  | 
2924  |  | template class ExecutorBase<component::G1, operation::BLS_G1_MultiExp>;  | 
2925  |  | template class ExecutorBase<Buffer, operation::Misc>;  | 
2926  |  | template class ExecutorBase<bool, operation::SR25519_Verify>;  | 
2927  |  |  | 
2928  |  | } /* namespace cryptofuzz */  |