// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
use shared::guiddef::GUID;
use shared::minwindef::{BOOL, DWORD};
use um::eaptypes::EAP_METHOD_TYPE;
use um::l2cmn::L2_REASON_CODE_ONEX_BASE;
use um::winnt::HANDLE;
ENUM!{
enum ONEX_AUTH_IDENTITY {
OneXAuthIdentityNone =
0,
OneXAuthIdentityMachine =
1,
OneXAuthIdentityUser =
2,
OneXAuthIdentityExplicitUser =
3,
OneXAuthIdentityGuest =
4,
OneXAuthIdentityInvalid =
5,
}}
pub type PONEX_AUTH_IDENTITY = *
mut ONEX_AUTH_IDENTITY;
ENUM!{
enum ONEX_AUTH_STATUS {
OneXAuthNotStarted =
0,
OneXAuthInProgress =
1,
OneXAuthNoAuthenticatorFound =
2,
OneXAuthSuccess =
3,
OneXAuthFailure =
4,
OneXAuthInvalid =
5,
}}
pub type PONEX_AUTH_STATUS = *
mut ONEX_AUTH_STATUS;
ENUM!{
enum ONEX_REASON_CODE {
ONEX_REASON_CODE_SUCCESS =
0,
ONEX_REASON_START = L2_REASON_CODE_ONEX_BASE,
ONEX_UNABLE_TO_IDENTIFY_USER =
327681,
ONEX_IDENTITY_NOT_FOUND =
327682,
ONEX_UI_DISABLED =
327683,
ONEX_UI_FAILURE =
327684,
ONEX_EAP_FAILURE_RECEIVED =
327685,
ONEX_AUTHENTICATOR_NO_LONGER_PRESENT =
327686,
ONEX_NO_RESPONSE_TO_IDENTITY =
327687,
ONEX_PROFILE_VERSION_NOT_SUPPORTED =
327688,
ONEX_PROFILE_INVALID_LENGTH =
327689,
ONEX_PROFILE_DISALLOWED_EAP_TYPE =
327690,
ONEX_PROFILE_INVALID_EAP_TYPE_OR_FLAG =
327691,
ONEX_PROFILE_INVALID_ONEX_FLAGS =
327692,
ONEX_PROFILE_INVALID_TIMER_VALUE =
327693,
ONEX_PROFILE_INVALID_SUPPLICANT_MODE =
327694,
ONEX_PROFILE_INVALID_AUTH_MODE =
327695,
ONEX_PROFILE_INVALID_EAP_CONNECTION_PROPERTIES =
327696,
ONEX_UI_CANCELLED =
327697,
ONEX_PROFILE_INVALID_EXPLICIT_CREDENTIALS =
327698,
ONEX_PROFILE_EXPIRED_EXPLICIT_CREDENTIALS =
327699,
ONEX_UI_NOT_PERMITTED =
327700,
}}
pub type PONEX_REASON_CODE = *
mut ONEX_REASON_CODE;
ENUM!{
enum ONEX_NOTIFICATION_TYPE {
OneXPublicNotificationBase =
0,
OneXNotificationTypeResultUpdate =
1,
OneXNotificationTypeAuthRestarted =
2,
OneXNotificationTypeEventInvalid =
3,
OneXNumNotifications = OneXNotificationTypeEventInvalid,
}}
pub type PONEX_NOTIFICATION_TYPE = *
mut ONEX_NOTIFICATION_TYPE;
ENUM!{
enum ONEX_AUTH_RESTART_REASON {
OneXRestartReasonPeerInitiated =
0,
OneXRestartReasonMsmInitiated =
1,
OneXRestartReasonOneXHeldStateTimeout =
2,
OneXRestartReasonOneXAuthTimeout =
3,
OneXRestartReasonOneXConfigurationChanged =
4,
OneXRestartReasonOneXUserChanged =
5,
OneXRestartReasonQuarantineStateChanged =
6,
OneXRestartReasonAltCredsTrial =
7,
OneXRestartReasonInvalid =
8,
}}
pub type PONEX_AUTH_RESTART_REASON = *
mut ONEX_AUTH_RESTART_REASON;
STRUCT!{
struct ONEX_VARIABLE_BLOB {
dwSize: DWORD,
dwOffset: DWORD,
}}
pub type PONEX_VARIABLE_BLOB = *
mut ONEX_VARIABLE_BLOB;
STRUCT!{
struct ONEX_AUTH_PARAMS {
fUpdatePending: BOOL,
oneXConnProfile: ONEX_VARIABLE_BLOB,
authIdentity: ONEX_AUTH_IDENTITY,
dwQuarantineState: DWORD,
Bitfields: DWORD,
dwSessionId: DWORD,
hUserToken: HANDLE,
OneXUserProfile: ONEX_VARIABLE_BLOB,
Identity: ONEX_VARIABLE_BLOB,
UserName: ONEX_VARIABLE_BLOB,
Domain: ONEX_VARIABLE_BLOB,
}}
BITFIELD!{ONEX_AUTH_PARAMS Bitfields: DWORD [
fSessionId set_fSessionId[
0..
1],
fhUserToken set_fhUserToken[
1..
2],
fOnexUserProfile set_fOnexUserProfile[
2..
3],
fIdentity set_fIdentity[
3..
4],
fUserName set_fUserName[
4..
5],
fDomain set_fDomain[
5..
6],
]}
pub type PONEX_AUTH_PARAMS = *
mut ONEX_AUTH_PARAMS;
STRUCT!{
struct ONEX_EAP_ERROR {
dwWinError: DWORD,
type_: EAP_METHOD_TYPE,
dwReasonCode: DWORD,
rootCauseGuid: GUID,
repairGuid: GUID,
helpLinkGuid: GUID,
Bitfields: DWORD,
RootCauseString: ONEX_VARIABLE_BLOB,
RepairString: ONEX_VARIABLE_BLOB,
}}
BITFIELD!{ONEX_EAP_ERROR Bitfields: DWORD [
fRootCauseString set_fRootCauseString[
0..
1],
fRepairString set_fRepairString[
1..
2],
]}
pub type PONEX_EAP_ERROR = *
mut ONEX_EAP_ERROR;
STRUCT!{
struct ONEX_STATUS {
authStatus: ONEX_AUTH_STATUS,
dwReason: DWORD,
dwError: DWORD,
}}
pub type PONEX_STATUS = *
mut ONEX_STATUS;
ENUM!{
enum ONEX_EAP_METHOD_BACKEND_SUPPORT {
OneXEapMethodBackendSupportUnknown =
0,
OneXEapMethodBackendSupported =
1,
OneXEapMethodBackendUnsupported =
2,
}}
STRUCT!{
struct ONEX_RESULT_UPDATE_DATA {
oneXStatus: ONEX_STATUS,
BackendSupport: ONEX_EAP_METHOD_BACKEND_SUPPORT,
fBackendEngaged: BOOL,
Bitfields: DWORD,
authParams: ONEX_VARIABLE_BLOB,
eapError: ONEX_VARIABLE_BLOB,
}}
BITFIELD!{ONEX_RESULT_UPDATE_DATA Bitfields: DWORD [
fOneXAuthParams set_fOneXAuthParams[
0..
1],
fEapError set_fEapError[
1..
2],
]}
pub type PONEX_RESULT_UPDATE_DATA = *
mut ONEX_RESULT_UPDATE_DATA;
STRUCT!{
struct ONEX_USER_INFO {
authIdentity: ONEX_AUTH_IDENTITY,
Bitfields: DWORD,
UserName: ONEX_VARIABLE_BLOB,
DomainName: ONEX_VARIABLE_BLOB,
}}
BITFIELD!{ONEX_USER_INFO Bitfields: DWORD [
fUserName set_fUserName[
0..
1],
fDomainName set_fDomainName[
1..
2],
]}
pub type PONEX_USER_INFO = *
mut ONEX_USER_INFO;