winsafer.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. #ifndef _WINSAFER_H
  7. #define _WINSAFER_H
  8. #include <guiddef.h>
  9. #include <wincrypt.h>
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. DECLARE_HANDLE(SAFER_LEVEL_HANDLE);
  14. #define SAFER_SCOPEID_MACHINE 1
  15. #define SAFER_SCOPEID_USER 2
  16. #define SAFER_LEVELID_FULLYTRUSTED 0x40000
  17. #define SAFER_LEVELID_NORMALUSER 0x20000
  18. #define SAFER_LEVELID_CONSTRAINED 0x10000
  19. #define SAFER_LEVELID_UNTRUSTED 0x01000
  20. #define SAFER_LEVELID_DISALLOWED 0x00000
  21. #define SAFER_LEVEL_OPEN 1
  22. #define SAFER_MAX_FRIENDLYNAME_SIZE 256
  23. #define SAFER_MAX_DESCRIPTION_SIZE 256
  24. #define SAFER_MAX_HASH_SIZE 64
  25. #define SAFER_TOKEN_NULL_IF_EQUAL 0x00000001
  26. #define SAFER_TOKEN_COMPARE_ONLY 0x00000002
  27. #define SAFER_TOKEN_MAKE_INERT 0x00000004
  28. #define SAFER_TOKEN_WANT_FLAGS 0x00000008
  29. #define SAFER_CRITERIA_IMAGEPATH 0x00001
  30. #define SAFER_CRITERIA_NOSIGNEDHASH 0x00002
  31. #define SAFER_CRITERIA_IMAGEHASH 0x00004
  32. #define SAFER_CRITERIA_AUTHENTICODE 0x00008
  33. #define SAFER_CRITERIA_URLZONE 0x00010
  34. #define SAFER_CRITERIA_IMAGEPATH_NT 0x01000
  35. #include <pshpack8.h>
  36. typedef struct _SAFER_CODE_PROPERTIES {
  37. DWORD cbSize;
  38. DWORD dwCheckFlags;
  39. LPCWSTR ImagePath;
  40. HANDLE hImageFileHandle;
  41. DWORD UrlZoneId;
  42. BYTE ImageHash[SAFER_MAX_HASH_SIZE];
  43. DWORD dwImageHashSize;
  44. LARGE_INTEGER ImageSize;
  45. ALG_ID HashAlgorithm;
  46. LPBYTE pByteBlock;
  47. HWND hWndParent;
  48. DWORD dwWVTUIChoice;
  49. } SAFER_CODE_PROPERTIES,*PSAFER_CODE_PROPERTIES;
  50. #include <poppack.h>
  51. #define SAFER_POLICY_JOBID_MASK 0xFF000000
  52. #define SAFER_POLICY_JOBID_CONSTRAINED 0x04000000
  53. #define SAFER_POLICY_JOBID_UNTRUSTED 0x03000000
  54. #define SAFER_POLICY_ONLY_EXES 0x00010000
  55. #define SAFER_POLICY_SANDBOX_INERT 0x00020000
  56. #define SAFER_POLICY_HASH_DUPLICATE 0x00040000
  57. #define SAFER_POLICY_UIFLAGS_MASK 0x000000FF
  58. #define SAFER_POLICY_UIFLAGS_INFORMATION_PROMPT 0x00000001
  59. #define SAFER_POLICY_UIFLAGS_OPTION_PROMPT 0x00000002
  60. #define SAFER_POLICY_UIFLAGS_HIDDEN 0x00000004
  61. typedef enum _SAFER_POLICY_INFO_CLASS {
  62. SaferPolicyLevelList = 1,SaferPolicyEnableTransparentEnforcement,SaferPolicyDefaultLevel,SaferPolicyEvaluateUserScope,SaferPolicyScopeFlags
  63. } SAFER_POLICY_INFO_CLASS;
  64. typedef enum _SAFER_OBJECT_INFO_CLASS {
  65. SaferObjectLevelId = 1,SaferObjectScopeId,SaferObjectFriendlyName,SaferObjectDescription,SaferObjectBuiltin,SaferObjectDisallowed,
  66. SaferObjectDisableMaxPrivilege,SaferObjectInvertDeletedPrivileges,SaferObjectDeletedPrivileges,SaferObjectDefaultOwner,SaferObjectSidsToDisable,
  67. SaferObjectRestrictedSidsInverted,SaferObjectRestrictedSidsAdded,SaferObjectAllIdentificationGuids,SaferObjectSingleIdentification,
  68. SaferObjectExtendedError
  69. } SAFER_OBJECT_INFO_CLASS;
  70. #include <pshpack8.h>
  71. typedef enum _SAFER_IDENTIFICATION_TYPES {
  72. SaferIdentityDefault,SaferIdentityTypeImageName = 1,SaferIdentityTypeImageHash,SaferIdentityTypeUrlZone,SaferIdentityTypeCertificate
  73. } SAFER_IDENTIFICATION_TYPES;
  74. typedef struct _SAFER_IDENTIFICATION_HEADER {
  75. SAFER_IDENTIFICATION_TYPES dwIdentificationType;
  76. DWORD cbStructSize;
  77. GUID IdentificationGuid;
  78. FILETIME lastModified;
  79. } SAFER_IDENTIFICATION_HEADER,*PSAFER_IDENTIFICATION_HEADER;
  80. typedef struct _SAFER_PATHNAME_IDENTIFICATION {
  81. SAFER_IDENTIFICATION_HEADER header;
  82. WCHAR Description[SAFER_MAX_DESCRIPTION_SIZE];
  83. PWCHAR ImageName;
  84. DWORD dwSaferFlags;
  85. } SAFER_PATHNAME_IDENTIFICATION,*PSAFER_PATHNAME_IDENTIFICATION;
  86. typedef struct _SAFER_HASH_IDENTIFICATION {
  87. SAFER_IDENTIFICATION_HEADER header;
  88. WCHAR Description[SAFER_MAX_DESCRIPTION_SIZE];
  89. WCHAR FriendlyName[SAFER_MAX_FRIENDLYNAME_SIZE];
  90. DWORD HashSize;
  91. BYTE ImageHash[SAFER_MAX_HASH_SIZE];
  92. ALG_ID HashAlgorithm;
  93. LARGE_INTEGER ImageSize;
  94. DWORD dwSaferFlags;
  95. } SAFER_HASH_IDENTIFICATION,*PSAFER_HASH_IDENTIFICATION;
  96. typedef struct _SAFER_URLZONE_IDENTIFICATION {
  97. SAFER_IDENTIFICATION_HEADER header;
  98. DWORD UrlZoneId;
  99. DWORD dwSaferFlags;
  100. } SAFER_URLZONE_IDENTIFICATION,*PSAFER_URLZONE_IDENTIFICATION;
  101. #include <poppack.h>
  102. WINADVAPI WINBOOL WINAPI SaferGetPolicyInformation(DWORD dwScopeId,SAFER_POLICY_INFO_CLASS SaferPolicyInfoClass,DWORD InfoBufferSize,PVOID InfoBuffer,PDWORD InfoBufferRetSize,LPVOID lpReserved);
  103. WINADVAPI WINBOOL WINAPI SaferSetPolicyInformation(DWORD dwScopeId,SAFER_POLICY_INFO_CLASS SaferPolicyInfoClass,DWORD InfoBufferSize,PVOID InfoBuffer,LPVOID lpReserved);
  104. WINADVAPI WINBOOL WINAPI SaferCreateLevel(DWORD dwScopeId,DWORD dwLevelId,DWORD OpenFlags,SAFER_LEVEL_HANDLE *pLevelHandle,LPVOID lpReserved);
  105. WINADVAPI WINBOOL WINAPI SaferCloseLevel(SAFER_LEVEL_HANDLE hLevelHandle);
  106. WINADVAPI WINBOOL WINAPI SaferIdentifyLevel(DWORD dwNumProperties,PSAFER_CODE_PROPERTIES pCodeProperties,SAFER_LEVEL_HANDLE *pLevelHandle,LPVOID lpReserved);
  107. WINADVAPI WINBOOL WINAPI SaferComputeTokenFromLevel(SAFER_LEVEL_HANDLE LevelHandle,HANDLE InAccessToken,PHANDLE OutAccessToken,DWORD dwFlags,LPVOID lpReserved);
  108. WINADVAPI WINBOOL WINAPI SaferGetLevelInformation(SAFER_LEVEL_HANDLE LevelHandle,SAFER_OBJECT_INFO_CLASS dwInfoType,LPVOID lpQueryBuffer,DWORD dwInBufferSize,LPDWORD lpdwOutBufferSize);
  109. WINADVAPI WINBOOL WINAPI SaferSetLevelInformation(SAFER_LEVEL_HANDLE LevelHandle,SAFER_OBJECT_INFO_CLASS dwInfoType,LPVOID lpQueryBuffer,DWORD dwInBufferSize);
  110. WINADVAPI WINBOOL WINAPI SaferRecordEventLogEntry(SAFER_LEVEL_HANDLE hLevel,LPCWSTR szTargetPath,LPVOID lpReserved);
  111. WINADVAPI WINBOOL WINAPI SaferiIsExecutableFileType(LPCWSTR szFullPathname,BOOLEAN bFromShellExecute);
  112. #ifdef __cplusplus
  113. }
  114. #endif
  115. #endif