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