#pragma once #include #include #include #include namespace saw { class tls; class tls_server final : public server { private: own internal; public: tls_server(own srv); conveyor> accept() override; }; class tls_network final : public network { private: tls& tls_; network &internal; public: tls_network(tls& tls_, network &network_); conveyor> resolve_address(const std::string &addr, uint16_t port = 0) override; own listen(network_address& address) override; conveyor> connect(network_address& address) override; own datagram(network_address& address) override; }; /** * tls context class. * Provides tls network class which ensures the usage of tls encrypted connections */ class tls { private: class impl; own impl_; public: tls(); ~tls(); struct version { struct tls_1_0{}; struct tls_1_1{}; struct tls_1_2{}; }; struct options { public: version version; }; impl &get_impl(); private: options options_; }; std::optional> setup_tls_network(network &network); } // namespace saw