26#ifndef ROUTER_SRC_BOOTSTRAP_SRC_KEYRING_HANDLER_H_
27#define ROUTER_SRC_BOOTSTRAP_SRC_KEYRING_HANDLER_H_
43 if (is_service)
return false;
56 if (config.
has_any(
"metadata_cache")) {
57 const auto &metadata_caches = config.
get(
"metadata_cache");
58 for (
const auto §ion : metadata_caches) {
59 if (section->has(
"router_id")) {
60 std::istringstream iss(section->get(
"router_id"));
70 std::string master_key =
73 throw std::runtime_error(
"Encryption key is too long");
88 "Cannot fetch master key using master key reader:" +
Definition: keyring_handler.h:34
void init_keyring_using_external_facility(const mysql_harness::Config &config)
Definition: keyring_handler.h:83
bool init(mysql_harness::Config &config, const bool is_service)
Definition: keyring_handler.h:36
static uint32_t get_router_id(const mysql_harness::Config &config)
Definition: keyring_handler.h:53
KeyringInfo & get_ki()
Definition: keyring_handler.h:50
void init_keyring_using_prompted_password()
Definition: keyring_handler.h:69
void init_keyring_using_master_key_file()
Definition: keyring_handler.h:78
KeyringInfo ki_
Definition: keyring_handler.h:96
KeyringInfo class encapsulates loading and storing master key using master-key-reader and master-key-...
Definition: keyring_info.h:76
void add_router_id_to_env(uint32_t router_id) const
Adds ROUTER_ID variable to environment.
Definition: keyring_info.cc:173
bool use_master_key_file() const noexcept
Checks if mysqlrouter.key and keyring files should be used to store master key.
Definition: keyring_info.cc:190
const std::string & get_master_key_file() const noexcept
Definition: keyring_info.h:129
void init(mysql_harness::Config &config)
Initializes KeyringInfo using data read from Config.
Definition: keyring_info.cc:70
bool read_master_key() noexcept
Reads master key using master_key_reader_;.
Definition: keyring_info.cc:86
bool use_master_key_external_facility() const noexcept
Checks if master-key-reader/master-key-writer should be used to load/store master key.
Definition: keyring_info.cc:186
const std::string & get_master_key_reader() const noexcept
Definition: keyring_info.h:137
const std::string & get_master_key() const noexcept
Definition: keyring_info.h:153
const std::string & get_keyring_file() const noexcept
Definition: keyring_info.h:123
void validate_master_key() const
Checks if master key is correct: it cannot be empty, and cannot be longer than mysql_harness::kMaxKey...
Definition: keyring_info.cc:194
MasterKeyReadError class represents error during reading master key using master-key-reader.
Definition: keyring_info.h:55
Configuration.
Definition: config_parser.h:253
ConstSectionList get(const std::string §ion) const
Get a list of sections having a name.
Definition: config_parser.cc:237
bool has_any(std::string_view section) const
Definition: config_parser.cc:230
static const int kMaxKeyringKeyLength
Definition: keyring_manager.h:37
HARNESS_EXPORT bool init_keyring(const std::string &keyring_file_path, const std::string &master_key_path, bool create_if_needed)
Initialize an instance of a keyring to be used in the application from the contents of a file,...
Definition: keyring_manager.cc:145
HARNESS_EXPORT bool init_keyring_with_key(const std::string &keyring_file_path, const std::string &master_key, bool create_if_needed)
Initialize an instance of a keyring to be used in the application from the contents of a file,...
Definition: keyring_manager.cc:186
std::string ROUTER_UTILS_EXPORT prompt_password(const std::string &prompt)
Prompts for a password from the console.
Definition: utils.cc:272
struct result result
Definition: result.h:34