15#ifndef OPENVPN_MBEDTLS_UTIL_ERROR_H
16#define OPENVPN_MBEDTLS_UTIL_ERROR_H
20#include <mbedtls/ssl.h>
21#include <mbedtls/pem.h>
22#include <mbedtls/error.h>
43 errtxt =
"mbed TLS: " + error_text;
49 errtxt =
"mbed TLS: " + error_text;
59 if (mbedtls_errnum == MBEDTLS_ERR_X509_INVALID_DATE)
60 errtxt +=
", please see https://forums.openvpn.net/viewtopic.php?f=36&t=21873 for more info";
66 case MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:
69 case MBEDTLS_ERR_PK_PASSWORD_REQUIRED:
70 case MBEDTLS_ERR_PK_PASSWORD_MISMATCH:
79 const char *
what() const noexcept
override
98 mbedtls_strerror(
errnum, buf,
sizeof(buf));
105 const size_t BUF_SIZE = 1024;
106 std::unique_ptr<char[]> buf(
new char[BUF_SIZE]);
108 mbedtls_x509_crt_verify_info(buf.get(), BUF_SIZE,
"",
flags);
112 ret.reserve(std::strlen(buf.get()) + 64);
113 bool newline =
false;
114 for (
size_t i = 0; i < BUF_SIZE; ++i)
116 const char c = buf[i];
void set_code(const Error::Type code)
virtual ~MbedTLSException() noexcept=default
const char * what() const noexcept override
MbedTLSException(const std::string &error_text, const int mbedtls_errnum)
std::string what_str() const
static std::string mbedtls_errtext(int errnum)
MbedTLSException(const std::string &error_text)
MbedTLSException(const std::string &error_text, const Error::Type code, const bool fatal)
static std::string mbedtls_verify_flags_errtext(const uint32_t flags)
#define MBEDTLS_ERR_SSL_BAD_PROTOCOL_VERSION