20#include <openssl/opensslv.h>
21#include <openssl/ssl.h>
22#include <openssl/err.h>
23#include <openssl/evp.h>
40static_assert(OPENSSL_VERSION_NUMBER >= 0x30000000L,
41 "OpenSSL 3.x or newer is required. OpenSSL 1.1.x reached EOL on September 11, 2023.");
58#if defined(__GNUC__) || defined(__clang__)
59 #define NETWORK_OPENSSL_SUPPRESS_DEPRECATED_START \
60 _Pragma("GCC diagnostic push") \
61 _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
62 #define NETWORK_OPENSSL_SUPPRESS_DEPRECATED_END \
63 _Pragma("GCC diagnostic pop")
64#elif defined(_MSC_VER)
65 #define NETWORK_OPENSSL_SUPPRESS_DEPRECATED_START \
66 __pragma(warning(push)) \
67 __pragma(warning(disable: 4996))
68 #define NETWORK_OPENSSL_SUPPRESS_DEPRECATED_END \
69 __pragma(warning(pop))
71 #define NETWORK_OPENSSL_SUPPRESS_DEPRECATED_START
72 #define NETWORK_OPENSSL_SUPPRESS_DEPRECATED_END
88 return OpenSSL_version(OPENSSL_VERSION);
99 unsigned long err = ERR_get_error();
102 return "No OpenSSL error";
105 ERR_error_string_n(err, buf,
sizeof(buf));
106 return std::string(buf);
std::string get_openssl_error() noexcept
Get last OpenSSL error as string.
const char * openssl_version_string() noexcept
Get OpenSSL version string.
void clear_openssl_errors() noexcept
Clear all OpenSSL errors from the thread's error queue.