Changeset View
Changeset View
Standalone View
Standalone View
src/script/sign.cpp
Show First 20 Lines • Show All 44 Lines • ▼ Show 20 Lines | static bool GetCScript(const SigningProvider &provider, | ||||
// Look for scripts in SignatureData | // Look for scripts in SignatureData | ||||
if (CScriptID(sigdata.redeem_script) == scriptid) { | if (CScriptID(sigdata.redeem_script) == scriptid) { | ||||
script = sigdata.redeem_script; | script = sigdata.redeem_script; | ||||
return true; | return true; | ||||
} | } | ||||
return false; | return false; | ||||
} | } | ||||
static bool GetPubKey(const SigningProvider &provider, SignatureData &sigdata, | static bool GetPubKey(const SigningProvider &provider, | ||||
const CKeyID &address, CPubKey &pubkey) { | const SignatureData &sigdata, const CKeyID &address, | ||||
CPubKey &pubkey) { | |||||
// Look for pubkey in all partial sigs | // Look for pubkey in all partial sigs | ||||
const auto it = sigdata.signatures.find(address); | const auto it = sigdata.signatures.find(address); | ||||
if (it != sigdata.signatures.end()) { | if (it != sigdata.signatures.end()) { | ||||
pubkey = it->second.first; | pubkey = it->second.first; | ||||
return true; | return true; | ||||
} | } | ||||
// Look for pubkey in pubkey list | // Look for pubkey in pubkey list | ||||
const auto &pk_it = sigdata.misc_pubkeys.find(address); | const auto &pk_it = sigdata.misc_pubkeys.find(address); | ||||
if (pk_it != sigdata.misc_pubkeys.end()) { | if (pk_it != sigdata.misc_pubkeys.end()) { | ||||
pubkey = pk_it->second.first; | pubkey = pk_it->second.first; | ||||
return true; | return true; | ||||
} | } | ||||
// Query the underlying provider | // Query the underlying provider | ||||
if (provider.GetPubKey(address, pubkey)) { | return provider.GetPubKey(address, pubkey); | ||||
KeyOriginInfo info; | |||||
if (provider.GetKeyOrigin(address, info)) { | |||||
sigdata.misc_pubkeys.emplace( | |||||
address, std::make_pair(pubkey, std::move(info))); | |||||
} | |||||
return true; | |||||
} | |||||
return false; | |||||
} | } | ||||
static bool CreateSig(const BaseSignatureCreator &creator, | static bool CreateSig(const BaseSignatureCreator &creator, | ||||
SignatureData &sigdata, const SigningProvider &provider, | SignatureData &sigdata, const SigningProvider &provider, | ||||
std::vector<uint8_t> &sig_out, const CPubKey &pubkey, | std::vector<uint8_t> &sig_out, const CPubKey &pubkey, | ||||
const CScript &scriptcode) { | const CScript &scriptcode) { | ||||
CKeyID keyid = pubkey.GetID(); | CKeyID keyid = pubkey.GetID(); | ||||
const auto it = sigdata.signatures.find(keyid); | const auto it = sigdata.signatures.find(keyid); | ||||
▲ Show 20 Lines • Show All 429 Lines • Show Last 20 Lines |