summaryrefslogtreecommitdiff
path: root/modules/io-tls/tls.h
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2023-12-04 12:18:14 +0100
committerClaudius "keldu" Holeksa <mail@keldu.de>2023-12-04 12:18:14 +0100
commita14896f9ed209dd3f9597722e5a5697bd7dbf531 (patch)
tree089ca5cbbd206d1921f8f6b53292f5bc1902ca5c /modules/io-tls/tls.h
parent84ecdcbca9e55b1f57fbb832e12ff4fdbb86e7c9 (diff)
meta: Renamed folder containing source
Diffstat (limited to 'modules/io-tls/tls.h')
-rw-r--r--modules/io-tls/tls.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/modules/io-tls/tls.h b/modules/io-tls/tls.h
new file mode 100644
index 0000000..74b39ff
--- /dev/null
+++ b/modules/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