| 389 | } |
| 390 | |
| 391 | void PSBTInput::FromSignatureData(const SignatureData& sigdata) |
| 392 | { |
| 393 | if (sigdata.complete) { |
| 394 | partial_sigs.clear(); |
| 395 | hd_keypaths.clear(); |
| 396 | redeem_script.clear(); |
| 397 | witness_script.clear(); |
| 398 | |
| 399 | if (!sigdata.scriptSig.empty()) { |
| 400 | final_script_sig = sigdata.scriptSig; |
| 401 | } |
| 402 | if (!sigdata.scriptWitness.IsNull()) { |
| 403 | final_script_witness = sigdata.scriptWitness; |
| 404 | } |
| 405 | return; |
| 406 | } |
| 407 | |
| 408 | partial_sigs.insert(sigdata.signatures.begin(), sigdata.signatures.end()); |
| 409 | if (redeem_script.empty() && !sigdata.redeem_script.empty()) { |
| 410 | redeem_script = sigdata.redeem_script; |
| 411 | } |
| 412 | if (witness_script.empty() && !sigdata.witness_script.empty()) { |
| 413 | witness_script = sigdata.witness_script; |
| 414 | } |
| 415 | for (const auto& entry : sigdata.misc_pubkeys) { |
| 416 | hd_keypaths.emplace(entry.second); |
| 417 | } |
| 418 | } |
| 419 | |
| 420 | bool PSBTInput::Merge(const PSBTInput& input) |
| 421 | { |