Do not expose SigVersion argument to IsMine

Only IsMine's internal code needs this, as part of a recursion into P2SH and P2WSH
scripts. The exposed functions always operate on actual scriptPubKeys and not on
redeemScripts or witness scripts.

Zcash: Rewrote this commit so that it instead adds an internal
SigVersion argument (which we didn't have because it was added to
support SegWit logic).

Co-authored-by: Jack Grigg <jack@z.cash>
This commit is contained in:
Pieter Wuille 2018-04-16 16:10:21 -07:00 committed by Jack Grigg
parent df00e51e3e
commit 030e173d98
No known key found for this signature in database
GPG Key ID: 9E8255172BBF9898
1 changed files with 13 additions and 8 deletions

View File

@ -29,13 +29,7 @@ unsigned int HaveKeys(const vector<valtype>& pubkeys, const CKeyStore& keystore)
return nResult;
}
isminetype IsMine(const CKeyStore &keystore, const CTxDestination& dest)
{
CScript script = GetScriptForDestination(dest);
return IsMine(keystore, script);
}
isminetype IsMine(const CKeyStore &keystore, const CScript& scriptPubKey)
static isminetype IsMineInner(const CKeyStore& keystore, const CScript& scriptPubKey, SigVersion sigversion)
{
vector<valtype> vSolutions;
txnouttype whichType;
@ -66,7 +60,7 @@ isminetype IsMine(const CKeyStore &keystore, const CScript& scriptPubKey)
CScriptID scriptID = CScriptID(uint160(vSolutions[0]));
CScript subscript;
if (keystore.GetCScript(scriptID, subscript)) {
isminetype ret = IsMine(keystore, subscript);
isminetype ret = IsMineInner(keystore, subscript, SigVersion::SIGVERSION_SPROUT);
if (ret == ISMINE_SPENDABLE)
return ret;
}
@ -94,3 +88,14 @@ isminetype IsMine(const CKeyStore &keystore, const CScript& scriptPubKey)
}
return ISMINE_NO;
}
isminetype IsMine(const CKeyStore& keystore, const CScript& scriptPubKey)
{
return IsMineInner(keystore, scriptPubKey, SigVersion::SIGVERSION_SPROUT);
}
isminetype IsMine(const CKeyStore& keystore, const CTxDestination& dest)
{
CScript script = GetScriptForDestination(dest);
return IsMine(keystore, script);
}