|
|
|
@ -500,8 +500,7 @@ UniValue importwallet(const JSONRPCRequest& request)
@@ -500,8 +500,7 @@ UniValue importwallet(const JSONRPCRequest& request)
|
|
|
|
|
if (vstr.size() < 2) |
|
|
|
|
continue; |
|
|
|
|
CBitcoinSecret vchSecret; |
|
|
|
|
if (!vchSecret.SetString(vstr[0])) |
|
|
|
|
continue; |
|
|
|
|
if (vchSecret.SetString(vstr[0])) { |
|
|
|
|
CKey key = vchSecret.GetKey(); |
|
|
|
|
CPubKey pubkey = key.GetPubKey(); |
|
|
|
|
assert(key.VerifyPubKey(pubkey)); |
|
|
|
@ -534,6 +533,19 @@ UniValue importwallet(const JSONRPCRequest& request)
@@ -534,6 +533,19 @@ UniValue importwallet(const JSONRPCRequest& request)
|
|
|
|
|
if (fLabel) |
|
|
|
|
pwallet->SetAddressBook(keyid, strLabel, "receive"); |
|
|
|
|
nTimeBegin = std::min(nTimeBegin, nTime); |
|
|
|
|
} else if(IsHex(vstr[0])) { |
|
|
|
|
std::vector<unsigned char> vData(ParseHex(vstr[0])); |
|
|
|
|
CScript script = CScript(vData.begin(), vData.end()); |
|
|
|
|
if (pwallet->HaveCScript(script)) { |
|
|
|
|
LogPrintf("Skipping import of %s (script already present)\n", vstr[0]); |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
if(!pwallet->AddCScript(script)) { |
|
|
|
|
LogPrintf("Error importing script %s\n", vstr[0]); |
|
|
|
|
fGood = false; |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
file.close(); |
|
|
|
|
pwallet->ShowProgress("", 100); // hide progress dialog in GUI
|
|
|
|
@ -542,7 +554,7 @@ UniValue importwallet(const JSONRPCRequest& request)
@@ -542,7 +554,7 @@ UniValue importwallet(const JSONRPCRequest& request)
|
|
|
|
|
pwallet->MarkDirty(); |
|
|
|
|
|
|
|
|
|
if (!fGood) |
|
|
|
|
throw JSONRPCError(RPC_WALLET_ERROR, "Error adding some keys to wallet"); |
|
|
|
|
throw JSONRPCError(RPC_WALLET_ERROR, "Error adding some keys/scripts to wallet"); |
|
|
|
|
|
|
|
|
|
return NullUniValue; |
|
|
|
|
} |
|
|
|
|