X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Frpcdump.cpp;h=48112a5b86768b2a529d995d2135c061fdbdf34f;hb=32b53bb54ee7591fd47dd1ee24e05b73337f40b5;hp=6e72688e8d7dc124fd489758745dd579e159d2a6;hpb=fbd44e84d5841867d36d295d4f347fd5e55d293f;p=novacoin.git diff --git a/src/rpcdump.cpp b/src/rpcdump.cpp index 6e72688..48112a5 100644 --- a/src/rpcdump.cpp +++ b/src/rpcdump.cpp @@ -62,18 +62,19 @@ Value importprivkey(const Array& params, bool fHelp) bool fCompressed; CSecret secret = vchSecret.GetSecret(fCompressed); key.SetSecret(secret, fCompressed); - CKeyID vchAddress = key.GetPubKey().GetID(); + CKeyID keyid = key.GetPubKey().GetID(); + CBitcoinAddress addr = CBitcoinAddress(keyid); { LOCK2(cs_main, pwalletMain->cs_wallet); pwalletMain->MarkDirty(); - pwalletMain->SetAddressBookName(vchAddress, strLabel); + pwalletMain->SetAddressBookName(addr, strLabel); // Don't throw error in case a key is already there - if (pwalletMain->HaveKey(vchAddress)) + if (pwalletMain->HaveKey(keyid)) return Value::null; - pwalletMain->mapKeyMetadata[vchAddress].nCreateTime = 1; + pwalletMain->mapKeyMetadata[addr].nCreateTime = 1; if (!pwalletMain->AddKey(key)) throw JSONRPCError(RPC_WALLET_ERROR, "Error adding key to wallet"); @@ -101,13 +102,14 @@ Value importaddress(const Array& params, bool fHelp) CScript script; CBitcoinAddress address(params[0].get_str()); if (address.IsValid()) { - script.SetDestination(address.Get()); + if (address.IsPair()) + throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "It's senseless to import pubkey pair address."); + script.SetAddress(address); } else if (IsHex(params[0].get_str())) { std::vector data(ParseHex(params[0].get_str())); script = CScript(data.begin(), data.end()); - } else { + } else throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid Novacoin address or script"); - } string strLabel = ""; if (params.size() > 1) @@ -130,7 +132,7 @@ Value importaddress(const Array& params, bool fHelp) pwalletMain->MarkDirty(); if (address.IsValid()) - pwalletMain->SetAddressBookName(address.Get(), strLabel); + pwalletMain->SetAddressBookName(address, strLabel); if (!pwalletMain->AddWatchOnly(script)) throw JSONRPCError(RPC_WALLET_ERROR, "Error adding address to wallet"); @@ -161,13 +163,14 @@ Value removeaddress(const Array& params, bool fHelp) CBitcoinAddress address(params[0].get_str()); if (address.IsValid()) { - script.SetDestination(address.Get()); + if (address.IsPair()) + throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Pubkey pair addresses aren't supported."); + script.SetAddress(address); } else if (IsHex(params[0].get_str())) { std::vector data(ParseHex(params[0].get_str())); script = CScript(data.begin(), data.end()); - } else { + } else throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid Bitcoin address or script"); - } if (::IsMine(*pwalletMain, script) == MINE_SPENDABLE) throw JSONRPCError(RPC_WALLET_ERROR, "The wallet contains the private key for this address or script - can't remove it"); @@ -282,7 +285,7 @@ Value importmalleablekey(const Array& params, bool fHelp) if (fSuccess) { - fSuccess = pwalletMain->AddMalleableKey(mKey); + fSuccess = pwalletMain->AddKey(mKey); result.push_back(Pair("Successful", fSuccess)); result.push_back(Pair("Address", CBitcoinAddress(mKey.GetMalleablePubKey()).ToString())); result.push_back(Pair("KeyView", CMalleableKeyView(mKey).ToString()));