From 2aa2af0007b7e969845642027c635cd3fd9c8aea Mon Sep 17 00:00:00 2001 From: Claudius Holeksa Date: Wed, 3 May 2023 20:34:02 +0200 Subject: Moved dirs and added codec-json dir --- src/io-tls/tls.h | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/io-tls/tls.h (limited to 'src/io-tls/tls.h') diff --git a/src/io-tls/tls.h b/src/io-tls/tls.h new file mode 100644 index 0000000..74b39ff --- /dev/null +++ b/src/io-tls/tls.h @@ -0,0 +1,68 @@ +#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 -- cgit v1.2.3