Refactor RPC wallet_seed.

This commit is contained in:
Arthur Britto
2012-12-03 17:52:30 -08:00
parent 500df6bd32
commit be48c6510c
3 changed files with 30 additions and 16 deletions

View File

@@ -245,7 +245,19 @@ Json::Value RPCParser::parseWalletPropose(const Json::Value& jvParams)
{ {
Json::Value jvRequest; Json::Value jvRequest;
jvRequest["passphrase"] = jvParams[0u].asString(); if (jvParams.size())
jvRequest["passphrase"] = jvParams[0u].asString();
return jvRequest;
}
// wallet_seed [<seed>|<passphrase>|<passkey>]
Json::Value RPCParser::parseWalletSeed(const Json::Value& jvParams)
{
Json::Value jvRequest;
if (jvParams.size())
jvRequest["secret"] = jvParams[0u].asString();
return jvRequest; return jvRequest;
} }
@@ -312,7 +324,7 @@ Json::Value RPCParser::parseCommand(std::string strMethod, Json::Value jvParams)
{ "wallet_accounts", &RPCParser::parseWalletAccounts, 1, 1 }, { "wallet_accounts", &RPCParser::parseWalletAccounts, 1, 1 },
{ "wallet_propose", &RPCParser::parseWalletPropose, 0, 1 }, { "wallet_propose", &RPCParser::parseWalletPropose, 0, 1 },
// { "wallet_seed", &RPCParser::doWalletSeed, 0, 1, false, false, optNone }, { "wallet_seed", &RPCParser::parseWalletSeed, 0, 1 },
// //
// { "login", &RPCParser::doLogin, 2, 2, true, false, optNone }, // { "login", &RPCParser::doLogin, 2, 2, true, false, optNone },

View File

@@ -23,6 +23,7 @@ protected:
Json::Value parseUnlDelete(const Json::Value& jvParams); Json::Value parseUnlDelete(const Json::Value& jvParams);
Json::Value parseWalletAccounts(const Json::Value& jvParams); Json::Value parseWalletAccounts(const Json::Value& jvParams);
Json::Value parseWalletPropose(const Json::Value& jvParams); Json::Value parseWalletPropose(const Json::Value& jvParams);
Json::Value parseWalletSeed(const Json::Value& jvParams);
public: public:
Json::Value parseCommand(std::string strMethod, Json::Value jvParams); Json::Value parseCommand(std::string strMethod, Json::Value jvParams);

View File

@@ -1401,39 +1401,40 @@ Json::Value RPCHandler::doWalletPropose(Json::Value jvRequest)
return obj; return obj;
} }
// wallet_seed [<seed>|<passphrase>|<passkey>] // {
Json::Value RPCHandler::doWalletSeed(Json::Value params) // secret: <string>
// }
Json::Value RPCHandler::doWalletSeed(Json::Value jvRequest)
{ {
RippleAddress naSeed; RippleAddress raSeed;
bool bSecret = jvRequest.isMember("secret");
if (params.size() if (bSecret && !raSeed.setSeedGeneric(jvRequest["secret"].asString()))
&& !naSeed.setSeedGeneric(params[0u].asString()))
{ {
return rpcError(rpcBAD_SEED); return rpcError(rpcBAD_SEED);
} }
else else
{ {
RippleAddress naAccount; RippleAddress raAccount;
if (!params.size()) if (!bSecret)
{ {
naSeed.setSeedRandom(); raSeed.setSeedRandom();
} }
RippleAddress naGenerator = RippleAddress::createGeneratorPublic(naSeed); RippleAddress raGenerator = RippleAddress::createGeneratorPublic(raSeed);
naAccount.setAccountPublic(naGenerator, 0); raAccount.setAccountPublic(raGenerator, 0);
Json::Value obj(Json::objectValue); Json::Value obj(Json::objectValue);
obj["seed"] = naSeed.humanSeed(); obj["seed"] = raSeed.humanSeed();
obj["key"] = naSeed.humanSeed1751(); obj["key"] = raSeed.humanSeed1751();
return obj; return obj;
} }
} }
// TODO: for now this simply checks if this is the admin account // TODO: for now this simply checks if this is the admin account
// TODO: need to prevent them hammering this over and over // TODO: need to prevent them hammering this over and over
// TODO: maybe a better way is only allow admin from local host // TODO: maybe a better way is only allow admin from local host
@@ -2221,7 +2222,7 @@ Json::Value RPCHandler::doCommand(Json::Value& jvParams, int iRole)
{ "wallet_accounts", &RPCHandler::doWalletAccounts, -1, -1, false, false, optCurrent }, { "wallet_accounts", &RPCHandler::doWalletAccounts, -1, -1, false, false, optCurrent },
{ "wallet_propose", &RPCHandler::doWalletPropose, -1, -1, false, false, optNone }, { "wallet_propose", &RPCHandler::doWalletPropose, -1, -1, false, false, optNone },
{ "wallet_seed", &RPCHandler::doWalletSeed, 0, 1, false, false, optNone }, { "wallet_seed", &RPCHandler::doWalletSeed, -1, -1, false, false, optNone },
{ "login", &RPCHandler::doLogin, 2, 2, true, false, optNone }, { "login", &RPCHandler::doLogin, 2, 2, true, false, optNone },