#include <userver/engine/io/tls_wrapper.hpp>
Class for TLS communications over a Socket.
Not thread safe. E.g. you MAY NOT read and write concurrently from multiple coroutines.
Usage example:
Definition at line 27 of file tls_wrapper.hpp.
Public Member Functions | |
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 Public Member Functions | |
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::Certificate &cert, const crypto::PrivateKey &key, Deadline deadline, const std::vector< crypto::Certificate > &extra_cert_authorities={}) |
Starts a TLS server on an opened socket. | |
Protected Member Functions | |
void | SetReadableContextAccessor (impl::ContextAccessor *ca) |
void | SetWritableContextAccessor (impl::ContextAccessor *ca) |
|
inlineinherited |
Definition at line 109 of file common.hpp.
|
inlineinherited |
Definition at line 111 of file common.hpp.
|
overridevirtual |
Whether the socket is valid.
Implements engine::io::ReadableBase.
|
inlineexplicit |
Whether the socket is valid.
Definition at line 57 of file tls_wrapper.hpp.
|
inlineoverridevirtual |
Receives exactly len bytes from the socket.
Implements engine::io::ReadableBase.
Definition at line 95 of file tls_wrapper.hpp.
|
inlinevirtualinherited |
Receives up to len (including zero) bytes from the stream.
Reimplemented in engine::io::Socket.
Definition at line 39 of file common.hpp.
|
inlineoverridevirtual |
Receives at least one byte from the socket.
Implements engine::io::ReadableBase.
Definition at line 89 of file tls_wrapper.hpp.
size_t engine::io::TlsWrapper::RecvAll | ( | void * | buf, |
size_t | len, | ||
Deadline | deadline ) |
Receives exactly len bytes from the socket.
size_t engine::io::TlsWrapper::RecvSome | ( | void * | buf, |
size_t | len, | ||
Deadline | deadline ) |
Receives at least one byte from the socket.
size_t engine::io::TlsWrapper::SendAll | ( | const void * | buf, |
size_t | len, | ||
Deadline | deadline ) |
Sends exactly len bytes to the socket.
|
inlineprotectedinherited |
Definition at line 57 of file common.hpp.
|
inlineprotectedinherited |
Definition at line 95 of file common.hpp.
Finishes TLS session and returns the socket.
|
inlineinherited |
For internal use only.
Definition at line 54 of file common.hpp.
|
inlineinherited |
For internal use only.
Definition at line 92 of file common.hpp.
|
overridevirtual |
Suspends current task until the socket has data available.
Implements engine::io::ReadableBase.
|
overridevirtual |
Suspends current task until the socket can accept more data.
Implements engine::io::WritableBase.
|
inlineoverridevirtual |
Writes exactly len bytes to the socket.
Implements engine::io::WritableBase.
Definition at line 101 of file tls_wrapper.hpp.
|
overridevirtual |
Reimplemented from engine::io::WritableBase.