mirror of
https://github.com/oxen-io/oxen-core.git
synced 2023-12-14 02:22:56 +01:00
GET_SERVICE_KEYS
This commit is contained in:
parent
a16a2d3949
commit
133e022aca
|
@ -469,12 +469,11 @@ bool rpc_command_executor::show_status() {
|
|||
bool my_sn_registered = false, my_sn_staked = false, my_sn_active = false;
|
||||
uint16_t my_reason_all = 0, my_reason_any = 0;
|
||||
if (info["service_node"].get<bool>()) {
|
||||
GET_SERVICE_KEYS::response res{};
|
||||
|
||||
if (!invoke<GET_SERVICE_KEYS>({}, res, "Failed to retrieve service node keys"))
|
||||
auto maybe_service_keys = try_running([this] { return invoke<GET_SERVICE_KEYS>(json{}); }, "Failed to retrieve service node keys");
|
||||
if (!maybe_service_keys)
|
||||
return false;
|
||||
|
||||
my_sn_key = std::move(res.service_node_pubkey);
|
||||
my_sn_key = (*maybe_service_keys)["service_node_pubkey"];
|
||||
|
||||
auto maybe_sns = try_running([&] { return invoke<GET_SERVICE_NODES>(json{{"service_node_pubkeys", json::array({my_sn_key})}}); }, "Failed to retrieve service node info");
|
||||
if (maybe_sns) {
|
||||
|
@ -1890,15 +1889,17 @@ bool rpc_command_executor::pop_blocks(uint64_t num_blocks)
|
|||
|
||||
bool rpc_command_executor::print_sn_key()
|
||||
{
|
||||
GET_SERVICE_KEYS::response res{};
|
||||
|
||||
if (!invoke<GET_SERVICE_KEYS>({}, res, "Failed to retrieve service node keys"))
|
||||
auto maybe_service_keys = try_running([this] { return invoke<GET_SERVICE_KEYS>(json{}); }, "Failed to retrieve service node keys");
|
||||
if (!maybe_service_keys)
|
||||
return false;
|
||||
|
||||
auto my_sn_keys = *maybe_service_keys;
|
||||
|
||||
tools::success_msg_writer()
|
||||
<< "Service Node Public Key: " << res.service_node_pubkey
|
||||
<< "\n Ed25519 Public Key: " << res.service_node_ed25519_pubkey
|
||||
<< "\n X25519 Public Key: " << res.service_node_x25519_pubkey;
|
||||
<< "Service Node Public Key: " << my_sn_keys["service_node_pubkey"]
|
||||
<< "\n Ed25519 Public Key: " << my_sn_keys["service_node_ed25519_pubkey"]
|
||||
<< "\n X25519 Public Key: " << my_sn_keys["service_node_x25519_pubkey"];
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1944,10 +1945,6 @@ bool rpc_command_executor::prepare_registration(bool force_registration)
|
|||
return false;
|
||||
auto& hfinfo = *maybe_hf;
|
||||
|
||||
GET_SERVICE_KEYS::response kres{};
|
||||
if (!invoke<GET_SERVICE_KEYS>({}, kres, "Failed to retrieve service node keys"))
|
||||
return false;
|
||||
|
||||
if (!info.value("service_node", false))
|
||||
{
|
||||
tools::fail_msg_writer() << "Unable to prepare registration: this daemon is not running in --service-node mode";
|
||||
|
|
|
@ -2733,19 +2733,16 @@ namespace cryptonote::rpc {
|
|||
return res;
|
||||
}
|
||||
//------------------------------------------------------------------------------------------------------------------------------
|
||||
GET_SERVICE_KEYS::response core_rpc_server::invoke(GET_SERVICE_KEYS::request&& req, rpc_context context)
|
||||
void core_rpc_server::invoke(GET_SERVICE_KEYS& get_service_keys, rpc_context context)
|
||||
{
|
||||
GET_SERVICE_KEYS::response res{};
|
||||
|
||||
PERF_TIMER(on_get_service_node_key);
|
||||
|
||||
const auto& keys = m_core.get_service_keys();
|
||||
if (keys.pub)
|
||||
res.service_node_pubkey = tools::type_to_hex(keys.pub);
|
||||
res.service_node_ed25519_pubkey = tools::type_to_hex(keys.pub_ed25519);
|
||||
res.service_node_x25519_pubkey = tools::type_to_hex(keys.pub_x25519);
|
||||
res.status = STATUS_OK;
|
||||
return res;
|
||||
get_service_keys.response["service_node_pubkey"] = tools::type_to_hex(keys.pub);
|
||||
get_service_keys.response["service_node_ed25519_pubkey"] = tools::type_to_hex(keys.pub_ed25519);
|
||||
get_service_keys.response["service_node_x25519_pubkey"] = tools::type_to_hex(keys.pub_x25519);
|
||||
get_service_keys.response["status"] = STATUS_OK;
|
||||
return;
|
||||
}
|
||||
//------------------------------------------------------------------------------------------------------------------------------
|
||||
GET_SERVICE_PRIVKEYS::response core_rpc_server::invoke(GET_SERVICE_PRIVKEYS::request&& req, rpc_context context)
|
||||
|
|
|
@ -250,6 +250,7 @@ namespace cryptonote::rpc {
|
|||
void invoke(SETBANS& set_bans, rpc_context context);
|
||||
void invoke(GET_CHECKPOINTS& get_checkpoints, rpc_context context);
|
||||
void invoke(GET_STAKING_REQUIREMENT& get_staking_requirement, rpc_context context);
|
||||
void invoke(GET_SERVICE_KEYS& get_service_keys, rpc_context context);
|
||||
|
||||
// Deprecated Monero NIH binary endpoints:
|
||||
GET_ALT_BLOCKS_HASHES_BIN::response invoke(GET_ALT_BLOCKS_HASHES_BIN::request&& req, rpc_context context);
|
||||
|
@ -275,7 +276,6 @@ namespace cryptonote::rpc {
|
|||
GET_SERVICE_NODE_REGISTRATION_CMD_RAW::response invoke(GET_SERVICE_NODE_REGISTRATION_CMD_RAW::request&& req, rpc_context context);
|
||||
GET_SERVICE_NODE_REGISTRATION_CMD::response invoke(GET_SERVICE_NODE_REGISTRATION_CMD::request&& req, rpc_context context);
|
||||
GET_SERVICE_NODE_BLACKLISTED_KEY_IMAGES::response invoke(GET_SERVICE_NODE_BLACKLISTED_KEY_IMAGES::request&& req, rpc_context context);
|
||||
GET_SERVICE_KEYS::response invoke(GET_SERVICE_KEYS::request&& req, rpc_context context);
|
||||
GET_SERVICE_PRIVKEYS::response invoke(GET_SERVICE_PRIVKEYS::request&& req, rpc_context context);
|
||||
ONS_NAMES_TO_OWNERS::response invoke(ONS_NAMES_TO_OWNERS::request&& req, rpc_context context);
|
||||
ONS_OWNERS_TO_NAMES::response invoke(ONS_OWNERS_TO_NAMES::request&& req, rpc_context context);
|
||||
|
|
|
@ -331,14 +331,6 @@ KV_SERIALIZE_MAP_CODE_BEGIN(GET_SERVICE_NODE_REGISTRATION_CMD::request)
|
|||
KV_SERIALIZE_MAP_CODE_END()
|
||||
|
||||
|
||||
KV_SERIALIZE_MAP_CODE_BEGIN(GET_SERVICE_KEYS::response)
|
||||
KV_SERIALIZE(service_node_pubkey)
|
||||
KV_SERIALIZE(service_node_ed25519_pubkey)
|
||||
KV_SERIALIZE(service_node_x25519_pubkey)
|
||||
KV_SERIALIZE(status)
|
||||
KV_SERIALIZE_MAP_CODE_END()
|
||||
|
||||
|
||||
KV_SERIALIZE_MAP_CODE_BEGIN(GET_SERVICE_PRIVKEYS::response)
|
||||
KV_SERIALIZE(service_node_privkey)
|
||||
KV_SERIALIZE(service_node_ed25519_privkey)
|
||||
|
|
|
@ -1710,25 +1710,21 @@ namespace cryptonote::rpc {
|
|||
using response = GET_SERVICE_NODE_REGISTRATION_CMD_RAW::response;
|
||||
};
|
||||
|
||||
OXEN_RPC_DOC_INTROSPECT
|
||||
// Get the service public keys of the queried daemon, encoded in hex. All three keys are used
|
||||
// when running as a service node; when running as a regular node only the x25519 key is regularly
|
||||
// used for some RPC and and node-to-SN communication requests.
|
||||
/// Get the service public keys of the queried daemon, encoded in hex. All three keys are used
|
||||
/// when running as a service node; when running as a regular node only the x25519 key is regularly
|
||||
/// used for some RPC and and node-to-SN communication requests.
|
||||
///
|
||||
/// Inputs: None
|
||||
///
|
||||
/// Output values available from a restricted/admin RPC endpoint:
|
||||
///
|
||||
/// - \p status General RPC status string. `"OK"` means everything looks good.
|
||||
/// - \p service_node_pubkey The queried daemon's service node public key. Will be empty if not running as a service node.
|
||||
/// - \p service_node_ed25519_pubkey The daemon's ed25519 auxiliary public key.
|
||||
/// - \p service_node_x25519_pubkey The daemon's x25519 auxiliary public key.
|
||||
struct GET_SERVICE_KEYS : RPC_COMMAND
|
||||
{
|
||||
static constexpr auto names() { return NAMES("get_service_keys", "get_service_node_key"); }
|
||||
|
||||
struct request : EMPTY {};
|
||||
|
||||
struct response
|
||||
{
|
||||
std::string service_node_pubkey; // The queried daemon's service node public key. Will be empty if not running as a service node.
|
||||
std::string service_node_ed25519_pubkey; // The daemon's ed25519 auxiliary public key.
|
||||
std::string service_node_x25519_pubkey; // The daemon's x25519 auxiliary public key.
|
||||
std::string status; // Generic RPC error code. "OK" is the success value.
|
||||
|
||||
KV_MAP_SERIALIZABLE
|
||||
};
|
||||
};
|
||||
|
||||
OXEN_RPC_DOC_INTROSPECT
|
||||
|
|
Loading…
Reference in a new issue