diff options
author | Claudius "keldu" Holeksa <mail@keldu.de> | 2023-07-20 17:02:05 +0200 |
---|---|---|
committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2023-07-20 17:02:05 +0200 |
commit | fac9e8bec1983fa9dff8f447fef106e427dfec26 (patch) | |
tree | 2221d4216873fa8250dd5ff45f00d0d6b46eab26 /c++/io-tls/tls.h | |
parent | 398164432abcf599eaa51ebc4088024b7f46b97f (diff) |
c++: Renamed src to c++
Diffstat (limited to 'c++/io-tls/tls.h')
-rw-r--r-- | c++/io-tls/tls.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/c++/io-tls/tls.h b/c++/io-tls/tls.h new file mode 100644 index 0000000..74b39ff --- /dev/null +++ b/c++/io-tls/tls.h @@ -0,0 +1,68 @@ +#pragma once + +#include <forstio/core/common.h> +#include <forstio/io/io.h> + +#include <optional> +#include <variant> + +namespace saw { +class tls; + +class tls_server final : public server { +private: + own<server> internal; + +public: + tls_server(own<server> srv); + + conveyor<own<io_stream>> accept() override; +}; + +class tls_network final : public network { +private: + tls& tls_; + network &internal; +public: + tls_network(tls& tls_, network &network_); + + conveyor<own<network_address>> resolve_address(const std::string &addr, uint16_t port = 0) override; + + own<server> listen(network_address& address) override; + + conveyor<own<io_stream>> connect(network_address& address) override; + + own<class datagram> 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> 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<own<tls_network>> setup_tls_network(network &network); + +} // namespace saw |