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 267