This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
#pragma once
|
||||
#include <expected>
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
|
||||
#include <boost/asio/ip/tcp.hpp>
|
||||
#include <boost/asio/ssl/context.hpp>
|
||||
#include <boost/asio/ssl/stream.hpp>
|
||||
|
||||
#include <modulus.hpp>
|
||||
|
||||
namespace ligo {
|
||||
|
||||
enum class security_mode {
|
||||
NONE,
|
||||
TLS,
|
||||
DTLS,
|
||||
};
|
||||
|
||||
enum class verify_mode {
|
||||
DEFAULTED,
|
||||
NONE,
|
||||
PEER,
|
||||
};
|
||||
|
||||
struct security_config {
|
||||
ligo::security_mode mode{ligo::security_mode::NONE};
|
||||
ligo::verify_mode verify{ligo::verify_mode::DEFAULTED};
|
||||
std::string peer_name{};
|
||||
std::string ca_file{};
|
||||
std::string certificate_chain_file{};
|
||||
std::string private_key_file{};
|
||||
std::shared_ptr<boost::asio::ssl::context> tls_context{};
|
||||
};
|
||||
|
||||
auto make_tls_client_context(ligo::security_config const& config) -> std::expected<std::shared_ptr<boost::asio::ssl::context>, modulus::error>;
|
||||
auto make_tls_server_context(ligo::security_config const& config) -> std::expected<std::shared_ptr<boost::asio::ssl::context>, modulus::error>;
|
||||
auto apply_tls_client_verification(boost::asio::ssl::stream<boost::asio::ip::tcp::socket>& stream, std::string const& host, ligo::security_config const& config) -> std::expected<void, modulus::error>;
|
||||
auto configure_tls_client_stream(boost::asio::ssl::stream<boost::asio::ip::tcp::socket>& stream, std::string const& host, ligo::security_config const& config) -> std::expected<void, modulus::error>;
|
||||
auto validate_tls_server_config(std::string_view protocol, ligo::security_config const& config) -> std::expected<void, modulus::error>;
|
||||
auto validate_tls_server_context(std::shared_ptr<boost::asio::ssl::context> const& context) -> std::expected<void, modulus::error>;
|
||||
auto unsupported_security(std::string_view protocol, ligo::security_mode mode) -> modulus::error;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user