#ifndef __DOT1X_H_ #define __DOT1X_H_ #pragma once #ifdef __cplusplus extern "C" { #endif #include #include #if __midl #define V1_ENUM [v1_enum] #else #define V1_ENUM #endif #pragma warning(disable:4214) // bit field types other than int /* The identity that is being used by the 1X module. This is a function of the onex auth mode and system triggers (e.g. user logon/logoff) */ typedef V1_ENUM enum _ONEX_AUTH_IDENTITY { OneXAuthIdentityNone, OneXAuthIdentityMachine, OneXAuthIdentityUser, OneXAuthIdentityExplicitUser, OneXAuthIdentityGuest, OneXAuthIdentityInvalid } ONEX_AUTH_IDENTITY, *PONEX_AUTH_IDENTITY; /* The 1X authentication status. Each of the auth status corresponds to one or more of the internal 1X states. */ typedef V1_ENUM enum _ONEX_AUTH_STATUS { OneXAuthNotStarted, OneXAuthInProgress, OneXAuthNoAuthenticatorFound, OneXAuthSuccess, OneXAuthFailure, OneXAuthInvalid } ONEX_AUTH_STATUS, *PONEX_AUTH_STATUS; /* 1X specific reason codes */ typedef V1_ENUM enum _ONEX_REASON_CODE { ONEX_REASON_CODE_SUCCESS = 0, ONEX_REASON_START = L2_REASON_CODE_ONEX_BASE, ONEX_UNABLE_TO_IDENTIFY_USER, ONEX_IDENTITY_NOT_FOUND, ONEX_UI_DISABLED, ONEX_UI_FAILURE, ONEX_EAP_FAILURE_RECEIVED, ONEX_AUTHENTICATOR_NO_LONGER_PRESENT, ONEX_NO_RESPONSE_TO_IDENTITY, ONEX_PROFILE_VERSION_NOT_SUPPORTED, ONEX_PROFILE_INVALID_LENGTH, ONEX_PROFILE_DISALLOWED_EAP_TYPE, ONEX_PROFILE_INVALID_EAP_TYPE_OR_FLAG, ONEX_PROFILE_INVALID_ONEX_FLAGS, ONEX_PROFILE_INVALID_TIMER_VALUE, ONEX_PROFILE_INVALID_SUPPLICANT_MODE, ONEX_PROFILE_INVALID_AUTH_MODE, ONEX_PROFILE_INVALID_EAP_CONNECTION_PROPERTIES, ONEX_UI_CANCELLED, ONEX_PROFILE_INVALID_EXPLICIT_CREDENTIALS, ONEX_PROFILE_EXPIRED_EXPLICIT_CREDENTIALS, ONEX_UI_NOT_PERMITTED } ONEX_REASON_CODE, *PONEX_REASON_CODE; /* Events for which 1X sends notifications to MSM On getting an event notification the callee should switch on the dwEvent. If dwEvent = OneXNotificationTypeResultUpdate, pvEventData points to an ONEX_RESULT_UPDATE_DATA structure If dwEvent = OneXNotificationTypeOneXUserIdentified, pvEventData points to a ONEX_USER_INFO structure If dwEvent = OneXNotificationTypeGotOneXIdentityString, pvEventData points to the identity (LPWSTR) being used for the 1X authentication If dwEvent = OneXNotificationTypeFallenBackOnGuest pvEventData is NULL if dwEvent = OneXNotificationTypeAuthRestarted, pvEventData points to the restart reason */ typedef V1_ENUM enum _ONEX_NOTIFICATION_TYPE { OneXPublicNotificationBase = 0, OneXNotificationTypeResultUpdate, OneXNotificationTypeAuthRestarted, OneXNotificationTypeEventInvalid, OneXNumNotifications = OneXNotificationTypeEventInvalid } ONEX_NOTIFICATION_TYPE, *PONEX_NOTIFICATION_TYPE; /* The following list enumerates the reason for the 1X authentication process getting restarted */ typedef V1_ENUM enum _ONEX_AUTH_RESTART_REASON { OneXRestartReasonPeerInitiated, OneXRestartReasonMsmInitiated, OneXRestartReasonOneXHeldStateTimeout, OneXRestartReasonOneXAuthTimeout, OneXRestartReasonOneXConfigurationChanged, OneXRestartReasonOneXUserChanged, OneXRestartReasonQuarantineStateChanged, OneXRestartReasonAltCredsTrial, OneXRestartReasonInvalid } ONEX_AUTH_RESTART_REASON, *PONEX_AUTH_RESTART_REASON; typedef struct _ONEX_VARIABLE_BLOB { DWORD dwSize; DWORD dwOffset; } ONEX_VARIABLE_BLOB, *PONEX_VARIABLE_BLOB; /* The set of parameters that define the authentication context for 1X */ typedef struct _ONEX_AUTH_PARAMS { BOOL fUpdatePending; ONEX_VARIABLE_BLOB oneXConnProfile; ONEX_AUTH_IDENTITY authIdentity; DWORD dwQuarantineState; DWORD fSessionId:1; DWORD fhUserToken:1; DWORD fOnexUserProfile:1; DWORD fIdentity:1; DWORD fUserName:1; DWORD fDomain:1; DWORD dwSessionId; HANDLE hUserToken; ONEX_VARIABLE_BLOB OneXUserProfile; ONEX_VARIABLE_BLOB Identity; ONEX_VARIABLE_BLOB UserName; ONEX_VARIABLE_BLOB Domain; } ONEX_AUTH_PARAMS, *PONEX_AUTH_PARAMS; typedef struct _ONEX_EAP_ERROR { DWORD dwWinError; EAP_METHOD_TYPE type; DWORD dwReasonCode; GUID rootCauseGuid; GUID repairGuid; GUID helpLinkGuid; DWORD fRootCauseString:1; DWORD fRepairString:1; ONEX_VARIABLE_BLOB RootCauseString; ONEX_VARIABLE_BLOB RepairString; } ONEX_EAP_ERROR, *PONEX_EAP_ERROR; typedef struct _ONEX_STATUS { ONEX_AUTH_STATUS authStatus; /* Any errors that happened during the authentication are indicated as error and reason codes below */ DWORD dwReason; DWORD dwError; } ONEX_STATUS, *PONEX_STATUS; typedef V1_ENUM enum _ONEX_EAP_METHOD_BACKEND_SUPPORT { OneXEapMethodBackendSupportUnknown, OneXEapMethodBackendSupported, OneXEapMethodBackendUnsupported }ONEX_EAP_METHOD_BACKEND_SUPPORT; typedef struct _ONEX_RESULT_UPDATE_DATA { ONEX_STATUS oneXStatus; ONEX_EAP_METHOD_BACKEND_SUPPORT BackendSupport; BOOL fBackendEngaged; DWORD fOneXAuthParams:1; DWORD fEapError:1; ONEX_VARIABLE_BLOB authParams; ONEX_VARIABLE_BLOB eapError; } ONEX_RESULT_UPDATE_DATA, *PONEX_RESULT_UPDATE_DATA; typedef struct _ONEX_USER_INFO { ONEX_AUTH_IDENTITY authIdentity; DWORD fUserName:1; DWORD fDomainName:1; ONEX_VARIABLE_BLOB UserName; ONEX_VARIABLE_BLOB DomainName; } ONEX_USER_INFO, *PONEX_USER_INFO; #ifdef __cplusplus } #endif #endif