From 0c3255ead8132c9903aa3b62333460fc3ed67713 Mon Sep 17 00:00:00 2001 From: Jakob Lind Date: Tue, 5 Aug 2014 08:17:23 +0200 Subject: [PATCH] query_key command in wallet rpc. only support mnemonic as key_type currently --- src/wallet/wallet_rpc_server.cpp | 18 ++++++++++++++++ src/wallet/wallet_rpc_server.h | 4 ++++ src/wallet/wallet_rpc_server_commands_defs.h | 22 ++++++++++++++++++++ 3 files changed, 44 insertions(+) diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp index 063716a9e..26da8d434 100644 --- a/src/wallet/wallet_rpc_server.cpp +++ b/src/wallet/wallet_rpc_server.cpp @@ -403,4 +403,22 @@ namespace tools return true; } //------------------------------------------------------------------------------------------------------------------------------ + bool wallet_rpc_server::on_query_key(const wallet_rpc::COMMAND_RPC_QUERY_KEY::request& req, wallet_rpc::COMMAND_RPC_QUERY_KEY::response& res, epee::json_rpc::error& er, connection_context& cntx) + { + if (req.key_type.compare("mnemonic") == 0) + { + if (!m_wallet.get_seed(res.key)) + { + er.message = "The wallet is non-deterministic. Cannot display seed."; + return false; + } + } + else + { + er.message = "key_type " + req.key_type + " not found"; + return false; + } + + return true; + } } diff --git a/src/wallet/wallet_rpc_server.h b/src/wallet/wallet_rpc_server.h index 8fc6b092b..6f52e87ba 100644 --- a/src/wallet/wallet_rpc_server.h +++ b/src/wallet/wallet_rpc_server.h @@ -69,6 +69,7 @@ namespace tools MAP_JON_RPC_WE("get_payments", on_get_payments, wallet_rpc::COMMAND_RPC_GET_PAYMENTS) MAP_JON_RPC_WE("get_bulk_payments", on_get_bulk_payments, wallet_rpc::COMMAND_RPC_GET_BULK_PAYMENTS) MAP_JON_RPC_WE("incoming_transfers", on_incoming_transfers, wallet_rpc::COMMAND_RPC_INCOMING_TRANSFERS) + MAP_JON_RPC_WE("query_key", on_query_key, wallet_rpc::COMMAND_RPC_QUERY_KEY) END_JSON_RPC_MAP() END_URI_MAP2() @@ -85,6 +86,9 @@ namespace tools bool handle_command_line(const boost::program_options::variables_map& vm); + //json rpc v2 + bool on_query_key(const wallet_rpc::COMMAND_RPC_QUERY_KEY::request& req, wallet_rpc::COMMAND_RPC_QUERY_KEY::response& res, epee::json_rpc::error& er, connection_context& cntx); + wallet2& m_wallet; std::string m_port; std::string m_bind_ip; diff --git a/src/wallet/wallet_rpc_server_commands_defs.h b/src/wallet/wallet_rpc_server_commands_defs.h index 146e84cb2..48f8ec2a5 100644 --- a/src/wallet/wallet_rpc_server_commands_defs.h +++ b/src/wallet/wallet_rpc_server_commands_defs.h @@ -257,6 +257,28 @@ namespace wallet_rpc END_KV_SERIALIZE_MAP() }; }; + + //JSON RPC V2 + struct COMMAND_RPC_QUERY_KEY + { + struct request + { + std::string key_type; + + BEGIN_KV_SERIALIZE_MAP() + KV_SERIALIZE(key_type) + END_KV_SERIALIZE_MAP() + }; + + struct response + { + std::string key; + + BEGIN_KV_SERIALIZE_MAP() + KV_SERIALIZE(key) + END_KV_SERIALIZE_MAP() + }; + }; } }