]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | // |
2 | // ssl/context_base.hpp | |
3 | // ~~~~~~~~~~~~~~~~~~~~ | |
4 | // | |
92f5a8d4 | 5 | // Copyright (c) 2003-2019 Christopher M. Kohlhoff (chris at kohlhoff dot com) |
7c673cae FG |
6 | // |
7 | // Distributed under the Boost Software License, Version 1.0. (See accompanying | |
8 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
9 | // | |
10 | ||
11 | #ifndef BOOST_ASIO_SSL_CONTEXT_BASE_HPP | |
12 | #define BOOST_ASIO_SSL_CONTEXT_BASE_HPP | |
13 | ||
14 | #if defined(_MSC_VER) && (_MSC_VER >= 1200) | |
15 | # pragma once | |
16 | #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) | |
17 | ||
18 | #include <boost/asio/detail/config.hpp> | |
19 | #include <boost/asio/ssl/detail/openssl_types.hpp> | |
20 | ||
21 | #include <boost/asio/detail/push_options.hpp> | |
22 | ||
23 | namespace boost { | |
24 | namespace asio { | |
25 | namespace ssl { | |
26 | ||
27 | /// The context_base class is used as a base for the basic_context class | |
28 | /// template so that we have a common place to define various enums. | |
29 | class context_base | |
30 | { | |
31 | public: | |
32 | /// Different methods supported by a context. | |
33 | enum method | |
34 | { | |
35 | /// Generic SSL version 2. | |
36 | sslv2, | |
37 | ||
38 | /// SSL version 2 client. | |
39 | sslv2_client, | |
40 | ||
41 | /// SSL version 2 server. | |
42 | sslv2_server, | |
43 | ||
44 | /// Generic SSL version 3. | |
45 | sslv3, | |
46 | ||
47 | /// SSL version 3 client. | |
48 | sslv3_client, | |
49 | ||
50 | /// SSL version 3 server. | |
51 | sslv3_server, | |
52 | ||
53 | /// Generic TLS version 1. | |
54 | tlsv1, | |
55 | ||
56 | /// TLS version 1 client. | |
57 | tlsv1_client, | |
58 | ||
59 | /// TLS version 1 server. | |
60 | tlsv1_server, | |
61 | ||
62 | /// Generic SSL/TLS. | |
63 | sslv23, | |
64 | ||
65 | /// SSL/TLS client. | |
66 | sslv23_client, | |
67 | ||
68 | /// SSL/TLS server. | |
69 | sslv23_server, | |
70 | ||
71 | /// Generic TLS version 1.1. | |
72 | tlsv11, | |
73 | ||
74 | /// TLS version 1.1 client. | |
75 | tlsv11_client, | |
76 | ||
77 | /// TLS version 1.1 server. | |
78 | tlsv11_server, | |
79 | ||
80 | /// Generic TLS version 1.2. | |
81 | tlsv12, | |
82 | ||
83 | /// TLS version 1.2 client. | |
84 | tlsv12_client, | |
85 | ||
86 | /// TLS version 1.2 server. | |
b32b8144 FG |
87 | tlsv12_server, |
88 | ||
92f5a8d4 TL |
89 | /// Generic TLS version 1.3. |
90 | tlsv13, | |
91 | ||
92 | /// TLS version 1.3 client. | |
93 | tlsv13_client, | |
94 | ||
95 | /// TLS version 1.3 server. | |
96 | tlsv13_server, | |
97 | ||
b32b8144 FG |
98 | /// Generic TLS. |
99 | tls, | |
100 | ||
101 | /// TLS client. | |
102 | tls_client, | |
103 | ||
104 | /// TLS server. | |
105 | tls_server | |
7c673cae FG |
106 | }; |
107 | ||
108 | /// Bitmask type for SSL options. | |
109 | typedef long options; | |
110 | ||
111 | #if defined(GENERATING_DOCUMENTATION) | |
112 | /// Implement various bug workarounds. | |
113 | static const long default_workarounds = implementation_defined; | |
114 | ||
115 | /// Always create a new key when using tmp_dh parameters. | |
116 | static const long single_dh_use = implementation_defined; | |
117 | ||
118 | /// Disable SSL v2. | |
119 | static const long no_sslv2 = implementation_defined; | |
120 | ||
121 | /// Disable SSL v3. | |
122 | static const long no_sslv3 = implementation_defined; | |
123 | ||
124 | /// Disable TLS v1. | |
125 | static const long no_tlsv1 = implementation_defined; | |
126 | ||
127 | /// Disable TLS v1.1. | |
128 | static const long no_tlsv1_1 = implementation_defined; | |
129 | ||
130 | /// Disable TLS v1.2. | |
131 | static const long no_tlsv1_2 = implementation_defined; | |
132 | ||
92f5a8d4 TL |
133 | /// Disable TLS v1.3. |
134 | static const long no_tlsv1_3 = implementation_defined; | |
135 | ||
7c673cae FG |
136 | /// Disable compression. Compression is disabled by default. |
137 | static const long no_compression = implementation_defined; | |
138 | #else | |
139 | BOOST_ASIO_STATIC_CONSTANT(long, default_workarounds = SSL_OP_ALL); | |
140 | BOOST_ASIO_STATIC_CONSTANT(long, single_dh_use = SSL_OP_SINGLE_DH_USE); | |
141 | BOOST_ASIO_STATIC_CONSTANT(long, no_sslv2 = SSL_OP_NO_SSLv2); | |
142 | BOOST_ASIO_STATIC_CONSTANT(long, no_sslv3 = SSL_OP_NO_SSLv3); | |
143 | BOOST_ASIO_STATIC_CONSTANT(long, no_tlsv1 = SSL_OP_NO_TLSv1); | |
144 | # if defined(SSL_OP_NO_TLSv1_1) | |
145 | BOOST_ASIO_STATIC_CONSTANT(long, no_tlsv1_1 = SSL_OP_NO_TLSv1_1); | |
146 | # else // defined(SSL_OP_NO_TLSv1_1) | |
147 | BOOST_ASIO_STATIC_CONSTANT(long, no_tlsv1_1 = 0x10000000L); | |
148 | # endif // defined(SSL_OP_NO_TLSv1_1) | |
149 | # if defined(SSL_OP_NO_TLSv1_2) | |
150 | BOOST_ASIO_STATIC_CONSTANT(long, no_tlsv1_2 = SSL_OP_NO_TLSv1_2); | |
151 | # else // defined(SSL_OP_NO_TLSv1_2) | |
152 | BOOST_ASIO_STATIC_CONSTANT(long, no_tlsv1_2 = 0x08000000L); | |
153 | # endif // defined(SSL_OP_NO_TLSv1_2) | |
92f5a8d4 TL |
154 | # if defined(SSL_OP_NO_TLSv1_3) |
155 | BOOST_ASIO_STATIC_CONSTANT(long, no_tlsv1_3 = SSL_OP_NO_TLSv1_3); | |
156 | # else // defined(SSL_OP_NO_TLSv1_3) | |
157 | BOOST_ASIO_STATIC_CONSTANT(long, no_tlsv1_3 = 0x20000000L); | |
158 | # endif // defined(SSL_OP_NO_TLSv1_3) | |
7c673cae FG |
159 | # if defined(SSL_OP_NO_COMPRESSION) |
160 | BOOST_ASIO_STATIC_CONSTANT(long, no_compression = SSL_OP_NO_COMPRESSION); | |
161 | # else // defined(SSL_OP_NO_COMPRESSION) | |
162 | BOOST_ASIO_STATIC_CONSTANT(long, no_compression = 0x20000L); | |
163 | # endif // defined(SSL_OP_NO_COMPRESSION) | |
164 | #endif | |
165 | ||
166 | /// File format types. | |
167 | enum file_format | |
168 | { | |
169 | /// ASN.1 file. | |
170 | asn1, | |
171 | ||
172 | /// PEM file. | |
173 | pem | |
174 | }; | |
175 | ||
176 | #if !defined(GENERATING_DOCUMENTATION) | |
177 | // The following types and constants are preserved for backward compatibility. | |
178 | // New programs should use the equivalents of the same names that are defined | |
179 | // in the boost::asio::ssl namespace. | |
180 | typedef int verify_mode; | |
181 | BOOST_ASIO_STATIC_CONSTANT(int, verify_none = SSL_VERIFY_NONE); | |
182 | BOOST_ASIO_STATIC_CONSTANT(int, verify_peer = SSL_VERIFY_PEER); | |
183 | BOOST_ASIO_STATIC_CONSTANT(int, | |
184 | verify_fail_if_no_peer_cert = SSL_VERIFY_FAIL_IF_NO_PEER_CERT); | |
185 | BOOST_ASIO_STATIC_CONSTANT(int, verify_client_once = SSL_VERIFY_CLIENT_ONCE); | |
186 | #endif | |
187 | ||
188 | /// Purpose of PEM password. | |
189 | enum password_purpose | |
190 | { | |
191 | /// The password is needed for reading/decryption. | |
192 | for_reading, | |
193 | ||
194 | /// The password is needed for writing/encryption. | |
195 | for_writing | |
196 | }; | |
197 | ||
198 | protected: | |
199 | /// Protected destructor to prevent deletion through this type. | |
200 | ~context_base() | |
201 | { | |
202 | } | |
203 | }; | |
204 | ||
205 | } // namespace ssl | |
206 | } // namespace asio | |
207 | } // namespace boost | |
208 | ||
209 | #include <boost/asio/detail/pop_options.hpp> | |
210 | ||
211 | #endif // BOOST_ASIO_SSL_CONTEXT_BASE_HPP |