sign_for RPC command (RIPD-182):

The sign_for RPC command returns a field suitable for
signing a multi-signed transaction.  Actual multi-signed
transactions are in the next commit.
This commit is contained in:
Scott Schurr
2015-02-06 15:55:37 -08:00
committed by Vinnie Falco
parent 64ebd64d2b
commit cf1638e6de
24 changed files with 1537 additions and 437 deletions

View File

@@ -420,6 +420,30 @@ private:
return jvRequest;
}
// sign_for
Json::Value parseSignFor (Json::Value const& jvParams)
{
Json::Value txJSON;
Json::Reader reader;
if ((4 == jvParams.size ())
&& reader.parse (jvParams[3u].asString (), txJSON))
{
if (txJSON.type () == Json::objectValue)
{
// Return SigningFor object for the submitted transaction.
Json::Value jvRequest;
jvRequest["signing_for"] = jvParams[0u].asString ();
jvRequest["account"] = jvParams[1u].asString ();
jvRequest["secret"] = jvParams[2u].asString ();
jvRequest["tx_json"] = txJSON;
return jvRequest;
}
}
return rpcError (rpcINVALID_PARAMS);
}
// json <command> <json>
Json::Value parseJson (Json::Value const& jvParams)
{
@@ -605,7 +629,7 @@ private:
{
Json::Value txJSON;
Json::Reader reader;
bool bOffline = 3 == jvParams.size () && jvParams[2u].asString () == "offline";
bool const bOffline = 3 == jvParams.size () && jvParams[2u].asString () == "offline";
if (1 == jvParams.size ())
{
@@ -831,6 +855,9 @@ public:
{ "random", &RPCParser::parseAsIs, 0, 0 },
{ "ripple_path_find", &RPCParser::parseRipplePathFind, 1, 2 },
{ "sign", &RPCParser::parseSignSubmit, 2, 3 },
#if RIPPLE_ENABLE_MULTI_SIGN
{ "sign_for", &RPCParser::parseSignFor, 4, 4 },
#endif // RIPPLE_ENABLE_MULTI_SIGN
{ "submit", &RPCParser::parseSignSubmit, 1, 3 },
{ "server_info", &RPCParser::parseAsIs, 0, 0 },
{ "server_state", &RPCParser::parseAsIs, 0, 0 },