Browse Source

Remove not-used-anywhere scriptPrereq from SignSignature()

miguelfreitas
Gavin Andresen 13 years ago
parent
commit
d11a58a2d3
  1. 7
      src/script.cpp
  2. 2
      src/script.h

7
src/script.cpp

@ -1525,7 +1525,7 @@ bool VerifyScript(const CScript& scriptSig, const CScript& scriptPubKey, const C
} }
bool SignSignature(const CKeyStore &keystore, const CTransaction& txFrom, CTransaction& txTo, unsigned int nIn, int nHashType, CScript scriptPrereq) bool SignSignature(const CKeyStore &keystore, const CTransaction& txFrom, CTransaction& txTo, unsigned int nIn, int nHashType)
{ {
assert(nIn < txTo.vin.size()); assert(nIn < txTo.vin.size());
CTxIn& txin = txTo.vin[nIn]; CTxIn& txin = txTo.vin[nIn];
@ -1534,16 +1534,13 @@ bool SignSignature(const CKeyStore &keystore, const CTransaction& txFrom, CTrans
// Leave out the signature from the hash, since a signature can't sign itself. // Leave out the signature from the hash, since a signature can't sign itself.
// The checksig op will also drop the signatures from its hash. // The checksig op will also drop the signatures from its hash.
uint256 hash = SignatureHash(scriptPrereq + txout.scriptPubKey, txTo, nIn, nHashType); uint256 hash = SignatureHash(txout.scriptPubKey, txTo, nIn, nHashType);
if (!Solver(keystore, txout.scriptPubKey, hash, nHashType, txin.scriptSig)) if (!Solver(keystore, txout.scriptPubKey, hash, nHashType, txin.scriptSig))
return false; return false;
txin.scriptSig = scriptPrereq + txin.scriptSig;
// Test solution // Test solution
int nUnused = 0; int nUnused = 0;
if (scriptPrereq.empty())
if (!VerifyScript(txin.scriptSig, txout.scriptPubKey, txTo, nIn, nUnused, 0, true)) if (!VerifyScript(txin.scriptSig, txout.scriptPubKey, txTo, nIn, nUnused, 0, true))
return false; return false;

2
src/script.h

@ -574,7 +574,7 @@ bool IsStandard(const CScript& scriptPubKey);
bool IsMine(const CKeyStore& keystore, const CScript& scriptPubKey); bool IsMine(const CKeyStore& keystore, const CScript& scriptPubKey);
bool ExtractAddress(const CScript& scriptPubKey, CBitcoinAddress& addressRet); bool ExtractAddress(const CScript& scriptPubKey, CBitcoinAddress& addressRet);
bool ExtractAddresses(const CScript& scriptPubKey, txnouttype& typeRet, std::vector<CBitcoinAddress>& addressRet, int& nRequiredRet); bool ExtractAddresses(const CScript& scriptPubKey, txnouttype& typeRet, std::vector<CBitcoinAddress>& addressRet, int& nRequiredRet);
bool SignSignature(const CKeyStore& keystore, const CTransaction& txFrom, CTransaction& txTo, unsigned int nIn, int nHashType=SIGHASH_ALL, CScript scriptPrereq=CScript()); bool SignSignature(const CKeyStore& keystore, const CTransaction& txFrom, CTransaction& txTo, unsigned int nIn, int nHashType=SIGHASH_ALL);
bool VerifySignature(const CTransaction& txFrom, const CTransaction& txTo, unsigned int nIn, int& nSigOpCountRet, int nHashType=0, bool fStrictOpEval=true); bool VerifySignature(const CTransaction& txFrom, const CTransaction& txTo, unsigned int nIn, int& nSigOpCountRet, int nHashType=0, bool fStrictOpEval=true);
#endif #endif

Loading…
Cancel
Save