#include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace xrpl { std::pair getNodeIdentity(Application& app, boost::program_options::variables_map const& cmdline) { std::optional seed; if (cmdline.contains("nodeid")) { seed = parseGenericSeed(cmdline["nodeid"].as(), false); if (!seed) Throw("Invalid 'nodeid' in command line"); } else if (app.config().exists(SECTION_NODE_SEED)) { seed = parseBase58(app.config().section(SECTION_NODE_SEED).lines().front()); if (!seed) Throw("Invalid [" SECTION_NODE_SEED "] in configuration file"); } if (seed) { auto secretKey = generateSecretKey(KeyType::secp256k1, *seed); auto publicKey = derivePublicKey(KeyType::secp256k1, secretKey); return {publicKey, secretKey}; } auto db = app.getWalletDB().checkoutDb(); if (cmdline.contains("newnodeid")) clearNodeIdentity(*db); return getNodeIdentity(*db); } } // namespace xrpl