Made header file usage more consistent
[reactos.git] / reactos / include / ntos / security.h
1 #ifndef __INCLUDE_SECURITY_H
2 #define __INCLUDE_SECURITY_H
3
4 #include <ntos/ntdef.h>
5 #include <ntos/types.h>
6
7 /* ACCESS_MASK */
8 #define MAXIMUM_ALLOWED (0x2000000L)
9 #define GENERIC_ALL (0x10000000L)
10 #define GENERIC_EXECUTE (0x20000000L)
11
12 #define SECURITY_STATIC_TRACKING (0)
13 #define SECURITY_DYNAMIC_TRACKING (1)
14
15 /* Standard rights */
16 #define STANDARD_RIGHTS_REQUIRED (0xf0000L)
17 #define STANDARD_RIGHTS_WRITE (0x20000L)
18 #define STANDARD_RIGHTS_READ (0x20000L)
19 #define STANDARD_RIGHTS_EXECUTE (0x20000L)
20 #define STANDARD_RIGHTS_ALL (0x1f0000L)
21 #define SPECIFIC_RIGHTS_ALL (0xffffL)
22
23
24 typedef BOOL SECURITY_CONTEXT_TRACKING_MODE;
25
26 typedef ULONG SECURITY_INFORMATION, *PSECURITY_INFORMATION;
27
28 typedef enum _TOKEN_INFORMATION_CLASS {
29 TokenUser = 1,
30 TokenGroups,
31 TokenPrivileges,
32 TokenOwner,
33 TokenPrimaryGroup,
34 TokenDefaultDacl,
35 TokenSource,
36 TokenType,
37 TokenImpersonationLevel,
38 TokenStatistics
39 } TOKEN_INFORMATION_CLASS;
40
41 typedef ULONG SECURITY_IMPERSONATION_LEVEL, *PSECURITY_IMPERSONATION_LEVEL;
42
43 #define SecurityAnonymous ((SECURITY_IMPERSONATION_LEVEL)1)
44 #define SecurityIdentification ((SECURITY_IMPERSONATION_LEVEL)2)
45 #define SecurityImpersonation ((SECURITY_IMPERSONATION_LEVEL)3)
46 #define SecurityDelegation ((SECURITY_IMPERSONATION_LEVEL)4)
47
48 typedef ULONG TOKEN_TYPE, *PTOKEN_TYPE;
49
50 #define TokenPrimary ((TOKEN_TYPE)1)
51 #define TokenImpersonation ((TOKEN_TYPE)2)
52
53 //typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE, *PSECURITY_CONTEXT_TRACKING_MODE;
54
55 //#define SECURITY_DYNAMIC_TRACKING (TRUE)
56 //#define SECURITY_STATIC_TRACKING (FALSE)
57
58 typedef ULONG ACCESS_MASK, *PACCESS_MASK;
59 typedef ULONG ACCESS_MODE, *PACCESS_MODE;
60
61 typedef struct _SECURITY_QUALITY_OF_SERVICE {
62 DWORD Length;
63 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
64 SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
65 BOOLEAN EffectiveOnly;
66 } SECURITY_QUALITY_OF_SERVICE;
67
68 typedef SECURITY_QUALITY_OF_SERVICE* PSECURITY_QUALITY_OF_SERVICE;
69
70 typedef struct _ACE_HEADER
71 {
72 CHAR AceType;
73 CHAR AceFlags;
74 USHORT AceSize;
75 ACCESS_MASK AccessMask;
76 } ACE_HEADER, *PACE_HEADER;
77
78 typedef struct
79 {
80 ACE_HEADER Header;
81 } ACE, *PACE;
82
83 typedef struct _SID_IDENTIFIER_AUTHORITY
84 {
85 BYTE Value[6];
86 } SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
87
88 #define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
89
90 typedef struct _SID
91 {
92 UCHAR Revision;
93 UCHAR SubAuthorityCount;
94 SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
95 ULONG SubAuthority[1];
96 } SID, *PSID;
97
98 typedef struct _ACL {
99 UCHAR AclRevision;
100 UCHAR Sbz1;
101 USHORT AclSize;
102 USHORT AceCount;
103 USHORT Sbz2;
104 } ACL, *PACL;
105
106 typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
107
108 typedef struct _SECURITY_DESCRIPTOR_CONTEXT
109 {
110 } SECURITY_DESCRIPTOR_CONTEXT, *PSECURITY_DESCRIPTOR_CONTEXT;
111
112 typedef LARGE_INTEGER LUID, *PLUID;
113
114 typedef struct _SECURITY_DESCRIPTOR {
115 UCHAR Revision;
116 UCHAR Sbz1;
117 SECURITY_DESCRIPTOR_CONTROL Control;
118 PSID Owner;
119 PSID Group;
120 PACL Sacl;
121 PACL Dacl;
122 } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
123
124 typedef struct _LUID_AND_ATTRIBUTES
125 {
126 LUID Luid;
127 DWORD Attributes;
128 } LUID_AND_ATTRIBUTES, *PLUID_AND_ATTRIBUTES;
129
130 typedef struct _TOKEN_SOURCE {
131 CHAR SourceName[8];
132 LUID SourceIdentifier;
133 } TOKEN_SOURCE, *PTOKEN_SOURCE;
134
135 typedef struct _SID_AND_ATTRIBUTES {
136 PSID Sid;
137 DWORD Attributes;
138 } SID_AND_ATTRIBUTES, *PSID_AND_ATTRIBUTES;
139
140 typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
141 typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY;
142
143 typedef struct _TOKEN_USER {
144 SID_AND_ATTRIBUTES User;
145 } TOKEN_USER, *PTOKEN_USER;
146
147 typedef struct _TOKEN_PRIMARY_GROUP {
148 PSID PrimaryGroup;
149 } TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP;
150
151 typedef struct _TOKEN_GROUPS {
152 DWORD GroupCount;
153 SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
154 } TOKEN_GROUPS, *PTOKEN_GROUPS, *LPTOKEN_GROUPS;
155
156 typedef struct _TOKEN_PRIVILEGES {
157 DWORD PrivilegeCount;
158 LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
159 } TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES, *LPTOKEN_PRIVILEGES;
160
161 typedef struct _TOKEN_OWNER {
162 PSID Owner;
163 } TOKEN_OWNER, *PTOKEN_OWNER;
164
165 typedef struct _TOKEN_DEFAULT_DACL {
166 PACL DefaultDacl;
167 } TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL;
168
169 typedef struct _TOKEN_STATISTICS {
170 LUID TokenId;
171 LUID AuthenticationId;
172 LARGE_INTEGER ExpirationTime;
173 TOKEN_TYPE TokenType;
174 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
175 DWORD DynamicCharged;
176 DWORD DynamicAvailable;
177 DWORD GroupCount;
178 DWORD PrivilegeCount;
179 LUID ModifiedId;
180 } TOKEN_STATISTICS, *PTOKEN_STATISTICS;
181
182 typedef struct _GENERIC_MAPPING {
183 ACCESS_MASK GenericRead;
184 ACCESS_MASK GenericWrite;
185 ACCESS_MASK GenericExecute;
186 ACCESS_MASK GenericAll;
187 } GENERIC_MAPPING, *PGENERIC_MAPPING;
188
189 typedef struct _PRIVILEGE_SET {
190 DWORD PrivilegeCount;
191 DWORD Control;
192 LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY];
193 } PRIVILEGE_SET, *PPRIVILEGE_SET, *LPPRIVILEGE_SET;
194
195 typedef enum _ACL_INFORMATION_CLASS {
196 AclRevisionInformation = 1,
197 AclSizeInformation
198 } ACL_INFORMATION_CLASS;
199
200 typedef struct _SECURITY_ATTRIBUTES {
201 DWORD nLength;
202 LPVOID lpSecurityDescriptor;
203 BOOL bInheritHandle;
204 } SECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
205
206
207 #endif /* __INCLUDE_SECURITY_H */