mirror of
https://git.gnunet.org/libmicrohttpd.git
synced 2026-09-25 04:09:31 +03:00
TLS backends: improved readability, renames, corrected comments
This commit is contained in:
@@ -1498,8 +1498,8 @@ daemon_init_tls (struct MHD_Daemon *restrict d,
|
||||
}
|
||||
}
|
||||
ret = mhd_tls_daemon_init (d,
|
||||
&(d->tls),
|
||||
s);
|
||||
s,
|
||||
&(d->tls));
|
||||
mhd_assert ((MHD_SC_OK == ret) || (NULL == d->tls));
|
||||
mhd_assert ((MHD_SC_OK != ret) || (NULL != d->tls));
|
||||
#ifndef NDEBUG
|
||||
|
||||
@@ -924,7 +924,7 @@ struct MHD_Daemon
|
||||
* If set to non-NULL then HTTPS protocol is used, if set to NULL then
|
||||
* plain HTTP protocol used.
|
||||
*/
|
||||
struct mhd_DaemonTlsData *tls;
|
||||
struct mhd_TlsDaemonData *tls;
|
||||
#endif
|
||||
|
||||
#ifdef MHD_USE_THREADS
|
||||
@@ -1017,8 +1017,14 @@ struct MHD_Daemon
|
||||
(mhd_WM_INT_EXTERNAL_EVENTS_EDGE ==((d)->wmode_int)))
|
||||
|
||||
#ifdef MHD_ENABLE_HTTPS
|
||||
# define mhd_D_HAS_TLS(d) ((d->tls) ? (! 0) : (0))
|
||||
/**
|
||||
* Returns non-zero if daemon has TLS enabled or zero otherwise
|
||||
*/
|
||||
# define mhd_D_HAS_TLS(d) (((d)->tls) ? (! 0) : (0))
|
||||
#else
|
||||
/**
|
||||
* Returns non-zero if daemon has TLS enabled or zero otherwise
|
||||
*/
|
||||
# define mhd_D_HAS_TLS(d) (0)
|
||||
#endif
|
||||
|
||||
|
||||
@@ -113,26 +113,36 @@
|
||||
# define mhd_TLS_MACRO_NAME_ID GNU
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Form function name specific for the selected TLS backend
|
||||
*/
|
||||
#define mhd_TLS_DATA(name_suffix) \
|
||||
mhd_MACRO_CONCAT3 (mhd_Tls,mhd_TLS_DATA_NAME_ID,name_suffix)
|
||||
|
||||
/**
|
||||
* Form name of the data specific for the selected TLS backend
|
||||
*/
|
||||
#define mhd_TLS_FUNC(name_suffix) \
|
||||
mhd_MACRO_CONCAT3 (mhd_tls_,mhd_TLS_FUNC_NAME_ID,name_suffix)
|
||||
|
||||
/**
|
||||
* The name of the structure that holds daemon-specific TLS data
|
||||
*/
|
||||
#define mhd_DaemonTlsData \
|
||||
mhd_MACRO_CONCAT3 (mhd_DaemonTls,mhd_TLS_DATA_NAME_ID,Data)
|
||||
#define mhd_TlsDaemonData mhd_TLS_DATA (DaemonData)
|
||||
/**
|
||||
* The name of the structure that holds connection-specific TLS data
|
||||
*/
|
||||
#define mhd_ConnTlsData \
|
||||
mhd_MACRO_CONCAT3 (mhd_ConnTls,mhd_TLS_DATA_NAME_ID,Data)
|
||||
#define mhd_TlsConnData mhd_TLS_DATA (ConnData)
|
||||
|
||||
/**
|
||||
* The structure with daemon-specific TLS data
|
||||
*/
|
||||
struct mhd_DaemonTlsData; /* Forward declaration */
|
||||
struct mhd_TlsDaemonData; /* Forward declaration */
|
||||
|
||||
/**
|
||||
* The structure with connection-specific TLS data
|
||||
*/
|
||||
struct mhd_ConnTlsData; /* Forward declaration */
|
||||
struct mhd_TlsConnData; /* Forward declaration */
|
||||
|
||||
|
||||
#endif /* ! MHD_TLS_CHOICE_H */
|
||||
|
||||
+14
-17
@@ -37,7 +37,9 @@
|
||||
#error This header should be used only if HTTPS is enabled
|
||||
#endif
|
||||
|
||||
#ifdef MHD_USE_GNUTLS
|
||||
#if defined(MHD_USE_MULTITLS)
|
||||
// TODO: Multi-TLS implementation
|
||||
#elif defined(MHD_USE_GNUTLS)
|
||||
# include "tls_gnu_funcs.h"
|
||||
#endif
|
||||
|
||||
@@ -45,40 +47,36 @@
|
||||
# define mhd_tls_gnu_is_inited_fine() (0)
|
||||
#endif
|
||||
|
||||
/* ** Global initialisation ** */
|
||||
/* ** Global initialisation / de-initialisation ** */
|
||||
|
||||
/**
|
||||
* Perform one-time global initialisation of TLS backend
|
||||
*/
|
||||
#define mhd_tls_global_init_once() \
|
||||
mhd_MACRO_CONCAT3 (mhd_tls_,mhd_TLS_FUNC_NAME_ID,_global_init_once)()
|
||||
#define mhd_tls_global_init_once() mhd_TLS_FUNC (_global_init_once)()
|
||||
|
||||
/**
|
||||
* Perform de-initialisation of TLS backend
|
||||
*/
|
||||
#define mhd_tls_global_deinit() \
|
||||
mhd_MACRO_CONCAT3 (mhd_tls_,mhd_TLS_FUNC_NAME_ID,_global_deinit)()
|
||||
#define mhd_tls_global_deinit() mhd_TLS_FUNC (_global_deinit)()
|
||||
|
||||
/**
|
||||
* Perform re-initialisation of TLS backend
|
||||
*/
|
||||
#define mhd_tls_global_re_init() \
|
||||
mhd_MACRO_CONCAT3 (mhd_tls_,mhd_TLS_FUNC_NAME_ID,_global_re_init)()
|
||||
#define mhd_tls_global_re_init() mhd_TLS_FUNC (_global_re_init)()
|
||||
|
||||
/* ** Daemon initialisation ** */
|
||||
/* ** Daemon initialisation / de-initialisation ** */
|
||||
|
||||
/**
|
||||
* Set daemon TLS parameters
|
||||
* Allocate and initialise daemon TLS parameters
|
||||
* @param d the daemon handle
|
||||
* @param s the daemon settings
|
||||
* @param p_d_tls the pointer to variable to set the pointer to
|
||||
* the daemon's TLS settings (allocated by this function)
|
||||
* @param s the daemon settings
|
||||
* @return #MHD_SC_OK on success (p_d_tls set to the allocated settings),
|
||||
* error code otherwise
|
||||
*/
|
||||
#define mhd_tls_daemon_init(d,p_d_tls,s) \
|
||||
mhd_MACRO_CONCAT3 (mhd_tls_,mhd_TLS_FUNC_NAME_ID,_daemon_init)( \
|
||||
(d),(p_d_tls),(s))
|
||||
#define mhd_tls_daemon_init(d,s,p_d_tls) \
|
||||
mhd_TLS_FUNC (_daemon_init)((d),(s),(p_d_tls))
|
||||
|
||||
/**
|
||||
* De-initialise daemon TLS parameters (and free memory allocated for TLS
|
||||
@@ -86,12 +84,11 @@
|
||||
* @param d_tls the pointer to the daemon's TLS settings
|
||||
*/
|
||||
#define mhd_tls_daemon_deinit(d_tls) \
|
||||
mhd_MACRO_CONCAT3 (mhd_tls_,mhd_TLS_FUNC_NAME_ID,_daemon_deinit)( \
|
||||
(d_tls))
|
||||
mhd_TLS_FUNC (_daemon_deinit)((d_tls))
|
||||
|
||||
|
||||
/**
|
||||
* Result of TLS backend availablility check
|
||||
* Result of TLS backend availability check
|
||||
*/
|
||||
enum mhd_TlsBackendAvailable
|
||||
{
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
/**
|
||||
* The structure with connection-specific GnuTLS data
|
||||
*/
|
||||
struct mhd_ConnTlsGnuData
|
||||
struct mhd_TlsGnuConnData
|
||||
{
|
||||
/**
|
||||
* GnuTLS session data
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
/**
|
||||
* The structure with daemon-specific GnuTLS data
|
||||
*/
|
||||
struct mhd_DaemonTlsGnuData
|
||||
struct mhd_TlsGnuDaemonData
|
||||
{
|
||||
/**
|
||||
* The credentials
|
||||
|
||||
+27
-24
@@ -53,9 +53,9 @@
|
||||
# include "tls_dh_params.h"
|
||||
#endif
|
||||
|
||||
struct mhd_DaemonTlsGnuData; /* Forward declaration */
|
||||
struct mhd_TlsGnuDaemonData; /* Forward declaration */
|
||||
|
||||
struct mhd_ConnTlsGnuData; /* Forward declaration */
|
||||
struct mhd_TlsGnuConnData; /* Forward declaration */
|
||||
|
||||
|
||||
/* ** Global initialisation ** */
|
||||
@@ -132,7 +132,7 @@ check_app_tls_sessings (struct MHD_Daemon *restrict d,
|
||||
* 'false' if failed
|
||||
*/
|
||||
static MHD_FN_PAR_NONNULL_ALL_ MHD_FN_MUST_CHECK_RESULT_ bool
|
||||
daemon_init_dh_data (struct mhd_DaemonTlsGnuData *restrict d_tls)
|
||||
daemon_init_dh_data (struct mhd_TlsGnuDaemonData *restrict d_tls)
|
||||
{
|
||||
#if defined(mhd_TLS_GNU_DH_PARAMS_USE_KNOWN)
|
||||
/* Rely on reasonable TLS defaults set in the TLS library.
|
||||
@@ -175,7 +175,7 @@ daemon_init_dh_data (struct mhd_DaemonTlsGnuData *restrict d_tls)
|
||||
* @param d_tls the daemon TLS data
|
||||
*/
|
||||
static MHD_FN_PAR_NONNULL_ALL_ void
|
||||
daemon_deinit_dh_data (struct mhd_DaemonTlsGnuData *restrict d_tls)
|
||||
daemon_deinit_dh_data (struct mhd_TlsGnuDaemonData *restrict d_tls)
|
||||
{
|
||||
#if defined(mhd_TLS_GNU_DH_PARAMS_NEEDS_PKCS3)
|
||||
mhd_assert (NULL != d_tls->dh_params);
|
||||
@@ -197,10 +197,10 @@ daemon_deinit_dh_data (struct mhd_DaemonTlsGnuData *restrict d_tls)
|
||||
*/
|
||||
static MHD_FN_PAR_NONNULL_ALL_ MHD_FN_MUST_CHECK_RESULT_ enum MHD_StatusCode
|
||||
daemon_init_credentials (struct MHD_Daemon *restrict d,
|
||||
struct mhd_DaemonTlsGnuData *restrict d_tls,
|
||||
struct mhd_TlsGnuDaemonData *restrict d_tls,
|
||||
struct DaemonOptions *restrict s)
|
||||
{
|
||||
enum MHD_StatusCode res;
|
||||
enum MHD_StatusCode ret;
|
||||
size_t cert_len;
|
||||
size_t key_len;
|
||||
|
||||
@@ -213,12 +213,15 @@ daemon_init_credentials (struct MHD_Daemon *restrict d,
|
||||
}
|
||||
|
||||
// TODO: Support multiple certificates
|
||||
cert_len = strlen (s->tls_cert_key.v_mem_cert) + 1; // TODO: Reuse calculated length
|
||||
key_len = strlen (s->tls_cert_key.v_mem_key) + 1; // TODO: Reuse calculated length
|
||||
cert_len = strlen (s->tls_cert_key.v_mem_cert); // TODO: Reuse calculated length
|
||||
key_len = strlen (s->tls_cert_key.v_mem_key); // TODO: Reuse calculated length
|
||||
|
||||
mhd_assert (0 != cert_len);
|
||||
mhd_assert (0 != key_len);
|
||||
|
||||
if (((unsigned int) cert_len != cert_len)
|
||||
|| ((unsigned int) key_len != key_len))
|
||||
res = MHD_SC_TLS_CONF_BAD_CERT; /* Very unlikely, do not waste space on special message */
|
||||
ret = MHD_SC_TLS_CONF_BAD_CERT; /* Very unlikely, do not waste space on special message */
|
||||
else
|
||||
{
|
||||
gnutls_datum_t cert_data;
|
||||
@@ -238,7 +241,7 @@ daemon_init_credentials (struct MHD_Daemon *restrict d,
|
||||
{
|
||||
mhd_LOG_MSG (d, MHD_SC_TLS_CONF_BAD_CERT, \
|
||||
"Failed to set the provided TLS certificate");
|
||||
res = MHD_SC_TLS_CONF_BAD_CERT;
|
||||
ret = MHD_SC_TLS_CONF_BAD_CERT;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -247,7 +250,7 @@ daemon_init_credentials (struct MHD_Daemon *restrict d,
|
||||
mhd_LOG_MSG (d, MHD_SC_DAEMON_TLS_INIT_FAILED, \
|
||||
"Failed to initialise Diffie-Hellman parameters " \
|
||||
"for the daemon");
|
||||
res = MHD_SC_DAEMON_TLS_INIT_FAILED;
|
||||
ret = MHD_SC_DAEMON_TLS_INIT_FAILED;
|
||||
}
|
||||
else
|
||||
return MHD_SC_OK;
|
||||
@@ -255,8 +258,8 @@ daemon_init_credentials (struct MHD_Daemon *restrict d,
|
||||
}
|
||||
|
||||
gnutls_certificate_free_credentials (d_tls->cred);
|
||||
mhd_assert (MHD_SC_OK != res);
|
||||
return res; /* Failure exit point */
|
||||
mhd_assert (MHD_SC_OK != ret);
|
||||
return ret; /* Failure exit point */
|
||||
}
|
||||
|
||||
|
||||
@@ -265,7 +268,7 @@ daemon_init_credentials (struct MHD_Daemon *restrict d,
|
||||
* @param d_tls the daemon TLS settings
|
||||
*/
|
||||
static MHD_FN_PAR_NONNULL_ALL_ void
|
||||
daemon_deinit_credentials (struct mhd_DaemonTlsGnuData *restrict d_tls)
|
||||
daemon_deinit_credentials (struct mhd_TlsGnuDaemonData *restrict d_tls)
|
||||
{
|
||||
mhd_assert (NULL != d_tls->cred);
|
||||
/* To avoid dangling pointer to DH data in the credentials,
|
||||
@@ -301,7 +304,7 @@ static const struct MHD_StringNullable tlsgnulib_base_priorities[] = {
|
||||
*/
|
||||
static MHD_FN_PAR_NONNULL_ALL_ MHD_FN_MUST_CHECK_RESULT_ enum MHD_StatusCode
|
||||
daemon_init_priorities_cache (struct MHD_Daemon *restrict d,
|
||||
struct mhd_DaemonTlsGnuData *restrict d_tls,
|
||||
struct mhd_TlsGnuDaemonData *restrict d_tls,
|
||||
struct DaemonOptions *restrict s)
|
||||
{
|
||||
size_t i;
|
||||
@@ -345,7 +348,7 @@ daemon_init_priorities_cache (struct MHD_Daemon *restrict d,
|
||||
* @param d_tls the daemon TLS settings
|
||||
*/
|
||||
static MHD_FN_PAR_NONNULL_ALL_ void
|
||||
daemon_deinit_priorities_cache (struct mhd_DaemonTlsGnuData *restrict d_tls)
|
||||
daemon_deinit_priorities_cache (struct mhd_TlsGnuDaemonData *restrict d_tls)
|
||||
{
|
||||
#if ! defined(mhd_TLS_GNU_NULL_PRIO_CACHE_MEANS_DEF_PRIORITY)
|
||||
mhd_assert (NULL != d_tls->pri_cache);
|
||||
@@ -356,21 +359,21 @@ daemon_deinit_priorities_cache (struct mhd_DaemonTlsGnuData *restrict d_tls)
|
||||
}
|
||||
|
||||
|
||||
MHD_INTERNAL MHD_FN_PAR_NONNULL_ALL_
|
||||
MHD_FN_PAR_OUT_ (2) mhd_StatusCodeInt
|
||||
MHD_INTERNAL MHD_FN_MUST_CHECK_RESULT_ MHD_FN_PAR_NONNULL_ALL_
|
||||
MHD_FN_PAR_OUT_ (3) mhd_StatusCodeInt
|
||||
mhd_tls_gnu_daemon_init (struct MHD_Daemon *restrict d,
|
||||
struct mhd_DaemonTlsGnuData **restrict p_d_tls,
|
||||
struct DaemonOptions *restrict s)
|
||||
struct DaemonOptions *restrict s,
|
||||
struct mhd_TlsGnuDaemonData **restrict p_d_tls)
|
||||
{
|
||||
mhd_StatusCodeInt res;
|
||||
struct mhd_DaemonTlsGnuData *restrict d_tls;
|
||||
struct mhd_TlsGnuDaemonData *restrict d_tls;
|
||||
|
||||
res = check_app_tls_sessings (d, s);
|
||||
if (MHD_SC_OK != res)
|
||||
return res;
|
||||
|
||||
d_tls = (struct mhd_DaemonTlsGnuData *)
|
||||
mhd_calloc (1, sizeof (struct mhd_DaemonTlsGnuData));
|
||||
d_tls = (struct mhd_TlsGnuDaemonData *)
|
||||
mhd_calloc (1, sizeof (struct mhd_TlsGnuDaemonData));
|
||||
*p_d_tls = d_tls;
|
||||
if (NULL == d_tls)
|
||||
return MHD_SC_DAEMON_MALLOC_FAILURE;
|
||||
@@ -399,7 +402,7 @@ mhd_tls_gnu_daemon_init (struct MHD_Daemon *restrict d,
|
||||
|
||||
MHD_INTERNAL MHD_FN_PAR_NONNULL_ALL_
|
||||
MHD_FN_PAR_INOUT_ (1) void
|
||||
mhd_tls_gnu_daemon_deinit (struct mhd_DaemonTlsGnuData *restrict d_tls)
|
||||
mhd_tls_gnu_daemon_deinit (struct mhd_TlsGnuDaemonData *restrict d_tls)
|
||||
{
|
||||
mhd_assert (NULL != d_tls);
|
||||
daemon_deinit_priorities_cache (d_tls);
|
||||
|
||||
+10
-10
@@ -38,15 +38,15 @@
|
||||
/**
|
||||
* The structure with daemon-specific GnuTLS data
|
||||
*/
|
||||
struct mhd_DaemonTlsGnuData; /* Forward declaration */
|
||||
struct mhd_TlsGnuDaemonData; /* Forward declaration */
|
||||
|
||||
/**
|
||||
* The structure with connection-specific GnuTLS data
|
||||
*/
|
||||
struct mhd_ConnTlsGnuData; /* Forward declaration */
|
||||
struct mhd_TlsGnuConnData; /* Forward declaration */
|
||||
|
||||
|
||||
/* ** Global initialisation ** */
|
||||
/* ** Global initialisation / de-initialisation ** */
|
||||
|
||||
/**
|
||||
* Globally initialise GnuTLS backend
|
||||
@@ -73,25 +73,25 @@ MHD_INTERNAL bool
|
||||
mhd_tls_gnu_is_inited_fine (void);
|
||||
|
||||
|
||||
/* ** Daemon initialisation ** */
|
||||
/* ** Daemon initialisation / de-initialisation ** */
|
||||
|
||||
struct MHD_Daemon; /* Forward declaration */
|
||||
struct DaemonOptions; /* Forward declaration */
|
||||
|
||||
/**
|
||||
* Set daemon TLS parameters
|
||||
* Allocate and initialise daemon TLS parameters
|
||||
* @param d the daemon handle
|
||||
* @param s the daemon settings
|
||||
* @param p_d_tls the pointer to variable to set the pointer to
|
||||
* the daemon's TLS settings (allocated by this function)
|
||||
* @param s the daemon settings
|
||||
* @return #MHD_SC_OK on success (p_d_tls set to the allocated settings),
|
||||
* error code otherwise
|
||||
*/
|
||||
MHD_INTERNAL mhd_StatusCodeInt
|
||||
mhd_tls_gnu_daemon_init (struct MHD_Daemon *restrict d,
|
||||
struct mhd_DaemonTlsGnuData **restrict p_d_tls,
|
||||
struct DaemonOptions *restrict s)
|
||||
MHD_FN_PAR_NONNULL_ALL_ MHD_FN_PAR_OUT_ (2);
|
||||
struct DaemonOptions *restrict s,
|
||||
struct mhd_TlsGnuDaemonData **restrict p_d_tls)
|
||||
MHD_FN_MUST_CHECK_RESULT_ MHD_FN_PAR_NONNULL_ALL_ MHD_FN_PAR_OUT_ (3);
|
||||
|
||||
/**
|
||||
* De-initialise daemon TLS parameters (and free memory allocated for TLS
|
||||
@@ -99,7 +99,7 @@ MHD_FN_PAR_NONNULL_ALL_ MHD_FN_PAR_OUT_ (2);
|
||||
* @param d_tls the pointer to the daemon's TLS settings
|
||||
*/
|
||||
MHD_INTERNAL void
|
||||
mhd_tls_gnu_daemon_deinit (struct mhd_DaemonTlsGnuData *restrict d_tls)
|
||||
mhd_tls_gnu_daemon_deinit (struct mhd_TlsGnuDaemonData *restrict d_tls)
|
||||
MHD_FN_PAR_NONNULL_ALL_ MHD_FN_PAR_INOUT_ (1);
|
||||
|
||||
#endif /* ! MHD_TLS_GNU_FUNCS_H */
|
||||
|
||||
Reference in New Issue
Block a user