MCPcopy Create free account
hub / github.com/ElementsProject/elements / FUZZ_TARGET_INIT

Function FUZZ_TARGET_INIT

src/test/fuzz/script_sign.cpp:34–154  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

32}
33
34FUZZ_TARGET_INIT(script_sign, initialize_script_sign)
35{
36 FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
37 const std::vector<uint8_t> key = ConsumeRandomLengthByteVector(fuzzed_data_provider, 128);
38
39 {
40 CDataStream random_data_stream = ConsumeDataStream(fuzzed_data_provider);
41 std::map<CPubKey, KeyOriginInfo> hd_keypaths;
42 try {
43 DeserializeHDKeypaths(random_data_stream, key, hd_keypaths);
44 } catch (const std::ios_base::failure&) {
45 }
46 CDataStream serialized{SER_NETWORK, PROTOCOL_VERSION};
47 SerializeHDKeypaths(serialized, hd_keypaths, CompactSizeWriter(fuzzed_data_provider.ConsumeIntegral<uint8_t>()));
48 }
49
50 {
51 std::map<CPubKey, KeyOriginInfo> hd_keypaths;
52 LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
53 const std::optional<CPubKey> pub_key = ConsumeDeserializable<CPubKey>(fuzzed_data_provider);
54 if (!pub_key) {
55 break;
56 }
57 const std::optional<KeyOriginInfo> key_origin_info = ConsumeDeserializable<KeyOriginInfo>(fuzzed_data_provider);
58 if (!key_origin_info) {
59 break;
60 }
61 hd_keypaths[*pub_key] = *key_origin_info;
62 }
63 CDataStream serialized{SER_NETWORK, PROTOCOL_VERSION};
64 try {
65 SerializeHDKeypaths(serialized, hd_keypaths, CompactSizeWriter(fuzzed_data_provider.ConsumeIntegral<uint8_t>()));
66 } catch (const std::ios_base::failure&) {
67 }
68 std::map<CPubKey, KeyOriginInfo> deserialized_hd_keypaths;
69 try {
70 DeserializeHDKeypaths(serialized, key, hd_keypaths);
71 } catch (const std::ios_base::failure&) {
72 }
73 assert(hd_keypaths.size() >= deserialized_hd_keypaths.size());
74 }
75
76 {
77 SignatureData signature_data_1{ConsumeScript(fuzzed_data_provider)};
78 SignatureData signature_data_2{ConsumeScript(fuzzed_data_provider)};
79 signature_data_1.MergeSignatureData(signature_data_2);
80 }
81
82 FillableSigningProvider provider;
83 CKey k;
84 const std::vector<uint8_t> key_data = ConsumeRandomLengthByteVector(fuzzed_data_provider);
85 k.Set(key_data.begin(), key_data.end(), fuzzed_data_provider.ConsumeBool());
86 if (k.IsValid()) {
87 provider.AddKey(k);
88 }
89
90 {
91 const std::optional<CMutableTransaction> mutable_transaction = ConsumeDeserializable<CMutableTransaction>(fuzzed_data_provider);

Callers

nothing calls this directly

Calls 15

ConsumeDataStreamFunction · 0.85
DeserializeHDKeypathsFunction · 0.85
SerializeHDKeypathsFunction · 0.85
CompactSizeWriterClass · 0.85
ConsumeScriptFunction · 0.85
DataFromTransactionFunction · 0.85
UpdateTransactionFunction · 0.85
SignSignatureFunction · 0.85
ConsumeMoneyFunction · 0.85
ConsumeUInt160Function · 0.85
ConsumeUInt256Function · 0.85

Tested by

no test coverage detected