Remove the special case processing for finished construction
[openssl.git] / ssl / methods.c
1 /*
2  * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
3  *
4  * Licensed under the OpenSSL license (the "License").  You may not use
5  * this file except in compliance with the License.  You can obtain a copy
6  * in the file LICENSE in the source distribution or at
7  * https://www.openssl.org/source/license.html
8  */
9
10 #include <stdio.h>
11 #include <openssl/objects.h>
12 #include "ssl_locl.h"
13
14 /*-
15  * TLS/SSLv3 methods
16  */
17
18 IMPLEMENT_tls_meth_func(TLS_ANY_VERSION, 0, 0,
19                         TLS_method,
20                         ossl_statem_accept,
21                         ossl_statem_connect, TLSv1_2_enc_data)
22 #ifndef OPENSSL_NO_TLS1_2_METHOD
23 IMPLEMENT_tls_meth_func(TLS1_2_VERSION, 0, SSL_OP_NO_TLSv1_2,
24                         tlsv1_2_method,
25                         ossl_statem_accept,
26                         ossl_statem_connect, TLSv1_2_enc_data)
27 #endif
28 #ifndef OPENSSL_NO_TLS1_1_METHOD
29 IMPLEMENT_tls_meth_func(TLS1_1_VERSION, SSL_METHOD_NO_SUITEB, SSL_OP_NO_TLSv1_1,
30                         tlsv1_1_method,
31                         ossl_statem_accept,
32                         ossl_statem_connect, TLSv1_1_enc_data)
33 #endif
34 #ifndef OPENSSL_NO_TLS1_METHOD
35 IMPLEMENT_tls_meth_func(TLS1_VERSION, SSL_METHOD_NO_SUITEB, SSL_OP_NO_TLSv1,
36                         tlsv1_method,
37                         ossl_statem_accept, ossl_statem_connect, TLSv1_enc_data)
38 #endif
39 #ifndef OPENSSL_NO_SSL3_METHOD
40 IMPLEMENT_ssl3_meth_func(sslv3_method, ossl_statem_accept, ossl_statem_connect)
41 #endif
42 /*-
43  * TLS/SSLv3 server methods
44  */
45 IMPLEMENT_tls_meth_func(TLS_ANY_VERSION, 0, 0,
46                         TLS_server_method,
47                         ossl_statem_accept,
48                         ssl_undefined_function, TLSv1_2_enc_data)
49 #ifndef OPENSSL_NO_TLS1_2_METHOD
50 IMPLEMENT_tls_meth_func(TLS1_2_VERSION, 0, SSL_OP_NO_TLSv1_2,
51                         tlsv1_2_server_method,
52                         ossl_statem_accept,
53                         ssl_undefined_function, TLSv1_2_enc_data)
54 #endif
55 #ifndef OPENSSL_NO_TLS1_1_METHOD
56 IMPLEMENT_tls_meth_func(TLS1_1_VERSION, SSL_METHOD_NO_SUITEB, SSL_OP_NO_TLSv1_1,
57                         tlsv1_1_server_method,
58                         ossl_statem_accept,
59                         ssl_undefined_function, TLSv1_1_enc_data)
60 #endif
61 #ifndef OPENSSL_NO_TLS1_METHOD
62 IMPLEMENT_tls_meth_func(TLS1_VERSION, SSL_METHOD_NO_SUITEB, SSL_OP_NO_TLSv1,
63                         tlsv1_server_method,
64                         ossl_statem_accept,
65                         ssl_undefined_function, TLSv1_enc_data)
66 #endif
67 #ifndef OPENSSL_NO_SSL3_METHOD
68 IMPLEMENT_ssl3_meth_func(sslv3_server_method,
69                          ossl_statem_accept, ssl_undefined_function)
70 #endif
71 /*-
72  * TLS/SSLv3 client methods
73  */
74 IMPLEMENT_tls_meth_func(TLS_ANY_VERSION, 0, 0,
75                         TLS_client_method,
76                         ssl_undefined_function,
77                         ossl_statem_connect, TLSv1_2_enc_data)
78 #ifndef OPENSSL_NO_TLS1_2_METHOD
79 IMPLEMENT_tls_meth_func(TLS1_2_VERSION, 0, SSL_OP_NO_TLSv1_2,
80                         tlsv1_2_client_method,
81                         ssl_undefined_function,
82                         ossl_statem_connect, TLSv1_2_enc_data)
83 #endif
84 #ifndef OPENSSL_NO_TLS1_1_METHOD
85 IMPLEMENT_tls_meth_func(TLS1_1_VERSION, SSL_METHOD_NO_SUITEB, SSL_OP_NO_TLSv1_1,
86                         tlsv1_1_client_method,
87                         ssl_undefined_function,
88                         ossl_statem_connect, TLSv1_1_enc_data)
89 #endif
90 #ifndef OPENSSL_NO_TLS1_METHOD
91 IMPLEMENT_tls_meth_func(TLS1_VERSION, SSL_METHOD_NO_SUITEB, SSL_OP_NO_TLSv1,
92                         tlsv1_client_method,
93                         ssl_undefined_function,
94                         ossl_statem_connect, TLSv1_enc_data)
95 #endif
96 #ifndef OPENSSL_NO_SSL3_METHOD
97 IMPLEMENT_ssl3_meth_func(sslv3_client_method,
98                          ssl_undefined_function, ossl_statem_connect)
99 #endif
100 /*-
101  * DTLS methods
102  */
103 #ifndef OPENSSL_NO_DTLS1_METHOD
104 IMPLEMENT_dtls1_meth_func(DTLS1_VERSION, SSL_METHOD_NO_SUITEB, SSL_OP_NO_DTLSv1,
105                           dtlsv1_method,
106                           ossl_statem_accept,
107                           ossl_statem_connect, DTLSv1_enc_data)
108 #endif
109 #ifndef OPENSSL_NO_DTLS1_2_METHOD
110 IMPLEMENT_dtls1_meth_func(DTLS1_2_VERSION, 0, SSL_OP_NO_DTLSv1_2,
111                           dtlsv1_2_method,
112                           ossl_statem_accept,
113                           ossl_statem_connect, DTLSv1_2_enc_data)
114 #endif
115 IMPLEMENT_dtls1_meth_func(DTLS_ANY_VERSION, 0, 0,
116                           DTLS_method,
117                           ossl_statem_accept,
118                           ossl_statem_connect, DTLSv1_2_enc_data)
119
120 /*-
121  * DTLS server methods
122  */
123 #ifndef OPENSSL_NO_DTLS1_METHOD
124 IMPLEMENT_dtls1_meth_func(DTLS1_VERSION, SSL_METHOD_NO_SUITEB, SSL_OP_NO_DTLSv1,
125                           dtlsv1_server_method,
126                           ossl_statem_accept,
127                           ssl_undefined_function, DTLSv1_enc_data)
128 #endif
129 #ifndef OPENSSL_NO_DTLS1_2_METHOD
130 IMPLEMENT_dtls1_meth_func(DTLS1_2_VERSION, 0, SSL_OP_NO_DTLSv1_2,
131                           dtlsv1_2_server_method,
132                           ossl_statem_accept,
133                           ssl_undefined_function, DTLSv1_2_enc_data)
134 #endif
135 IMPLEMENT_dtls1_meth_func(DTLS_ANY_VERSION, 0, 0,
136                           DTLS_server_method,
137                           ossl_statem_accept,
138                           ssl_undefined_function, DTLSv1_2_enc_data)
139
140 /*-
141  * DTLS client methods
142  */
143 #ifndef OPENSSL_NO_DTLS1_METHOD
144 IMPLEMENT_dtls1_meth_func(DTLS1_VERSION, SSL_METHOD_NO_SUITEB, SSL_OP_NO_DTLSv1,
145                           dtlsv1_client_method,
146                           ssl_undefined_function,
147                           ossl_statem_connect, DTLSv1_enc_data)
148 IMPLEMENT_dtls1_meth_func(DTLS1_BAD_VER, SSL_METHOD_NO_SUITEB, SSL_OP_NO_DTLSv1,
149                           dtls_bad_ver_client_method,
150                           ssl_undefined_function,
151                           ossl_statem_connect, DTLSv1_enc_data)
152 #endif
153 #ifndef OPENSSL_NO_DTLS1_2_METHOD
154 IMPLEMENT_dtls1_meth_func(DTLS1_2_VERSION, 0, SSL_OP_NO_DTLSv1_2,
155                           dtlsv1_2_client_method,
156                           ssl_undefined_function,
157                           ossl_statem_connect, DTLSv1_2_enc_data)
158 #endif
159 IMPLEMENT_dtls1_meth_func(DTLS_ANY_VERSION, 0, 0,
160                           DTLS_client_method,
161                           ssl_undefined_function,
162                           ossl_statem_connect, DTLSv1_2_enc_data)
163 #if OPENSSL_API_COMPAT < 0x10100000L
164 # ifndef OPENSSL_NO_TLS1_2_METHOD
165 const SSL_METHOD *TLSv1_2_method(void)
166 {
167     return tlsv1_2_method();
168 }
169
170 const SSL_METHOD *TLSv1_2_server_method(void)
171 {
172     return tlsv1_2_server_method();
173 }
174
175 const SSL_METHOD *TLSv1_2_client_method(void)
176 {
177     return tlsv1_2_client_method();
178 }
179 # endif
180
181 # ifndef OPENSSL_NO_TLS1_1_METHOD
182 const SSL_METHOD *TLSv1_1_method(void)
183 {
184     return tlsv1_1_method();
185 }
186
187 const SSL_METHOD *TLSv1_1_server_method(void)
188 {
189     return tlsv1_1_server_method();
190 }
191
192 const SSL_METHOD *TLSv1_1_client_method(void)
193 {
194     return tlsv1_1_client_method();
195 }
196 # endif
197
198 # ifndef OPENSSL_NO_TLS1_METHOD
199 const SSL_METHOD *TLSv1_method(void)
200 {
201     return tlsv1_method();
202 }
203
204 const SSL_METHOD *TLSv1_server_method(void)
205 {
206     return tlsv1_server_method();
207 }
208
209 const SSL_METHOD *TLSv1_client_method(void)
210 {
211     return tlsv1_client_method();
212 }
213 # endif
214
215 # ifndef OPENSSL_NO_SSL3_METHOD
216 const SSL_METHOD *SSLv3_method(void)
217 {
218     return sslv3_method();
219 }
220
221 const SSL_METHOD *SSLv3_server_method(void)
222 {
223     return sslv3_server_method();
224 }
225
226 const SSL_METHOD *SSLv3_client_method(void)
227 {
228     return sslv3_client_method();
229 }
230 # endif
231
232 # ifndef OPENSSL_NO_DTLS1_2_METHOD
233 const SSL_METHOD *DTLSv1_2_method(void)
234 {
235     return dtlsv1_2_method();
236 }
237
238 const SSL_METHOD *DTLSv1_2_server_method(void)
239 {
240     return dtlsv1_2_server_method();
241 }
242
243 const SSL_METHOD *DTLSv1_2_client_method(void)
244 {
245     return dtlsv1_2_client_method();
246 }
247 # endif
248
249 # ifndef OPENSSL_NO_DTLS1_METHOD
250 const SSL_METHOD *DTLSv1_method(void)
251 {
252     return dtlsv1_method();
253 }
254
255 const SSL_METHOD *DTLSv1_server_method(void)
256 {
257     return dtlsv1_server_method();
258 }
259
260 const SSL_METHOD *DTLSv1_client_method(void)
261 {
262     return dtlsv1_client_method();
263 }
264 # endif
265
266 #endif