本项止转自github官方arduino-esp32 传在这里仅为阅读源码方便
projectuser
2019-07-05 50148ccffe21ff54262064ec9f2245900eaf18aa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
/*
 * eap.h - Extensible Authentication Protocol for PPP (RFC 2284)
 *
 * Copyright (c) 2001 by Sun Microsystems, Inc.
 * All rights reserved.
 *
 * Non-exclusive rights to redistribute, modify, translate, and use
 * this software in source and binary forms, in whole or in part, is
 * hereby granted, provided that the above copyright notice is
 * duplicated in any source form, and that neither the name of the
 * copyright holder nor the author is used to endorse or promote
 * products derived from this software.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 *
 * Original version by James Carlson
 *
 * $Id: eap.h,v 1.2 2003/06/11 23:56:26 paulus Exp $
 */
 
#include "netif/ppp/ppp_opts.h"
#if PPP_SUPPORT && EAP_SUPPORT  /* don't build if not configured for use in lwipopts.h */
 
#ifndef PPP_EAP_H
#define    PPP_EAP_H
 
#include "ppp.h"
 
#ifdef    __cplusplus
extern "C" {
#endif
 
/*
 * Packet header = Code, id, length.
 */
#define    EAP_HEADERLEN    4
 
 
/* EAP message codes. */
#define    EAP_REQUEST    1
#define    EAP_RESPONSE    2
#define    EAP_SUCCESS    3
#define    EAP_FAILURE    4
 
/* EAP types */
#define    EAPT_IDENTITY        1
#define    EAPT_NOTIFICATION    2
#define    EAPT_NAK        3    /* (response only) */
#define    EAPT_MD5CHAP        4
#define    EAPT_OTP        5    /* One-Time Password; RFC 1938 */
#define    EAPT_TOKEN        6    /* Generic Token Card */
/* 7 and 8 are unassigned. */
#define    EAPT_RSA        9    /* RSA Public Key Authentication */
#define    EAPT_DSS        10    /* DSS Unilateral */
#define    EAPT_KEA        11    /* KEA */
#define    EAPT_KEA_VALIDATE    12    /* KEA-VALIDATE    */
#define    EAPT_TLS        13    /* EAP-TLS */
#define    EAPT_DEFENDER        14    /* Defender Token (AXENT) */
#define    EAPT_W2K        15    /* Windows 2000 EAP */
#define    EAPT_ARCOT        16    /* Arcot Systems */
#define    EAPT_CISCOWIRELESS    17    /* Cisco Wireless */
#define    EAPT_NOKIACARD        18    /* Nokia IP smart card */
#define    EAPT_SRP        19    /* Secure Remote Password */
/* 20 is deprecated */
 
/* EAP SRP-SHA1 Subtypes */
#define    EAPSRP_CHALLENGE    1    /* Request 1 - Challenge */
#define    EAPSRP_CKEY        1    /* Response 1 - Client Key */
#define    EAPSRP_SKEY        2    /* Request 2 - Server Key */
#define    EAPSRP_CVALIDATOR    2    /* Response 2 - Client Validator */
#define    EAPSRP_SVALIDATOR    3    /* Request 3 - Server Validator */
#define    EAPSRP_ACK        3    /* Response 3 - final ack */
#define    EAPSRP_LWRECHALLENGE    4    /* Req/resp 4 - Lightweight rechal */
 
#define    SRPVAL_EBIT    0x00000001    /* Use shared key for ECP */
 
#define    SRP_PSEUDO_ID    "pseudo_"
#define    SRP_PSEUDO_LEN    7
 
#define MD5_SIGNATURE_SIZE    16
#define EAP_MIN_CHALLENGE_LENGTH    17
#define EAP_MAX_CHALLENGE_LENGTH    24
#define EAP_MIN_MAX_POWER_OF_TWO_CHALLENGE_LENGTH     3   /* 2^3-1 = 7, 17+7 = 24 */
 
#define    EAP_STATES    \
    "Initial", "Pending", "Closed", "Listen", "Identify", \
    "SRP1", "SRP2", "SRP3", "MD5Chall", "Open", "SRP4", "BadAuth"
 
#define    eap_client_active(pcb)    ((pcb)->eap.es_client.ea_state == eapListen)
#if PPP_SERVER
#define    eap_server_active(pcb)    \
    ((pcb)->eap.es_server.ea_state >= eapIdentify && \
     (pcb)->eap.es_server.ea_state <= eapMD5Chall)
#endif /* PPP_SERVER */
 
/*
 * Complete EAP state for one PPP session.
 */
enum eap_state_code {
    eapInitial = 0,    /* No EAP authentication yet requested */
    eapPending,    /* Waiting for LCP (no timer) */
    eapClosed,    /* Authentication not in use */
    eapListen,    /* Client ready (and timer running) */
    eapIdentify,    /* EAP Identify sent */
    eapSRP1,    /* Sent EAP SRP-SHA1 Subtype 1 */
    eapSRP2,    /* Sent EAP SRP-SHA1 Subtype 2 */
    eapSRP3,    /* Sent EAP SRP-SHA1 Subtype 3 */
    eapMD5Chall,    /* Sent MD5-Challenge */
    eapOpen,    /* Completed authentication */
    eapSRP4,    /* Sent EAP SRP-SHA1 Subtype 4 */
    eapBadAuth    /* Failed authentication */
};
 
struct eap_auth {
    const char *ea_name;    /* Our name */
    char ea_peer[MAXNAMELEN +1];    /* Peer's name */
    void *ea_session;    /* Authentication library linkage */
    u_char *ea_skey;    /* Shared encryption key */
    u_short ea_namelen;    /* Length of our name */
    u_short ea_peerlen;    /* Length of peer's name */
    enum eap_state_code ea_state;
    u_char ea_id;        /* Current id */
    u_char ea_requests;    /* Number of Requests sent/received */
    u_char ea_responses;    /* Number of Responses */
    u_char ea_type;        /* One of EAPT_* */
    u32_t ea_keyflags;    /* SRP shared key usage flags */
};
 
#ifndef EAP_MAX_CHALLENGE_LENGTH
#define EAP_MAX_CHALLENGE_LENGTH    24
#endif
typedef struct eap_state {
    struct eap_auth es_client;    /* Client (authenticatee) data */
#if PPP_SERVER
    struct eap_auth es_server;    /* Server (authenticator) data */
#endif /* PPP_SERVER */
    int es_savedtime;        /* Saved timeout */
    int es_rechallenge;        /* EAP rechallenge interval */
    int es_lwrechallenge;        /* SRP lightweight rechallenge inter */
    u8_t es_usepseudo;        /* Use SRP Pseudonym if offered one */
    int es_usedpseudo;        /* Set if we already sent PN */
    int es_challen;            /* Length of challenge string */
    u_char es_challenge[EAP_MAX_CHALLENGE_LENGTH];
} eap_state;
 
/*
 * Timeouts.
 */
#if 0 /* moved to ppp_opts.h */
#define    EAP_DEFTIMEOUT        3    /* Timeout (seconds) for rexmit */
#define    EAP_DEFTRANSMITS    10    /* max # times to transmit */
#define    EAP_DEFREQTIME        20    /* Time to wait for peer request */
#define    EAP_DEFALLOWREQ        20    /* max # times to accept requests */
#endif /* moved to ppp_opts.h */
 
void eap_authwithpeer(ppp_pcb *pcb, const char *localname);
void eap_authpeer(ppp_pcb *pcb, const char *localname);
 
extern const struct protent eap_protent;
 
#ifdef    __cplusplus
}
#endif
 
#endif /* PPP_EAP_H */
 
#endif /* PPP_SUPPORT && EAP_SUPPORT */