40 std::map<CPubKey, KeyOriginInfo> hd_keypaths;
43 }
catch (
const std::ios_base::failure&) {
50 std::map<CPubKey, KeyOriginInfo> hd_keypaths;
52 const std::optional<CPubKey> pub_key = ConsumeDeserializable<CPubKey>(fuzzed_data_provider);
56 const std::optional<KeyOriginInfo> key_origin_info = ConsumeDeserializable<KeyOriginInfo>(fuzzed_data_provider);
57 if (!key_origin_info) {
60 hd_keypaths[*pub_key] = *key_origin_info;
65 }
catch (
const std::ios_base::failure&) {
67 std::map<CPubKey, KeyOriginInfo> deserialized_hd_keypaths;
70 }
catch (
const std::ios_base::failure&) {
72 assert(hd_keypaths.size() >= deserialized_hd_keypaths.size());
78 signature_data_1.MergeSignatureData(signature_data_2);
84 k.Set(key_data.begin(), key_data.end(), fuzzed_data_provider.
ConsumeBool());
90 const std::optional<CMutableTransaction> mutable_transaction = ConsumeDeserializable<CMutableTransaction>(fuzzed_data_provider);
91 const std::optional<CTxOut> tx_out = ConsumeDeserializable<CTxOut>(fuzzed_data_provider);
92 const unsigned int n_in = fuzzed_data_provider.
ConsumeIntegral<
unsigned int>();
93 if (mutable_transaction && tx_out && mutable_transaction->vin.size() > n_in) {
101 if (mutable_transaction) {
104 const std::optional<CMutableTransaction> opt_tx_to = ConsumeDeserializable<CMutableTransaction>(fuzzed_data_provider);
110 if (n_in < tx_to.
vin.size() && tx_to.
vin[n_in].prevout.n < tx_from.vout.size()) {
113 if (n_in < script_tx_to.
vin.size()) {
116 std::vector<unsigned char> vch_sig;
120 address =
k.GetPubKey().GetID();
127 std::map<COutPoint, Coin> coins;
129 const std::optional<COutPoint> outpoint = ConsumeDeserializable<COutPoint>(fuzzed_data_provider);
133 const std::optional<Coin> coin = ConsumeDeserializable<Coin>(fuzzed_data_provider);
137 coins[*outpoint] = *coin;
139 std::map<int, bilingual_str> input_errors;
void SelectParams(const std::string &network)
Sets the params returned by Params() to those for the given chain name.
static const std::string REGTEST
An encapsulated private key.
A reference to a CKey: the Hash160 of its serialized public key.
Serialized script, used inside transaction inputs and outputs.
The basic transaction that is broadcasted on the network and contained in blocks.
An input of a transaction.
Fillable signing provider that keeps keys in an address->secret map.
virtual bool AddKey(const CKey &key)
T PickValueInArray(const T(&array)[size])
A signature creator for transactions.
#define LIMITED_WHILE(condition, limit)
Can be used to limit a theoretically unbounded loop.
@ BASE
Bare scripts and BIP16 P2SH-wrapped redeemscripts.
@ WITNESS_V0
Witness v0 (P2WPKH and P2WSH); see BIP 141.
void SerializeHDKeypaths(Stream &s, const std::map< CPubKey, KeyOriginInfo > &hd_keypaths, CompactSizeWriter type)
void DeserializeHDKeypaths(Stream &s, const std::vector< unsigned char > &key, std::map< CPubKey, KeyOriginInfo > &hd_keypaths)
void SignTransaction(CMutableTransaction &mtx, const SigningProvider *keystore, const std::map< COutPoint, Coin > &coins, const UniValue &hashType, UniValue &result)
Sign a transaction with the given keystore and previous transactions.
FUZZ_TARGET_INIT(script_sign, initialize_script_sign)
void initialize_script_sign()
bool ProduceSignature(const SigningProvider &provider, const BaseSignatureCreator &creator, const CScript &fromPubKey, SignatureData &sigdata)
Produce a script signature using a generic signature creator.
void UpdateInput(CTxIn &input, const SignatureData &data)
bool SignSignature(const SigningProvider &provider, const CScript &fromPubKey, CMutableTransaction &txTo, unsigned int nIn, const CAmount &amount, int nHashType)
Produce a script signature for a transaction.
const BaseSignatureCreator & DUMMY_MAXIMUM_SIGNATURE_CREATOR
A signature creator that just produces 72-byte empty signatures.
SignatureData DataFromTransaction(const CMutableTransaction &tx, unsigned int nIn, const CTxOut &txout)
Extract signature data from a transaction input, and insert it.
const BaseSignatureCreator & DUMMY_SIGNATURE_CREATOR
A signature creator that just produces 71-byte empty signatures.
A mutable version of CTransaction.
void MergeSignatureData(SignatureData sigdata)
CScript ConsumeScript(FuzzedDataProvider &fuzzed_data_provider, const bool maybe_p2wsh) noexcept
CAmount ConsumeMoney(FuzzedDataProvider &fuzzed_data_provider, const std::optional< CAmount > &max) noexcept
CDataStream ConsumeDataStream(FuzzedDataProvider &fuzzed_data_provider, const std::optional< size_t > &max_length=std::nullopt) noexcept
std::vector< uint8_t > ConsumeRandomLengthByteVector(FuzzedDataProvider &fuzzed_data_provider, const std::optional< size_t > &max_length=std::nullopt) noexcept
uint160 ConsumeUInt160(FuzzedDataProvider &fuzzed_data_provider) noexcept
static const int PROTOCOL_VERSION
network protocol versioning