1 #ifndef __INCLUDE_SECURITY_H
2 #define __INCLUDE_SECURITY_H
4 #include <ntos/ntdef.h>
5 #include <ntos/types.h>
8 #define MAXIMUM_ALLOWED (0x2000000L)
9 #define GENERIC_ALL (0x10000000L)
10 #define GENERIC_EXECUTE (0x20000000L)
12 #define SECURITY_STATIC_TRACKING (0)
13 #define SECURITY_DYNAMIC_TRACKING (1)
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)
24 typedef BOOL SECURITY_CONTEXT_TRACKING_MODE
;
26 typedef ULONG SECURITY_INFORMATION
, *PSECURITY_INFORMATION
;
28 typedef enum _TOKEN_INFORMATION_CLASS
{
37 TokenImpersonationLevel
,
39 } TOKEN_INFORMATION_CLASS
;
41 typedef ULONG SECURITY_IMPERSONATION_LEVEL
, *PSECURITY_IMPERSONATION_LEVEL
;
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)
48 typedef ULONG TOKEN_TYPE
, *PTOKEN_TYPE
;
50 #define TokenPrimary ((TOKEN_TYPE)1)
51 #define TokenImpersonation ((TOKEN_TYPE)2)
53 //typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE, *PSECURITY_CONTEXT_TRACKING_MODE;
55 //#define SECURITY_DYNAMIC_TRACKING (TRUE)
56 //#define SECURITY_STATIC_TRACKING (FALSE)
58 typedef ULONG ACCESS_MASK
, *PACCESS_MASK
;
59 typedef ULONG ACCESS_MODE
, *PACCESS_MODE
;
61 typedef struct _SECURITY_QUALITY_OF_SERVICE
{
63 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
;
64 SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode
;
65 BOOLEAN EffectiveOnly
;
66 } SECURITY_QUALITY_OF_SERVICE
;
68 typedef SECURITY_QUALITY_OF_SERVICE
* PSECURITY_QUALITY_OF_SERVICE
;
70 typedef struct _ACE_HEADER
75 ACCESS_MASK AccessMask
;
76 } ACE_HEADER
, *PACE_HEADER
;
83 typedef struct _SID_IDENTIFIER_AUTHORITY
86 } SID_IDENTIFIER_AUTHORITY
, *PSID_IDENTIFIER_AUTHORITY
;
88 #define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
93 UCHAR SubAuthorityCount
;
94 SID_IDENTIFIER_AUTHORITY IdentifierAuthority
;
95 ULONG SubAuthority
[1];
106 typedef USHORT SECURITY_DESCRIPTOR_CONTROL
, *PSECURITY_DESCRIPTOR_CONTROL
;
108 typedef struct _SECURITY_DESCRIPTOR_CONTEXT
110 } SECURITY_DESCRIPTOR_CONTEXT
, *PSECURITY_DESCRIPTOR_CONTEXT
;
112 typedef LARGE_INTEGER LUID
, *PLUID
;
114 typedef struct _SECURITY_DESCRIPTOR
{
117 SECURITY_DESCRIPTOR_CONTROL Control
;
122 } SECURITY_DESCRIPTOR
, *PSECURITY_DESCRIPTOR
;
124 typedef struct _LUID_AND_ATTRIBUTES
128 } LUID_AND_ATTRIBUTES
, *PLUID_AND_ATTRIBUTES
;
130 typedef struct _TOKEN_SOURCE
{
132 LUID SourceIdentifier
;
133 } TOKEN_SOURCE
, *PTOKEN_SOURCE
;
135 typedef struct _SID_AND_ATTRIBUTES
{
138 } SID_AND_ATTRIBUTES
, *PSID_AND_ATTRIBUTES
;
140 typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY
[ANYSIZE_ARRAY
];
141 typedef SID_AND_ATTRIBUTES_ARRAY
*PSID_AND_ATTRIBUTES_ARRAY
;
143 typedef struct _TOKEN_USER
{
144 SID_AND_ATTRIBUTES User
;
145 } TOKEN_USER
, *PTOKEN_USER
;
147 typedef struct _TOKEN_PRIMARY_GROUP
{
149 } TOKEN_PRIMARY_GROUP
, *PTOKEN_PRIMARY_GROUP
;
151 typedef struct _TOKEN_GROUPS
{
153 SID_AND_ATTRIBUTES Groups
[ANYSIZE_ARRAY
];
154 } TOKEN_GROUPS
, *PTOKEN_GROUPS
, *LPTOKEN_GROUPS
;
156 typedef struct _TOKEN_PRIVILEGES
{
157 DWORD PrivilegeCount
;
158 LUID_AND_ATTRIBUTES Privileges
[ANYSIZE_ARRAY
];
159 } TOKEN_PRIVILEGES
, *PTOKEN_PRIVILEGES
, *LPTOKEN_PRIVILEGES
;
161 typedef struct _TOKEN_OWNER
{
163 } TOKEN_OWNER
, *PTOKEN_OWNER
;
165 typedef struct _TOKEN_DEFAULT_DACL
{
167 } TOKEN_DEFAULT_DACL
, *PTOKEN_DEFAULT_DACL
;
169 typedef struct _TOKEN_STATISTICS
{
171 LUID AuthenticationId
;
172 LARGE_INTEGER ExpirationTime
;
173 TOKEN_TYPE TokenType
;
174 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
;
175 DWORD DynamicCharged
;
176 DWORD DynamicAvailable
;
178 DWORD PrivilegeCount
;
180 } TOKEN_STATISTICS
, *PTOKEN_STATISTICS
;
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
;
189 typedef struct _PRIVILEGE_SET
{
190 DWORD PrivilegeCount
;
192 LUID_AND_ATTRIBUTES Privilege
[ANYSIZE_ARRAY
];
193 } PRIVILEGE_SET
, *PPRIVILEGE_SET
, *LPPRIVILEGE_SET
;
195 typedef enum _ACL_INFORMATION_CLASS
{
196 AclRevisionInformation
= 1,
198 } ACL_INFORMATION_CLASS
;
200 typedef struct _SECURITY_ATTRIBUTES
{
202 LPVOID lpSecurityDescriptor
;
204 } SECURITY_ATTRIBUTES
, *LPSECURITY_ATTRIBUTES
;
207 #endif /* __INCLUDE_SECURITY_H */