libmicrohttpd2

HTTP server C library (MHD 2.x, alpha)
Log | Files | Refs | README | LICENSE

tls_gnu_tls_lib.h (4465B)


      1 /* SPDX-License-Identifier: LGPL-2.1-or-later OR (GPL-2.0-or-later WITH eCos-exception-2.0) */
      2 /*
      3   This file is part of GNU libmicrohttpd.
      4   Copyright (C) 2024 Evgeny Grin (Karlson2k)
      5 
      6   GNU libmicrohttpd is free software; you can redistribute it and/or
      7   modify it under the terms of the GNU Lesser General Public
      8   License as published by the Free Software Foundation; either
      9   version 2.1 of the License, or (at your option) any later version.
     10 
     11   GNU libmicrohttpd is distributed in the hope that it will be useful,
     12   but WITHOUT ANY WARRANTY; without even the implied warranty of
     13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14   Lesser General Public License for more details.
     15 
     16   Alternatively, you can redistribute GNU libmicrohttpd and/or
     17   modify it under the terms of the GNU General Public License as
     18   published by the Free Software Foundation; either version 2 of
     19   the License, or (at your option) any later version, together
     20   with the eCos exception, as follows:
     21 
     22     As a special exception, if other files instantiate templates or
     23     use macros or inline functions from this file, or you compile this
     24     file and link it with other works to produce a work based on this
     25     file, this file does not by itself cause the resulting work to be
     26     covered by the GNU General Public License. However the source code
     27     for this file must still be made available in accordance with
     28     section (3) of the GNU General Public License v2.
     29 
     30     This exception does not invalidate any other reasons why a work
     31     based on this file might be covered by the GNU General Public
     32     License.
     33 
     34   You should have received copies of the GNU Lesser General Public
     35   License and the GNU General Public License along with this library;
     36   if not, see <https://www.gnu.org/licenses/>.
     37 */
     38 
     39 /**
     40  * @file src/mhd2/tls_gnu_tls_lib.h
     41  * @brief  The wrapper for GnuTLS header
     42  * @author Karlson2k (Evgeny Grin)
     43  */
     44 
     45 #ifndef MHD_TLS_GNU_TLS_LIB_H
     46 #define MHD_TLS_GNU_TLS_LIB_H 1
     47 
     48 #include "mhd_sys_options.h"
     49 
     50 #ifndef MHD_SUPPORT_GNUTLS
     51 #error This header can be used only if GnuTLS is enabled
     52 #endif
     53 
     54 #include <gnutls/gnutls.h>
     55 
     56 #ifndef GNUTLS_VERSION_NUMBER
     57 #error GNUTLS_VERSION_NUMBER is not defined
     58 #endif
     59 
     60 #if GNUTLS_VERSION_NUMBER >= 0x030600
     61 /**
     62  * Indicate that RC7919 defaults are used
     63  */
     64 #  define mhd_TLS_GNU_HAS_RFC7919_DEFS       1
     65 #endif
     66 
     67 #ifndef mhd_TLS_GNU_HAS_RFC7919_DEFS
     68 #  if GNUTLS_VERSION_NUMBER >= 0x030506
     69 /**
     70  * Use gnutls_certificate_set_known_dh_params() function to set DH parameters
     71  */
     72 #    define mhd_TLS_GNU_DH_PARAMS_USE_KNOWN       1
     73 #  else
     74 /**
     75  * TLS backend needs encoded Diffie-Hellman parameters
     76  */
     77 #    define mhd_TLS_GNU_DH_PARAMS_NEEDS_PKCS3    1
     78 #  endif
     79 #endif
     80 
     81 #if GNUTLS_VERSION_NUMBER >= 0x020104
     82 /**
     83  * Defined if gnutls_set_default_priority() function is available
     84  */
     85 #  define mhd_TLS_GNU_HAS_SET_DEF_PRIORITY      1
     86 #endif
     87 
     88 #if GNUTLS_VERSION_NUMBER >= 0x030300
     89 /**
     90  * Defined if NULL is treated as "default priorities" when used as "priorities"
     91  * argument for gnutls_priority_init() and gnutls_priority_init2()
     92  */
     93 #  define mhd_TLS_GNU_TREATS_NULL_AS_DEF_PRIORITY        1
     94 #endif
     95 
     96 #if ! defined(mhd_TLS_GNU_TREATS_NULL_AS_DEF_PRIORITY) \
     97   && defined(mhd_TLS_GNU_HAS_SET_DEF_PRIORITY)
     98 /**
     99  * Defined if NULL in priorities cache is treated as indication that default
    100  * priorities must used for connection / session
    101  */
    102 #  define mhd_TLS_GNU_NULL_PRIO_CACHE_MEANS_DEF_PRIORITY        1
    103 #endif
    104 
    105 #if GNUTLS_VERSION_NUMBER >= 0x030603
    106 /**
    107  * Defined if gnutls_priority_init2() function and the flag
    108  * GNUTLS_PRIORITY_INIT_DEF_APPEND are available
    109  */
    110 #  define mhd_TLS_GNU_HAS_PRIORITY_INIT2        1
    111 #endif
    112 
    113 #if GNUTLS_VERSION_NUMBER >= 0x030501
    114 /**
    115  * Defined if gnutls_priority_init{,2}() functions support "@KEYWORD1,@KEYWORD2"
    116  * to as fallback values.
    117  */
    118 #  define mhd_TLS_GNU_SUPPORTS_MULTI_KEYWORDS_PRIORITY  1
    119 #endif
    120 
    121 #if GNUTLS_VERSION_NUMBER >= 0x030402
    122 /**
    123  * Defined if GNUTLS_NO_SIGNAL flag is available for gnutls_init() function
    124  */
    125 #  define mhd_TLS_GNU_HAS_NO_SIGNAL     1
    126 #endif
    127 
    128 #if GNUTLS_VERSION_NUMBER >= 0x030109
    129 /**
    130  * Defined if transport_set_int() function is available
    131  */
    132 #  define mhd_TLS_GNU_HAS_TRANSP_SET_INT        1
    133 #endif
    134 
    135 #if GNUTLS_VERSION_NUMBER >= 0x030200
    136 /**
    137  * Defined if gnutls_alpn_set_protocols() and
    138  * gnutls_alpn_get_selected_protocol() function are available
    139  */
    140 #  define mhd_TLS_GNU_HAS_ALPN        1
    141 #endif
    142 
    143 #endif /* ! MHD_TLS_GNU_TLS_LIB_H */