1 /* $OpenBSD: parse.h,v 1.13 2019/06/17 12:42:52 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 }; 42 43 struct domain_c { 44 TAILQ_ENTRY(domain_c) entry; 45 TAILQ_HEAD(, altname_c) altname_list; 46 int altname_count; 47 enum keytype keytype; 48 char *domain; 49 char *key; 50 char *cert; 51 char *chain; 52 char *fullchain; 53 char *auth; 54 char *challengedir; 55 }; 56 57 struct altname_c { 58 TAILQ_ENTRY(altname_c) entry; 59 char *domain; 60 }; 61 62 struct keyfile { 63 LIST_ENTRY(keyfile) entry; 64 char *name; 65 }; 66 67 #define ACME_OPT_VERBOSE 0x00000001 68 #define ACME_OPT_CHECK 0x00000004 69 70 struct acme_conf { 71 int opts; 72 TAILQ_HEAD(, authority_c) authority_list; 73 TAILQ_HEAD(, domain_c) domain_list; 74 LIST_HEAD(, keyfile) used_key_list; 75 }; 76 77 struct acme_conf *parse_config(const char *, int); 78 int cmdline_symset(char *); 79 80 /* use these to find a authority or domain by name */ 81 struct authority_c *authority_find(struct acme_conf *, char *); 82 struct authority_c *authority_find0(struct acme_conf *); 83 struct domain_c *domain_find(struct acme_conf *, char *); 84 85 int domain_valid(const char *); 86 87 #endif /* PARSE_H */ 88