Merge pull request #2216 from jwillemsen/jwi-cxxversionchecks
[ACE_TAO.git] / ACE / protocols / ace / INet / HTTPS_Context.h
blob2b37ac70df97588f3f8271fddad40853846e0f50
1 /**
2 * @file HTTPS_Context.h
4 * @author Martin Corino <mcorino@remedy.nl>
5 */
7 #ifndef ACE_HTTPS_CONTEXT_H
8 #define ACE_HTTPS_CONTEXT_H
10 #include /**/ "ace/pre.h"
12 #include "ace/SString.h"
13 #include <memory>
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
21 namespace ACE
23 namespace HTTPS
25 /**
26 * @class ACE_HTTPS_Context
28 * @brief Implements security (SSL) context for HTTPS sessions.
31 class ACE_INET_SSL_Export Context
33 public:
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 (),
41 bool release = false,
42 ACE::INet::SSL_CallbackManager* ssl_cbmngr =
43 ACE::INet::SSL_CallbackManager::instance ());
45 Context (ACE_SSL_Context* ssl_ctx,
46 bool release = false,
47 ACE::INet::SSL_CallbackManager* ssl_cbmngr = 0);
49 ~Context ();
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,
74 bool once = true,
75 int depth = 0);
77 static Context& instance ();
79 private:
80 friend class ACE_Singleton<Context, ACE_SYNCH::MUTEX>;
82 //Context ();
83 Context (const Context&);
85 ACE_SSL_Context* ssl_ctx_;
86 std::unique_ptr<ACE_SSL_Context> alloc_safe;
88 static int ssl_mode_;
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"
101 #endif
103 #include /**/ "ace/post.h"
104 #endif /* ACE_SSL_CALLBACKMANAGER_H */