Changeset View
Changeset View
Standalone View
Standalone View
src/script/sign.cpp
Show First 20 Lines • Show All 613 Lines • ▼ Show 20 Lines | FlatSigningProvider Merge(const FlatSigningProvider &a, | ||||
ret.scripts = a.scripts; | ret.scripts = a.scripts; | ||||
ret.scripts.insert(b.scripts.begin(), b.scripts.end()); | ret.scripts.insert(b.scripts.begin(), b.scripts.end()); | ||||
ret.pubkeys = a.pubkeys; | ret.pubkeys = a.pubkeys; | ||||
ret.pubkeys.insert(b.pubkeys.begin(), b.pubkeys.end()); | ret.pubkeys.insert(b.pubkeys.begin(), b.pubkeys.end()); | ||||
ret.keys = a.keys; | ret.keys = a.keys; | ||||
ret.keys.insert(b.keys.begin(), b.keys.end()); | ret.keys.insert(b.keys.begin(), b.keys.end()); | ||||
return ret; | return ret; | ||||
} | } | ||||
bool IsSolvable(const SigningProvider &provider, const CScript &script) { | |||||
// This check is to make sure that the script we created can actually be | |||||
// solved for and signed by us if we were to have the private keys. This is | |||||
// just to make sure that the script is valid and that, if found in a | |||||
// transaction, we would still accept and relay that transaction. | |||||
SignatureData sigs; | |||||
if (ProduceSignature(provider, DUMMY_SIGNATURE_CREATOR, script, sigs)) { | |||||
// VerifyScript check is just defensive, and should never fail. | |||||
bool verified = | |||||
VerifyScript(sigs.scriptSig, script, STANDARD_SCRIPT_VERIFY_FLAGS, | |||||
DUMMY_CHECKER); | |||||
assert(verified); | |||||
return true; | |||||
} | |||||
return false; | |||||
} |