rippled
Loading...
Searching...
No Matches
ValidatorInfo.cpp
1// Copyright (c) 2019 Dev Null Productions
2
3#include <xrpld/app/main/Application.h>
4#include <xrpld/app/misc/ValidatorKeys.h>
5#include <xrpld/rpc/Context.h>
6
7#include <xrpl/basics/base64.h>
8#include <xrpl/json/json_value.h>
9#include <xrpl/protocol/ErrorCodes.h>
10#include <xrpl/protocol/jss.h>
11
12namespace ripple {
15{
16 // return error if not configured as validator
17 auto const validationPK = context.app.getValidationPublicKey();
18 if (!validationPK)
20
21 Json::Value ret;
22
23 // assume validationPK is ephemeral key, get master key
24 auto const mk =
25 context.app.validatorManifests().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.validatorManifests().getManifest(mk))
36 ret[jss::manifest] = base64_encode(*manifest);
37
38 if (auto const seq = context.app.validatorManifests().getSequence(mk))
39 ret[jss::seq] = *seq;
40
41 if (auto const domain = context.app.validatorManifests().getDomain(mk))
42 ret[jss::domain] = *domain;
43
44 return ret;
45}
46} // namespace ripple
Represents a JSON value.
Definition json_value.h:131
virtual std::optional< PublicKey const > getValidationPublicKey() const =0
virtual ManifestCache & validatorManifests()=0
std::optional< std::uint32_t > getSequence(PublicKey const &pk) const
Returns master key's current manifest sequence.
Definition Manifest.cpp:316
std::optional< std::string > getManifest(PublicKey const &pk) const
Returns mainfest corresponding to a given public key.
Definition Manifest.cpp:340
PublicKey getMasterKey(PublicKey const &pk) const
Returns ephemeral signing key's master public key.
Definition Manifest.cpp:304
std::optional< std::string > getDomain(PublicKey const &pk) const
Returns domain claimed by a given public key.
Definition Manifest.cpp:328
Json::Value not_validator_error()
Definition ErrorCodes.h:342
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
std::string toBase58(AccountID const &v)
Convert AccountID to base58 checked string.
Definition AccountID.cpp:95
std::string base64_encode(std::uint8_t const *data, std::size_t len)
Json::Value doValidatorInfo(RPC::JsonContext &)
@ manifest
Manifest.
Application & app
Definition Context.h:22