Apache HTTPD
Classes | Macros | Typedefs | Functions
md_ocsp.c File Reference
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <apr_lib.h>
#include <apr_buckets.h>
#include <apr_hash.h>
#include <apr_time.h>
#include <apr_date.h>
#include <apr_strings.h>
#include <apr_thread_mutex.h>
#include <openssl/err.h>
#include <openssl/evp.h>
#include <openssl/ocsp.h>
#include <openssl/pem.h>
#include <openssl/x509v3.h>
#include "md.h"
#include "md_crypt.h"
#include "md_event.h"
#include "md_json.h"
#include "md_log.h"
#include "md_http.h"
#include "md_result.h"
#include "md_status.h"
#include "md_store.h"
#include "md_util.h"
#include "md_ocsp.h"

Go to the source code of this file.

Classes

struct  md_ocsp_reg_t
 
struct  md_ocsp_status_t
 
struct  md_ocsp_id_map_t
 
struct  md_ocsp_update_t
 
struct  md_ocsp_todo_ctx_t
 
struct  ocsp_summary_ctx_t
 
struct  ocsp_status_ctx_t
 

Macros

#define MD_OCSP_ID_LENGTH   SHA_DIGEST_LENGTH
 

Typedefs

typedef struct md_ocsp_status_t md_ocsp_status_t
 
typedef struct md_ocsp_id_map_t md_ocsp_id_map_t
 

Functions

static void md_openssl_free (void *d)
 
const charmd_ocsp_cert_stat_name (md_ocsp_cert_stat_t stat)
 
md_ocsp_cert_stat_t md_ocsp_cert_stat_value (const char *name)
 
apr_status_t md_ocsp_init_id (md_data_t *id, apr_pool_t *p, const md_cert_t *cert)
 
static void ostat_req_cleanup (md_ocsp_status_t *ostat)
 
static int ostat_cleanup (void *ctx, const void *key, apr_ssize_t klen, const void *val)
 
static int ostat_should_renew (md_ocsp_status_t *ostat)
 
static apr_status_t ostat_set (md_ocsp_status_t *ostat, md_ocsp_cert_stat_t stat, md_data_t *der, md_timeperiod_t *valid, apr_time_t mtime)
 
static apr_status_t ostat_from_json (md_ocsp_cert_stat_t *pstat, md_data_t *resp_der, md_timeperiod_t *resp_valid, md_json_t *json, apr_pool_t *p)
 
static void ostat_to_json (md_json_t *json, md_ocsp_cert_stat_t stat, const md_data_t *resp_der, const md_timeperiod_t *resp_valid, apr_pool_t *p)
 
static apr_status_t ocsp_status_refresh (md_ocsp_status_t *ostat, apr_pool_t *ptemp)
 
static apr_status_t ocsp_status_save (md_ocsp_cert_stat_t stat, const md_data_t *resp_der, const md_timeperiod_t *resp_valid, md_ocsp_status_t *ostat, apr_pool_t *ptemp)
 
static apr_status_t ocsp_reg_cleanup (void *data)
 
apr_status_t md_ocsp_reg_make (md_ocsp_reg_t **preg, apr_pool_t *p, md_store_t *store, const md_timeslice_t *renew_window, const char *user_agent, const char *proxy_url, apr_time_t min_delay)
 
apr_status_t md_ocsp_prime (md_ocsp_reg_t *reg, const char *ext_id, apr_size_t ext_id_len, md_cert_t *cert, md_cert_t *issuer, const md_t *md)
 
apr_status_t md_ocsp_get_status (md_ocsp_copy_der *cb, void *userdata, md_ocsp_reg_t *reg, const char *ext_id, apr_size_t ext_id_len, apr_pool_t *p, const md_t *md)
 
static void ocsp_get_meta (md_ocsp_cert_stat_t *pstat, md_timeperiod_t *pvalid, md_ocsp_reg_t *reg, md_ocsp_status_t *ostat, apr_pool_t *p)
 
apr_status_t md_ocsp_get_meta (md_ocsp_cert_stat_t *pstat, md_timeperiod_t *pvalid, md_ocsp_reg_t *reg, const md_cert_t *cert, apr_pool_t *p, const md_t *md)
 
apr_size_t md_ocsp_count (md_ocsp_reg_t *reg)
 
static const charcertid_as_hex (const OCSP_CERTID *certid, apr_pool_t *p)
 
static const charcertid_summary (const OCSP_CERTID *certid, apr_pool_t *p)
 
static const charcertstatus_string (int status)
 
static const charsingle_resp_summary (OCSP_SINGLERESP *resp, apr_pool_t *p)
 
static apr_status_t ostat_on_resp (const md_http_response_t *resp, void *baton)
 
static apr_status_t ostat_on_req_status (const md_http_request_t *req, apr_status_t status, void *baton)
 
static apr_status_t ocsp_req_make (OCSP_REQUEST **pocsp_req, OCSP_CERTID *certid)
 
static apr_status_t ocsp_req_assign_der (md_data_t *d, OCSP_REQUEST *ocsp_req)
 
static apr_status_t next_todo (md_http_request_t **preq, void *baton, md_http_t *http, int in_flight)
 
static int select_updates (void *baton, const void *key, apr_ssize_t klen, const void *val)
 
static int select_next_run (void *baton, const void *key, apr_ssize_t klen, const void *val)
 
void md_ocsp_renew (md_ocsp_reg_t *reg, apr_pool_t *p, apr_pool_t *ptemp, apr_time_t *pnext_run)
 
apr_status_t md_ocsp_remove_responses_older_than (md_ocsp_reg_t *reg, apr_pool_t *p, apr_time_t timestamp)
 
static int add_to_summary (void *baton, const void *key, apr_ssize_t klen, const void *val)
 
void md_ocsp_get_summary (md_json_t **pjson, md_ocsp_reg_t *reg, apr_pool_t *p)
 
static apr_status_t job_loadj (md_json_t **pjson, const char *name, md_ocsp_reg_t *reg, apr_pool_t *p)
 
static md_json_tmk_jstat (md_ocsp_status_t *ostat, md_ocsp_reg_t *reg, apr_pool_t *p)
 
static int add_ostat (void *baton, const void *key, apr_ssize_t klen, const void *val)
 
static int md_ostat_cmp (const void *v1, const void *v2)
 
void md_ocsp_get_status_all (md_json_t **pjson, md_ocsp_reg_t *reg, apr_pool_t *p)
 
md_job_tmd_ocsp_job_make (md_ocsp_reg_t *ocsp, const char *mdomain, apr_pool_t *p)
 

Macro Definition Documentation

◆ MD_OCSP_ID_LENGTH

#define MD_OCSP_ID_LENGTH   SHA_DIGEST_LENGTH

Definition at line 48 of file md_ocsp.c.

Typedef Documentation

◆ md_ocsp_id_map_t

Definition at line 90 of file md_ocsp.c.

◆ md_ocsp_status_t

Definition at line 64 of file md_ocsp.c.

Function Documentation

◆ add_ostat()

static int add_ostat ( void *  baton,
const void *  key,
apr_ssize_t  klen,
const void *  val 
)
static

Definition at line 1012 of file md_ocsp.c.

◆ add_to_summary()

static int add_to_summary ( void *  baton,
const void *  key,
apr_ssize_t  klen,
const void *  val 
)
static

Definition at line 937 of file md_ocsp.c.

◆ certid_as_hex()

static const char * certid_as_hex ( const OCSP_CERTID certid,
apr_pool_t p 
)
static

Definition at line 496 of file md_ocsp.c.

◆ certid_summary()

static const char * certid_summary ( const OCSP_CERTID certid,
apr_pool_t p 
)
static

Definition at line 509 of file md_ocsp.c.

◆ certstatus_string()

static const char * certstatus_string ( int  status)
static

Definition at line 541 of file md_ocsp.c.

◆ job_loadj()

static apr_status_t job_loadj ( md_json_t **  pjson,
const char name,
md_ocsp_reg_t reg,
apr_pool_t p 
)
static

Definition at line 973 of file md_ocsp.c.

◆ md_ocsp_cert_stat_name()

const char * md_ocsp_cert_stat_name ( md_ocsp_cert_stat_t  stat)

Definition at line 101 of file md_ocsp.c.

◆ md_ocsp_cert_stat_value()

md_ocsp_cert_stat_t md_ocsp_cert_stat_value ( const char name)

Definition at line 110 of file md_ocsp.c.

◆ md_ocsp_count()

apr_size_t md_ocsp_count ( md_ocsp_reg_t reg)

Definition at line 491 of file md_ocsp.c.

◆ md_ocsp_get_meta()

apr_status_t md_ocsp_get_meta ( md_ocsp_cert_stat_t pstat,
md_timeperiod_t pvalid,
md_ocsp_reg_t reg,
const md_cert_t cert,
apr_pool_t p,
const md_t md 
)

Definition at line 457 of file md_ocsp.c.

◆ md_ocsp_get_status()

apr_status_t md_ocsp_get_status ( md_ocsp_copy_der cb,
void *  userdata,
md_ocsp_reg_t reg,
const char ext_id,
apr_size_t  ext_id_len,
apr_pool_t p,
const md_t md 
)

Definition at line 373 of file md_ocsp.c.

◆ md_ocsp_get_status_all()

void md_ocsp_get_status_all ( md_json_t **  pjson,
md_ocsp_reg_t reg,
apr_pool_t p 
)

Definition at line 1033 of file md_ocsp.c.

◆ md_ocsp_get_summary()

void md_ocsp_get_summary ( md_json_t **  pjson,
md_ocsp_reg_t reg,
apr_pool_t p 
)

Definition at line 955 of file md_ocsp.c.

◆ md_ocsp_init_id()

apr_status_t md_ocsp_init_id ( md_data_t id,
apr_pool_t p,
const md_cert_t cert 
)

Definition at line 117 of file md_ocsp.c.

◆ md_ocsp_job_make()

md_job_t * md_ocsp_job_make ( md_ocsp_reg_t ocsp,
const char mdomain,
apr_pool_t p 
)

Definition at line 1056 of file md_ocsp.c.

◆ md_ocsp_prime()

apr_status_t md_ocsp_prime ( md_ocsp_reg_t reg,
const char ext_id,
apr_size_t  ext_id_len,
md_cert_t cert,
md_cert_t issuer,
const md_t md 
)

Definition at line 305 of file md_ocsp.c.

◆ md_ocsp_reg_make()

apr_status_t md_ocsp_reg_make ( md_ocsp_reg_t **  preg,
apr_pool_t p,
md_store_t store,
const md_timeslice_t renew_window,
const char user_agent,
const char proxy_url,
apr_time_t  min_delay 
)

Definition at line 274 of file md_ocsp.c.

◆ md_ocsp_remove_responses_older_than()

apr_status_t md_ocsp_remove_responses_older_than ( md_ocsp_reg_t reg,
apr_pool_t p,
apr_time_t  timestamp 
)

Definition at line 922 of file md_ocsp.c.

◆ md_ocsp_renew()

void md_ocsp_renew ( md_ocsp_reg_t reg,
apr_pool_t p,
apr_pool_t ptemp,
apr_time_t pnext_run 
)

Definition at line 880 of file md_ocsp.c.

◆ md_openssl_free()

static void md_openssl_free ( void *  d)
static

Definition at line 96 of file md_ocsp.c.

◆ md_ostat_cmp()

static int md_ostat_cmp ( const void *  v1,
const void *  v2 
)
static

Definition at line 1023 of file md_ocsp.c.

◆ mk_jstat()

static md_json_t * mk_jstat ( md_ocsp_status_t ostat,
md_ocsp_reg_t reg,
apr_pool_t p 
)
static

Definition at line 985 of file md_ocsp.c.

◆ next_todo()

static apr_status_t next_todo ( md_http_request_t **  preq,
void *  baton,
md_http_t http,
int  in_flight 
)
static

Definition at line 800 of file md_ocsp.c.

◆ ocsp_get_meta()

static void ocsp_get_meta ( md_ocsp_cert_stat_t pstat,
md_timeperiod_t pvalid,
md_ocsp_reg_t reg,
md_ocsp_status_t ostat,
apr_pool_t p 
)
static

Definition at line 443 of file md_ocsp.c.

◆ ocsp_reg_cleanup()

static apr_status_t ocsp_reg_cleanup ( void *  data)
static

Definition at line 265 of file md_ocsp.c.

◆ ocsp_req_assign_der()

static apr_status_t ocsp_req_assign_der ( md_data_t d,
OCSP_REQUEST ocsp_req 
)
static

Definition at line 788 of file md_ocsp.c.

◆ ocsp_req_make()

static apr_status_t ocsp_req_make ( OCSP_REQUEST **  pocsp_req,
OCSP_CERTID certid 
)
static

Definition at line 764 of file md_ocsp.c.

◆ ocsp_status_refresh()

static apr_status_t ocsp_status_refresh ( md_ocsp_status_t ostat,
apr_pool_t ptemp 
)
static

Definition at line 223 of file md_ocsp.c.

◆ ocsp_status_save()

static apr_status_t ocsp_status_save ( md_ocsp_cert_stat_t  stat,
const md_data_t resp_der,
const md_timeperiod_t resp_valid,
md_ocsp_status_t ostat,
apr_pool_t ptemp 
)
static

Definition at line 246 of file md_ocsp.c.

◆ ostat_cleanup()

static int ostat_cleanup ( void *  ctx,
const void *  key,
apr_ssize_t  klen,
const void *  val 
)
static

Definition at line 140 of file md_ocsp.c.

◆ ostat_from_json()

static apr_status_t ostat_from_json ( md_ocsp_cert_stat_t pstat,
md_data_t resp_der,
md_timeperiod_t resp_valid,
md_json_t json,
apr_pool_t p 
)
static

Definition at line 185 of file md_ocsp.c.

◆ ostat_on_req_status()

static apr_status_t ostat_on_req_status ( const md_http_request_t req,
apr_status_t  status,
void *  baton 
)
static

Definition at line 729 of file md_ocsp.c.

◆ ostat_on_resp()

static apr_status_t ostat_on_resp ( const md_http_response_t resp,
void *  baton 
)
static

Definition at line 583 of file md_ocsp.c.

◆ ostat_req_cleanup()

static void ostat_req_cleanup ( md_ocsp_status_t ostat)
static

Definition at line 131 of file md_ocsp.c.

◆ ostat_set()

static apr_status_t ostat_set ( md_ocsp_status_t ostat,
md_ocsp_cert_stat_t  stat,
md_data_t der,
md_timeperiod_t valid,
apr_time_t  mtime 
)
static

Definition at line 165 of file md_ocsp.c.

◆ ostat_should_renew()

static int ostat_should_renew ( md_ocsp_status_t ostat)
static

Definition at line 157 of file md_ocsp.c.

◆ ostat_to_json()

static void ostat_to_json ( md_json_t json,
md_ocsp_cert_stat_t  stat,
const md_data_t resp_der,
const md_timeperiod_t resp_valid,
apr_pool_t p 
)
static

Definition at line 209 of file md_ocsp.c.

◆ select_next_run()

static int select_next_run ( void *  baton,
const void *  key,
apr_ssize_t  klen,
const void *  val 
)
static

Definition at line 867 of file md_ocsp.c.

◆ select_updates()

static int select_updates ( void *  baton,
const void *  key,
apr_ssize_t  klen,
const void *  val 
)
static

Definition at line 848 of file md_ocsp.c.

◆ single_resp_summary()

static const char * single_resp_summary ( OCSP_SINGLERESP resp,
apr_pool_t p 
)
static

Definition at line 552 of file md_ocsp.c.