25#ifndef OPENVPN_MBEDTLS_UTIL_PEM_H
26#define OPENVPN_MBEDTLS_UTIL_PEM_H
28#include <mbedtls/pem.h>
35 const unsigned char *src,
37 const std::string &key_name)
39 std::string header =
"-----BEGIN " + key_name +
"-----\n";
40 std::string footer =
"-----END " + key_name +
"-----\n";
43 int ret = mbedtls_pem_write_buffer(header.c_str(),
55 mbedtls_strerror(
ret, buf, 128);
56 OPENVPN_LOG(
"mbedtls_pem_write_buffer error: " << buf);
65 const std::string &key_name)
67 std::string header =
"-----BEGIN " + key_name +
"-----";
68 std::string footer =
"-----END " + key_name +
"-----";
69 mbedtls_pem_context ctx = {};
72 int ret = mbedtls_pem_read_buffer(&ctx,
86 mbedtls_pem_free(&ctx);
void init(const size_t capacity, const BufferFlags flags=BufAllocFlags::NO_FLAGS)
Initializes the buffer with the specified capacity and flags.
size_t max_size() const
Return the maximum allowable size value in T objects given the current offset (without considering re...
T * data()
Get a mutable pointer to the start of the array.
void set_size(const size_t size)
After an external method, operating on the array as a mutable unsigned char buffer,...
static bool pem_encode(BufferAllocated &dst, const unsigned char *src, size_t src_len, const std::string &key_name)
static bool pem_decode(BufferAllocated &dst, const char *src, size_t src_len, const std::string &key_name)
#define OPENVPN_LOG(args)
static const unsigned char * mbedtls_pem_get_buffer(const mbedtls_pem_context *ctx, size_t *buf_size)
constexpr BufferFlags DESTRUCT_ZERO(1u<< 1)
if enabled, destructor will zero data before deletion