131 err =
"unable to parse response";
141 err =
"challenge 'pending'";
144 else if (!
strcmp(
s,
"valid")) {
146 err =
"challenge 'valid'";
149 else if (!
strcmp(
s,
"invalid")) {
154 err =
"challenge 'invalid'";
159 err =
"unable to understand response";
165 "Exact response was: %s",
err, authz->
domain, authz->
url,
219 const char *
thumb64, *key_authz;
229 if (
cha->key_authz) {
235 if (!
cha->key_authz) {
236 cha->key_authz = key_authz;
256 (void)acme_tls_1_domains;
282 "%s: event '%s' failed. aborting challenge setup",
321 if (acme_tls_1_domains->
nelts) {
323 "%s: protocol 'acme-tls/1' seems not enabled for this domain, "
324 "but is enabled for other associated domains. "
325 "Continuing with fingers crossed.", authz->
domain);
329 "%s: protocol 'acme-tls/1' seems not enabled for this or "
330 "any other associated domain. Not attempting challenge "
331 "type tls-alpn-01.", authz->
domain);
403 "%s: event '%s' failed. aborting challenge setup",
427 const char *
const *
argv;
428 const char *
cmdline, *dns01_cmd;
437 (void)acme_tls_1_domains;
468 "%s: dns-01 setup command failed to execute for %s", md->
name, authz->
domain);
484 "%s: event '%s' failed. aborting challenge setup",
504 const char *
const *
argv;
536 "%s: dns-01 teardown command failed (exit code=%d) for %s",
633 "type, this domain supports %s",
642 "%s: challenge type '%s' for %s: %s",
644 fctx.
accepted?
"maybe acceptable" :
"not applicable");
656 "%s: set up challenge '%s' for %s",
661 "for domain %s, looking for other option",
675 "The server offered '%s' and available are: '%s'.",
679 result->problem =
"challenge-mismatch";
686 "for domain %s could be setup successfully. Please check the "
687 "log for errors.", authz->
domain,
689 result->problem =
"challenge-setup-failure";
698 char *challenge, *domain;
703 domain =
strchr(challenge,
':');
704 *domain =
'\0'; domain++;
APR-UTIL Buckets/Bucket Brigades.
APR general purpose library routines.
ap_vhost_iterate_conn_cb void * baton
#define APR_STATUS_IS_ENOENT(s)
apr_brigade_flush void * ctx
apr_array_header_t ** result
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_int32_t apr_int32_t apr_int32_t err
#define apr_time_from_sec(sec)
#define MD_KEY_SUBPROBLEMS
#define MD_KEY_DNS01_VERSION
#define MD_KEY_CHALLENGES
#define MD_KEY_IDENTIFIER
apr_status_t md_acme_get_json(struct md_json_t **pjson, md_acme_t *acme, const char *url, apr_pool_t *p)
apr_status_t md_acme_req_body_init(md_acme_req_t *req, md_json_t *payload)
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)
static apr_status_t authz_http_set(md_acme_t *acme, apr_pool_t *p, const apr_table_t *hdrs, md_json_t *body, void *baton)
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)
static apr_status_t collect_offered(void *baton, size_t index, md_json_t *json)
void tls_alpn01_fnames(apr_pool_t *p, md_pkey_spec_t *kspec, char **keyfn, char **certfn)
static int copy_challenge_error(void *baton, size_t index, md_json_t *json)
md_acme_authz_t * md_acme_authz_create(apr_pool_t *p)
static apr_status_t cha_tls_alpn_01_setup(md_acme_authz_cha_t *cha, md_acme_authz_t *authz, md_acme_t *acme, md_store_t *store, md_pkeys_spec_t *key_specs, apr_array_header_t *acme_tls_1_domains, const md_t *md, apr_table_t *env, md_result_t *result, const char **psetup_token, apr_pool_t *p)
static apr_status_t on_init_authz_resp(md_acme_req_t *req, void *baton)
static void authz_req_ctx_init(authz_req_ctx *ctx, md_acme_t *acme, const char *domain, md_acme_authz_t *authz, apr_pool_t *p)
apr_status_t cha_teardown(md_store_t *store, const char *domain, const md_t *md, apr_table_t *env, apr_pool_t *p)
static const cha_type CHA_TYPES[]
static apr_status_t cha_dns_01_teardown(md_store_t *store, const char *domain, const md_t *md, apr_table_t *env, apr_pool_t *p)
static apr_status_t cha_dns_01_setup(md_acme_authz_cha_t *cha, md_acme_authz_t *authz, md_acme_t *acme, md_store_t *store, md_pkeys_spec_t *key_specs, apr_array_header_t *acme_tls_1_domains, const md_t *md, apr_table_t *env, md_result_t *result, const char **psetup_token, 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)
static apr_status_t cha_http_01_setup(md_acme_authz_cha_t *cha, md_acme_authz_t *authz, md_acme_t *acme, md_store_t *store, md_pkeys_spec_t *key_specs, apr_array_header_t *acme_tls_1_domains, const md_t *md, apr_table_t *env, md_result_t *result, const char **psetup_token, apr_pool_t *p)
static apr_status_t setup_key_authz(md_acme_authz_cha_t *cha, md_acme_authz_t *authz, md_acme_t *acme, apr_pool_t *p, int *pchanged)
static apr_status_t cha_teardown_dir(md_store_t *store, const char *domain, const md_t *md, apr_table_t *env, apr_pool_t *p)
apr_status_t md_acme_authz_update(md_acme_authz_t *authz, md_acme_t *acme, apr_pool_t *p)
static apr_status_t find_type(void *baton, size_t index, md_json_t *json)
static md_acme_authz_cha_t * cha_from_json(apr_pool_t *p, size_t index, md_json_t *json)
apr_status_t cha_setup(md_acme_authz_cha_t *cha, md_acme_authz_t *authz, md_acme_t *acme, md_store_t *store, md_pkeys_spec_t *key_specs, apr_array_header_t *acme_tls_1_domains, const md_t *md, apr_table_t *env, md_result_t *result, const char **psetup_token, apr_pool_t *p)
static const apr_size_t CHA_TYPES_LEN
@ MD_ACME_AUTHZ_S_PENDING
@ MD_ACME_AUTHZ_S_UNKNOWN
@ MD_ACME_AUTHZ_S_INVALID
#define MD_AUTHZ_TYPE_DNS01
#define MD_AUTHZ_TYPE_HTTP01
#define MD_AUTHZ_TYPE_TLSALPN01
md_pkey_spec_t * md_pkeys_spec_get(const md_pkeys_spec_t *pks, int index)
const char * md_pkey_spec_name(const md_pkey_spec_t *spec)
int md_pkeys_spec_count(const md_pkeys_spec_t *pks)
apr_status_t md_pkey_gen(md_pkey_t **ppkey, apr_pool_t *p, md_pkey_spec_t *spec)
apr_status_t md_cert_make_tls_alpn_01(md_cert_t **pcert, const char *domain, const char *acme_id, md_pkey_t *pkey, apr_interval_time_t valid_for, apr_pool_t *p)
apr_status_t md_crypt_sha256_digest64(const char **pdigest64, apr_pool_t *p, const md_data_t *d)
apr_status_t md_crypt_sha256_digest_hex(const char **pdigesthex, apr_pool_t *p, const md_data_t *data)
int md_cert_covers_domain(md_cert_t *cert, const char *domain_name)
md_json_t * md_json_create(apr_pool_t *pool)
md_json_t * md_json_dupj(apr_pool_t *p, const md_json_t *json,...)
const char * md_json_gets(const md_json_t *json,...)
int md_json_has_key(const md_json_t *json,...)
int md_json_itera(md_json_itera_cb *cb, void *baton, md_json_t *json,...)
const char * md_json_dups(apr_pool_t *p, const md_json_t *json,...)
const char * md_json_writep(const md_json_t *json, apr_pool_t *p, md_json_fmt_t fmt)
apr_status_t md_jws_pkey_thumb(const char **pthumb, apr_pool_t *p, struct md_pkey_t *pkey)
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,...)
int md_log_is_level(apr_pool_t *p, md_log_level_t level)
static md_log_level_cb * log_level
void md_result_activity_printf(md_result_t *result, const char *fmt,...)
apr_status_t md_result_raise(md_result_t *result, const char *event, apr_pool_t *p)
void md_result_printf(md_result_t *result, apr_status_t status, const char *fmt,...)
void md_result_log(md_result_t *result, unsigned int level)
apr_status_t md_store_save(md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *name, const char *aspect, md_store_vtype_t vtype, void *data, int create)
const char * md_pkey_filename(md_pkey_spec_t *spec, apr_pool_t *p)
const char * md_chain_filename(md_pkey_spec_t *spec, apr_pool_t *p)
apr_status_t md_store_purge(md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *name)
apr_status_t md_store_load(md_store_t *store, md_store_group_t group, const char *name, const char *aspect, md_store_vtype_t vtype, void **pdata, apr_pool_t *p)
void md_data_init_str(md_data_t *d, const char *str)
int md_array_str_index(const apr_array_header_t *array, const char *s, int start, int case_sensitive)
apr_status_t md_util_exec(apr_pool_t *p, const char *cmd, const char *const *argv, int *exit_code)
md_acme_authz_cha_t * challenge
md_acme_authz_cha_t * accepted
apr_array_header_t * offered
const struct md_json_t * error_subproblems
struct md_json_t * resource
md_acme_authz_state_t state
const char * error_detail
struct md_pkey_t * acct_key
typedef int(WSAAPI *apr_winapi_fpt_WSAPoll)(IN OUT LPWSAPOLLFD fdArray