X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Frpcdump.cpp;h=bb877bf1efa8ceaea01a77bba7bdde54965a6ac0;hb=40530c08006088e6f610063f1c49428aa0b272f6;hp=94eaad2674c405c3e2598d7194dbf29edf921b3e;hpb=db1eaec482383385156b3e7cb6b2baa9454975f0;p=novacoin.git diff --git a/src/rpcdump.cpp b/src/rpcdump.cpp index 94eaad2..bb877bf 100644 --- a/src/rpcdump.cpp +++ b/src/rpcdump.cpp @@ -217,7 +217,7 @@ Value dumpprivkey(const Array& params, bool fHelp) CBitcoinAddress address; if (!address.SetString(strAddress)) throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid NovaCoin address"); - if (fWalletUnlockMintOnly) // ppcoin: no dumpprivkey in mint-only mode + if (fWalletUnlockMintOnly) throw JSONRPCError(RPC_WALLET_UNLOCK_NEEDED, "Wallet is unlocked for minting only."); CKeyID keyID; if (!address.GetKeyID(keyID)) @@ -229,6 +229,35 @@ Value dumpprivkey(const Array& params, bool fHelp) return CBitcoinSecret(vchSecret, fCompressed).ToString(); } +Value dumppem(const Array& params, bool fHelp) +{ + if (fHelp || params.size() != 3) + throw runtime_error( + "dumppem \n" + "Dump the key pair corresponding to and store it as encrypted PEM file." + + HelpRequiringPassphrase()); + + EnsureWalletIsUnlocked(); + + string strAddress = params[0].get_str(); + SecureString strPassKey; + strPassKey.reserve(100); + strPassKey = params[2].get_str().c_str(); + + CBitcoinAddress address; + if (!address.SetString(strAddress)) + throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid NovaCoin address"); + if (fWalletUnlockMintOnly) + throw JSONRPCError(RPC_WALLET_UNLOCK_NEEDED, "Wallet is unlocked for minting only."); + CKeyID keyID; + if (!address.GetKeyID(keyID)) + throw JSONRPCError(RPC_TYPE_ERROR, "Address does not refer to a key"); + if (!pwalletMain->GetPEM(keyID, params[1].get_str(), strPassKey)) + throw JSONRPCError(RPC_WALLET_ERROR, "Error dumping key pair to file"); + + return Value::null; +} + Value dumpwallet(const Array& params, bool fHelp) { if (fHelp || params.size() != 1) @@ -285,7 +314,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()));