CMalleableKeyView view;
if (pwalletMain->CheckOwnership(CPubKey(vSolutions[0]), CPubKey(vSolutions[1]), view))
- out.push_back(Pair("keyView", view.ToString()));
+ out.push_back(Pair("pubkeyPair", CBitcoinAddress(view.GetMalleablePubKey()).ToString()));
}
else
{
// Create output destination script
CScript scriptPubKey;
CBitcoinAddress address(s.name_);
- if (!address.IsValid())
+
+ if (address.IsValid())
{
- CMalleablePubKey mpk(s.name_);
- if (!mpk.IsValid())
- throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, string("Invalid output destination: ")+s.name_);
+ if (!address.IsPair())
+ {
+ scriptPubKey.SetDestination(address.Get());
+ if (setAddress.count(address))
+ throw JSONRPCError(RPC_INVALID_PARAMETER, string("Invalid parameter, duplicated address: ")+s.name_);
+ setAddress.insert(address);
+ }
+ else
+ {
+ CMalleablePubKey mpk;
+ if (!mpk.setvch(address.GetData()))
+ throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, string("Invalid output destination: ")+s.name_);
- CPubKey keyVariant, R;
- mpk.GetVariant(R, keyVariant);
- scriptPubKey.SetDestination(R, keyVariant);
+ CPubKey R, pubKeyVariant;
+ mpk.GetVariant(R, pubKeyVariant);
+ scriptPubKey.SetDestination(R, pubKeyVariant);
+ }
}
else
- {
- scriptPubKey.SetDestination(address.Get());
- if (setAddress.count(address))
- throw JSONRPCError(RPC_INVALID_PARAMETER, string("Invalid parameter, duplicated address: ")+s.name_);
- setAddress.insert(address);
- }
+ throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, string("Invalid output destination: ")+s.name_);
int64_t nAmount = AmountFromValue(s.value_);
int nRequired = params[0].get_int();
const Array& keys = params[1].get_array();
- string strAccount;
// Gather public keys
if (nRequired < 1)