18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/*
28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * EAP server/peer: EAP-TTLS (RFC 5281)
38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2004-2007, Jouni Malinen <j@w1.fi>
48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt *
5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license.
6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details.
78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */
88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef EAP_TTLS_H
108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define EAP_TTLS_H
118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct ttls_avp {
138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	be32 avp_code;
148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	be32 avp_length; /* 8-bit flags, 24-bit length;
158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			  * length includes AVP header */
168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	/* optional 32-bit Vendor-ID */
178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	/* Data */
188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt};
198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct ttls_avp_vendor {
218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	be32 avp_code;
228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	be32 avp_length; /* 8-bit flags, 24-bit length;
238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			  * length includes AVP header */
248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	be32 vendor_id;
258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	/* Data */
268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt};
278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define AVP_FLAGS_VENDOR 0x80
298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define AVP_FLAGS_MANDATORY 0x40
308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define AVP_PAD(start, pos) \
328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtdo { \
338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	int __pad; \
348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	__pad = (4 - (((pos) - (start)) & 3)) & 3; \
358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	os_memset((pos), 0, __pad); \
368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	pos += __pad; \
378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} while (0)
388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* RFC 2865 */
418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define RADIUS_ATTR_USER_NAME 1
428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define RADIUS_ATTR_USER_PASSWORD 2
438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define RADIUS_ATTR_CHAP_PASSWORD 3
448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define RADIUS_ATTR_REPLY_MESSAGE 18
458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define RADIUS_ATTR_CHAP_CHALLENGE 60
468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define RADIUS_ATTR_EAP_MESSAGE 79
478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* RFC 2548 */
498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define RADIUS_VENDOR_ID_MICROSOFT 311
508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define RADIUS_ATTR_MS_CHAP_RESPONSE 1
518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define RADIUS_ATTR_MS_CHAP_ERROR 2
528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define RADIUS_ATTR_MS_CHAP_NT_ENC_PW 6
538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define RADIUS_ATTR_MS_CHAP_CHALLENGE 11
548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define RADIUS_ATTR_MS_CHAP2_RESPONSE 25
558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define RADIUS_ATTR_MS_CHAP2_SUCCESS 26
568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define RADIUS_ATTR_MS_CHAP2_CPW 27
578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define EAP_TTLS_MSCHAPV2_CHALLENGE_LEN 16
598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define EAP_TTLS_MSCHAPV2_RESPONSE_LEN 50
608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define EAP_TTLS_MSCHAP_CHALLENGE_LEN 8
618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define EAP_TTLS_MSCHAP_RESPONSE_LEN 50
628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define EAP_TTLS_CHAP_CHALLENGE_LEN 16
638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define EAP_TTLS_CHAP_PASSWORD_LEN 16
648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* EAP_TTLS_H */
66