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