26#ifndef ROUTER_SRC_HTTP_SRC_TLS_SSL_OPERATION_H_
27#define ROUTER_SRC_HTTP_SRC_TLS_SSL_OPERATION_H_
29#include <openssl/bio.h>
30#include <openssl/err.h>
31#include <openssl/ssl.h>
52 auto pending = BIO_pending(
bio_);
56 if (ssl_result <= 0) {
57 auto error_cause = SSL_get_error(
ssl_, ssl_result);
59 switch (error_cause) {
60 case SSL_ERROR_WANT_READ:
64 case SSL_ERROR_WANT_WRITE:
68 case SSL_ERROR_ZERO_RETURN:
71 case SSL_ERROR_SYSCALL:
101 size_t *out_number_of_bytes_io) {
102 return SSL_read_ex(
ssl,
buf, num, out_number_of_bytes_io);
106 size_t *out_number_of_bytes_io) {
114 return op.check_ssl_result(
122 size_t *out_number_of_bytes_io) {
123 return SSL_write_ex(
ssl,
buf, num, out_number_of_bytes_io);
129 const size_t buffer_size,
size_t *out_number_of_bytes_io) {
137 return op.check_ssl_result(
148 [[maybe_unused]]
size_t *out_number_of_bytes_io) {
154 return op.check_ssl_result(SSL_connect(
ssl));
Definition: ssl_operation.h:44
Result check_ssl_result(int ssl_result)
Definition: ssl_operation.h:51
AnalyzeOperation(BIO *bio, SSL *ssl)
Definition: ssl_operation.h:46
BIO * bio_
Definition: ssl_operation.h:90
int pending_
Definition: ssl_operation.h:92
SSL * ssl_
Definition: ssl_operation.h:91
Definition: ssl_operation.h:36
Result
Definition: ssl_operation.h:38
@ want_read
Definition: ssl_operation.h:38
@ fatal
Definition: ssl_operation.h:38
@ want_write
Definition: ssl_operation.h:38
@ ok
Definition: ssl_operation.h:38
@ close
Definition: ssl_operation.h:38
virtual ~Operation()=default
Definition: ssl_operation.h:142
static Result op(BIO *bio, SSL *ssl, const void *buffer, const size_t buffer_size, size_t *out_number_of_bytes_io)
Definition: ssl_operation.h:146
static bool is_read_operation()
Definition: ssl_operation.h:144
Definition: ssl_operation.h:96
static int read_ex(SSL *ssl, void *buf, size_t num, size_t *out_number_of_bytes_io)
Definition: ssl_operation.h:100
static Result op(BIO *bio, SSL *ssl, void *buffer, const size_t buffer_size, size_t *out_number_of_bytes_io)
Definition: ssl_operation.h:105
static bool is_read_operation()
Definition: ssl_operation.h:98
Definition: ssl_operation.h:119
static bool is_read_operation()
Definition: ssl_operation.h:126
static Result op(BIO *bio, SSL *ssl, const void *buffer, const size_t buffer_size, size_t *out_number_of_bytes_io)
Definition: ssl_operation.h:128
static int write_ex(SSL *ssl, const void *buf, size_t num, size_t *out_number_of_bytes_io)
Definition: ssl_operation.h:121
Definition: buf0block_hint.cc:30
constexpr value_type ssl
Definition: classic_protocol_constants.h:49
mutable_buffer buffer(void *p, size_t n) noexcept
Definition: buffer.h:418
size_t buffer_size(const ConstBufferSequence &buffers) noexcept
Definition: buffer.h:313
Definition: tls_keylog_dumper.h:33