/* * TLS Context * (C) 2024 Jack Lloyd * 2024 René Meusel, Rohde & Schwarz Cybersecurity * * Botan is released under the Simplified BSD License (see license.txt) */ #include #if defined(BOTAN_HAS_HAS_DEFAULT_TLS_CONTEXT) #include #include #include #endif namespace Botan::TLS { #if defined(BOTAN_HAS_HAS_DEFAULT_TLS_CONTEXT) namespace { /** * A Credentials_Manager that provides the system's certificate store as trust * store, if available. Otherwise it defaults to "no trusted certificates". */ class Default_Credentials_Manager : public Credentials_Manager { public: Default_Credentials_Manager() { try { m_cert_store = std::make_unique(); } catch(const Not_Implemented&) { // This platform does not provide an adapter for the system's trust store. } } std::vector trusted_certificate_authorities(const std::string&, const std::string&) override { if(m_cert_store) { return {m_cert_store.get()}; } else { return {}; } } private: std::unique_ptr m_cert_store; }; } // namespace Context::Context(Server_Information server_info) : m_credentials_manager(std::make_shared()), m_rng(std::make_shared()), m_session_manager(std::make_shared(m_rng)), m_policy(std::make_shared()), m_server_info(std::move(server_info)) {} #endif } // namespace Botan::TLS