Home | History | Annotate | Line # | Download | only in ssl
methods.c revision 1.1
      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 
     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 IMPLEMENT_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
     27 IMPLEMENT_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
     33 IMPLEMENT_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
     39 IMPLEMENT_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
     44 IMPLEMENT_ssl3_meth_func(sslv3_method, ossl_statem_accept, ossl_statem_connect)
     45 #endif
     46 /*-
     47  * TLS/SSLv3 server methods
     48  */
     49 IMPLEMENT_tls_meth_func(TLS_ANY_VERSION, 0, 0,
     50                         TLS_server_method,
     51                         ossl_statem_accept,
     52                         ssl_undefined_function, TLSv1_2_enc_data)
     53 IMPLEMENT_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
     58 IMPLEMENT_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
     64 IMPLEMENT_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
     70 IMPLEMENT_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
     76 IMPLEMENT_ssl3_meth_func(sslv3_server_method,
     77                          ossl_statem_accept, ssl_undefined_function)
     78 #endif
     79 /*-
     80  * TLS/SSLv3 client methods
     81  */
     82 IMPLEMENT_tls_meth_func(TLS_ANY_VERSION, 0, 0,
     83                         TLS_client_method,
     84                         ssl_undefined_function,
     85                         ossl_statem_connect, TLSv1_2_enc_data)
     86 IMPLEMENT_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
     91 IMPLEMENT_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
     97 IMPLEMENT_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
    103 IMPLEMENT_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
    109 IMPLEMENT_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
    116 IMPLEMENT_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
    122 IMPLEMENT_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
    127 IMPLEMENT_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
    136 IMPLEMENT_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
    142 IMPLEMENT_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
    147 IMPLEMENT_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
    156 IMPLEMENT_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)
    160 IMPLEMENT_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
    166 IMPLEMENT_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
    171 IMPLEMENT_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
    177 const SSL_METHOD *TLSv1_2_method(void)
    178 {
    179     return tlsv1_2_method();
    180 }
    181 
    182 const SSL_METHOD *TLSv1_2_server_method(void)
    183 {
    184     return tlsv1_2_server_method();
    185 }
    186 
    187 const 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
    194 const SSL_METHOD *TLSv1_1_method(void)
    195 {
    196     return tlsv1_1_method();
    197 }
    198 
    199 const SSL_METHOD *TLSv1_1_server_method(void)
    200 {
    201     return tlsv1_1_server_method();
    202 }
    203 
    204 const SSL_METHOD *TLSv1_1_client_method(void)
    205 {
    206     return tlsv1_1_client_method();
    207 }
    208 # endif
    209 
    210 # ifndef OPENSSL_NO_TLS1_METHOD
    211 const SSL_METHOD *TLSv1_method(void)
    212 {
    213     return tlsv1_method();
    214 }
    215 
    216 const SSL_METHOD *TLSv1_server_method(void)
    217 {
    218     return tlsv1_server_method();
    219 }
    220 
    221 const SSL_METHOD *TLSv1_client_method(void)
    222 {
    223     return tlsv1_client_method();
    224 }
    225 # endif
    226 
    227 # ifndef OPENSSL_NO_SSL3_METHOD
    228 const SSL_METHOD *SSLv3_method(void)
    229 {
    230     return sslv3_method();
    231 }
    232 
    233 const SSL_METHOD *SSLv3_server_method(void)
    234 {
    235     return sslv3_server_method();
    236 }
    237 
    238 const SSL_METHOD *SSLv3_client_method(void)
    239 {
    240     return sslv3_client_method();
    241 }
    242 # endif
    243 
    244 # ifndef OPENSSL_NO_DTLS1_2_METHOD
    245 const SSL_METHOD *DTLSv1_2_method(void)
    246 {
    247     return dtlsv1_2_method();
    248 }
    249 
    250 const SSL_METHOD *DTLSv1_2_server_method(void)
    251 {
    252     return dtlsv1_2_server_method();
    253 }
    254 
    255 const SSL_METHOD *DTLSv1_2_client_method(void)
    256 {
    257     return dtlsv1_2_client_method();
    258 }
    259 # endif
    260 
    261 # ifndef OPENSSL_NO_DTLS1_METHOD
    262 const SSL_METHOD *DTLSv1_method(void)
    263 {
    264     return dtlsv1_method();
    265 }
    266 
    267 const SSL_METHOD *DTLSv1_server_method(void)
    268 {
    269     return dtlsv1_server_method();
    270 }
    271 
    272 const SSL_METHOD *DTLSv1_client_method(void)
    273 {
    274     return dtlsv1_client_method();
    275 }
    276 # endif
    277 
    278 #endif
    279