1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
crate::ix!();
//-------------------------------------------[.cpp/bitcoin/src/test/fuzz/signature_checker.cpp]
pub fn initialize_signature_checker() {
todo!();
/*
static const auto verify_handle = std::make_unique<ECCVerifyHandle>();
*/
}
pub struct FuzzedSignatureChecker {
fuzzed_data_provider: Rc<RefCell<FuzzedDataProvider>>,
}
impl BaseSignatureChecker for FuzzedSignatureChecker {
}
impl FuzzedSignatureChecker {
pub fn new(fuzzed_data_provider: &mut FuzzedDataProvider) -> Self {
todo!();
/*
: fuzzed_data_provider(fuzzed_data_provider),
*/
}
pub fn check_ecdsa_signature(&self,
script_sig: &Vec<u8>,
vch_pub_key: &Vec<u8>,
script_code: &Script,
sigversion: SigVersion) -> bool {
todo!();
/*
return m_fuzzed_data_provider.ConsumeBool();
*/
}
pub fn check_schnorr_signature(&self,
sig: &[u8],
pubkey: &[u8],
sigversion: SigVersion,
execdata: &ScriptExecutionData,
serror: Option<*mut ScriptError>) -> bool {
todo!();
/*
return m_fuzzed_data_provider.ConsumeBool();
*/
}
pub fn check_lock_time(&self, n_lock_time: &ScriptNum) -> bool {
todo!();
/*
return m_fuzzed_data_provider.ConsumeBool();
*/
}
pub fn check_sequence(&self, n_sequence: &ScriptNum) -> bool {
todo!();
/*
return m_fuzzed_data_provider.ConsumeBool();
*/
}
}
#[fuzz_test(initializer = "initialize_signature_checker")]
fn signature_checker() {
todo!();
/*
FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
const unsigned int flags = fuzzed_data_provider.ConsumeIntegral<unsigned int>();
const SigVersion sig_version = fuzzed_data_provider.PickValueInArray({SigVersion::BASE, SigVersion::WITNESS_V0});
const auto script_1 = ConsumeScript(fuzzed_data_provider, 65536);
const auto script_2 = ConsumeScript(fuzzed_data_provider, 65536);
std::vector<std::vector<unsigned char>> stack;
(c_void)EvalScript(stack, script_1, flags, FuzzedSignatureChecker(fuzzed_data_provider), sig_version, nullptr);
if (!IsValidFlagCombination(flags)) {
return;
}
(c_void)VerifyScript(script_1, script_2, nullptr, flags, FuzzedSignatureChecker(fuzzed_data_provider), nullptr);
*/
}