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

Function ProduceSignature

src/script/sign.cpp:198–233  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

196}
197
198bool ProduceSignature(const SigningProvider &provider,
199 const BaseSignatureCreator &creator,
200 const CScript &fromPubKey, SignatureData &sigdata) {
201 if (sigdata.complete) {
202 return true;
203 }
204
205 std::vector<valtype> result;
206 TxoutType whichType;
207 bool solved =
208 SignStep(provider, creator, fromPubKey, result, whichType, sigdata);
209 CScript subscript;
210
211 if (solved && whichType == TxoutType::SCRIPTHASH) {
212 // Solver returns the subscript that needs to be evaluated; the final
213 // scriptSig is the signatures from that and then the serialized
214 // subscript:
215 subscript = CScript(result[0].begin(), result[0].end());
216 sigdata.redeem_script = subscript;
217
218 solved = solved &&
219 SignStep(provider, creator, subscript, result, whichType,
220 sigdata) &&
221 whichType != TxoutType::SCRIPTHASH;
222 result.push_back(
223 std::vector<uint8_t>(subscript.begin(), subscript.end()));
224 }
225
226 sigdata.scriptSig = PushAll(result);
227
228 // Test solution
229 sigdata.complete =
230 solved && VerifyScript(sigdata.scriptSig, fromPubKey,
231 STANDARD_SCRIPT_VERIFY_FLAGS, creator.Checker());
232 return sigdata.complete;
233}
234
235namespace {
236class SignatureExtractorChecker final : public BaseSignatureChecker {

Callers 14

MutateTxSignFunction · 0.85
UpdatePSBTOutputFunction · 0.85
SignPSBTInputFunction · 0.85
CanProvideMethod · 0.85
DummySignInputMethod · 0.85
CalculateP2PKHInputSizeFunction · 0.85
SignSignatureFunction · 0.85
IsSolvableFunction · 0.85
SignTransactionFunction · 0.85
BOOST_FIXTURE_TEST_CASEFunction · 0.85
CombineSignaturesFunction · 0.85
CombineSignaturesFunction · 0.85

Calls 7

SignStepFunction · 0.85
CScriptClass · 0.70
PushAllFunction · 0.70
VerifyScriptFunction · 0.70
beginMethod · 0.45
endMethod · 0.45
push_backMethod · 0.45

Tested by 5

CalculateP2PKHInputSizeFunction · 0.68
BOOST_FIXTURE_TEST_CASEFunction · 0.68
CombineSignaturesFunction · 0.68
CombineSignaturesFunction · 0.68
FUZZ_TARGET_INITFunction · 0.68