59#define MD_KEY_CHALLENGE_SETUPS "challenge-setups"
67 else if (!
strcmp(
"invalid",
s)) {
73 else if (!
strcmp(
"pending",
s)) {
76 else if (!
strcmp(
"processing",
s)) {
111 if (
order->finalize) {
114 if (
order->certificate) {
240 for (
i = 0;
i <
order->challenge_setups->nelts; ++
i) {
270#define ORDER_CTX_INIT(ctx, p, o, a, n, d, r) \
271 (ctx)->p = (p); (ctx)->order = (o); (ctx)->acme = (a); \
272 (ctx)->name = (n); (ctx)->domains = d; (ctx)->result = r
359 switch (
ctx->order->status) {
399 switch (
ctx->order->status) {
449 for (
i = 0;
i <
order->authz_urls->nelts; ++
i) {
459 switch (authz->
state) {
465 "%s: authorization pending for %s",
505 for (
i = 0;
i <
ctx->order->authz_urls->nelts; ++
i) {
512 switch (authz->
state) {
515 "domain authorization for %s is valid", authz->
domain);
520 "%s: status pending at %s", authz->
domain, authz->
url);
525 "domain authorization for %s failed, CA considers "
526 "answer to challenge invalid%s.",
533 "domain authorization for %s failed with state %d",
APR-UTIL Buckets/Bucket Brigades.
APR general purpose library routines.
ap_vhost_iterate_conn_cb void * baton
apr_brigade_flush void * ctx
apr_array_header_t ** result
apr_vformatter_buff_t const char va_list ap
char const *const char const *const ** env
#define apr_pcalloc(p, size)
#define APR_ARRAY_PUSH(ary, type)
#define APR_ARRAY_IDX(ary, i, type)
apr_int64_t apr_interval_time_t
#define MD_KEY_CERTIFICATE
#define MD_KEY_AUTHORIZATIONS
apr_status_t md_acme_req_body_init(md_acme_req_t *req, md_json_t *payload)
apr_status_t md_acme_GET(md_acme_t *acme, const char *url, md_acme_req_init_cb *on_init, md_acme_req_json_cb *on_json, md_acme_req_res_cb *on_res, md_acme_req_err_cb *on_err, void *baton)
apr_status_t md_acme_POST(md_acme_t *acme, const char *url, md_acme_req_init_cb *on_init, md_acme_req_json_cb *on_json, md_acme_req_res_cb *on_res, md_acme_req_err_cb *on_err, void *baton)
#define MD_ACME_VERSION_MAJOR(i)
apr_status_t md_acme_authz_retrieve(md_acme_t *acme, apr_pool_t *p, const char *url, md_acme_authz_t **pauthz)
apr_status_t md_acme_authz_teardown(struct md_store_t *store, const char *token, const md_t *md, apr_table_t *env, apr_pool_t *p)
apr_status_t md_acme_authz_respond(md_acme_authz_t *authz, md_acme_t *acme, md_store_t *store, apr_array_header_t *challenges, md_pkeys_spec_t *key_specs, apr_array_header_t *acme_tls_1_domains, const md_t *md, apr_table_t *env, apr_pool_t *p, const char **psetup_token, md_result_t *result)
@ MD_ACME_AUTHZ_S_PENDING
@ MD_ACME_AUTHZ_S_INVALID
static apr_status_t on_init_order_register(md_acme_req_t *req, void *baton)
apr_status_t md_acme_order_save(struct md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *md_name, md_acme_order_t *authz_set, int create)
static md_acme_order_st order_st_from_str(const char *s)
static apr_status_t check_challenges(void *baton, int attempt)
static apr_status_t p_purge(void *baton, apr_pool_t *p, apr_pool_t *ptemp, va_list ap)
apr_status_t md_acme_order_load(struct md_store_t *store, md_store_group_t group, const char *md_name, md_acme_order_t **pauthz_set, apr_pool_t *p)
static apr_status_t await_valid(void *baton, int attempt)
#define ORDER_CTX_INIT(ctx, p, o, a, n, d, r)
static apr_status_t identifier_to_json(void *value, md_json_t *json, apr_pool_t *p, void *baton)
static apr_status_t add_setup_token(md_acme_order_t *order, const char *token)
apr_status_t md_acme_order_update(md_acme_order_t *order, md_acme_t *acme, md_result_t *result, apr_pool_t *p)
static apr_status_t await_ready(void *baton, int attempt)
apr_status_t md_acme_order_remove(md_acme_order_t *order, const char *authz_url)
apr_status_t md_acme_order_start_challenges(md_acme_order_t *order, md_acme_t *acme, apr_array_header_t *challenge_types, md_store_t *store, const md_t *md, apr_table_t *env, md_result_t *result, apr_pool_t *p)
#define MD_KEY_CHALLENGE_SETUPS
md_acme_order_t * md_acme_order_from_json(md_json_t *json, apr_pool_t *p)
static const char * order_st_to_str(md_acme_order_st status)
apr_status_t md_acme_order_purge(md_store_t *store, apr_pool_t *p, md_store_group_t group, const md_t *md, apr_table_t *env)
apr_status_t md_acme_order_await_ready(md_acme_order_t *order, md_acme_t *acme, const md_t *md, apr_interval_time_t timeout, md_result_t *result, apr_pool_t *p)
md_json_t * md_acme_order_to_json(md_acme_order_t *order, apr_pool_t *p)
apr_status_t md_acme_order_monitor_authzs(md_acme_order_t *order, md_acme_t *acme, const md_t *md, apr_interval_time_t timeout, md_result_t *result, apr_pool_t *p)
md_acme_order_t * md_acme_order_create(apr_pool_t *p)
static apr_status_t p_save(void *baton, apr_pool_t *p, apr_pool_t *ptemp, va_list ap)
static void order_update_from_json(md_acme_order_t *order, md_json_t *json, apr_pool_t *p)
apr_status_t md_acme_order_register(md_acme_order_t **porder, md_acme_t *acme, apr_pool_t *p, const char *name, apr_array_header_t *domains)
apr_status_t md_acme_order_await_valid(md_acme_order_t *order, md_acme_t *acme, const md_t *md, apr_interval_time_t timeout, md_result_t *result, apr_pool_t *p)
static apr_status_t on_order_upd(md_acme_t *acme, apr_pool_t *p, const apr_table_t *hdrs, md_json_t *body, void *baton)
apr_status_t md_acme_order_add(md_acme_order_t *order, const char *authz_url)
@ MD_ACME_ORDER_ST_PENDING
@ MD_ACME_ORDER_ST_INVALID
@ MD_ACME_ORDER_ST_PROCESSING
md_json_t * md_json_create(apr_pool_t *pool)
apr_status_t md_json_sets(const char *value, md_json_t *json,...)
const char * md_json_gets(const md_json_t *json,...)
apr_status_t md_json_seta(apr_array_header_t *a, md_json_to_cb *cb, void *baton, md_json_t *json,...)
apr_status_t md_json_dupsa(apr_array_header_t *a, apr_pool_t *p, md_json_t *json,...)
apr_status_t md_json_setj(const md_json_t *value, md_json_t *json,...)
int md_json_has_key(const md_json_t *json,...)
const char * md_json_dups(apr_pool_t *p, const md_json_t *json,...)
apr_status_t md_json_setsa(apr_array_header_t *a, md_json_t *json,...)
void md_log_perror(const char *file, int line, md_log_level_t level, apr_status_t rv, apr_pool_t *p, const char *fmt,...)
void md_result_activity_printf(md_result_t *result, const char *fmt,...)
void md_result_activity_setn(md_result_t *result, const char *activity)
void md_result_dup(md_result_t *dest, const md_result_t *src)
void md_result_printf(md_result_t *result, apr_status_t status, const char *fmt,...)
void md_result_problem_set(md_result_t *result, apr_status_t status, const char *problem, const char *detail, const md_json_t *subproblems)
void md_result_log(md_result_t *result, unsigned int level)
void md_result_set(md_result_t *result, apr_status_t status, const char *detail)
apr_status_t md_store_save_json(md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *name, const char *aspect, struct md_json_t *data, int create)
apr_status_t md_store_remove(md_store_t *store, md_store_group_t group, const char *name, const char *aspect, apr_pool_t *p, int force)
apr_status_t md_store_load_json(md_store_t *store, md_store_group_t group, const char *name, const char *aspect, struct md_json_t **pdata, apr_pool_t *p)
apr_status_t md_util_try(md_util_try_fn *fn, void *baton, int ignore_errs, apr_interval_time_t timeout, apr_interval_time_t start_delay, apr_interval_time_t max_delay, int backoff)
apr_status_t md_util_pool_vdo(md_util_vaction *cb, void *baton, apr_pool_t *p,...)
int md_array_str_index(const apr_array_header_t *array, const char *s, int start, int case_sensitive)
apr_array_header_t * md_array_str_remove(apr_pool_t *p, apr_array_header_t *src, const char *exclude, int case_sensitive)
static const char * order(cmd_parms *cmd, void *dv, const char *arg)
md_acme_authz_state_t state
const char * error_detail
struct md_result_t * last
struct md_acme_t::@21::@23 v2
struct apr_array_header_t * acme_tls_1_domains
struct md_pkeys_spec_t * pks
apr_array_header_t * domains