if (type == TX_PUBKEY_DROP)
{
vector<valtype> vSolutions;
- if (!Solver(scriptPubKey, type, vSolutions))
- {
- out.push_back(Pair("keyVariant", HexStr(vSolutions[0])));
- out.push_back(Pair("R", HexStr(vSolutions[1])));
- }
- }
+ Solver(scriptPubKey, type, vSolutions);
+ out.push_back(Pair("keyVariant", HexStr(vSolutions[0])));
+ out.push_back(Pair("R", HexStr(vSolutions[1])));
- Array a;
- BOOST_FOREACH(const CTxDestination& addr, addresses)
- a.push_back(CBitcoinAddress(addr).ToString());
- out.push_back(Pair("addresses", a));
+ CMalleableKeyView view;
+ if (pwalletMain->CheckOwnership(CPubKey(vSolutions[0]), CPubKey(vSolutions[1]), view))
+ out.push_back(Pair("pubkeyPair", view.GetMalleablePubKey().ToString()));
+ }
+ else
+ {
+ Array a;
+ BOOST_FOREACH(const CTxDestination& addr, addresses)
+ a.push_back(CBitcoinAddress(addr).ToString());
+ out.push_back(Pair("addresses", a));
+ }
}
else
{
int nRequired = params[0].get_int();
const Array& keys = params[1].get_array();
- string strAccount;
// Gather public keys
if (nRequired < 1)