4#ifndef _Stroika_Foundation_Cryptography_OpenSSL_ClientContext_h_
5#define _Stroika_Foundation_Cryptography_OpenSSL_ClientContext_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
11#if qStroika_HasComponent_OpenSSL
12#include <openssl/ssl.h>
15#include "Stroika/Foundation/Common/Common.h"
16#include "Stroika/Foundation/Cryptography/SSL/ClientContext.h"
18namespace Stroika::Foundation::Cryptography::Providers::OpenSSL::ClientContext {
20#if qStroika_HasComponent_OpenSSL
25 struct LibRepType : unique_ptr<::SSL_CTX, decltype (&::SSL_CTX_free)> {
26 using inherited = unique_ptr<::SSL_CTX,
decltype (&::SSL_CTX_free)>;
28 LibRepType (nullptr_t);
29 LibRepType (LibRepType&&) =
default;
30 LibRepType (SSL_CTX* p);
35 struct IRep : SSL::ClientContext::IRep {
36 virtual SSL_CTX* Get_SSL_CTX ()
const = 0;
41 struct Ptr : shared_ptr<IRep> {
42 using inherited = shared_ptr<IRep>;
49 using inherited::inherited;
50 Ptr (
const shared_ptr<IRep>& p);
51 Ptr (
const shared_ptr<SSL::ClientContext::IRep>& p);
54 struct Options : SSL::ClientContext::Options {};
58 Ptr New (
const Options& o = {});
68#include "ClientContext.inl"