2 * @file HTTPS_Context.h
4 * @author Martin Corino <mcorino@remedy.nl>
7 #ifndef ACE_HTTPS_CONTEXT_H
8 #define ACE_HTTPS_CONTEXT_H
10 #include /**/ "ace/pre.h"
12 #include "ace/SString.h"
14 #include "ace/Singleton.h"
15 #include "ace/SSL/SSL_Context.h"
16 #include "ace/INet/SSL_CallbackManager.h"
17 #include "ace/INet/INet_SSL_Export.h"
19 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
26 * @class ACE_HTTPS_Context
28 * @brief Implements security (SSL) context for HTTPS sessions.
31 class ACE_INET_SSL_Export Context
34 Context (bool verify_peer
= Context::ssl_verify_peer_
,
35 bool strict
= Context::ssl_strict_
,
36 bool once
= Context::ssl_once_
,
37 int depth
= Context::ssl_depth_
,
38 int ssl_mode
= Context::ssl_mode_
,
39 ACE_SSL_Context
* ssl_ctx
=
40 ACE_SSL_Context::instance (),
42 ACE::INet::SSL_CallbackManager
* ssl_cbmngr
=
43 ACE::INet::SSL_CallbackManager::instance ());
45 Context (ACE_SSL_Context
* ssl_ctx
,
47 ACE::INet::SSL_CallbackManager
* ssl_cbmngr
= 0);
51 operator bool () const;
53 bool operator ! () const;
55 ACE_SSL_Context
& ssl_context ();
57 const ACE_SSL_Context
& ssl_context () const;
59 bool use_default_ca ();
61 bool set_key_files (const char* certificate_filename
,
62 const char* private_key_filename
,
63 int file_type
= SSL_FILETYPE_PEM
);
65 bool load_trusted_ca (const char* ca_location
);
67 int has_trusted_ca ();
69 static void set_default_ssl_mode (int ssl_mode
);
71 static void set_default_verify_mode (bool verify_peer
);
73 static void set_default_verify_settings (bool strict
,
77 static Context
& instance ();
80 friend class ACE_Singleton
<Context
, ACE_SYNCH::MUTEX
>;
83 Context (const Context
&);
85 ACE_SSL_Context
* ssl_ctx_
;
86 std::unique_ptr
<ACE_SSL_Context
> alloc_safe
;
89 static bool ssl_strict_
;
90 static bool ssl_once_
;
91 static int ssl_depth_
;
92 static bool ssl_verify_peer_
;
97 ACE_END_VERSIONED_NAMESPACE_DECL
99 #if defined (__ACE_INLINE__)
100 #include "ace/INet/HTTPS_Context.inl"
103 #include /**/ "ace/post.h"
104 #endif /* ACE_SSL_CALLBACKMANAGER_H */