mssip.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  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 MSSIP_H
  7. #define MSSIP_H
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11. #pragma pack (8)
  12. typedef CRYPT_HASH_BLOB CRYPT_DIGEST_DATA;
  13. #define MSSIP_FLAGS_PROHIBIT_RESIZE_ON_CREATE 0x00010000
  14. #define MSSIP_FLAGS_USE_CATALOG 0x00020000
  15. #define SPC_INC_PE_RESOURCES_FLAG 0x80
  16. #define SPC_INC_PE_DEBUG_INFO_FLAG 0x40
  17. #define SPC_INC_PE_IMPORT_ADDR_TABLE_FLAG 0x20
  18. typedef struct SIP_SUBJECTINFO_ {
  19. DWORD cbSize;
  20. GUID *pgSubjectType;
  21. HANDLE hFile;
  22. LPCWSTR pwsFileName;
  23. LPCWSTR pwsDisplayName;
  24. DWORD dwReserved1;
  25. DWORD dwIntVersion;
  26. HCRYPTPROV hProv;
  27. CRYPT_ALGORITHM_IDENTIFIER DigestAlgorithm;
  28. DWORD dwFlags;
  29. DWORD dwEncodingType;
  30. DWORD dwReserved2;
  31. DWORD fdwCAPISettings;
  32. DWORD fdwSecuritySettings;
  33. DWORD dwIndex;
  34. DWORD dwUnionChoice;
  35. #define MSSIP_ADDINFO_NONE 0
  36. #define MSSIP_ADDINFO_FLAT 1
  37. #define MSSIP_ADDINFO_CATMEMBER 2
  38. #define MSSIP_ADDINFO_BLOB 3
  39. #define MSSIP_ADDINFO_NONMSSIP 500
  40. __C89_NAMELESS union {
  41. struct MS_ADDINFO_FLAT_ *psFlat;
  42. struct MS_ADDINFO_CATALOGMEMBER_ *psCatMember;
  43. struct MS_ADDINFO_BLOB_ *psBlob;
  44. };
  45. LPVOID pClientData;
  46. } SIP_SUBJECTINFO,*LPSIP_SUBJECTINFO;
  47. typedef struct MS_ADDINFO_FLAT_ {
  48. DWORD cbStruct;
  49. struct SIP_INDIRECT_DATA_ *pIndirectData;
  50. } MS_ADDINFO_FLAT,*PMS_ADDINFO_FLAT;
  51. typedef struct MS_ADDINFO_CATALOGMEMBER_ {
  52. DWORD cbStruct;
  53. struct CRYPTCATSTORE_ *pStore;
  54. struct CRYPTCATMEMBER_ *pMember;
  55. } MS_ADDINFO_CATALOGMEMBER,*PMS_ADDINFO_CATALOGMEMBER;
  56. typedef struct MS_ADDINFO_BLOB_ {
  57. DWORD cbStruct;
  58. DWORD cbMemObject;
  59. BYTE *pbMemObject;
  60. DWORD cbMemSignedMsg;
  61. BYTE *pbMemSignedMsg;
  62. } MS_ADDINFO_BLOB,*PMS_ADDINFO_BLOB;
  63. typedef struct SIP_INDIRECT_DATA_ {
  64. CRYPT_ATTRIBUTE_TYPE_VALUE Data;
  65. CRYPT_ALGORITHM_IDENTIFIER DigestAlgorithm;
  66. CRYPT_HASH_BLOB Digest;
  67. } SIP_INDIRECT_DATA,*PSIP_INDIRECT_DATA;
  68. #pragma pack()
  69. extern WINBOOL WINAPI CryptSIPGetSignedDataMsg(SIP_SUBJECTINFO *pSubjectInfo,DWORD *pdwEncodingType,DWORD dwIndex,DWORD *pcbSignedDataMsg,BYTE *pbSignedDataMsg);
  70. typedef WINBOOL (WINAPI *pCryptSIPGetSignedDataMsg)(SIP_SUBJECTINFO *pSubjectInfo,DWORD *pdwEncodingType,DWORD dwIndex,DWORD *pcbSignedDataMsg,BYTE *pbSignedDataMsg);
  71. extern WINBOOL WINAPI CryptSIPPutSignedDataMsg(SIP_SUBJECTINFO *pSubjectInfo,DWORD dwEncodingType,DWORD *pdwIndex,DWORD cbSignedDataMsg,BYTE *pbSignedDataMsg);
  72. typedef WINBOOL (WINAPI *pCryptSIPPutSignedDataMsg)(SIP_SUBJECTINFO *pSubjectInfo,DWORD dwEncodingType,DWORD *pdwIndex,DWORD cbSignedDataMsg,BYTE *pbSignedDataMsg);
  73. extern WINBOOL WINAPI CryptSIPCreateIndirectData(SIP_SUBJECTINFO *pSubjectInfo,DWORD *pcbIndirectData,SIP_INDIRECT_DATA *pIndirectData);
  74. typedef WINBOOL (WINAPI *pCryptSIPCreateIndirectData)(SIP_SUBJECTINFO *pSubjectInfo,DWORD *pcbIndirectData,SIP_INDIRECT_DATA *pIndirectData);
  75. extern WINBOOL WINAPI CryptSIPVerifyIndirectData(SIP_SUBJECTINFO *pSubjectInfo,SIP_INDIRECT_DATA *pIndirectData);
  76. typedef WINBOOL (WINAPI *pCryptSIPVerifyIndirectData)(SIP_SUBJECTINFO *pSubjectInfo,SIP_INDIRECT_DATA *pIndirectData);
  77. extern WINBOOL WINAPI CryptSIPRemoveSignedDataMsg(SIP_SUBJECTINFO *pSubjectInfo,DWORD dwIndex);
  78. typedef WINBOOL (WINAPI *pCryptSIPRemoveSignedDataMsg)(SIP_SUBJECTINFO *pSubjectInfo,DWORD dwIndex);
  79. #pragma pack(8)
  80. typedef struct SIP_DISPATCH_INFO_ {
  81. DWORD cbSize;
  82. HANDLE hSIP;
  83. pCryptSIPGetSignedDataMsg pfGet;
  84. pCryptSIPPutSignedDataMsg pfPut;
  85. pCryptSIPCreateIndirectData pfCreate;
  86. pCryptSIPVerifyIndirectData pfVerify;
  87. pCryptSIPRemoveSignedDataMsg pfRemove;
  88. } SIP_DISPATCH_INFO,*LPSIP_DISPATCH_INFO;
  89. typedef WINBOOL (WINAPI *pfnIsFileSupported)(HANDLE hFile,GUID *pgSubject);
  90. typedef WINBOOL (WINAPI *pfnIsFileSupportedName)(WCHAR *pwszFileName,GUID *pgSubject);
  91. typedef struct SIP_ADD_NEWPROVIDER_ {
  92. DWORD cbStruct;
  93. GUID *pgSubject;
  94. WCHAR *pwszDLLFileName;
  95. WCHAR *pwszMagicNumber;
  96. WCHAR *pwszIsFunctionName;
  97. WCHAR *pwszGetFuncName;
  98. WCHAR *pwszPutFuncName;
  99. WCHAR *pwszCreateFuncName;
  100. WCHAR *pwszVerifyFuncName;
  101. WCHAR *pwszRemoveFuncName;
  102. WCHAR *pwszIsFunctionNameFmt2;
  103. } SIP_ADD_NEWPROVIDER,*PSIP_ADD_NEWPROVIDER;
  104. #define SIP_MAX_MAGIC_NUMBER 4
  105. #pragma pack()
  106. extern WINBOOL WINAPI CryptSIPLoad(const GUID *pgSubject,DWORD dwFlags,SIP_DISPATCH_INFO *pSipDispatch);
  107. extern WINBOOL WINAPI CryptSIPRetrieveSubjectGuid(LPCWSTR FileName,HANDLE hFileIn,GUID *pgSubject);
  108. extern WINBOOL WINAPI CryptSIPRetrieveSubjectGuidForCatalogFile(LPCWSTR FileName,HANDLE hFileIn,GUID *pgSubject);
  109. extern WINBOOL WINAPI CryptSIPAddProvider(SIP_ADD_NEWPROVIDER *psNewProv);
  110. extern WINBOOL WINAPI CryptSIPRemoveProvider(GUID *pgProv);
  111. #ifdef __cplusplus
  112. }
  113. #endif
  114. #endif