1/*	$OpenBSD: types.h,v 1.54 2024/02/15 20:10:45 tobhe Exp $	*/
2
3/*
4 * Copyright (c) 2019 Tobias Heider <tobias.heider@stusta.de>
5 * Copyright (c) 2010-2013 Reyk Floeter <reyk@openbsd.org>
6 *
7 * Permission to use, copy, modify, and distribute this software for any
8 * purpose with or without fee is hereby granted, provided that the above
9 * copyright notice and this permission notice appear in all copies.
10 *
11 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18 */
19
20#ifndef IKED_TYPES_H
21#define IKED_TYPES_H
22
23#ifndef IKED_USER
24#define IKED_USER		"_iked"
25#endif
26
27#ifndef IKED_CONFIG
28#define IKED_CONFIG		"/etc/iked.conf"
29#endif
30
31#define IKED_SOCKET		"/var/run/iked.sock"
32
33#ifndef IKED_CA
34#define IKED_CA			"/etc/iked/"
35#endif
36
37#define IKED_CA_DIR		"ca/"
38#define IKED_CRL_DIR		"crls/"
39#define IKED_CERT_DIR		"certs/"
40#define IKED_PUBKEY_DIR		"pubkeys/"
41#define IKED_PRIVKEY		IKED_CA "private/local.key"
42#define IKED_PUBKEY		"local.pub"
43
44#define IKED_VENDOR_ID		"OpenIKED-"
45
46#define IKED_OCSP_RESPCERT	"ocsp/responder.crt"
47
48#define IKED_OPT_VERBOSE	0x00000001
49#define IKED_OPT_NOACTION	0x00000002
50#define IKED_OPT_PASSIVE	0x00000004
51
52#define IKED_IKE_PORT		500
53#define IKED_NATT_PORT		4500
54
55#define IKED_NONCE_MIN		16	/* XXX 128 bits */
56#define IKED_NONCE_SIZE		32	/* XXX 256 bits */
57
58#define IKED_COOKIE_MIN		1	/* min 1 bytes */
59#define IKED_COOKIE_MAX		64	/* max 64 bytes */
60
61#define IKED_COOKIE2_MIN	8	/* min 8 bytes */
62#define IKED_COOKIE2_MAX	64	/* max 64 bytes */
63
64#define IKED_ID_SIZE		1024	/* XXX should be dynamic */
65#define IKED_PSK_SIZE		1024	/* XXX should be dynamic */
66#define IKED_MSGBUF_MAX		8192
67#define IKED_CFG_MAX		16	/* maximum CP attributes */
68#define IKED_IPPROTO_MAX	16
69#define IKED_TAG_SIZE		64
70#define IKED_CYCLE_BUFFERS	8	/* # of static buffers for mapping */
71#define IKED_PASSWORD_SIZE	256	/* limited by most EAP types */
72
73#define IKED_LIFETIME_BYTES	4294967296ULL	/* 4 GB */
74#define IKED_LIFETIME_SECONDS	10800	  	/* 3 hours */
75
76#define IKED_E			0x1000	/* Decrypted flag */
77
78struct iked_constmap {
79	unsigned int	 cm_type;
80	const char	*cm_name;
81	const char	*cm_descr;
82};
83
84struct iked_transform {
85	uint8_t				 xform_type;
86	uint16_t			 xform_id;
87	uint16_t			 xform_length;
88	uint16_t			 xform_keylength;
89	unsigned int			 xform_score;
90	struct iked_constmap		*xform_map;
91};
92
93enum imsg_type {
94	IMSG_NONE,
95	IMSG_CTL_OK,
96	IMSG_CTL_FAIL,
97	IMSG_CTL_VERBOSE,
98	IMSG_CTL_NOTIFY,
99	IMSG_CTL_RELOAD,
100	IMSG_CTL_RESET,
101	IMSG_CTL_COUPLE,
102	IMSG_CTL_DECOUPLE,
103	IMSG_CTL_ACTIVE,
104	IMSG_CTL_PASSIVE,
105	IMSG_CTL_RESET_ID,
106	IMSG_CTL_SHOW_SA,
107	IMSG_CTL_STATIC,
108	IMSG_COMPILE,
109	IMSG_UDP_SOCKET,
110	IMSG_PFKEY_SOCKET,
111	IMSG_IKE_MESSAGE,
112	IMSG_CFG_POLICY,
113	IMSG_CFG_FLOW,
114	IMSG_CFG_USER,
115	IMSG_CERTREQ,
116	IMSG_CERT,
117	IMSG_CERTVALID,
118	IMSG_CERTINVALID,
119	IMSG_SCERT,
120	IMSG_IF_ADDADDR,
121	IMSG_IF_DELADDR,
122	IMSG_VROUTE_ADD,
123	IMSG_VROUTE_DEL,
124	IMSG_VROUTE_CLONE,
125	IMSG_VDNS_ADD,
126	IMSG_VDNS_DEL,
127	IMSG_OCSP_FD,
128	IMSG_OCSP_CFG,
129	IMSG_AUTH,
130	IMSG_PRIVKEY,
131	IMSG_PUBKEY,
132	IMSG_CTL_SHOW_CERTSTORE,
133	IMSG_CTL_SHOW_STATS,
134	IMSG_CTL_PROCFD,
135	IMSG_CTL_PROCREADY,
136};
137
138enum privsep_procid {
139	PROC_PARENT = 0,
140	PROC_CONTROL,
141	PROC_CERT,
142	PROC_IKEV2,
143	PROC_MAX
144};
145
146enum flushmode {
147	RESET_RELOAD	= 0,
148	RESET_ALL,
149	RESET_CA,
150	RESET_POLICY,
151	RESET_SA,
152	RESET_USER,
153};
154
155#ifndef nitems
156#define nitems(_a)   (sizeof((_a)) / sizeof((_a)[0]))
157#endif
158
159#endif /* IKED_TYPES_H */
160