Class for TLS communications over a Socket.
Not thread safe. E.g. you MAY NOT read and write concurrently from multiple coroutines.
Usage example:
TcpListener tcp_listener;
auto [server, client] = tcp_listener.MakeSocketPair(deadline);
"tls-server",
[deadline](auto&& server) {
auto tls_server = io::TlsWrapper::StartTlsServer(
std::forward<decltype(server)>(server),
deadline
);
if (tls_server.SendAll(kData.data(), kData.size(), deadline) != kData.size()) {
throw std::runtime_error("Couldn't send data");
}
},
std::move(server)
);
auto tls_client = io::TlsWrapper::StartTlsClient(std::move(client), {}, deadline);
std::vector<char> buffer(kData.size());
const auto bytes_rcvd = tls_client.RecvAll(buffer.data(), buffer.size(), deadline);
Definition at line 27 of file tls_wrapper.hpp.
|
| TlsWrapper (const TlsWrapper &)=delete |
|
| TlsWrapper (TlsWrapper &&) noexcept |
|
| operator bool () const |
| Whether the socket is valid.
|
|
bool | IsValid () const override |
| Whether the socket is valid.
|
|
bool | WaitReadable (Deadline) override |
| Suspends current task until the socket has data available.
|
|
bool | WaitWriteable (Deadline) override |
| Suspends current task until the socket can accept more data.
|
|
size_t | RecvSome (void *buf, size_t len, Deadline deadline) |
| Receives at least one byte from the socket.
|
|
size_t | RecvAll (void *buf, size_t len, Deadline deadline) |
| Receives exactly len bytes from the socket.
|
|
size_t | SendAll (const void *buf, size_t len, Deadline deadline) |
| Sends exactly len bytes to the socket.
|
|
Socket | StopTls (Deadline deadline) |
| Finishes TLS session and returns the socket.
|
|
size_t | ReadSome (void *buf, size_t len, Deadline deadline) override |
| Receives at least one byte from the socket.
|
|
size_t | ReadAll (void *buf, size_t len, Deadline deadline) override |
| Receives exactly len bytes from the socket.
|
|
size_t | WriteAll (const void *buf, size_t len, Deadline deadline) override |
| Writes exactly len bytes to the socket.
|
|
size_t | WriteAll (std::initializer_list< IoData > list, Deadline deadline) override |
|
int | GetRawFd () |
|
ReadableBase & | GetReadableBase () |
|
WritableBase & | GetWritableBase () |
|
virtual std::optional< size_t > | ReadNoblock (void *buf, size_t len) |
|
impl::ContextAccessor * | TryGetContextAccessor () |
| For internal use only.
|
|
impl::ContextAccessor * | TryGetContextAccessor () |
| For internal use only.
|
|
|
static TlsWrapper | StartTlsClient (Socket &&socket, const std::string &server_name, Deadline deadline) |
| Starts a TLS client on an opened socket.
|
|
static TlsWrapper | StartTlsClient (Socket &&socket, const std::string &server_name, const crypto::Certificate &cert, const crypto::PrivateKey &key, Deadline deadline, const std::vector< crypto::Certificate > &extra_cert_authorities={}) |
| Starts a TLS client with client cert on an opened socket.
|
|
static TlsWrapper | StartTlsServer (Socket &&socket, const crypto::CertificatesChain &cert_chain, const crypto::PrivateKey &key, Deadline deadline, const std::vector< crypto::Certificate > &extra_cert_authorities={}) |
| Starts a TLS server on an opened socket.
|
|