Changeset View
Changeset View
Standalone View
Standalone View
src/script/sign.cpp
Show First 20 Lines • Show All 400 Lines • ▼ Show 20 Lines | bool CheckSig(const std::vector<uint8_t> &scriptSig, | ||||
const std::vector<uint8_t> &vchPubKey, | const std::vector<uint8_t> &vchPubKey, | ||||
const CScript &scriptCode, uint32_t flags) const override { | const CScript &scriptCode, uint32_t flags) const override { | ||||
return true; | return true; | ||||
} | } | ||||
}; | }; | ||||
const DummySignatureChecker DUMMY_CHECKER; | const DummySignatureChecker DUMMY_CHECKER; | ||||
class DummySignatureCreator final : public BaseSignatureCreator { | class DummySignatureCreator final : public BaseSignatureCreator { | ||||
private: | |||||
char m_r_len = 32; | |||||
char m_s_len = 32; | |||||
public: | public: | ||||
DummySignatureCreator() {} | DummySignatureCreator(char r_len, char s_len) | ||||
: m_r_len(r_len), m_s_len(s_len) {} | |||||
const BaseSignatureChecker &Checker() const override { | const BaseSignatureChecker &Checker() const override { | ||||
return DUMMY_CHECKER; | return DUMMY_CHECKER; | ||||
} | } | ||||
bool CreateSig(const SigningProvider &provider, | bool CreateSig(const SigningProvider &provider, | ||||
std::vector<uint8_t> &vchSig, const CKeyID &keyid, | std::vector<uint8_t> &vchSig, const CKeyID &keyid, | ||||
const CScript &scriptCode) const override { | const CScript &scriptCode) const override { | ||||
// Create a dummy signature that is a valid DER-encoding | // Create a dummy signature that is a valid DER-encoding | ||||
vchSig.assign(71, '\000'); | vchSig.assign(m_r_len + m_s_len + 7, '\000'); | ||||
vchSig[0] = 0x30; | vchSig[0] = 0x30; | ||||
vchSig[1] = 68; | vchSig[1] = m_r_len + m_s_len + 4; | ||||
vchSig[2] = 0x02; | vchSig[2] = 0x02; | ||||
vchSig[3] = 32; | vchSig[3] = m_r_len; | ||||
vchSig[4] = 0x01; | vchSig[4] = 0x01; | ||||
vchSig[4 + 32] = 0x02; | vchSig[4 + m_r_len] = 0x02; | ||||
vchSig[5 + 32] = 32; | vchSig[5 + m_r_len] = m_s_len; | ||||
vchSig[6 + 32] = 0x01; | vchSig[6 + m_r_len] = 0x01; | ||||
vchSig[6 + 32 + 32] = SIGHASH_ALL | SIGHASH_FORKID; | vchSig[6 + m_r_len + m_s_len] = SIGHASH_ALL | SIGHASH_FORKID; | ||||
return true; | return true; | ||||
} | } | ||||
}; | }; | ||||
template <typename M, typename K, typename V> | template <typename M, typename K, typename V> | ||||
bool LookupHelper(const M &map, const K &key, V &value) { | bool LookupHelper(const M &map, const K &key, V &value) { | ||||
auto it = map.find(key); | auto it = map.find(key); | ||||
if (it != map.end()) { | if (it != map.end()) { | ||||
value = it->second; | value = it->second; | ||||
return true; | return true; | ||||
} | } | ||||
return false; | return false; | ||||
} | } | ||||
} // namespace | } // namespace | ||||
const BaseSignatureCreator &DUMMY_SIGNATURE_CREATOR = DummySignatureCreator(); | const BaseSignatureCreator &DUMMY_SIGNATURE_CREATOR = | ||||
DummySignatureCreator(32, 32); | |||||
const BaseSignatureCreator &DUMMY_MAXIMUM_SIGNATURE_CREATOR = | |||||
DummySignatureCreator(33, 32); | |||||
const SigningProvider &DUMMY_SIGNING_PROVIDER = SigningProvider(); | const SigningProvider &DUMMY_SIGNING_PROVIDER = SigningProvider(); | ||||
bool PartiallySignedTransaction::IsNull() const { | bool PartiallySignedTransaction::IsNull() const { | ||||
return !tx && inputs.empty() && outputs.empty() && unknown.empty(); | return !tx && inputs.empty() && outputs.empty() && unknown.empty(); | ||||
} | } | ||||
void PartiallySignedTransaction::Merge(const PartiallySignedTransaction &psbt) { | void PartiallySignedTransaction::Merge(const PartiallySignedTransaction &psbt) { | ||||
for (size_t i = 0; i < inputs.size(); ++i) { | for (size_t i = 0; i < inputs.size(); ++i) { | ||||
▲ Show 20 Lines • Show All 140 Lines • Show Last 20 Lines |