#define ACCESS_MIN_MS_ACE_TYPE                  (0x0)
#define ACCESS_ALLOWED_ACE_TYPE                 (0x0)
#define ACCESS_DENIED_ACE_TYPE                  (0x1)
#define SYSTEM_AUDIT_ACE_TYPE                   (0x2)
#define SYSTEM_ALARM_ACE_TYPE                   (0x3)
#define ACCESS_MAX_MS_V2_ACE_TYPE               (0x3)
#define ACCESS_ALLOWED_COMPOUND_ACE_TYPE        (0x4)
#define ACCESS_MAX_MS_V3_ACE_TYPE               (0x4)
#define ACCESS_MIN_MS_OBJECT_ACE_TYPE           (0x5)
#define ACCESS_ALLOWED_OBJECT_ACE_TYPE          (0x5)
#define ACCESS_DENIED_OBJECT_ACE_TYPE           (0x6)
#define SYSTEM_AUDIT_OBJECT_ACE_TYPE            (0x7)
#define SYSTEM_ALARM_OBJECT_ACE_TYPE            (0x8)
#define ACCESS_MAX_MS_OBJECT_ACE_TYPE           (0x8)
#define ACCESS_MAX_MS_V4_ACE_TYPE               (0x8)
#define ACCESS_MAX_MS_ACE_TYPE                  (0x8)
#define ACCESS_ALLOWED_CALLBACK_ACE_TYPE        (0x9)
#define ACCESS_DENIED_CALLBACK_ACE_TYPE         (0xA)
#define ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE (0xB)
#define ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE  (0xC)
#define SYSTEM_AUDIT_CALLBACK_ACE_TYPE          (0xD)
#define SYSTEM_ALARM_CALLBACK_ACE_TYPE          (0xE)
#define SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE   (0xF)
#define SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE   (0x10)
#define SYSTEM_MANDATORY_LABEL_ACE_TYPE         (0x11)
#define ACCESS_MAX_MS_V5_ACE_TYPE               (0x11)
#define SYSTEM_RESOURCE_ATTRIBUTE_ACE_TYPE      (0x12)
#define SYSTEM_SCOPED_POLICY_ID_ACE_TYPE        (0x13)
#define SYSTEM_PROCESS_TRUST_LABEL_ACE_TYPE     (0x14)
#define ACCESS_MAX_MS_V5_ACE_TYPE               (0x14)

#define SEC_WINNT_AUTH_IDENTITY_ANSI        0x1
#define SEC_WINNT_AUTH_IDENTITY_UNICODE     0x2

#define SE_OWNER_DEFAULTED      0x00000001
#define SE_GROUP_DEFAULTED      0x00000002
#define SE_DACL_PRESENT         0x00000004
#define SE_DACL_DEFAULTED       0x00000008
#define SE_SACL_PRESENT         0x00000010
#define SE_SACL_DEFAULTED       0x00000020
#define SE_DACL_AUTO_INHERIT_REQ    0x00000100
#define SE_SACL_AUTO_INHERIT_REQ    0x00000200
#define SE_DACL_AUTO_INHERITED      0x00000400
#define SE_SACL_AUTO_INHERITED      0x00000800
#define SE_DACL_PROTECTED       0x00001000
#define SE_SACL_PROTECTED       0x00002000
#define SE_RM_CONTROL_VALID     0x00004000
#define SE_SELF_RELATIVE        0x00008000

#define SDDL_REVISION_1 0x1


#define ACE_OBJECT_TYPE_PRESENT           0x1
#define ACE_INHERITED_OBJECT_TYPE_PRESENT 0x2


#define OBJECT_INHERIT_ACE                (0x1)
#define CONTAINER_INHERIT_ACE             (0x2)
#define NO_PROPAGATE_INHERIT_ACE          (0x4)
#define INHERIT_ONLY_ACE                  (0x8)
#define INHERITED_ACE                     (0x10)
#define VALID_INHERIT_FLAGS               (0x1F)
#define SUCCESSFUL_ACCESS_ACE_FLAG        (0x40)
#define FAILED_ACCESS_ACE_FLAG            (0x80)


#define SYSTEM_MANDATORY_LABEL_NO_WRITE_UP      0x1
#define SYSTEM_MANDATORY_LABEL_NO_READ_UP       0x2
#define SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP    0x4

#define SYSTEM_PROCESS_TRUST_LABEL_VALID_MASK      0x00ffffff
#define SYSTEM_PROCESS_TRUST_NOCONSTRAINT_MASK     0xffffffff


#define CLAIM_SECURITY_ATTRIBUTE_TYPE_INVALID   0x00
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_INT64     0x01
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_UINT64    0x02
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_STRING    0x03
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_FQBN      0x04
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_SID       0x05
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_BOOLEAN   0x06
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_OCTET_STRING  0x10



#define SE_GROUP_MANDATORY                 (0x00000001L)
#define SE_GROUP_ENABLED_BY_DEFAULT        (0x00000002L)
#define SE_GROUP_ENABLED                   (0x00000004L)
#define SE_GROUP_OWNER                     (0x00000008L)
#define SE_GROUP_USE_FOR_DENY_ONLY         (0x00000010L)
#define SE_GROUP_INTEGRITY                 (0x00000020L)
#define SE_GROUP_INTEGRITY_ENABLED         (0x00000040L)
#define SE_GROUP_LOGON_ID                  (0xC0000000L)
#define SE_GROUP_RESOURCE                  (0x20000000L)

#define SE_GROUP_VALID_ATTRIBUTES          (SE_GROUP_MANDATORY          | \
                                            SE_GROUP_ENABLED_BY_DEFAULT | \
                                            SE_GROUP_ENABLED            | \
                                            SE_GROUP_OWNER              | \
                                            SE_GROUP_USE_FOR_DENY_ONLY  | \
                                            SE_GROUP_LOGON_ID           | \
                                            SE_GROUP_RESOURCE           | \
                                            SE_GROUP_INTEGRITY          | \
                                            SE_GROUP_INTEGRITY_ENABLED)


#define OWNER_SECURITY_INFORMATION       (0x00000001L)
#define GROUP_SECURITY_INFORMATION       (0x00000002L)
#define DACL_SECURITY_INFORMATION        (0x00000004L)
#define SACL_SECURITY_INFORMATION        (0x00000008L)
#define LABEL_SECURITY_INFORMATION       (0x00000010L)
#define ATTRIBUTE_SECURITY_INFORMATION   (0x00000020L)
#define SCOPE_SECURITY_INFORMATION       (0x00000040L)
#define PROCESS_TRUST_LABEL_SECURITY_INFORMATION (0x00000080L)
#define BACKUP_SECURITY_INFORMATION      (0x00010000L)

#define PROTECTED_DACL_SECURITY_INFORMATION     (0x80000000L)
#define PROTECTED_SACL_SECURITY_INFORMATION     (0x40000000L)
#define UNPROTECTED_DACL_SECURITY_INFORMATION   (0x20000000L)
#define UNPROTECTED_SACL_SECURITY_INFORMATION   (0x10000000L)

/* PRIVILEGES */

#define SE_CREATE_TOKEN_NAME              ("SeCreateTokenPrivilege")
#define SE_ASSIGNPRIMARYTOKEN_NAME        ("SeAssignPrimaryTokenPrivilege")
#define SE_LOCK_MEMORY_NAME               ("SeLockMemoryPrivilege")
#define SE_INCREASE_QUOTA_NAME            ("SeIncreaseQuotaPrivilege")
#define SE_UNSOLICITED_INPUT_NAME         ("SeUnsolicitedInputPrivilege")
#define SE_MACHINE_ACCOUNT_NAME           ("SeMachineAccountPrivilege")
#define SE_TCB_NAME                       ("SeTcbPrivilege")
#define SE_SECURITY_NAME                  ("SeSecurityPrivilege")
#define SE_TAKE_OWNERSHIP_NAME            ("SeTakeOwnershipPrivilege")
#define SE_LOAD_DRIVER_NAME               ("SeLoadDriverPrivilege")
#define SE_SYSTEM_PROFILE_NAME            ("SeSystemProfilePrivilege")
#define SE_SYSTEMTIME_NAME                ("SeSystemtimePrivilege")
#define SE_PROF_SINGLE_PROCESS_NAME       ("SeProfileSingleProcessPrivilege")
#define SE_INC_BASE_PRIORITY_NAME         ("SeIncreaseBasePriorityPrivilege")
#define SE_CREATE_PAGEFILE_NAME           ("SeCreatePagefilePrivilege")
#define SE_CREATE_PERMANENT_NAME          ("SeCreatePermanentPrivilege")
#define SE_BACKUP_NAME                    ("SeBackupPrivilege")
#define SE_RESTORE_NAME                   ("SeRestorePrivilege")
#define SE_SHUTDOWN_NAME                  ("SeShutdownPrivilege")
#define SE_DEBUG_NAME                     ("SeDebugPrivilege")
#define SE_AUDIT_NAME                     ("SeAuditPrivilege")
#define SE_SYSTEM_ENVIRONMENT_NAME        ("SeSystemEnvironmentPrivilege")
#define SE_CHANGE_NOTIFY_NAME             ("SeChangeNotifyPrivilege")
#define SE_REMOTE_SHUTDOWN_NAME           ("SeRemoteShutdownPrivilege")
#define SE_UNDOCK_NAME                    ("SeUndockPrivilege")
#define SE_SYNC_AGENT_NAME                ("SeSyncAgentPrivilege")
#define SE_ENABLE_DELEGATION_NAME         ("SeEnableDelegationPrivilege")
#define SE_MANAGE_VOLUME_NAME             ("SeManageVolumePrivilege")
#define SE_IMPERSONATE_NAME               ("SeImpersonatePrivilege")
#define SE_CREATE_GLOBAL_NAME             ("SeCreateGlobalPrivilege")
#define SE_TRUSTED_CREDMAN_ACCESS_NAME    ("SeTrustedCredManAccessPrivilege")
#define SE_RELABEL_NAME                   ("SeRelabelPrivilege")
#define SE_INC_WORKING_SET_NAME           ("SeIncreaseWorkingSetPrivilege")
#define SE_TIME_ZONE_NAME                 ("SeTimeZonePrivilege")
#define SE_CREATE_SYMBOLIC_LINK_NAME      ("SeCreateSymbolicLinkPrivilege")