xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
xrpld
rpc
handlers
admin
status
ValidatorInfo.cpp
1
// Copyright (c) 2019 Dev Null Productions
2
3
#include <xrpld/app/main/Application.h>
4
#include <xrpld/rpc/Context.h>
5
6
#include <xrpl/basics/base64.h>
7
#include <xrpl/json/json_value.h>
8
#include <xrpl/protocol/ErrorCodes.h>
9
#include <xrpl/protocol/PublicKey.h>
10
#include <xrpl/protocol/jss.h>
11
#include <xrpl/protocol/tokens.h>
12
13
namespace
xrpl
{
14
json::Value
15
doValidatorInfo
(
rpc::JsonContext
& context)
16
{
17
// return error if not configured as validator
18
auto
const
validationPK = context.
app
.
getValidationPublicKey
();
19
if
(!validationPK)
20
return
rpc::notValidatorError
();
21
22
json::Value
ret;
23
24
// assume validationPK is ephemeral key, get master key
25
auto
const
mk = context.
app
.
getValidatorManifests
().
getMasterKey
(*validationPK);
26
ret[jss::master_key] =
toBase58
(
TokenType::NodePublic
, mk);
27
28
// validationPK is master key, this implies that there is no ephemeral
29
// key, no manifest, hence return
30
if
(mk == validationPK)
31
return
ret;
32
33
ret[jss::ephemeral_key] =
toBase58
(
TokenType::NodePublic
, *validationPK);
34
35
if
(
auto
const
manifest = context.
app
.
getValidatorManifests
().
getManifest
(mk))
36
ret[jss::manifest] =
base64Encode
(*manifest);
37
38
if
(
auto
const
seq = context.
app
.
getValidatorManifests
().
getSequence
(mk))
39
ret[jss::seq] = *seq;
40
41
if
(
auto
const
domain = context.
app
.
getValidatorManifests
().
getDomain
(mk))
42
ret[jss::domain] = *domain;
43
44
return
ret;
45
}
46
}
// namespace xrpl
json::Value
Represents a JSON value.
Definition
json_value.h:117
xrpl::Application::getValidationPublicKey
virtual std::optional< PublicKey const > getValidationPublicKey() const =0
xrpl::ManifestCache::getDomain
std::optional< std::string > getDomain(PublicKey const &pk) const
Returns domain claimed by a given public key.
Definition
libxrpl/server/Manifest.cpp:348
xrpl::ManifestCache::getMasterKey
PublicKey getMasterKey(PublicKey const &pk) const
Returns ephemeral signing key's master public key.
Definition
libxrpl/server/Manifest.cpp:325
xrpl::ManifestCache::getManifest
std::optional< std::string > getManifest(PublicKey const &pk) const
Returns manifest corresponding to a given public key.
Definition
libxrpl/server/Manifest.cpp:360
xrpl::ManifestCache::getSequence
std::optional< std::uint32_t > getSequence(PublicKey const &pk) const
Returns master key's current manifest sequence.
Definition
libxrpl/server/Manifest.cpp:336
xrpl::ServiceRegistry::getValidatorManifests
virtual ManifestCache & getValidatorManifests()=0
xrpl::rpc::notValidatorError
json::Value notValidatorError()
Definition
ErrorCodes.h:321
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::toBase58
std::string toBase58(AccountID const &v)
Convert AccountID to base58 checked string.
Definition
AccountID.cpp:95
xrpl::base64Encode
std::string base64Encode(std::uint8_t const *data, std::size_t len)
Definition
libxrpl/basics/base64.cpp:190
xrpl::TokenType::NodePublic
@ NodePublic
Definition
tokens.h:21
xrpl::doValidatorInfo
json::Value doValidatorInfo(rpc::JsonContext &context)
Definition
ValidatorInfo.cpp:15
xrpl::rpc::Context::app
Application & app
Definition
Context.h:29
xrpl::rpc::JsonContext
Definition
Context.h:41
Generated by
1.17.0