29class [[nodiscard]] TlsWrapper
final :
public RwBase {
32 static TlsWrapper
StartTlsClient(Socket&& socket,
const std::string& server_name, Deadline deadline);
37 const std::string& server_name,
41 const std::vector<crypto::
Certificate>& extra_cert_authorities = {}
47 ~TlsWrapper()
override;
49 TlsWrapper(
const TlsWrapper&) =
delete;
50 TlsWrapper(TlsWrapper&&)
noexcept;
69 [[nodiscard]] size_t
RecvSome(
void* buf, size_t len, Deadline deadline);
77 [[nodiscard]] std::optional<size_t>
RecvNoblock(
void* buf, size_t len);
81 [[nodiscard]] size_t
RecvAll(
void* buf, size_t len, Deadline deadline);
85 [[nodiscard]] size_t
SendAll(
const void* buf, size_t len, Deadline deadline);
90 [[nodiscard]] Socket
StopTls(Deadline deadline);
103 [[nodiscard]] size_t
ReadSome(
void* buf, size_t len, Deadline deadline)
override {
109 [[nodiscard]] size_t
ReadAll(
void* buf, size_t len, Deadline deadline)
override {
115 [[nodiscard]] size_t
WriteAll(
const void* buf, size_t len, Deadline deadline)
override {
119 [[nodiscard]] size_t
WriteAll(std::span<
const IoData> list, Deadline deadline)
override;
121 [[nodiscard]] size_t
WriteAll(std::initializer_list<IoData> list, Deadline deadline)
override {
122 return WriteAll(std::span<
const IoData>{list.begin(), list.size()}
, deadline
);
128 explicit TlsWrapper(Socket&&);
130 void SetupContextAccessors();
133 class ReadContextAccessor;
134 constexpr static size_t kSize = 336;
135 constexpr static size_t kAlignment = 8;
136 utils::FastPimpl<Impl, kSize, kAlignment> impl_;