Wolfgang Thallergcc16 merge934c3885 months agoHistory
790 lines · 26.5 KB · D
RawDownload
/** * Windows API header module * * Translated from MinGW Windows headers * * Authors: Stewart Gordon * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Source: $(DRUNTIMESRC core/sys/windows/_ntsecapi.d) */module core.sys.windows.ntsecapi;version (Windows):pragma(lib, "advapi32"); version (ANSI) {} else version = Unicode; private import  core.sys.windows.basetyps, core.sys.windows.ntdef, core.sys.windows.windef, core.sys.windows.winnt, core.sys.windows.w32api; // FIXME: check types and grouping of constants// FIXME: check Windows version support enum KERB_WRAP_NO_ENCRYPT        = 0x80000001; enum LOGON_GUEST                 = 0x00000001;enum LOGON_NOENCRYPTION          = 0x00000002;enum LOGON_CACHED_ACCOUNT        = 0x00000004;enum LOGON_USED_LM_PASSWORD      = 0x00000008;enum LOGON_EXTRA_SIDS            = 0x00000020;enum LOGON_SUBAUTH_SESSION_KEY   = 0x00000040;enum LOGON_SERVER_TRUST_ACCOUNT  = 0x00000080;enum LOGON_NTLMV2_ENABLED        = 0x00000100;enum LOGON_RESOURCE_GROUPS       = 0x00000200;enum LOGON_PROFILE_PATH_RETURNED = 0x00000400;enum LOGON_GRACE_LOGON           = 0x01000000; enum {    LSA_MODE_PASSWORD_PROTECTED = 1,    LSA_MODE_INDIVIDUAL_ACCOUNTS,    LSA_MODE_MANDATORY_ACCESS,    LSA_MODE_LOG_FULL} bool LSA_SUCCESS()(int x) { return x >= 0; } /*  TOTHINKABOUT: These constants don't have ANSI/Unicode versioned *  aliases.  Should we merge them anyway? */const char[]  MICROSOFT_KERBEROS_NAME_A = "Kerberos";const wchar[] MICROSOFT_KERBEROS_NAME_W = "Kerberos";const char[]  MSV1_0_PACKAGE_NAME  = "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0";const wchar[] MSV1_0_PACKAGE_NAMEW = "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"; enum MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT      =       32;enum MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT =     2048;enum MSV1_0_CLEARTEXT_PASSWORD_ALLOWED      =        2;enum MSV1_0_CRED_LM_PRESENT                 =        1;enum MSV1_0_CRED_NT_PRESENT                 =        2;enum MSV1_0_CRED_VERSION                    =        0;enum MSV1_0_DONT_TRY_GUEST_ACCOUNT          =       16;enum MSV1_0_MAX_NTLM3_LIFE                  =     1800;enum MSV1_0_MAX_AVL_SIZE                    =    64000;enum MSV1_0_MNS_LOGON                       = 16777216; enum size_t    MSV1_0_CHALLENGE_LENGTH          = 8,    MSV1_0_LANMAN_SESSION_KEY_LENGTH = 8,    MSV1_0_NTLM3_RESPONSE_LENGTH     = 16,    MSV1_0_NTLM3_OWF_LENGTH          = 16,    MSV1_0_NTLM3_INPUT_LENGTH        = MSV1_0_NTLM3_RESPONSE.sizeof                                       - MSV1_0_NTLM3_RESPONSE_LENGTH,    MSV1_0_OWF_PASSWORD_LENGTH       = 16,    MSV1_0_PACKAGE_NAMEW_LENGTH      = MSV1_0_PACKAGE_NAMEW.sizeof                                       - WCHAR.sizeof; enum MSV1_0_RETURN_USER_PARAMETERS      =          8;enum MSV1_0_RETURN_PASSWORD_EXPIRY      =         64;enum MSV1_0_RETURN_PROFILE_PATH         =        512;enum MSV1_0_SUBAUTHENTICATION_DLL_EX    =    1048576;enum MSV1_0_SUBAUTHENTICATION_DLL       = 0xff000000;enum MSV1_0_SUBAUTHENTICATION_DLL_SHIFT =         24;enum MSV1_0_SUBAUTHENTICATION_DLL_RAS   =          2;enum MSV1_0_SUBAUTHENTICATION_DLL_IIS   =        132;enum MSV1_0_SUBAUTHENTICATION_FLAGS     = 0xff000000;enum MSV1_0_TRY_GUEST_ACCOUNT_ONLY      =        256;enum MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY   =       1024;enum MSV1_0_UPDATE_LOGON_STATISTICS     =          4;enum MSV1_0_USE_CLIENT_CHALLENGE        =        128;enum MSV1_0_USER_SESSION_KEY_LENGTH     =         16; const char[]    MSV1_0_SUBAUTHENTICATION_KEY      = `System\CurrentControlSet\Control\Lsa\MSV1_0`,    MSV1_0_SUBAUTHENTICATION_VALUE = "Auth"; enum ACCESS_MASK    POLICY_VIEW_LOCAL_INFORMATION   = 0x0001,    POLICY_VIEW_AUDIT_INFORMATION   = 0x0002,    POLICY_GET_PRIVATE_INFORMATION  = 0x0004,    POLICY_TRUST_ADMIN              = 0x0008,    POLICY_CREATE_ACCOUNT           = 0x0010,    POLICY_CREATE_SECRET            = 0x0020,    POLICY_CREATE_PRIVILEGE         = 0x0040,    POLICY_SET_DEFAULT_QUOTA_LIMITS = 0x0080,    POLICY_SET_AUDIT_REQUIREMENTS   = 0x0100,    POLICY_AUDIT_LOG_ADMIN          = 0x0200,    POLICY_SERVER_ADMIN             = 0x0400,    POLICY_LOOKUP_NAMES             = 0x0800,     POLICY_READ                     = STANDARD_RIGHTS_READ     | 0x0006,    POLICY_WRITE                    = STANDARD_RIGHTS_WRITE    | 0x07F8,    POLICY_EXECUTE                  = STANDARD_RIGHTS_EXECUTE  | 0x0801,    POLICY_ALL_ACCESS               = STANDARD_RIGHTS_REQUIRED | 0x0FFF; enum POLICY_AUDIT_EVENT_UNCHANGED = 0;enum POLICY_AUDIT_EVENT_SUCCESS   = 1;enum POLICY_AUDIT_EVENT_FAILURE   = 2;enum POLICY_AUDIT_EVENT_NONE      = 4;enum POLICY_AUDIT_EVENT_MASK      = 7; enum {    POLICY_LOCATION_LOCAL = 1,    POLICY_LOCATION_DS} enum : uint {    POLICY_MACHINE_POLICY_LOCAL     =          0,    POLICY_MACHINE_POLICY_DEFAULTED,    POLICY_MACHINE_POLICY_EXPLICIT,    POLICY_MACHINE_POLICY_UNKNOWN   = 0xFFFFFFFF}  enum POLICY_QOS_SCHANEL_REQUIRED            = 0x0001;enum POLICY_QOS_OUTBOUND_INTEGRITY          = 0x0002;enum POLICY_QOS_OUTBOUND_CONFIDENTIALITY    = 0x0004;enum POLICY_QOS_INBOUND_INTEGREITY          = 0x0008;enum POLICY_QOS_INBOUND_CONFIDENTIALITY     = 0x0010;enum POLICY_QOS_ALLOW_LOCAL_ROOT_CERT_STORE = 0x0020;enum POLICY_QOS_RAS_SERVER_ALLOWED          = 0x0040;enum POLICY_QOS_DHCP_SERVER_ALLOWD          = 0x0080; enum POLICY_KERBEROS_FORWARDABLE  = 1;enum POLICY_KERBEROS_PROXYABLE    = 2;enum POLICY_KERBEROS_RENEWABLE    = 4;enum POLICY_KERBEROS_POSTDATEABLE = 8; const char[]    SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE = "PasswordChangeNotify",    SAM_INIT_NOTIFICATION_ROUTINE      = "InitializeChangeNotify",    SAM_PASSWORD_FILTER_ROUTINE        = "PasswordFilter"; const TCHAR[]    SE_INTERACTIVE_LOGON_NAME          = "SeInteractiveLogonRight",    SE_NETWORK_LOGON_NAME              = "SeNetworkLogonRight",    SE_BATCH_LOGON_NAME                = "SeBatchLogonRight",    SE_SERVICE_LOGON_NAME              = "SeServiceLogonRight"; enum {    TRUST_ATTRIBUTE_NON_TRANSITIVE =         1,    TRUST_ATTRIBUTE_UPLEVEL_ONLY   =         2,    TRUST_ATTRIBUTE_TREE_PARENT    =   4194304,    TRUST_ATTRIBUTES_VALID         = -16580609} enum {    TRUST_AUTH_TYPE_NONE,    TRUST_AUTH_TYPE_NT4OWF,    TRUST_AUTH_TYPE_CLEAR} enum {    TRUST_DIRECTION_DISABLED,    TRUST_DIRECTION_INBOUND,    TRUST_DIRECTION_OUTBOUND,    TRUST_DIRECTION_BIDIRECTIONAL} enum {    TRUST_TYPE_DOWNLEVEL = 1,    TRUST_TYPE_UPLEVEL,    TRUST_TYPE_MIT,    TRUST_TYPE_DCE} alias LSA_UNICODE_STRING = UNICODE_STRING;alias PLSA_UNICODE_STRING = UNICODE_STRING*;alias LSA_STRING = STRING;alias PLSA_STRING = STRING*; enum MSV1_0_LOGON_SUBMIT_TYPE {    MsV1_0InteractiveLogon       = 2,    MsV1_0Lm20Logon,    MsV1_0NetworkLogon,    MsV1_0SubAuthLogon,    MsV1_0WorkstationUnlockLogon = 7}alias PMSV1_0_LOGON_SUBMIT_TYPE = MSV1_0_LOGON_SUBMIT_TYPE*; enum MSV1_0_PROFILE_BUFFER_TYPE {    MsV1_0InteractiveProfile = 2,    MsV1_0Lm20LogonProfile,    MsV1_0SmartCardProfile}alias PMSV1_0_PROFILE_BUFFER_TYPE = MSV1_0_PROFILE_BUFFER_TYPE*;  enum MSV1_0_AVID {    MsvAvEOL,    MsvAvNbComputerName,    MsvAvNbDomainName,    MsvAvDnsComputerName,    MsvAvDnsDomainName} enum MSV1_0_PROTOCOL_MESSAGE_TYPE {    MsV1_0Lm20ChallengeRequest = 0,    MsV1_0Lm20GetChallengeResponse,    MsV1_0EnumerateUsers,    MsV1_0GetUserInfo,    MsV1_0ReLogonUsers,    MsV1_0ChangePassword,    MsV1_0ChangeCachedPassword,    MsV1_0GenericPassthrough,    MsV1_0CacheLogon,    MsV1_0SubAuth,    MsV1_0DeriveCredential,    MsV1_0CacheLookup}alias PMSV1_0_PROTOCOL_MESSAGE_TYPE = MSV1_0_PROTOCOL_MESSAGE_TYPE*; enum POLICY_LSA_SERVER_ROLE {    PolicyServerRoleBackup = 2,    PolicyServerRolePrimary}alias PPOLICY_LSA_SERVER_ROLE = POLICY_LSA_SERVER_ROLE*; enum POLICY_SERVER_ENABLE_STATE {    PolicyServerEnabled = 2,    PolicyServerDisabled}alias PPOLICY_SERVER_ENABLE_STATE = POLICY_SERVER_ENABLE_STATE*; enum POLICY_INFORMATION_CLASS {    PolicyAuditLogInformation = 1,    PolicyAuditEventsInformation,    PolicyPrimaryDomainInformation,    PolicyPdAccountInformation,    PolicyAccountDomainInformation,    PolicyLsaServerRoleInformation,    PolicyReplicaSourceInformation,    PolicyDefaultQuotaInformation,    PolicyModificationInformation,    PolicyAuditFullSetInformation,    PolicyAuditFullQueryInformation,    PolicyDnsDomainInformation,    PolicyEfsInformation}alias PPOLICY_INFORMATION_CLASS = POLICY_INFORMATION_CLASS*; enum POLICY_AUDIT_EVENT_TYPE {    AuditCategorySystem,    AuditCategoryLogon,    AuditCategoryObjectAccess,    AuditCategoryPrivilegeUse,    AuditCategoryDetailedTracking,    AuditCategoryPolicyChange,    AuditCategoryAccountManagement,    AuditCategoryDirectoryServiceAccess,    AuditCategoryAccountLogon}alias PPOLICY_AUDIT_EVENT_TYPE = POLICY_AUDIT_EVENT_TYPE*; enum POLICY_LOCAL_INFORMATION_CLASS {    PolicyLocalAuditEventsInformation = 1,    PolicyLocalPdAccountInformation,    PolicyLocalAccountDomainInformation,    PolicyLocalLsaServerRoleInformation,    PolicyLocalReplicaSourceInformation,    PolicyLocalModificationInformation,    PolicyLocalAuditFullSetInformation,    PolicyLocalAuditFullQueryInformation,    PolicyLocalDnsDomainInformation,    PolicyLocalIPSecReferenceInformation,    PolicyLocalMachinePasswordInformation,    PolicyLocalQualityOfServiceInformation,    PolicyLocalPolicyLocationInformation}alias PPOLICY_LOCAL_INFORMATION_CLASS = POLICY_LOCAL_INFORMATION_CLASS*; enum POLICY_DOMAIN_INFORMATION_CLASS {    PolicyDomainIPSecReferenceInformation = 1,    PolicyDomainQualityOfServiceInformation,    PolicyDomainEfsInformation,    PolicyDomainPublicKeyInformation,    PolicyDomainPasswordPolicyInformation,    PolicyDomainLockoutInformation,    PolicyDomainKerberosTicketInformation}alias PPOLICY_DOMAIN_INFORMATION_CLASS = POLICY_DOMAIN_INFORMATION_CLASS*; enum SECURITY_LOGON_TYPE {    Interactive = 2,    Network,    Batch,    Service,    Proxy,    Unlock}alias PSECURITY_LOGON_TYPE = SECURITY_LOGON_TYPE*; enum TRUSTED_INFORMATION_CLASS {    TrustedDomainNameInformation = 1,    TrustedControllersInformation,    TrustedPosixOffsetInformation,    TrustedPasswordInformation,    TrustedDomainInformationBasic,    TrustedDomainInformationEx,    TrustedDomainAuthInformation,    TrustedDomainFullInformation}alias PTRUSTED_INFORMATION_CLASS = TRUSTED_INFORMATION_CLASS*; struct DOMAIN_PASSWORD_INFORMATION {    USHORT        MinPasswordLength;    USHORT        PasswordHistoryLength;    ULONG         PasswordProperties;    LARGE_INTEGER MaxPasswordAge;    LARGE_INTEGER MinPasswordAge;}alias PDOMAIN_PASSWORD_INFORMATION = DOMAIN_PASSWORD_INFORMATION*; struct LSA_ENUMERATION_INFORMATION {    PSID Sid;}alias PLSA_ENUMERATION_INFORMATION = LSA_ENUMERATION_INFORMATION*; alias LSA_OBJECT_ATTRIBUTES = OBJECT_ATTRIBUTES;alias PLSA_OBJECT_ATTRIBUTES = OBJECT_ATTRIBUTES*; struct LSA_TRUST_INFORMATION {    LSA_UNICODE_STRING Name;    PSID               Sid;}alias TRUSTED_DOMAIN_INFORMATION_BASIC = LSA_TRUST_INFORMATION;alias PLSA_TRUST_INFORMATION = LSA_TRUST_INFORMATION*;/*  in MinGW (further down the code): *      typedef PLSA_TRUST_INFORMATION *PTRUSTED_DOMAIN_INFORMATION_BASIC; *  but it doesn't look right.... */alias PTRUSTED_DOMAIN_INFORMATION_BASIC = LSA_TRUST_INFORMATION**; struct LSA_REFERENCED_DOMAIN_LIST {    ULONG                  Entries;    PLSA_TRUST_INFORMATION Domains;}alias PLSA_REFERENCED_DOMAIN_LIST = LSA_REFERENCED_DOMAIN_LIST*; struct LSA_TRANSLATED_SID {    SID_NAME_USE Use;    ULONG        RelativeId;    LONG         DomainIndex;}alias PLSA_TRANSLATED_SID = LSA_TRANSLATED_SID*; struct LSA_TRANSLATED_NAME {    SID_NAME_USE       Use;    LSA_UNICODE_STRING Name;    LONG               DomainIndex;}alias PLSA_TRANSLATED_NAME = LSA_TRANSLATED_NAME*; struct MSV1_0_INTERACTIVE_LOGON {    MSV1_0_LOGON_SUBMIT_TYPE MessageType;    UNICODE_STRING           LogonDomainName;    UNICODE_STRING           UserName;    UNICODE_STRING           Password;}alias PMSV1_0_INTERACTIVE_LOGON = MSV1_0_INTERACTIVE_LOGON*; struct MSV1_0_INTERACTIVE_PROFILE {    MSV1_0_PROFILE_BUFFER_TYPE MessageType;    USHORT                     LogonCount;    USHORT                     BadPasswordCount;    LARGE_INTEGER              LogonTime;    LARGE_INTEGER              LogoffTime;    LARGE_INTEGER              KickOffTime;    LARGE_INTEGER              PasswordLastSet;    LARGE_INTEGER              PasswordCanChange;    LARGE_INTEGER              PasswordMustChange;    UNICODE_STRING             LogonScript;    UNICODE_STRING             HomeDirectory;    UNICODE_STRING             FullName;    UNICODE_STRING             ProfilePath;    UNICODE_STRING             HomeDirectoryDrive;    UNICODE_STRING             LogonServer;    ULONG                      UserFlags;}alias PMSV1_0_INTERACTIVE_PROFILE = MSV1_0_INTERACTIVE_PROFILE*; struct MSV1_0_LM20_LOGON {    MSV1_0_LOGON_SUBMIT_TYPE       MessageType;    UNICODE_STRING                 LogonDomainName;    UNICODE_STRING                 UserName;    UNICODE_STRING                 Workstation;    UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeToClient;    STRING                         CaseSensitiveChallengeResponse;    STRING                         CaseInsensitiveChallengeResponse;    ULONG                          ParameterControl;}alias PMSV1_0_LM20_LOGON = MSV1_0_LM20_LOGON*; //static if (_WIN32_WINNT >= 0x500) {    struct MSV1_0_SUBAUTH_LOGON {        MSV1_0_LOGON_SUBMIT_TYPE       MessageType;        UNICODE_STRING                 LogonDomainName;        UNICODE_STRING                 UserName;        UNICODE_STRING                 Workstation;        UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeToClient;        STRING                         AuthenticationInfo1;        STRING                         AuthenticationInfo2;        ULONG                          ParameterControl;        ULONG                          SubAuthPackageId;    }    alias PMSV1_0_SUBAUTH_LOGON = MSV1_0_SUBAUTH_LOGON*;//} struct MSV1_0_LM20_LOGON_PROFILE {    MSV1_0_PROFILE_BUFFER_TYPE              MessageType;    LARGE_INTEGER                           KickOffTime;    LARGE_INTEGER                           LogoffTime;    ULONG                                   UserFlags;    UCHAR[MSV1_0_USER_SESSION_KEY_LENGTH]   UserSessionKey;    UNICODE_STRING                          LogonDomainName;    UCHAR[MSV1_0_LANMAN_SESSION_KEY_LENGTH] LanmanSessionKey;    UNICODE_STRING                          LogonServer;    UNICODE_STRING                          UserParameters;}alias PMSV1_0_LM20_LOGON_PROFILE = MSV1_0_LM20_LOGON_PROFILE*; struct MSV1_0_SUPPLEMENTAL_CREDENTIAL {    ULONG Version;    ULONG Flags;    UCHAR[MSV1_0_OWF_PASSWORD_LENGTH] LmPassword;    UCHAR[MSV1_0_OWF_PASSWORD_LENGTH] NtPassword;}alias PMSV1_0_SUPPLEMENTAL_CREDENTIAL = MSV1_0_SUPPLEMENTAL_CREDENTIAL*; struct MSV1_0_NTLM3_RESPONSE {    UCHAR[MSV1_0_NTLM3_RESPONSE_LENGTH] Response;    UCHAR     RespType;    UCHAR     HiRespType;    USHORT    Flags;    ULONG     MsgWord;    ULONGLONG TimeStamp;    UCHAR[MSV1_0_CHALLENGE_LENGTH]      ChallengeFromClient;    ULONG     AvPairsOff;    UCHAR     _Buffer;    UCHAR*    Buffer() return { return &_Buffer; }}alias PMSV1_0_NTLM3_RESPONSE = MSV1_0_NTLM3_RESPONSE*; struct  MSV1_0_AV_PAIR {    USHORT AvId;    USHORT AvLen;}alias PMSV1_0_AV_PAIR = MSV1_0_AV_PAIR*; struct MSV1_0_CHANGEPASSWORD_REQUEST {    MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;    UNICODE_STRING DomainName;    UNICODE_STRING AccountName;    UNICODE_STRING OldPassword;    UNICODE_STRING NewPassword;    BOOLEAN        Impersonating;}alias PMSV1_0_CHANGEPASSWORD_REQUEST = MSV1_0_CHANGEPASSWORD_REQUEST*; struct MSV1_0_CHANGEPASSWORD_RESPONSE {    MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;    BOOLEAN                      PasswordInfoValid;    DOMAIN_PASSWORD_INFORMATION  DomainPasswordInfo;}alias PMSV1_0_CHANGEPASSWORD_RESPONSE = MSV1_0_CHANGEPASSWORD_RESPONSE*; struct MSV1_0_SUBAUTH_REQUEST {    MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;    ULONG  SubAuthPackageId;    ULONG  SubAuthInfoLength;    PUCHAR SubAuthSubmitBuffer;}alias PMSV1_0_SUBAUTH_REQUEST = MSV1_0_SUBAUTH_REQUEST*; struct MSV1_0_SUBAUTH_RESPONSE {    MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;    ULONG  SubAuthInfoLength;    PUCHAR SubAuthReturnBuffer;}alias PMSV1_0_SUBAUTH_RESPONSE = MSV1_0_SUBAUTH_RESPONSE*; enum MSV1_0_DERIVECRED_TYPE_SHA1 = 0;

Lines 1–500 of 790.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t