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 */