MCPcopy Create free account
hub / github.com/bitcoin/bitcoin / FromSignatureData

Method FromSignatureData

src/psbt.cpp:361–425  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

359}
360
361void PSBTInput::FromSignatureData(const SignatureData& sigdata)
362{
363 if (sigdata.complete) {
364 partial_sigs.clear();
365 hd_keypaths.clear();
366 redeem_script.clear();
367 witness_script.clear();
368
369 if (!sigdata.scriptSig.empty()) {
370 final_script_sig = sigdata.scriptSig;
371 }
372 if (!sigdata.scriptWitness.IsNull()) {
373 final_script_witness = sigdata.scriptWitness;
374 }
375 return;
376 }
377
378 partial_sigs.insert(sigdata.signatures.begin(), sigdata.signatures.end());
379 if (redeem_script.empty() && !sigdata.redeem_script.empty()) {
380 redeem_script = sigdata.redeem_script;
381 }
382 if (witness_script.empty() && !sigdata.witness_script.empty()) {
383 witness_script = sigdata.witness_script;
384 }
385 for (const auto& entry : sigdata.misc_pubkeys) {
386 hd_keypaths.emplace(entry.second);
387 }
388 if (!sigdata.taproot_key_path_sig.empty()) {
389 m_tap_key_sig = sigdata.taproot_key_path_sig;
390 }
391 for (const auto& [pubkey_leaf, sig] : sigdata.taproot_script_sigs) {
392 m_tap_script_sigs.emplace(pubkey_leaf, sig);
393 }
394 if (!sigdata.tr_spenddata.internal_key.IsNull()) {
395 m_tap_internal_key = sigdata.tr_spenddata.internal_key;
396 }
397 if (!sigdata.tr_spenddata.merkle_root.IsNull()) {
398 m_tap_merkle_root = sigdata.tr_spenddata.merkle_root;
399 }
400 for (const auto& [leaf_script, control_block] : sigdata.tr_spenddata.scripts) {
401 m_tap_scripts.emplace(leaf_script, control_block);
402 }
403 for (const auto& [pubkey, leaf_origin] : sigdata.taproot_misc_pubkeys) {
404 m_tap_bip32_paths.emplace(pubkey, leaf_origin);
405 }
406 m_musig2_participants.insert(sigdata.musig2_pubkeys.begin(), sigdata.musig2_pubkeys.end());
407 for (const auto& [agg_key_lh, pubnonces] : sigdata.musig2_pubnonces) {
408 m_musig2_pubnonces[agg_key_lh].insert(pubnonces.begin(), pubnonces.end());
409 }
410 for (const auto& [agg_key_lh, psigs] : sigdata.musig2_partial_sigs) {
411 m_musig2_partial_sigs[agg_key_lh].insert(psigs.begin(), psigs.end());
412 }
413 for (const auto& [hash, preimage] : sigdata.ripemd160_preimages) {
414 ripemd160_preimages.emplace(std::vector<unsigned char>(hash.begin(), hash.end()), preimage);
415 }
416 for (const auto& [hash, preimage] : sigdata.sha256_preimages) {
417 sha256_preimages.emplace(std::vector<unsigned char>(hash.begin(), hash.end()), preimage);
418 }

Callers 3

UpdatePSBTOutputFunction · 0.80
SignPSBTInputFunction · 0.80
FUZZ_TARGETFunction · 0.80

Calls 10

emplaceMethod · 0.80
GetTreeTuplesMethod · 0.80
clearMethod · 0.45
emptyMethod · 0.45
IsNullMethod · 0.45
insertMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
has_valueMethod · 0.45
HasScriptsMethod · 0.45

Tested by 1

FUZZ_TARGETFunction · 0.64