// kms_factory.hpp #ifndef KMS_FACTORY_HPP #define KMS_FACTORY_HPP #include "kms_interface.hpp" class KmsFactory { public: using CreatorFunc = std::function(const IKmsConfig &)>; static KmsFactory& instance(); void registerCreator(const std::string& name, CreatorFunc func); std::unique_ptr create(const IKmsConfig& config) const; std::vector listRegistered() const; private: std::unordered_map creators_; }; #endif // KMS_FACTORY_HPP