xref: /reactos/sdk/include/psdk/raseapif.h (revision c2c66aff)
1 #ifndef _RASEAPIF_
2 #define _RASEAPIF_
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #if(WINVER >= 0x0500)
9 
10 #define RAS_EAP_REGISTRY_LOCATION TEXT("SYSTEM\\CurrentControlSet\\Services\\Rasman\\PPP\\EAP")
11 
12 #define RAS_EAP_VALUENAME_PATH                  TEXT("Path")
13 #define RAS_EAP_VALUENAME_CONFIGUI              TEXT("ConfigUIPath")
14 #define RAS_EAP_VALUENAME_INTERACTIVEUI         TEXT("InteractiveUIPath")
15 #define RAS_EAP_VALUENAME_IDENTITY              TEXT("IdentityPath")
16 #define RAS_EAP_VALUENAME_FRIENDLY_NAME         TEXT("FriendlyName")
17 #define RAS_EAP_VALUENAME_DEFAULT_DATA          TEXT("ConfigData")
18 #define RAS_EAP_VALUENAME_REQUIRE_CONFIGUI      TEXT("RequireConfigUI")
19 #define RAS_EAP_VALUENAME_ENCRYPTION            TEXT("MPPEEncryptionSupported")
20 #define RAS_EAP_VALUENAME_INVOKE_NAMEDLG        TEXT("InvokeUsernameDialog")
21 #define RAS_EAP_VALUENAME_INVOKE_PWDDLG         TEXT("InvokePasswordDialog")
22 #define RAS_EAP_VALUENAME_CONFIG_CLSID          TEXT("ConfigCLSID")
23 #define RAS_EAP_VALUENAME_STANDALONE_SUPPORTED  TEXT("StandaloneSupported")
24 #define RAS_EAP_VALUENAME_ROLES_SUPPORTED       TEXT("RolesSupported")
25 #define RAS_EAP_VALUENAME_PER_POLICY_CONFIG     TEXT("PerPolicyConfig")
26 
27 #define RAS_EAP_ROLE_AUTHENTICATOR              0x00000001
28 #define RAS_EAP_ROLE_AUTHENTICATEE              0x00000002
29 
30 #define RAS_EAP_ROLE_EXCLUDE_IN_EAP             0x00000004
31 #define RAS_EAP_ROLE_EXCLUDE_IN_PEAP            0x00000008
32 #define RAS_EAP_ROLE_EXCLUDE_IN_VPN             0x00000010
33 
34 #define  raatARAPChallenge                      33
35 #define  raatARAPOldPassword                    19
36 #define  raatARAPNewPassword                    20
37 #define  raatARAPPasswordChangeReason           21
38 
39 #define EAPCODE_Request                         1
40 #define EAPCODE_Response                        2
41 #define EAPCODE_Success                         3
42 #define EAPCODE_Failure                         4
43 
44 #define MAXEAPCODE                              4
45 
46 #define RAS_EAP_FLAG_ROUTER                     0x00000001
47 #define RAS_EAP_FLAG_NON_INTERACTIVE            0x00000002
48 #define RAS_EAP_FLAG_LOGON                      0x00000004
49 #define RAS_EAP_FLAG_PREVIEW                    0x00000008
50 #define RAS_EAP_FLAG_FIRST_LINK                 0x00000010
51 #define RAS_EAP_FLAG_MACHINE_AUTH               0x00000020
52 #define RAS_EAP_FLAG_GUEST_ACCESS               0x00000040
53 #define RAS_EAP_FLAG_8021X_AUTH                 0x00000080
54 #define RAS_EAP_FLAG_HOSTED_IN_PEAP             0x00000100
55 #define RAS_EAP_FLAG_RESUME_FROM_HIBERNATE      0x00000200
56 #define RAS_EAP_FLAG_PEAP_UPFRONT               0x00000400
57 #define RAS_EAP_FLAG_ALTERNATIVE_USER_DB        0x00000800
58 
59 typedef enum _RAS_AUTH_ATTRIBUTE_TYPE_
60 {
61     raatMinimum = 0,
62     raatUserName,
63     raatUserPassword,
64     raatMD5CHAPPassword,
65     raatNASIPAddress,
66     raatNASPort,
67     raatServiceType,
68     raatFramedProtocol,
69     raatFramedIPAddress,
70     raatFramedIPNetmask,
71     raatFramedRouting = 10,
72     raatFilterId,
73     raatFramedMTU,
74     raatFramedCompression,
75     raatLoginIPHost,
76     raatLoginService,
77     raatLoginTCPPort,
78     raatUnassigned17,
79     raatReplyMessage,
80     raatCallbackNumber,
81     raatCallbackId =20,
82     raatUnassigned21,
83     raatFramedRoute,
84     raatFramedIPXNetwork,
85     raatState,
86     raatClass,
87     raatVendorSpecific,
88     raatSessionTimeout,
89     raatIdleTimeout,
90     raatTerminationAction,
91     raatCalledStationId = 30,
92     raatCallingStationId,
93     raatNASIdentifier,
94     raatProxyState,
95     raatLoginLATService,
96     raatLoginLATNode,
97     raatLoginLATGroup,
98     raatFramedAppleTalkLink,
99     raatFramedAppleTalkNetwork,
100     raatFramedAppleTalkZone,
101     raatAcctStatusType = 40,
102     raatAcctDelayTime,
103     raatAcctInputOctets,
104     raatAcctOutputOctets,
105     raatAcctSessionId,
106     raatAcctAuthentic,
107     raatAcctSessionTime,
108     raatAcctInputPackets,
109     raatAcctOutputPackets,
110     raatAcctTerminateCause,
111     raatAcctMultiSessionId = 50,
112     raatAcctLinkCount,
113     raatAcctEventTimeStamp = 55,
114     raatMD5CHAPChallenge = 60,
115     raatNASPortType,
116     raatPortLimit,
117     raatLoginLATPort,
118     raatTunnelType,
119     raatTunnelMediumType,
120     raatTunnelClientEndpoint,
121     raatTunnelServerEndpoint,
122     raatARAPPassword = 70,
123     raatARAPFeatures,
124     raatARAPZoneAccess,
125     raatARAPSecurity,
126     raatARAPSecurityData,
127     raatPasswordRetry,
128     raatPrompt,
129     raatConnectInfo,
130     raatConfigurationToken,
131     raatEAPMessage,
132     raatSignature = 80,
133     raatARAPChallengeResponse = 84,
134     raatAcctInterimInterval = 85,
135     raatARAPGuestLogon = 8096,
136     raatCertificateOID,
137     raatEAPConfiguration,
138     raatPEAPEmbeddedEAPTypeId,
139     raatPEAPFastRoamedSession,
140     raatEAPTLV = 8102,
141     raatReserved = 0xFFFFFFFF
142 
143 }RAS_AUTH_ATTRIBUTE_TYPE;
144 
145 typedef struct _RAS_AUTH_ATTRIBUTE
146 {
147     RAS_AUTH_ATTRIBUTE_TYPE raaType;
148     DWORD dwLength;
149     PVOID Value;
150 
151 }RAS_AUTH_ATTRIBUTE, *PRAS_AUTH_ATTRIBUTE;
152 
153 typedef struct _PPP_EAP_PACKET
154 {
155     BYTE Code;
156     BYTE Id;
157     BYTE Length[2];
158     BYTE Data[1];
159 }PPP_EAP_PACKET, *PPPP_EAP_PACKET;
160 
161 #define PPP_EAP_PACKET_HDR_LEN (sizeof(PPP_EAP_PACKET) - 1)
162 
163 typedef struct _PPP_EAP_INPUT
164 {
165     DWORD dwSizeInBytes;
166     DWORD fFlags;
167     BOOL fAuthenticator;
168     WCHAR* pwszIdentity;
169     WCHAR* pwszPassword;
170     BYTE bInitialId;
171     RAS_AUTH_ATTRIBUTE* pUserAttributes;
172     BOOL fAuthenticationComplete;
173     DWORD dwAuthResultCode;
174     OPTIONAL HANDLE hTokenImpersonateUser;
175     BOOL fSuccessPacketReceived;
176     BOOL fDataReceivedFromInteractiveUI;
177     OPTIONAL PBYTE pDataFromInteractiveUI;
178     DWORD dwSizeOfDataFromInteractiveUI;
179     OPTIONAL PBYTE pConnectionData;
180     DWORD dwSizeOfConnectionData;
181     OPTIONAL PBYTE pUserData;
182     DWORD dwSizeOfUserData;
183     HANDLE hReserved;
184 }PPP_EAP_INPUT, *PPPP_EAP_INPUT;
185 
186 typedef enum _PPP_EAP_ACTION
187 {
188     EAPACTION_NoAction,
189     EAPACTION_Authenticate,
190     EAPACTION_Done,
191     EAPACTION_SendAndDone,
192     EAPACTION_Send,
193     EAPACTION_SendWithTimeout,
194     EAPACTION_SendWithTimeoutInteractive,
195 	EAPACTION_IndicateTLV,
196 	EAPACTION_IndicateIdentity
197 }PPP_EAP_ACTION;
198 
199 typedef struct _PPP_EAP_OUTPUT
200 {
201     DWORD dwSizeInBytes;
202     PPP_EAP_ACTION Action;
203     DWORD dwAuthResultCode;
204     OPTIONAL RAS_AUTH_ATTRIBUTE* pUserAttributes;
205     BOOL fInvokeInteractiveUI;
206     OPTIONAL PBYTE pUIContextData;
207     DWORD dwSizeOfUIContextData;
208     BOOL fSaveConnectionData;
209     OPTIONAL PBYTE pConnectionData;
210     DWORD dwSizeOfConnectionData;
211     BOOL fSaveUserData;
212     OPTIONAL PBYTE pUserData;
213     DWORD dwSizeOfUserData;
214 }PPP_EAP_OUTPUT, *PPPP_EAP_OUTPUT;
215 
216 typedef struct _PPP_EAP_INFO
217 {
218     DWORD dwSizeInBytes;
219     DWORD dwEapTypeId;
220     DWORD (APIENTRY *RasEapInitialize)(IN BOOL fInitialize );
221     DWORD (APIENTRY *RasEapBegin)(OUT VOID** ppWorkBuffer, IN PPP_EAP_INPUT* pPppEapInput);
222     DWORD (APIENTRY *RasEapEnd)(IN VOID* pWorkBuffer);
223     DWORD (APIENTRY *RasEapMakeMessage)(IN VOID* pWorkBuf, IN PPP_EAP_PACKET* pReceivePacket, OUT PPP_EAP_PACKET* pSendPacket, IN DWORD cbSendPacket, OUT PPP_EAP_OUTPUT* pEapOutput, IN PPP_EAP_INPUT* pEapInput);
224 }PPP_EAP_INFO, *PPPP_EAP_INFO;
225 
226 DWORD APIENTRY
227 RasEapGetInfo(IN DWORD dwEapTypeId,
228               OUT PPP_EAP_INFO* pEapInfo);
229 
230 DWORD APIENTRY
231 RasEapFreeMemory(IN BYTE* pMemory);
232 
233 DWORD APIENTRY
234 RasEapInvokeInteractiveUI(IN DWORD dwEapTypeId,
235                           IN HWND hwndParent,
236                           IN BYTE* pUIContextData,
237                           IN DWORD dwSizeOfUIContextData,
238                           OUT BYTE** ppDataFromInteractiveUI,
239                           OUT DWORD* pdwSizeOfDataFromInteractiveUI);
240 
241 DWORD APIENTRY
242 RasEapInvokeConfigUI(IN DWORD dwEapTypeId,
243                      IN HWND hwndParent,
244                      IN DWORD dwFlags,
245                      IN BYTE* pConnectionDataIn,
246                      IN DWORD dwSizeOfConnectionDataIn,
247                      OUT BYTE** ppConnectionDataOut,
248                      OUT DWORD* pdwSizeOfConnectionDataOut);
249 
250 DWORD APIENTRY
251 RasEapGetIdentity(IN DWORD dwEapTypeId,
252                   IN HWND hwndParent,
253                   IN DWORD dwFlags,
254                   IN const WCHAR* pwszPhonebook,
255                   IN const WCHAR* pwszEntry,
256                   IN BYTE* pConnectionDataIn,
257                   IN DWORD dwSizeOfConnectionDataIn,
258                   IN BYTE* pUserDataIn,
259                   IN DWORD dwSizeOfUserDataIn,
260                   OUT BYTE** ppUserDataOut,
261                   OUT DWORD* pdwSizeOfUserDataOut,
262                   OUT WCHAR** ppwszIdentity
263 );
264 
265 #endif /* WINVER >= 0x0500 */
266 
267 #ifdef __cplusplus
268 }
269 #endif
270 
271 #endif /* _RASEAPIF_ */
272 
273