1/*
2 * EAP server/peer: EAP-TTLS (RFC 5281)
3 * Copyright (c) 2004-2007, Jouni Malinen <j@w1.fi>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 *
9 * Alternatively, this software may be distributed under the terms of BSD
10 * license.
11 *
12 * See README and COPYING for more details.
13 */
14
15#ifndef EAP_TTLS_H
16#define EAP_TTLS_H
17
18struct ttls_avp {
19	be32 avp_code;
20	be32 avp_length; /* 8-bit flags, 24-bit length;
21			  * length includes AVP header */
22	/* optional 32-bit Vendor-ID */
23	/* Data */
24};
25
26struct ttls_avp_vendor {
27	be32 avp_code;
28	be32 avp_length; /* 8-bit flags, 24-bit length;
29			  * length includes AVP header */
30	be32 vendor_id;
31	/* Data */
32};
33
34#define AVP_FLAGS_VENDOR 0x80
35#define AVP_FLAGS_MANDATORY 0x40
36
37#define AVP_PAD(start, pos) \
38do { \
39	int __pad; \
40	__pad = (4 - (((pos) - (start)) & 3)) & 3; \
41	os_memset((pos), 0, __pad); \
42	pos += __pad; \
43} while (0)
44
45
46/* RFC 2865 */
47#define RADIUS_ATTR_USER_NAME 1
48#define RADIUS_ATTR_USER_PASSWORD 2
49#define RADIUS_ATTR_CHAP_PASSWORD 3
50#define RADIUS_ATTR_REPLY_MESSAGE 18
51#define RADIUS_ATTR_CHAP_CHALLENGE 60
52#define RADIUS_ATTR_EAP_MESSAGE 79
53
54/* RFC 2548 */
55#define RADIUS_VENDOR_ID_MICROSOFT 311
56#define RADIUS_ATTR_MS_CHAP_RESPONSE 1
57#define RADIUS_ATTR_MS_CHAP_ERROR 2
58#define RADIUS_ATTR_MS_CHAP_NT_ENC_PW 6
59#define RADIUS_ATTR_MS_CHAP_CHALLENGE 11
60#define RADIUS_ATTR_MS_CHAP2_RESPONSE 25
61#define RADIUS_ATTR_MS_CHAP2_SUCCESS 26
62#define RADIUS_ATTR_MS_CHAP2_CPW 27
63
64#define EAP_TTLS_MSCHAPV2_CHALLENGE_LEN 16
65#define EAP_TTLS_MSCHAPV2_RESPONSE_LEN 50
66#define EAP_TTLS_MSCHAP_CHALLENGE_LEN 8
67#define EAP_TTLS_MSCHAP_RESPONSE_LEN 50
68#define EAP_TTLS_CHAP_CHALLENGE_LEN 16
69#define EAP_TTLS_CHAP_PASSWORD_LEN 16
70
71#endif /* EAP_TTLS_H */
72