25#ifndef __JOIN_OPENSSL_HPP__
26#define __JOIN_OPENSSL_HPP__
29#include <openssl/bn.h>
30#include <openssl/ecdsa.h>
31#include <openssl/pem.h>
32#include <openssl/x509.h>
33#include <openssl/x509_vfy.h>
34#include <openssl/x509v3.h>
35#include <openssl/evp.h>
36#include <openssl/ssl.h>
52 void operator ()(BIGNUM* num)
58 using BigNumPtr = std::unique_ptr <BIGNUM, BigNumDelete>;
67 void operator ()(ECDSA_SIG* ecSig)
69 ECDSA_SIG_free (ecSig);
73 using EcdsaSigPtr = std::unique_ptr <ECDSA_SIG, EcdsaSigDelete>;
82 void operator ()(EVP_PKEY* evpPkey)
84 EVP_PKEY_free (evpPkey);
88 using EvpPkeyPtr = std::unique_ptr <EVP_PKEY, EvpPkeyDelete>;
97 void operator ()(EVP_PKEY_CTX* evpPkeyCtx)
99 EVP_PKEY_CTX_free (evpPkeyCtx);
112 void operator ()(EVP_ENCODE_CTX* evpEncodeCtx)
114 EVP_ENCODE_CTX_free (evpEncodeCtx);
127 void operator ()(EVP_MD_CTX* evpMdCtx)
129 EVP_MD_CTX_free (evpMdCtx);
135#if OPENSSL_VERSION_NUMBER < 0x30000000L
143 void operator ()(HMAC_CTX* hmacCtx)
145 HMAC_CTX_free (hmacCtx);
149 using HmacCtxPtr = std::unique_ptr <HMAC_CTX, HmacCtxDelete>;
156 constexpr EvpMacDelete ()
noexcept =
default;
158 void operator ()(EVP_MAC* evpMac)
160 EVP_MAC_free (evpMac);
164 using EvpMacPtr = std::unique_ptr <EVP_MAC, EvpMacDelete>;
169 struct EvpMacCtxDelete
171 constexpr EvpMacCtxDelete () noexcept = default;
173 void operator ()(EVP_MAC_CTX* evpMacCtx)
175 EVP_MAC_CTX_free (evpMacCtx);
179 using EvpMacCtxPtr = std::unique_ptr <EVP_MAC_CTX, EvpMacCtxDelete>;
189 void operator()(STACK_OF (X509_NAME)* stack)
191 sk_X509_NAME_pop_free (stack, X509_NAME_free);
204 void operator ()(STACK_OF (GENERAL_NAME)* stack)
206 sk_GENERAL_NAME_pop_free (stack, GENERAL_NAME_free);
219 void operator ()(SSL* p)
225 using SslPtr = std::unique_ptr <SSL, SslDelete>;
234 void operator ()(SSL_CTX* p)
240 using SslCtxPtr = std::unique_ptr <SSL_CTX, SslCtxDelete>;
242#if OPENSSL_VERSION_NUMBER < 0x30000000L
250 void operator()(DH* p)
256 using DhKeyPtr = std::unique_ptr <DH, DhKeyDelete>;
265 void operator()(EC_KEY* p)
289#if OPENSSL_VERSION_NUMBER >= 0x30000000L
291 extern const std::string defaultCurve;
Definition acceptor.hpp:32
std::unique_ptr< HMAC_CTX, HmacCtxDelete > HmacCtxPtr
Definition openssl.hpp:149
std::unique_ptr< BIGNUM, BigNumDelete > BigNumPtr
Definition openssl.hpp:58
std::unique_ptr< EC_KEY, EcdhKeyDelete > EcdhKeyPtr
Definition openssl.hpp:271
std::unique_ptr< EVP_PKEY_CTX, EvpPkeyCtxDelete > EvpPkeyCtxPtr
Definition openssl.hpp:103
std::unique_ptr< EVP_PKEY, EvpPkeyDelete > EvpPkeyPtr
Definition openssl.hpp:88
std::unique_ptr< SSL, SslDelete > SslPtr
Definition openssl.hpp:225
std::unique_ptr< EVP_MD_CTX, EvpMdCtxDelete > EvpMdCtxPtr
Definition openssl.hpp:133
std::unique_ptr< DH, DhKeyDelete > DhKeyPtr
Definition openssl.hpp:256
void initializeOpenSSL()
initialize the OpenSSL libraries.
Definition openssl.cpp:48
std::unique_ptr< STACK_OF(X509_NAME), StackOfX509NameDelete > StackOfX509NamePtr
Definition openssl.hpp:195
const std::string defaultCipher_1_3
Definition openssl.cpp:39
std::unique_ptr< SSL_CTX, SslCtxDelete > SslCtxPtr
Definition openssl.hpp:240
std::unique_ptr< ECDSA_SIG, EcdsaSigDelete > EcdsaSigPtr
Definition openssl.hpp:73
std::unique_ptr< STACK_OF(GENERAL_NAME), StackOfGeneralNameDelete > StackOfGeneralNamePtr
Definition openssl.hpp:210
std::unique_ptr< EVP_ENCODE_CTX, EvpEncodeCtxDelete > EvpEncodeCtxPtr
Definition openssl.hpp:118
const std::string defaultCipher
Definition openssl.cpp:36
custom functor for BIGNUM deletion.
Definition openssl.hpp:49
constexpr BigNumDelete() noexcept=default
Custom functor for DH key deletion.
Definition openssl.hpp:247
constexpr DhKeyDelete() noexcept=default
Custom functor for ECDH key deletion.
Definition openssl.hpp:262
constexpr EcdhKeyDelete() noexcept=default
custom functor for ECDSA_SIG deletion.
Definition openssl.hpp:64
constexpr EcdsaSigDelete() noexcept=default
custom functor for EVP_ENCODE_CTX deletion.
Definition openssl.hpp:109
constexpr EvpEncodeCtxDelete() noexcept=default
custom functor for EVP_MD_CTX deletion.
Definition openssl.hpp:124
constexpr EvpMdCtxDelete() noexcept=default
custom functor for EVP_PKEY_CTX deletion.
Definition openssl.hpp:94
constexpr EvpPkeyCtxDelete() noexcept=default
custom functor for EVP_PKEY deletion.
Definition openssl.hpp:79
constexpr EvpPkeyDelete() noexcept=default
custom functor for HMAC_CTX deletion.
Definition openssl.hpp:140
constexpr HmacCtxDelete() noexcept=default
custom functor for SSL context deletion.
Definition openssl.hpp:231
constexpr SslCtxDelete() noexcept=default
custom functor for SSL handle deletion.
Definition openssl.hpp:216
constexpr SslDelete() noexcept=default
custom functor for STACK_OF(GENERAL_NAME) deletion.
Definition openssl.hpp:201
constexpr StackOfGeneralNameDelete() noexcept=default
Custom functor for STACK_OF(X509_NAME) deletion.
Definition openssl.hpp:186
constexpr StackOfX509NameDelete() noexcept=default