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);
*/
}