#pragma once #include #include #include #include #include "security_db_record.hh" /*! * \class certificates_loader * \brief This class provides mechanism to load the certificates from the filesystem according the struecture defined in ETSI TS 103 099 * \remark Singleton pattern */ class certificates_loader { std::string _certificateExt; std::string _privateKeyExt; std::string _publicKeysExt; /*! * \brief The full folder path to load certificates */ std::experimental::filesystem::path _full_path; /*! * \brief Set to true when certificates are successfully loaded from file system */ bool _is_cache_initialized; /*! * \brief Directory filter (for local development purposes only */ std::set _directory_filter; /*! * \brief Unique static object reference of this class */ static certificates_loader* instance; /*! * \brief Default private ctor */ certificates_loader(); /*! * \brief Default private dtor */ ~certificates_loader() { if (instance != NULL) { delete instance; instance = NULL; } }; public: /*! \publicsection */ /*! * \brief Public accessor to the single object reference */ inline static certificates_loader& get_instance() { if (instance == NULL) instance = new certificates_loader(); return *instance; }; int build_path(const std::string& p_root_directory); int load_certificates(std::map >& p_certificates, std::map, const std::string&>& p_hashed_id8s); private: int retrieve_certificates_list(std::set& p_files); int build_certificates_cache(std::set& p_files, std::map >& p_certificates, std::map, const std::string&>& p_hashed_id8s); }; // End of class certificates_loader