diff options
author | Andrew Chow <achow101-github@achow101.com> | 2019-06-06 10:00:00 +0200 |
---|---|---|
committer | Andrew Chow <achow101-github@achow101.com> | 2019-06-19 18:06:30 -0400 |
commit | e61de6306fd89fe9aae90253062e7b1b20343f8a (patch) | |
tree | f777e92758b6e5bba1ce33c97889b0e19c1b9671 | |
parent | 7c611e20007bf5face34d33dffa26c8db67e29ec (diff) |
Change ismine to take a CWallet instead of CKeyStore
-rw-r--r-- | src/wallet/ismine.cpp | 11 | ||||
-rw-r--r-- | src/wallet/ismine.h | 6 | ||||
-rw-r--r-- | src/wallet/test/ismine_tests.cpp | 63 | ||||
-rwxr-xr-x | test/lint/lint-circular-dependencies.sh | 1 |
4 files changed, 51 insertions, 30 deletions
diff --git a/src/wallet/ismine.cpp b/src/wallet/ismine.cpp index c5aad5f27c..6138d4ae44 100644 --- a/src/wallet/ismine.cpp +++ b/src/wallet/ismine.cpp @@ -6,10 +6,9 @@ #include <wallet/ismine.h> #include <key.h> -#include <keystore.h> #include <script/script.h> #include <script/sign.h> - +#include <wallet/wallet.h> typedef std::vector<unsigned char> valtype; @@ -46,7 +45,7 @@ bool PermitsUncompressed(IsMineSigVersion sigversion) return sigversion == IsMineSigVersion::TOP || sigversion == IsMineSigVersion::P2SH; } -bool HaveKeys(const std::vector<valtype>& pubkeys, const CKeyStore& keystore) +bool HaveKeys(const std::vector<valtype>& pubkeys, const CWallet& keystore) { for (const valtype& pubkey : pubkeys) { CKeyID keyID = CPubKey(pubkey).GetID(); @@ -55,7 +54,7 @@ bool HaveKeys(const std::vector<valtype>& pubkeys, const CKeyStore& keystore) return true; } -IsMineResult IsMineInner(const CKeyStore& keystore, const CScript& scriptPubKey, IsMineSigVersion sigversion) +IsMineResult IsMineInner(const CWallet& keystore, const CScript& scriptPubKey, IsMineSigVersion sigversion) { IsMineResult ret = IsMineResult::NO; @@ -172,7 +171,7 @@ IsMineResult IsMineInner(const CKeyStore& keystore, const CScript& scriptPubKey, } // namespace -isminetype IsMine(const CKeyStore& keystore, const CScript& scriptPubKey) +isminetype IsMine(const CWallet& keystore, const CScript& scriptPubKey) { switch (IsMineInner(keystore, scriptPubKey, IsMineSigVersion::TOP)) { case IsMineResult::INVALID: @@ -186,7 +185,7 @@ isminetype IsMine(const CKeyStore& keystore, const CScript& scriptPubKey) assert(false); } -isminetype IsMine(const CKeyStore& keystore, const CTxDestination& dest) +isminetype IsMine(const CWallet& keystore, const CTxDestination& dest) { CScript script = GetScriptForDestination(dest); return IsMine(keystore, script); diff --git a/src/wallet/ismine.h b/src/wallet/ismine.h index e20008feed..41555fcb93 100644 --- a/src/wallet/ismine.h +++ b/src/wallet/ismine.h @@ -11,7 +11,7 @@ #include <stdint.h> #include <bitset> -class CKeyStore; +class CWallet; class CScript; /** IsMine() return codes */ @@ -28,8 +28,8 @@ enum isminetype : unsigned int /** used for bitflags of isminetype */ typedef uint8_t isminefilter; -isminetype IsMine(const CKeyStore& keystore, const CScript& scriptPubKey); -isminetype IsMine(const CKeyStore& keystore, const CTxDestination& dest); +isminetype IsMine(const CWallet& wallet, const CScript& scriptPubKey); +isminetype IsMine(const CWallet& wallet, const CTxDestination& dest); /** * Cachable amount subdivided into watchonly and spendable parts. diff --git a/src/wallet/test/ismine_tests.cpp b/src/wallet/test/ismine_tests.cpp index 37c33cbee0..0cae055676 100644 --- a/src/wallet/test/ismine_tests.cpp +++ b/src/wallet/test/ismine_tests.cpp @@ -3,12 +3,12 @@ // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include <key.h> -#include <keystore.h> #include <script/script.h> #include <script/script_error.h> #include <script/standard.h> #include <test/setup_common.h> #include <wallet/ismine.h> +#include <wallet/wallet.h> #include <boost/test/unit_test.hpp> @@ -27,13 +27,15 @@ BOOST_AUTO_TEST_CASE(ismine_standard) CKey uncompressedKey; uncompressedKey.MakeNewKey(false); CPubKey uncompressedPubkey = uncompressedKey.GetPubKey(); + std::unique_ptr<interfaces::Chain> chain = interfaces::MakeChain(); CScript scriptPubKey; isminetype result; // P2PK compressed { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); scriptPubKey = GetScriptForRawPubKey(pubkeys[0]); // Keystore does not have key @@ -48,7 +50,8 @@ BOOST_AUTO_TEST_CASE(ismine_standard) // P2PK uncompressed { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); scriptPubKey = GetScriptForRawPubKey(uncompressedPubkey); // Keystore does not have key @@ -63,7 +66,8 @@ BOOST_AUTO_TEST_CASE(ismine_standard) // P2PKH compressed { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); scriptPubKey = GetScriptForDestination(PKHash(pubkeys[0])); // Keystore does not have key @@ -78,7 +82,8 @@ BOOST_AUTO_TEST_CASE(ismine_standard) // P2PKH uncompressed { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); scriptPubKey = GetScriptForDestination(PKHash(uncompressedPubkey)); // Keystore does not have key @@ -93,7 +98,8 @@ BOOST_AUTO_TEST_CASE(ismine_standard) // P2SH { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); CScript redeemScript = GetScriptForDestination(PKHash(pubkeys[0])); scriptPubKey = GetScriptForDestination(ScriptHash(redeemScript)); @@ -115,7 +121,8 @@ BOOST_AUTO_TEST_CASE(ismine_standard) // (P2PKH inside) P2SH inside P2SH (invalid) { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); CScript redeemscript_inner = GetScriptForDestination(PKHash(pubkeys[0])); CScript redeemscript = GetScriptForDestination(ScriptHash(redeemscript_inner)); @@ -131,7 +138,8 @@ BOOST_AUTO_TEST_CASE(ismine_standard) // (P2PKH inside) P2SH inside P2WSH (invalid) { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); CScript redeemscript = GetScriptForDestination(PKHash(pubkeys[0])); CScript witnessscript = GetScriptForDestination(ScriptHash(redeemscript)); @@ -147,7 +155,8 @@ BOOST_AUTO_TEST_CASE(ismine_standard) // P2WPKH inside P2WSH (invalid) { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); CScript witnessscript = GetScriptForDestination(WitnessV0KeyHash(PKHash(pubkeys[0]))); scriptPubKey = GetScriptForDestination(WitnessV0ScriptHash(witnessscript)); @@ -161,7 +170,8 @@ BOOST_AUTO_TEST_CASE(ismine_standard) // (P2PKH inside) P2WSH inside P2WSH (invalid) { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); CScript witnessscript_inner = GetScriptForDestination(PKHash(pubkeys[0])); CScript witnessscript = GetScriptForDestination(WitnessV0ScriptHash(witnessscript_inner)); @@ -177,7 +187,8 @@ BOOST_AUTO_TEST_CASE(ismine_standard) // P2WPKH compressed { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); BOOST_CHECK(keystore.AddKey(keys[0])); scriptPubKey = GetScriptForDestination(WitnessV0KeyHash(PKHash(pubkeys[0]))); @@ -190,7 +201,8 @@ BOOST_AUTO_TEST_CASE(ismine_standard) // P2WPKH uncompressed { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); BOOST_CHECK(keystore.AddKey(uncompressedKey)); scriptPubKey = GetScriptForDestination(WitnessV0KeyHash(PKHash(uncompressedPubkey))); @@ -207,7 +219,8 @@ BOOST_AUTO_TEST_CASE(ismine_standard) // scriptPubKey multisig { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); scriptPubKey = GetScriptForMultisig(2, {uncompressedPubkey, pubkeys[1]}); @@ -236,7 +249,8 @@ BOOST_AUTO_TEST_CASE(ismine_standard) // P2SH multisig { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); BOOST_CHECK(keystore.AddKey(uncompressedKey)); BOOST_CHECK(keystore.AddKey(keys[1])); @@ -255,7 +269,8 @@ BOOST_AUTO_TEST_CASE(ismine_standard) // P2WSH multisig with compressed keys { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); BOOST_CHECK(keystore.AddKey(keys[0])); BOOST_CHECK(keystore.AddKey(keys[1])); @@ -279,7 +294,8 @@ BOOST_AUTO_TEST_CASE(ismine_standard) // P2WSH multisig with uncompressed key { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); BOOST_CHECK(keystore.AddKey(uncompressedKey)); BOOST_CHECK(keystore.AddKey(keys[1])); @@ -303,7 +319,8 @@ BOOST_AUTO_TEST_CASE(ismine_standard) // P2WSH multisig wrapped in P2SH { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); CScript witnessScript = GetScriptForMultisig(2, {pubkeys[0], pubkeys[1]}); CScript redeemScript = GetScriptForDestination(WitnessV0ScriptHash(witnessScript)); @@ -328,7 +345,8 @@ BOOST_AUTO_TEST_CASE(ismine_standard) // OP_RETURN { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); BOOST_CHECK(keystore.AddKey(keys[0])); scriptPubKey.clear(); @@ -340,7 +358,8 @@ BOOST_AUTO_TEST_CASE(ismine_standard) // witness unspendable { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); BOOST_CHECK(keystore.AddKey(keys[0])); scriptPubKey.clear(); @@ -352,7 +371,8 @@ BOOST_AUTO_TEST_CASE(ismine_standard) // witness unknown { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); BOOST_CHECK(keystore.AddKey(keys[0])); scriptPubKey.clear(); @@ -364,7 +384,8 @@ BOOST_AUTO_TEST_CASE(ismine_standard) // Nonstandard { - CBasicKeyStore keystore; + CWallet keystore(chain.get(), WalletLocation(), WalletDatabase::CreateDummy()); + LOCK(keystore.cs_wallet); BOOST_CHECK(keystore.AddKey(keys[0])); scriptPubKey.clear(); diff --git a/test/lint/lint-circular-dependencies.sh b/test/lint/lint-circular-dependencies.sh index 2701015c79..70cc16337e 100755 --- a/test/lint/lint-circular-dependencies.sh +++ b/test/lint/lint-circular-dependencies.sh @@ -30,6 +30,7 @@ EXPECTED_CIRCULAR_DEPENDENCIES=( "policy/fees -> txmempool -> validation -> policy/fees" "qt/guiutil -> qt/walletmodel -> qt/optionsmodel -> qt/guiutil" "txmempool -> validation -> validationinterface -> txmempool" + "wallet/ismine -> wallet/wallet -> wallet/ismine" ) EXIT_CODE=0 |