Browse Source
Add DummySignatureCreator which just creates zeroed sigs
v1.0.9-lin
Pieter Wuille
9 years ago
committed by
Jack Grigg
No known key found for this signature in database
GPG Key ID: 6A6914DAFBEA00DA
2 changed files with
44 additions and
0 deletions
-
src/script/sign.cpp
-
src/script/sign.h
|
|
@ -281,3 +281,39 @@ CScript CombineSignatures(const CScript& scriptPubKey, const BaseSignatureChecke |
|
|
|
|
|
|
|
return CombineSignatures(scriptPubKey, checker, txType, vSolutions, stack1, stack2); |
|
|
|
} |
|
|
|
|
|
|
|
namespace { |
|
|
|
/** Dummy signature checker which accepts all signatures. */ |
|
|
|
class DummySignatureChecker : public BaseSignatureChecker |
|
|
|
{ |
|
|
|
public: |
|
|
|
DummySignatureChecker() {} |
|
|
|
|
|
|
|
bool CheckSig(const std::vector<unsigned char>& scriptSig, const std::vector<unsigned char>& vchPubKey, const CScript& scriptCode) const |
|
|
|
{ |
|
|
|
return true; |
|
|
|
} |
|
|
|
}; |
|
|
|
const DummySignatureChecker dummyChecker; |
|
|
|
} |
|
|
|
|
|
|
|
const BaseSignatureChecker& DummySignatureCreator::Checker() const |
|
|
|
{ |
|
|
|
return dummyChecker; |
|
|
|
} |
|
|
|
|
|
|
|
bool DummySignatureCreator::CreateSig(std::vector<unsigned char>& vchSig, const CKeyID& keyid, const CScript& scriptCode) const |
|
|
|
{ |
|
|
|
// Create a dummy signature that is a valid DER-encoding
|
|
|
|
vchSig.assign(72, '\000'); |
|
|
|
vchSig[0] = 0x30; |
|
|
|
vchSig[1] = 69; |
|
|
|
vchSig[2] = 0x02; |
|
|
|
vchSig[3] = 33; |
|
|
|
vchSig[4] = 0x01; |
|
|
|
vchSig[4 + 33] = 0x02; |
|
|
|
vchSig[5 + 33] = 32; |
|
|
|
vchSig[6 + 33] = 0x01; |
|
|
|
vchSig[6 + 33 + 32] = SIGHASH_ALL; |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
@ -43,6 +43,14 @@ public: |
|
|
|
bool CreateSig(std::vector<unsigned char>& vchSig, const CKeyID& keyid, const CScript& scriptCode) const; |
|
|
|
}; |
|
|
|
|
|
|
|
/** A signature creator that just produces 72-byte empty signatyres. */ |
|
|
|
class DummySignatureCreator : public BaseSignatureCreator { |
|
|
|
public: |
|
|
|
DummySignatureCreator(const CKeyStore* keystoreIn) : BaseSignatureCreator(keystoreIn) {} |
|
|
|
const BaseSignatureChecker& Checker() const; |
|
|
|
bool CreateSig(std::vector<unsigned char>& vchSig, const CKeyID& keyid, const CScript& scriptCode) const; |
|
|
|
}; |
|
|
|
|
|
|
|
/** Produce a script signature using a generic signature creator. */ |
|
|
|
bool ProduceSignature(const BaseSignatureCreator& creator, const CScript& scriptPubKey, CScript& scriptSig); |
|
|
|
|
|
|
|