Apache HTTPD
md_store.h
Go to the documentation of this file.
1/* Licensed to the Apache Software Foundation (ASF) under one or more
2 * contributor license agreements. See the NOTICE file distributed with
3 * this work for additional information regarding copyright ownership.
4 * The ASF licenses this file to You under the Apache License, Version 2.0
5 * (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef mod_md_md_store_h
18#define mod_md_md_store_h
19
21struct md_cert_t;
22struct md_pkey_t;
23struct md_pkey_spec_t;
24
25const char *md_store_group_name(unsigned int group);
26
27typedef struct md_store_t md_store_t;
28
52typedef enum {
53 MD_SV_TEXT, /* plain text, value is (char*) */
54 MD_SV_JSON, /* JSON serialization, value is (md_json_t*) */
55 MD_SV_CERT, /* PEM x509 certificate, value is (md_cert_t*) */
56 MD_SV_PKEY, /* PEM private key, value is (md_pkey_t*) */
57 MD_SV_CHAIN, /* list of PEM x509 certificates, value is
58 (apr_array_header_t*) of (md_cert*) */
60
62typedef enum {
63 MD_SG_NONE, /* top level of store, name MUST be NULL in calls */
64 MD_SG_ACCOUNTS, /* ACME accounts */
65 MD_SG_CHALLENGES, /* challenge response data for a domain */
66 MD_SG_DOMAINS, /* live certificates and settings for a domain */
67 MD_SG_STAGING, /* staged set of certificate and settings, maybe incomplete */
68 MD_SG_ARCHIVE, /* Archived live sets of a domain */
69 MD_SG_TMP, /* temporary domain storage */
70 MD_SG_OCSP, /* OCSP stapling related domain data */
71 MD_SG_COUNT, /* number of storage groups, used in setups */
73
74#define MD_FN_MD "md.json"
75#define MD_FN_JOB "job.json"
76#define MD_FN_HTTPD_JSON "httpd.json"
77
78/* The corresponding names for current cert & key files are constructed
79 * in md_store and md_crypt.
80 */
81
82/* These three legacy filenames are only used in md_store_fs to
83 * upgrade 1.0 directories. They should not be used for any other
84 * purpose.
85 */
86#define MD_FN_PRIVKEY "privkey.pem"
87#define MD_FN_PUBCERT "pubcert.pem"
88#define MD_FN_CERT "cert.pem"
89
95 const char *name, const char *aspect,
96 struct md_json_t **pdata, apr_pool_t *p);
102 const char *name, const char *aspect,
103 struct md_json_t *data, int create);
104
112 const char *name, const char *aspect,
113 md_store_vtype_t vtype, void **pdata,
114 apr_pool_t *p);
120 const char *name, const char *aspect,
121 md_store_vtype_t vtype, void *data,
122 int create);
123
129 const char *name, const char *aspect,
130 apr_pool_t *p, int force);
135 md_store_group_t group, const char *name);
136
142 apr_time_t modified,
143 md_store_group_t group,
144 const char *name,
145 const char *aspect);
146
152typedef int md_store_inspect(void *baton, const char *name, const char *aspect,
153 md_store_vtype_t vtype, void *value, apr_pool_t *ptemp);
154
160 apr_pool_t *p, md_store_group_t group, const char *pattern,
161 const char *aspect, md_store_vtype_t vtype);
162
169 const char *name, int archive);
170
175 md_store_group_t group, const char *name, const char *to);
176
182 md_store_t *store, md_store_group_t group,
183 const char *name, const char *aspect,
184 apr_pool_t *p);
185
190 const char *name, const char *aspect, apr_pool_t *p);
191
198 apr_pool_t *p, md_store_group_t group, const char *pattern);
199
205 const char *name, const char *aspect, apr_pool_t *p);
206
219
224
225/**************************************************************************************************/
226/* Storage handling utils */
227
229 const char *name, md_t **pmd, apr_pool_t *p);
231 md_t *md, int create);
233 const char *name, int force);
234
236 const char *name, apr_pool_t *p);
237
238typedef int md_store_md_inspect(void *baton, md_store_t *store, md_t *md, apr_pool_t *ptemp);
239
241 apr_pool_t *p, md_store_group_t group, const char *pattern);
242
243
244const char *md_pkey_filename(struct md_pkey_spec_t *spec, apr_pool_t *p);
245const char *md_chain_filename(struct md_pkey_spec_t *spec, apr_pool_t *p);
246
248 const char *name, struct md_pkey_spec_t *spec,
249 struct md_pkey_t **ppkey, apr_pool_t *p);
251 const char *name, struct md_pkey_spec_t *spec,
252 struct md_pkey_t *pkey, int create);
253
255 struct md_pkey_spec_t *spec, struct apr_array_header_t **ppubcert,
256 apr_pool_t *p);
258 md_store_group_t group, const char *name,
259 struct md_pkey_spec_t *spec,
260 struct apr_array_header_t *pubcert, int create);
261
262/**************************************************************************************************/
263/* X509 complete credentials */
264
271
272apr_status_t md_creds_load(md_store_t *store, md_store_group_t group, const char *name,
275 const char *name, md_credentials_t *creds, int create);
276
277/**************************************************************************************************/
278/* implementation interface */
279
281 const char *name, const char *aspect,
282 md_store_vtype_t vtype, void **pvalue,
283 apr_pool_t *p);
285 const char *name, const char *aspect,
286 md_store_vtype_t vtype, void *value,
287 int create);
289 const char *name, const char *aspect,
290 apr_pool_t *p, int force);
292 const char *name);
293
295 apr_pool_t *p, md_store_group_t group, const char *pattern,
296 const char *aspect, md_store_vtype_t vtype);
297
299 apr_pool_t *p, md_store_group_t group, const char *pattern);
300
302 md_store_group_t to, const char *name, int archive);
303
305 const char *from, const char *to);
306
308 md_store_t *store, md_store_group_t group,
309 const char *name, const char *aspect,
310 apr_pool_t *p);
311
314 const char *name, const char *aspect, apr_pool_t *p);
315
317 const char *name, const char *aspect, apr_pool_t *p);
318
320 apr_time_t modified, md_store_group_t group,
321 const char *name, const char *aspect);
324
341
342
343#endif /* mod_md_md_store_h */
const char * pattern
Definition ap_regex.h:243
ap_vhost_iterate_conn_cb void * baton
Definition http_vhost.h:87
apr_datum_t * pkey
Definition apr_dbm.h:158
apr_datum_t apr_datum_t * pvalue
Definition apr_dbm.h:128
apr_size_t size
const char * value
Definition apr_env.h:51
int apr_status_t
Definition apr_errno.h:44
void * data
int to
apr_int64_t apr_time_t
Definition apr_time.h:45
apr_pool_t * p
Definition md_event.c:32
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)
Definition md_store.c:78
apr_status_t md_store_names_iter_cb(md_store_inspect *inspect, void *baton, md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *pattern)
Definition md_store.h:298
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)
Definition md_store.c:113
apr_status_t md_store_iter(md_store_inspect *inspect, void *baton, md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *pattern, const char *aspect, md_store_vtype_t vtype)
Definition md_store.c:99
apr_status_t md_creds_save(md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *name, md_credentials_t *creds, int create)
Definition md_store.c:329
apr_status_t md_store_md_iter(md_store_md_inspect *inspect, void *baton, md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *pattern)
Definition md_store.c:364
void md_store_unlock_global_cb(md_store_t *store, apr_pool_t *p)
Definition md_store.h:323
apr_status_t md_store_get_fname_cb(const char **pfname, md_store_t *store, md_store_group_t group, const char *name, const char *aspect, apr_pool_t *p)
Definition md_store.h:307
md_store_group_t
Definition md_store.h:62
@ MD_SG_ACCOUNTS
Definition md_store.h:64
@ MD_SG_STAGING
Definition md_store.h:67
@ MD_SG_OCSP
Definition md_store.h:70
@ MD_SG_NONE
Definition md_store.h:63
@ MD_SG_COUNT
Definition md_store.h:71
@ MD_SG_ARCHIVE
Definition md_store.h:68
@ MD_SG_TMP
Definition md_store.h:69
@ MD_SG_CHALLENGES
Definition md_store.h:65
@ MD_SG_DOMAINS
Definition md_store.h:66
apr_status_t md_save(struct md_store_t *store, apr_pool_t *p, md_store_group_t group, md_t *md, int create)
Definition md_store.c:211
apr_status_t md_store_iter_names(md_store_inspect *inspect, void *baton, md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *pattern)
Definition md_store.c:150
void md_store_unlock_global(md_store_t *store, apr_pool_t *p)
Definition md_store.c:382
md_store_vtype_t
Definition md_store.h:52
@ MD_SV_PKEY
Definition md_store.h:56
@ MD_SV_CERT
Definition md_store.h:55
@ MD_SV_JSON
Definition md_store.h:54
@ MD_SV_TEXT
Definition md_store.h:53
@ MD_SV_CHAIN
Definition md_store.h:57
int md_store_is_newer_cb(md_store_t *store, md_store_group_t group1, md_store_group_t group2, const char *name, const char *aspect, apr_pool_t *p)
Definition md_store.h:312
int md_store_md_inspect(void *baton, md_store_t *store, md_t *md, apr_pool_t *ptemp)
Definition md_store.h:238
apr_status_t md_store_load_cb(md_store_t *store, md_store_group_t group, const char *name, const char *aspect, md_store_vtype_t vtype, void **pvalue, apr_pool_t *p)
Definition md_store.h:280
apr_status_t md_store_lock_global_cb(md_store_t *store, apr_pool_t *p, apr_time_t max_wait)
Definition md_store.h:322
apr_time_t md_store_get_modified(md_store_t *store, md_store_group_t group, const char *name, const char *aspect, apr_pool_t *p)
Definition md_store.c:144
apr_status_t md_store_remove_nms_cb(md_store_t *store, apr_pool_t *p, apr_time_t modified, md_store_group_t group, const char *name, const char *aspect)
Definition md_store.h:319
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)
Definition md_store.c:86
apr_status_t md_store_iter_cb(md_store_inspect *inspect, void *baton, md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *pattern, const char *aspect, md_store_vtype_t vtype)
Definition md_store.h:294
apr_status_t md_store_get_fname(const char **pfname, md_store_t *store, md_store_group_t group, const char *name, const char *aspect, apr_pool_t *p)
Definition md_store.c:127
int md_store_is_newer(md_store_t *store, md_store_group_t group1, md_store_group_t group2, const char *name, const char *aspect, apr_pool_t *p)
Definition md_store.c:138
int md_is_newer(md_store_t *store, md_store_group_t group1, md_store_group_t group2, const char *name, apr_pool_t *p)
Definition md_store.c:245
apr_status_t md_creds_load(md_store_t *store, md_store_group_t group, const char *name, struct md_pkey_spec_t *spec, md_credentials_t **pcreds, apr_pool_t *p)
Definition md_store.c:311
apr_status_t md_store_remove_not_modified_since(md_store_t *store, apr_pool_t *p, apr_time_t modified, md_store_group_t group, const char *name, const char *aspect)
Definition md_store.c:156
apr_status_t md_store_lock_global(md_store_t *store, apr_pool_t *p, apr_time_t max_wait)
Definition md_store.c:377
apr_status_t md_store_purge(md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *name)
Definition md_store.c:93
apr_status_t md_pkey_load(md_store_t *store, md_store_group_t group, const char *name, struct md_pkey_spec_t *spec, struct md_pkey_t **ppkey, apr_pool_t *p)
Definition md_store.c:281
apr_status_t md_pkey_save(md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *name, struct md_pkey_spec_t *spec, struct md_pkey_t *pkey, int create)
Definition md_store.c:288
const char * md_chain_filename(struct md_pkey_spec_t *spec, apr_pool_t *p)
Definition md_store.c:276
int md_store_inspect(void *baton, const char *name, const char *aspect, md_store_vtype_t vtype, void *value, apr_pool_t *ptemp)
Definition md_store.h:152
apr_time_t md_store_get_modified_cb(md_store_t *store, md_store_group_t group, const char *name, const char *aspect, apr_pool_t *p)
Definition md_store.h:316
const char * md_store_group_name(unsigned int group)
Definition md_store.c:62
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)
Definition md_store.c:106
apr_status_t md_store_move(md_store_t *store, apr_pool_t *p, md_store_group_t from, md_store_group_t to, const char *name, int archive)
Definition md_store.c:120
apr_status_t md_store_remove_cb(md_store_t *store, md_store_group_t group, const char *name, const char *aspect, apr_pool_t *p, int force)
Definition md_store.h:288
apr_status_t md_store_rename(md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *name, const char *to)
Definition md_store.c:165
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)
Definition md_store.c:70
apr_status_t md_store_rename_cb(md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *from, const char *to)
Definition md_store.h:304
apr_status_t md_pubcert_load(md_store_t *store, md_store_group_t group, const char *name, struct md_pkey_spec_t *spec, struct apr_array_header_t **ppubcert, apr_pool_t *p)
Definition md_store.c:295
apr_status_t md_remove(md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *name, int force)
Definition md_store.c:235
apr_status_t md_pubcert_save(md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *name, struct md_pkey_spec_t *spec, struct apr_array_header_t *pubcert, int create)
Definition md_store.c:303
apr_status_t md_store_purge_cb(md_store_t *store, apr_pool_t *p, md_store_group_t group, const char *name)
Definition md_store.h:291
const char * md_pkey_filename(struct md_pkey_spec_t *spec, apr_pool_t *p)
Definition md_store.c:271
apr_status_t md_store_save_cb(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 *value, int create)
Definition md_store.h:284
apr_status_t md_load(md_store_t *store, md_store_group_t group, const char *name, md_t **pmd, apr_pool_t *p)
Definition md_store.c:179
apr_status_t md_store_move_cb(md_store_t *store, apr_pool_t *p, md_store_group_t from, md_store_group_t to, const char *name, int archive)
Definition md_store.h:301
char * name
struct apr_array_header_t * chain
Definition md_store.h:269
struct md_pkey_spec_t * spec
Definition md_store.h:267
struct md_pkey_t * pkey
Definition md_store.h:268
md_store_unlock_global_cb * unlock_global
Definition md_store.h:339
md_store_rename_cb * rename
Definition md_store.h:330
md_store_iter_cb * iterate
Definition md_store.h:331
md_store_get_fname_cb * get_fname
Definition md_store.h:334
md_store_save_cb * save
Definition md_store.h:326
md_store_get_modified_cb * get_modified
Definition md_store.h:336
md_store_names_iter_cb * iterate_names
Definition md_store.h:332
md_store_remove_nms_cb * remove_nms
Definition md_store.h:337
md_store_remove_cb * remove
Definition md_store.h:328
md_store_load_cb * load
Definition md_store.h:327
md_store_move_cb * move
Definition md_store.h:329
md_store_lock_global_cb * lock_global
Definition md_store.h:338
md_store_is_newer_cb * is_newer
Definition md_store.h:335
md_store_purge_cb * purge
Definition md_store.h:333
Definition md.h:76