Files
ligo/include/ligo/security.hpp
T
khodowany 67429eacd1
publish / publish (push) Successful in 31m41s
Initial public khodo snapshot
2026-09-04 19:30:11 -05:00

47 lines
1.7 KiB
C++

#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;
}