Add scripts to importwallet RPC
This commit is contained in:
parent
b702ae812c
commit
ef0c730220
1 changed files with 45 additions and 33 deletions
|
@ -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)
|
|||
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)
|
|||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue