31extern module AP_MODULE_DECLARE_DATA tls_module;
51 if (
cert->pkey_file) {
67#define PEM_IN_CHUNK 48
72 const char *header,
const char *
footer)
90 hd_len = header? strlen(header) : 0;
118#define PEM_CERT_HD "-----BEGIN CERTIFICATE-----"
119#define PEM_CERT_FT "-----END CERTIFICATE-----"
142 if (
pems->pkey_pem.len) {
165 "Failed to load certified key %s: [%d] %s",
279 const char *cert_pem;
321 ctx.userdata = userdata;
330 return entry? entry->
id :
NULL;
372 "Failed to load root store %s: [%d] %s",
443 entry->
store = store;
492 verifiers->
stores = stores;
APR general purpose library routines.
#define APLOG_USE_MODULE(foo)
char * ap_server_root_relative(apr_pool_t *p, const char *fname)
apr_brigade_flush void * ctx
void const char apr_status_t(* cleanup)(void *))
#define APR_HASH_KEY_STRING
const char apr_uint32_t * id
#define apr_pool_create(newpool, parent)
#define apr_pcalloc(p, size)
Apache connection library.
tls_cert_reg_visitor * visitor
A structure to store information for each virtual server.
const rustls_certified_key * certified_key
const rustls_root_cert_store * store
rustls_client_cert_verifier * client_verifier
rustls_client_cert_verifier * client_verifier_opt
tls_cert_root_stores_t * stores
apr_hash_t * file2verifier
const unsigned char * data
static void nullify_key_pem(tls_cert_pem_t *pems)
static apr_status_t verifiers_cleanup(void *data)
apr_size_t tls_cert_reg_count(tls_cert_reg_t *reg)
apr_status_t tls_cert_client_verifiers_get_optional(tls_cert_verifiers_t *verifiers, const char *store_file, const rustls_client_cert_verifier **pverifier)
apr_status_t tls_cert_root_stores_get(tls_cert_root_stores_t *stores, const char *store_file, const rustls_root_cert_store **pstore)
static apr_status_t stores_cleanup(void *data)
static apr_status_t tls_der_to_pem(const char **ppem, apr_pool_t *p, const unsigned char *der_data, apr_size_t der_len, const char *header, const char *footer)
void tls_cert_reg_do(tls_cert_reg_visitor *visitor, void *userdata, tls_cert_reg_t *reg)
void tls_cert_verifiers_clear(tls_cert_verifiers_t *verifiers)
apr_status_t tls_cert_reg_get_certified_key(tls_cert_reg_t *reg, server_rec *s, const tls_cert_spec_t *spec, const rustls_certified_key **pckey)
void tls_cert_root_stores_clear(tls_cert_root_stores_t *stores)
apr_status_t tls_cert_load_cert_key(apr_pool_t *p, const tls_cert_spec_t *spec, const char **pcert_pem, const rustls_certified_key **pckey)
static apr_status_t tls_cert_client_verifiers_get_internal(tls_cert_verifiers_t *verifiers, const char *store_file, const rustls_client_cert_verifier **pverifier, bool allow_unauthenticated)
static apr_status_t reg_cleanup(void *data)
static const char * cert_spec_to_id(const tls_cert_spec_t *spec)
apr_status_t tls_cert_to_pem(const char **ppem, apr_pool_t *p, const rustls_certificate *cert)
apr_status_t tls_cert_load_root_store(apr_pool_t *p, const char *store_file, const rustls_root_cert_store **pstore)
static tls_cert_verifiers_entry_t * verifiers_get_or_make_entry(tls_cert_verifiers_t *verifiers, const char *store_file)
static int stores_entry_cleanup(void *ctx, const void *key, apr_ssize_t klen, const void *val)
const char * tls_cert_reg_get_id(tls_cert_reg_t *reg, const rustls_certified_key *certified_key)
static int reg_visit(void *vctx, const void *key, apr_ssize_t klen, const void *val)
static int reg_entry_cleanup(void *ctx, const void *key, apr_ssize_t klen, const void *val)
static int verifiers_entry_cleanup(void *ctx, const void *key, apr_ssize_t klen, const void *val)
static apr_status_t make_certified_key(apr_pool_t *p, const char *name, const tls_data_t *cert_pem, const tls_data_t *pkey_pem, const rustls_certified_key **pckey)
tls_cert_verifiers_t * tls_cert_verifiers_make(apr_pool_t *p, tls_cert_root_stores_t *stores)
apr_status_t tls_cert_load_pem(apr_pool_t *p, const tls_cert_spec_t *cert, tls_cert_pem_t **ppem)
tls_cert_reg_t * tls_cert_reg_make(apr_pool_t *p)
apr_status_t tls_cert_client_verifiers_get(tls_cert_verifiers_t *verifiers, const char *store_file, const rustls_client_cert_verifier **pverifier)
tls_cert_root_stores_t * tls_cert_root_stores_make(apr_pool_t *p)
int tls_cert_reg_visitor(void *userdata, server_rec *s, const char *id, const char *cert_pem, const rustls_certified_key *certified_key)
tls_data_t tls_data_from_str(const char *s)
apr_status_t tls_util_rustls_error(apr_pool_t *p, rustls_result rr, const char **perr_descr)
apr_status_t tls_util_file_load(apr_pool_t *p, const char *fpath, apr_size_t min_len, apr_size_t max_len, tls_data_t *data)
const char * tls_data_to_str(apr_pool_t *p, const tls_data_t *d)