24 #if PPP_SUPPORT && EAP_SUPPORT
38 #define EAP_HEADERLEN 4
43 #define EAP_RESPONSE 2
48 #define EAPT_IDENTITY 1
49 #define EAPT_NOTIFICATION 2
51 #define EAPT_MD5CHAP 4
58 #define EAPT_KEA_VALIDATE 12
60 #define EAPT_DEFENDER 14
63 #define EAPT_CISCOWIRELESS 17
64 #define EAPT_NOKIACARD 18
69 #define EAPSRP_CHALLENGE 1
72 #define EAPSRP_CVALIDATOR 2
73 #define EAPSRP_SVALIDATOR 3
75 #define EAPSRP_LWRECHALLENGE 4
77 #define SRPVAL_EBIT 0x00000001
79 #define SRP_PSEUDO_ID "pseudo_"
80 #define SRP_PSEUDO_LEN 7
82 #define MD5_SIGNATURE_SIZE 16
83 #define EAP_MIN_CHALLENGE_LENGTH 17
84 #define EAP_MAX_CHALLENGE_LENGTH 24
85 #define EAP_MIN_MAX_POWER_OF_TWO_CHALLENGE_LENGTH 3
88 "Initial", "Pending", "Closed", "Listen", "Identify", \
89 "SRP1", "SRP2", "SRP3", "MD5Chall", "Open", "SRP4", "BadAuth"
91 #define eap_client_active(pcb) ((pcb)->eap.es_client.ea_state == eapListen)
93 #define eap_server_active(pcb) \
94 ((pcb)->eap.es_server.ea_state >= eapIdentify && \
95 (pcb)->eap.es_server.ea_state <= eapMD5Chall)
101 enum eap_state_code {
118 char ea_peer[MAXNAMELEN +1];
123 enum eap_state_code ea_state;
131 #ifndef EAP_MAX_CHALLENGE_LENGTH
132 #define EAP_MAX_CHALLENGE_LENGTH 24
134 typedef struct eap_state {
135 struct eap_auth es_client;
137 struct eap_auth es_server;
141 int es_lwrechallenge;
145 u_char es_challenge[EAP_MAX_CHALLENGE_LENGTH];
152 #define EAP_DEFTIMEOUT 3
153 #define EAP_DEFTRANSMITS 10
154 #define EAP_DEFREQTIME 20
155 #define EAP_DEFALLOWREQ 20
158 void eap_authwithpeer(ppp_pcb *pcb,
const char *localname);
159 void eap_authpeer(ppp_pcb *pcb,
const char *localname);
161 extern const struct protent eap_protent;