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