port fix from branch_1_1
[freeradius.git] / src / modules / rlm_eap / types / rlm_eap_mschapv2 / eap_mschapv2.h
1 #ifndef _EAP_MSCHAPV2_H
2 #define _EAP_MSCHAPV2_H
3
4 #include <freeradius-devel/ident.h>
5 RCSIDH(eap_mschapv2_h, "$Id$")
6
7 #include "eap.h"
8
9 /*
10  *      draft-kamath-pppext-eap-mschapv2-00.txt says:
11  *
12  *      Supplicant              FreeRADIUS
13  *                      <--     challenge
14  *      response        -->
15  *                      <--     success
16  *      success         -->
17  *
18  *      But what we often see is:
19  *
20  *      Supplicant              FreeRADIUS
21  *                      <--     challenge
22  *      response        -->
23  *                      <--     success
24  *      ack             -->
25  */
26 #define PW_EAP_MSCHAPV2_ACK             0
27 #define PW_EAP_MSCHAPV2_CHALLENGE       1
28 #define PW_EAP_MSCHAPV2_RESPONSE        2
29 #define PW_EAP_MSCHAPV2_SUCCESS         3
30 #define PW_EAP_MSCHAPV2_FAILURE         4
31 #define PW_EAP_MSCHAPV2_MAX_CODES       4
32
33 #define MSCHAPV2_HEADER_LEN     5
34 #define MSCHAPV2_CHALLENGE_LEN  16
35 #define MSCHAPV2_RESPONSE_LEN  50
36
37 #define MSCHAPV2_FAILURE_MESSAGE "E=691 R=0"
38 #define MSCHAPV2_FAILURE_MESSAGE_LEN 9
39 typedef struct mschapv2_header_t {
40         uint8_t opcode;
41         uint8_t mschapv2_id;
42         uint8_t ms_length[2];
43         uint8_t value_size;
44 } mschapv2_header_t;
45
46 typedef struct mschapv2_opaque_t {
47         int             code;
48         uint8_t         challenge[MSCHAPV2_CHALLENGE_LEN];
49 } mschapv2_opaque_t;
50
51 #endif /*_EAP_MSCHAPV2_H*/