1 /* $OpenBSD: parse.h,v 1.15 2020/09/14 16:00:17 florian Exp $ */ 2 /* 3 * Copyright (c) 2016 Sebastian Benoit <benno@openbsd.org> 4 * 5 * Permission to use, copy, modify, and distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 */ 17 #ifndef PARSE_H 18 #define PARSE_H 19 20 #include <sys/queue.h> 21 22 #define AUTH_MAXLEN 120 /* max length of an authority_c name */ 23 #define DOMAIN_MAXLEN 255 /* max len of a domain name (rfc2181) */ 24 25 /* 26 * XXX other size limits needed? 27 * limit all paths to PATH_MAX 28 */ 29 30 enum keytype { 31 KT_RSA = 0, 32 KT_ECDSA 33 }; 34 35 struct authority_c { 36 TAILQ_ENTRY(authority_c) entry; 37 char *name; 38 char *api; 39 char *account; 40 enum keytype keytype; 41 char *contact; 42 }; 43 44 struct domain_c { 45 TAILQ_ENTRY(domain_c) entry; 46 TAILQ_HEAD(, altname_c) altname_list; 47 int altname_count; 48 enum keytype keytype; 49 char *handle; 50 char *domain; 51 char *key; 52 char *cert; 53 char *chain; 54 char *fullchain; 55 char *auth; 56 char *challengedir; 57 }; 58 59 struct altname_c { 60 TAILQ_ENTRY(altname_c) entry; 61 char *domain; 62 }; 63 64 struct keyfile { 65 LIST_ENTRY(keyfile) entry; 66 char *name; 67 }; 68 69 #define ACME_OPT_VERBOSE 0x00000001 70 #define ACME_OPT_CHECK 0x00000004 71 72 struct acme_conf { 73 int opts; 74 TAILQ_HEAD(, authority_c) authority_list; 75 TAILQ_HEAD(, domain_c) domain_list; 76 LIST_HEAD(, keyfile) used_key_list; 77 }; 78 79 struct acme_conf *parse_config(const char *, int); 80 int cmdline_symset(char *); 81 82 /* use these to find a authority or domain by name */ 83 struct authority_c *authority_find(struct acme_conf *, char *); 84 struct authority_c *authority_find0(struct acme_conf *); 85 struct domain_c *domain_find_handle(struct acme_conf *, char *); 86 87 int domain_valid(const char *); 88 89 #endif /* PARSE_H */ 90