MCPcopy Create free account
hub / github.com/Bitcoin-ABC/bitcoin-abc / SignPSBTInput

Function SignPSBTInput

src/psbt.cpp:186–230  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

184}
185
186bool SignPSBTInput(const SigningProvider &provider,
187 PartiallySignedTransaction &psbt, int index,
188 SigHashType sighash, SignatureData *out_sigdata,
189 bool use_dummy) {
190 PSBTInput &input = psbt.inputs.at(index);
191 const CMutableTransaction &tx = *psbt.tx;
192
193 if (PSBTInputSigned(input)) {
194 return true;
195 }
196
197 // Fill SignatureData with input info
198 SignatureData sigdata;
199 input.FillSignatureData(sigdata);
200
201 // Get UTXO
202 CTxOut utxo;
203
204 if (input.utxo.IsNull()) {
205 return false;
206 }
207
208 utxo = input.utxo;
209
210 bool sig_complete{false};
211 if (use_dummy) {
212 sig_complete = ProduceSignature(provider, DUMMY_SIGNATURE_CREATOR,
213 utxo.scriptPubKey, sigdata);
214 } else {
215 MutableTransactionSignatureCreator creator(&tx, index, utxo.nValue,
216 sighash);
217 sig_complete =
218 ProduceSignature(provider, creator, utxo.scriptPubKey, sigdata);
219 }
220 input.FromSignatureData(sigdata);
221
222 // Fill in the missing info
223 if (out_sigdata != nullptr) {
224 out_sigdata->missing_pubkeys = sigdata.missing_pubkeys;
225 out_sigdata->missing_sigs = sigdata.missing_sigs;
226 out_sigdata->missing_redeem_script = sigdata.missing_redeem_script;
227 }
228
229 return sig_complete;
230}
231
232bool FinalizePSBT(PartiallySignedTransaction &psbtx) {
233 // Finalize input signatures -- in case we have partial signatures that add

Callers 4

FinalizePSBTFunction · 0.85
FillPSBTMethod · 0.85
utxoupdatepsbtFunction · 0.85
AnalyzePSBTFunction · 0.85

Calls 6

PSBTInputSignedFunction · 0.85
ProduceSignatureFunction · 0.85
atMethod · 0.80
FillSignatureDataMethod · 0.80
FromSignatureDataMethod · 0.80
IsNullMethod · 0.45

Tested by

no test coverage detected