92 lines
3.9 KiB
C
92 lines
3.9 KiB
C
/* Copyright 2019 greenbytes GmbH (https://www.greenbytes.de)
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef md_acme_order_h
|
|
#define md_acme_order_h
|
|
|
|
struct md_json_t;
|
|
struct md_result_t;
|
|
|
|
typedef struct md_acme_order_t md_acme_order_t;
|
|
|
|
typedef enum {
|
|
MD_ACME_ORDER_ST_PENDING,
|
|
MD_ACME_ORDER_ST_READY,
|
|
MD_ACME_ORDER_ST_PROCESSING,
|
|
MD_ACME_ORDER_ST_VALID,
|
|
MD_ACME_ORDER_ST_INVALID,
|
|
} md_acme_order_st;
|
|
|
|
struct md_acme_order_t {
|
|
apr_pool_t *p;
|
|
const char *url;
|
|
md_acme_order_st status;
|
|
struct apr_array_header_t *authz_urls;
|
|
struct apr_array_header_t *challenge_setups;
|
|
struct md_json_t *json;
|
|
const char *finalize;
|
|
const char *certificate;
|
|
};
|
|
|
|
#define MD_FN_ORDER "order.json"
|
|
|
|
/**************************************************************************************************/
|
|
|
|
md_acme_order_t *md_acme_order_create(apr_pool_t *p);
|
|
|
|
apr_status_t md_acme_order_add(md_acme_order_t *order, const char *authz_url);
|
|
apr_status_t md_acme_order_remove(md_acme_order_t *order, const char *authz_url);
|
|
|
|
struct md_json_t *md_acme_order_to_json(md_acme_order_t *set, apr_pool_t *p);
|
|
md_acme_order_t *md_acme_order_from_json(struct md_json_t *json, apr_pool_t *p);
|
|
|
|
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);
|
|
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);
|
|
|
|
apr_status_t md_acme_order_purge(struct 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_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, struct md_result_t *result,
|
|
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,
|
|
struct md_result_t *result, apr_pool_t *p);
|
|
|
|
/* ACMEv2 only ************************************************************************************/
|
|
|
|
apr_status_t md_acme_order_register(md_acme_order_t **porder, md_acme_t *acme, apr_pool_t *p,
|
|
const char *name, struct apr_array_header_t *domains);
|
|
|
|
apr_status_t md_acme_order_update(md_acme_order_t *order, md_acme_t *acme,
|
|
struct md_result_t *result, apr_pool_t *p);
|
|
|
|
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,
|
|
struct md_result_t *result, apr_pool_t *p);
|
|
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,
|
|
struct md_result_t *result, apr_pool_t *p);
|
|
|
|
#endif /* md_acme_order_h */
|