Browse Source

Improve error-checking and add isimported key

z_validateviewingkey
Duke Leto 6 years ago
committed by Jonathan "Duke" Leto
parent
commit
d5bc15366d
  1. 36
      src/wallet/rpcdump.cpp

36
src/wallet/rpcdump.cpp

@ -671,24 +671,32 @@ UniValue z_validateviewingkey(const UniValue& params, bool fHelp)
EnsureWalletIsUnlocked();
UniValue ret(UniValue::VOBJ);
string strVKey = params[0].get_str();
auto viewingkey = DecodeViewingKey(strVKey);
// TODO: Add Sapling support. For now, ensure we can freely convert.
assert(boost::get<libzcash::SproutViewingKey>(&viewingkey) != nullptr);
auto vkey = boost::get<libzcash::SproutViewingKey>(viewingkey);
auto addr = vkey.address();
bool isValid = IsValidViewingKey(viewingkey);
bool isMine = pwalletMain->HaveSpendingKey(addr);
UniValue ret(UniValue::VOBJ);
ret.push_back(Pair("isvalid", isValid));
if (!IsValidViewingKey(viewingkey)) {
ret.push_back(Pair("isvalid", false));
return ret;
}
if (isValid) {
ret.push_back(Pair("address", addr.GetHash().ToString() ));
ret.push_back(Pair("viewingkey", strVKey));
ret.push_back(Pair("ismine", isMine));
if( boost::get<libzcash::SproutViewingKey>(&viewingkey) != nullptr ) {
auto vkey = boost::get<libzcash::SproutViewingKey>(viewingkey);
auto addr = vkey.address();
bool isValid = IsValidViewingKey(viewingkey);
bool isMine = pwalletMain->HaveSpendingKey(addr);
bool isImported = pwalletMain->HaveViewingKey(addr) && !isMine;
ret.push_back(Pair("isvalid", isValid));
if (isValid) {
ret.push_back(Pair("address", EncodePaymentAddress(addr)));
ret.push_back(Pair("viewingkey", strVKey));
ret.push_back(Pair("ismine", isMine));
ret.push_back(Pair("isimported", isImported));
}
} else {
ret.push_back(Pair("isvalid", false));
}
return ret;

Loading…
Cancel
Save