Apache HTTPD
Classes | Typedefs | Functions | Variables
tls_var.c File Reference
module tls_module
#include <assert.h>
#include <apr_lib.h>
#include <apr_strings.h>
#include <httpd.h>
#include <http_connection.h>
#include <http_core.h>
#include <http_main.h>
#include <http_log.h>
#include <ap_socache.h>
#include <rustls.h>
#include "tls_conf.h"
#include "tls_core.h"
#include "tls_cert.h"
#include "tls_util.h"
#include "tls_var.h"
#include "tls_version.h"

Go to the source code of this file.

Classes

struct  tls_var_lookup_ctx_t
 
struct  var_def_t
 

Typedefs

typedef const charvar_lookup(const tls_var_lookup_ctx_t *ctx)
 

Functions

static const charvar_get_ssl_protocol (const tls_var_lookup_ctx_t *ctx)
 
static const charvar_get_ssl_cipher (const tls_var_lookup_ctx_t *ctx)
 
static const charvar_get_sni_hostname (const tls_var_lookup_ctx_t *ctx)
 
static const charvar_get_version_interface (const tls_var_lookup_ctx_t *ctx)
 
static const charvar_get_version_library (const tls_var_lookup_ctx_t *ctx)
 
static const charvar_get_false (const tls_var_lookup_ctx_t *ctx)
 
static const charvar_get_null (const tls_var_lookup_ctx_t *ctx)
 
static const charvar_get_client_s_dn_cn (const tls_var_lookup_ctx_t *ctx)
 
static const charvar_get_client_verify (const tls_var_lookup_ctx_t *ctx)
 
static const charvar_get_session_resumed (const tls_var_lookup_ctx_t *ctx)
 
static const charvar_get_client_cert (const tls_var_lookup_ctx_t *ctx)
 
static const charvar_get_server_cert (const tls_var_lookup_ctx_t *ctx)
 
void tls_var_init_lookup_hash (apr_pool_t *pool, apr_hash_t *map)
 
static const charinvoke (var_def_t *def, tls_var_lookup_ctx_t *ctx)
 
static void set_var (tls_var_lookup_ctx_t *ctx, apr_hash_t *lookups, apr_table_t *table)
 
const chartls_var_lookup (apr_pool_t *p, server_rec *s, conn_rec *c, request_rec *r, const char *name)
 
static void add_vars (apr_table_t *env, conn_rec *c, server_rec *s, request_rec *r)
 
apr_status_t tls_var_handshake_done (conn_rec *c)
 
int tls_var_request_fixup (request_rec *r)
 

Variables

static int *const aplog_module_index = &( tls_module.module_index)
 
static const var_def_t VAR_DEFS []
 
static const char *const TlsAlwaysVars []
 
static const char *const StdEnvVars []
 
static const char *const ExportCertVars []
 

Typedef Documentation

◆ var_lookup

Definition at line 51 of file tls_var.c.

Function Documentation

◆ add_vars()

static void add_vars ( apr_table_t env,
conn_rec c,
server_rec s,
request_rec r 
)
static

Definition at line 304 of file tls_var.c.

◆ invoke()

static const char * invoke ( var_def_t def,
tls_var_lookup_ctx_t ctx 
)
static

Definition at line 250 of file tls_var.c.

◆ set_var()

static void set_var ( tls_var_lookup_ctx_t ctx,
apr_hash_t lookups,
apr_table_t table 
)
static

Definition at line 263 of file tls_var.c.

◆ tls_var_handshake_done()

apr_status_t tls_var_handshake_done ( conn_rec c)

A connection has been handshaked. Prepare commond TLS variables on this connection.

Definition at line 358 of file tls_var.c.

◆ tls_var_init_lookup_hash()

void tls_var_init_lookup_hash ( apr_pool_t pool,
apr_hash_t map 
)

Definition at line 238 of file tls_var.c.

◆ tls_var_lookup()

const char * tls_var_lookup ( apr_pool_t p,
server_rec s,
conn_rec c,
request_rec r,
const char name 
)

Callback for installation in Apache's 'ssl_var_lookup' hook to provide SSL related variable lookups to other modules.

Definition at line 275 of file tls_var.c.

◆ tls_var_request_fixup()

int tls_var_request_fixup ( request_rec r)

A request is ready for processing, add TLS variables r->subprocess_env if applicable. This is a hook function returning OK/DECLINED.

< Module declines to handle

Definition at line 382 of file tls_var.c.

◆ var_get_client_cert()

static const char * var_get_client_cert ( const tls_var_lookup_ctx_t ctx)
static

Definition at line 111 of file tls_var.c.

◆ var_get_client_s_dn_cn()

static const char * var_get_client_s_dn_cn ( const tls_var_lookup_ctx_t ctx)
static

Definition at line 92 of file tls_var.c.

◆ var_get_client_verify()

static const char * var_get_client_verify ( const tls_var_lookup_ctx_t ctx)
static

Definition at line 101 of file tls_var.c.

◆ var_get_false()

static const char * var_get_false ( const tls_var_lookup_ctx_t ctx)
static

Definition at line 80 of file tls_var.c.

◆ var_get_null()

static const char * var_get_null ( const tls_var_lookup_ctx_t ctx)
static

Definition at line 86 of file tls_var.c.

◆ var_get_server_cert()

static const char * var_get_server_cert ( const tls_var_lookup_ctx_t ctx)
static

Definition at line 133 of file tls_var.c.

◆ var_get_session_resumed()

static const char * var_get_session_resumed ( const tls_var_lookup_ctx_t ctx)
static

Definition at line 106 of file tls_var.c.

◆ var_get_sni_hostname()

static const char * var_get_sni_hostname ( const tls_var_lookup_ctx_t ctx)
static

Definition at line 63 of file tls_var.c.

◆ var_get_ssl_cipher()

static const char * var_get_ssl_cipher ( const tls_var_lookup_ctx_t ctx)
static

Definition at line 58 of file tls_var.c.

◆ var_get_ssl_protocol()

static const char * var_get_ssl_protocol ( const tls_var_lookup_ctx_t ctx)
static

Definition at line 53 of file tls_var.c.

◆ var_get_version_interface()

static const char * var_get_version_interface ( const tls_var_lookup_ctx_t ctx)
static

Definition at line 68 of file tls_var.c.

◆ var_get_version_library()

static const char * var_get_version_library ( const tls_var_lookup_ctx_t ctx)
static

Definition at line 74 of file tls_var.c.

Variable Documentation

◆ aplog_module_index

int* const aplog_module_index = &( tls_module.module_index)
static

Definition at line 38 of file tls_var.c.

◆ ExportCertVars

const char* const ExportCertVars[]
static
Initial value:
= {
"SSL_CLIENT_CERT",
"SSL_CLIENT_CHAIN_0",
"SSL_CLIENT_CHAIN_1",
"SSL_CLIENT_CHAIN_2",
"SSL_CLIENT_CHAIN_3",
"SSL_CLIENT_CHAIN_4",
"SSL_CLIENT_CHAIN_5",
"SSL_CLIENT_CHAIN_6",
"SSL_CLIENT_CHAIN_7",
"SSL_CLIENT_CHAIN_8",
"SSL_CLIENT_CHAIN_9",
"SSL_SERVER_CERT",
}

Definition at line 223 of file tls_var.c.

◆ StdEnvVars

const char* const StdEnvVars[]
static
Initial value:
= {
"SSL_VERSION_INTERFACE",
"SSL_VERSION_LIBRARY",
"SSL_SECURE_RENEG",
"SSL_COMPRESS_METHOD",
"SSL_CIPHER_EXPORT",
"SSL_CIPHER_USEKEYSIZE",
"SSL_CIPHER_ALGKEYSIZE",
"SSL_CLIENT_VERIFY",
"SSL_CLIENT_M_VERSION",
"SSL_CLIENT_M_SERIAL",
"SSL_CLIENT_V_START",
"SSL_CLIENT_V_END",
"SSL_CLIENT_V_REMAIN",
"SSL_CLIENT_S_DN",
"SSL_CLIENT_I_DN",
"SSL_CLIENT_A_KEY",
"SSL_CLIENT_A_SIG",
"SSL_CLIENT_CERT_RFC4523_CEA",
"SSL_SERVER_M_VERSION",
"SSL_SERVER_M_SERIAL",
"SSL_SERVER_V_START",
"SSL_SERVER_V_END",
"SSL_SERVER_S_DN",
"SSL_SERVER_I_DN",
"SSL_SERVER_A_KEY",
"SSL_SERVER_A_SIG",
"SSL_SESSION_ID",
"SSL_SESSION_RESUMED",
}

Definition at line 191 of file tls_var.c.

◆ TlsAlwaysVars

const char* const TlsAlwaysVars[]
static
Initial value:
= {
"SSL_TLS_SNI",
"SSL_PROTOCOL",
"SSL_CIPHER",
"SSL_CLIENT_S_DN_CN",
}

Definition at line 183 of file tls_var.c.

◆ VAR_DEFS

const var_def_t VAR_DEFS[]
static
Initial value:
= {
{ "SSL_PROTOCOL", var_get_ssl_protocol, NULL, 0 },
{ "SSL_CIPHER", var_get_ssl_cipher, NULL, 0 },
{ "SSL_TLS_SNI", var_get_sni_hostname, NULL, 0 },
{ "SSL_CLIENT_S_DN_CN", var_get_client_s_dn_cn, NULL, 0 },
{ "SSL_VERSION_INTERFACE", var_get_version_interface, NULL, 0 },
{ "SSL_VERSION_LIBRARY", var_get_version_library, NULL, 0 },
{ "SSL_SECURE_RENEG", var_get_false, NULL, 0 },
{ "SSL_COMPRESS_METHOD", var_get_null, NULL, 0 },
{ "SSL_CIPHER_EXPORT", var_get_false, NULL, 0 },
{ "SSL_CLIENT_VERIFY", var_get_client_verify, NULL, 0 },
{ "SSL_SESSION_RESUMED", var_get_session_resumed, NULL, 0 },
{ "SSL_CLIENT_CERT", var_get_client_cert, NULL, 0 },
{ "SSL_CLIENT_CHAIN_0", var_get_client_cert, "chain", 0 },
{ "SSL_CLIENT_CHAIN_1", var_get_client_cert, "chain", 1 },
{ "SSL_CLIENT_CHAIN_2", var_get_client_cert, "chain", 2 },
{ "SSL_CLIENT_CHAIN_3", var_get_client_cert, "chain", 3 },
{ "SSL_CLIENT_CHAIN_4", var_get_client_cert, "chain", 4 },
{ "SSL_CLIENT_CHAIN_5", var_get_client_cert, "chain", 5 },
{ "SSL_CLIENT_CHAIN_6", var_get_client_cert, "chain", 6 },
{ "SSL_CLIENT_CHAIN_7", var_get_client_cert, "chain", 7 },
{ "SSL_CLIENT_CHAIN_8", var_get_client_cert, "chain", 8 },
{ "SSL_CLIENT_CHAIN_9", var_get_client_cert, "chain", 9 },
{ "SSL_SERVER_CERT", var_get_server_cert, NULL, 0 },
}
return NULL
Definition mod_so.c:359
static const char * var_get_client_verify(const tls_var_lookup_ctx_t *ctx)
Definition tls_var.c:101
static const char * var_get_session_resumed(const tls_var_lookup_ctx_t *ctx)
Definition tls_var.c:106
static const char * var_get_ssl_cipher(const tls_var_lookup_ctx_t *ctx)
Definition tls_var.c:58
static const char * var_get_false(const tls_var_lookup_ctx_t *ctx)
Definition tls_var.c:80
static const char * var_get_sni_hostname(const tls_var_lookup_ctx_t *ctx)
Definition tls_var.c:63
static const char * var_get_server_cert(const tls_var_lookup_ctx_t *ctx)
Definition tls_var.c:133
static const char * var_get_client_s_dn_cn(const tls_var_lookup_ctx_t *ctx)
Definition tls_var.c:92
static const char * var_get_version_interface(const tls_var_lookup_ctx_t *ctx)
Definition tls_var.c:68
static const char * var_get_null(const tls_var_lookup_ctx_t *ctx)
Definition tls_var.c:86
static const char * var_get_version_library(const tls_var_lookup_ctx_t *ctx)
Definition tls_var.c:74
static const char * var_get_client_cert(const tls_var_lookup_ctx_t *ctx)
Definition tls_var.c:111
static const char * var_get_ssl_protocol(const tls_var_lookup_ctx_t *ctx)
Definition tls_var.c:53

Definition at line 157 of file tls_var.c.