mssip.h 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. /*
  2. * Copyright (C) 2002 Patrik Stridvall
  3. *
  4. * This library is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU Lesser General Public
  6. * License as published by the Free Software Foundation; either
  7. * version 2.1 of the License, or (at your option) any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. * Lesser General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU Lesser General Public
  15. * License along with this library; if not, write to the Free Software
  16. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  17. */
  18. #ifndef __WINE_MSSIP_H
  19. #define __WINE_MSSIP_H
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif /* defined(__cplusplus) */
  23. /**********************************************************************/
  24. typedef CRYPT_HASH_BLOB CRYPT_DIGEST_DATA;
  25. /**********************************************************************/
  26. #define MSSIP_FLAGS_PROHIBIT_RESIZE_ON_CREATE 0x00010000
  27. #define MSSIP_FLAGS_USE_CATALOG 0x00020000
  28. #define SPC_INC_PE_RESOURCES_FLAG 0x80
  29. #define SPC_INC_PE_DEBUG_INFO_FLAG 0x40
  30. #define SPC_INC_PE_IMPORT_ADDR_TABLE_FLAG 0x20
  31. #define MSSIP_ADDINFO_NONE 0
  32. #define MSSIP_ADDINFO_FLAT 1
  33. #define MSSIP_ADDINFO_CATMEMBER 2
  34. #define MSSIP_ADDINFO_BLOB 3
  35. #define MSSIP_ADDINFO_NONMSSIP 500
  36. #define SIP_MAX_MAGIC_NUMBER 4
  37. /**********************************************************************/
  38. #include <pshpack8.h>
  39. typedef struct SIP_SUBJECTINFO_ {
  40. DWORD cbSize;
  41. GUID *pgSubjectType;
  42. HANDLE hFile;
  43. LPCWSTR pwsFileName;
  44. LPCWSTR pwsDisplayName;
  45. DWORD dwReserved1;
  46. DWORD dwIntVersion;
  47. HCRYPTPROV hProv;
  48. CRYPT_ALGORITHM_IDENTIFIER DigestAlgorithm;
  49. DWORD dwFlags;
  50. DWORD dwEncodingType;
  51. DWORD dwReserved2;
  52. DWORD fdwCAPISettings;
  53. DWORD fdwSecuritySettings;
  54. DWORD dwIndex;
  55. DWORD dwUnionChoice;
  56. union {
  57. struct MS_ADDINFO_FLAT_ *psFlat;
  58. struct MS_ADDINFO_CATALOGMEMBER_ *psCatMember;
  59. struct MS_ADDINFO_BLOB_ *psBlob;
  60. } DUMMYUNIONNAME;
  61. LPVOID pClientData;
  62. } SIP_SUBJECTINFO, *LPSIP_SUBJECTINFO;
  63. #include <poppack.h>
  64. #include <pshpack8.h>
  65. typedef struct MS_ADDINFO_FLAT_ {
  66. DWORD cbStruct;
  67. struct SIP_INDIRECT_DATA_ *pIndirectData;
  68. } MS_ADDINFO_FLAT, *PMS_ADDINFO_FLAT;
  69. #include <poppack.h>
  70. #include <pshpack8.h>
  71. typedef struct MS_ADDINFO_CATALOGMEMBER_ {
  72. DWORD cbStruct;
  73. struct CRYPTCATSTORE_ *pStore;
  74. struct CRYPTCATMEMBER_ *pMember;
  75. } MS_ADDINFO_CATALOGMEMBER, *PMS_ADDINFO_CATALOGMEMBER;
  76. #include <poppack.h>
  77. #include <pshpack8.h>
  78. typedef struct MS_ADDINFO_BLOB_ {
  79. DWORD cbStruct;
  80. DWORD cbMemObject;
  81. BYTE *pbMemObject;
  82. DWORD cbMemSignedMsg;
  83. BYTE *pbMemSignedMsg;
  84. } MS_ADDINFO_BLOB, *PMS_ADDINFO_BLOB;
  85. #include <poppack.h>
  86. #include <pshpack8.h>
  87. typedef struct SIP_INDIRECT_DATA_ {
  88. CRYPT_ATTRIBUTE_TYPE_VALUE Data;
  89. CRYPT_ALGORITHM_IDENTIFIER DigestAlgorithm;
  90. CRYPT_HASH_BLOB Digest;
  91. } SIP_INDIRECT_DATA, *PSIP_INDIRECT_DATA;
  92. #include <poppack.h>
  93. typedef BOOL (WINAPI * pCryptSIPGetSignedDataMsg)(SIP_SUBJECTINFO *,DWORD *,DWORD,DWORD *,BYTE *);
  94. typedef BOOL (WINAPI * pCryptSIPPutSignedDataMsg)(SIP_SUBJECTINFO *,DWORD,DWORD,DWORD,BYTE);
  95. typedef BOOL (WINAPI * pCryptSIPCreateIndirectData)(SIP_SUBJECTINFO *,DWORD *,SIP_INDIRECT_DATA *);
  96. typedef BOOL (WINAPI * pCryptSIPVerifyIndirectData)(SIP_SUBJECTINFO *,SIP_INDIRECT_DATA *);
  97. typedef BOOL (WINAPI * pCryptSIPRemoveSignedDataMsg)(SIP_SUBJECTINFO *,DWORD);
  98. #include <pshpack8.h>
  99. typedef struct SIP_DISPATCH_INFO_ {
  100. DWORD cbSize;
  101. HANDLE hSIP;
  102. pCryptSIPGetSignedDataMsg pfGet;
  103. pCryptSIPPutSignedDataMsg pfPut;
  104. pCryptSIPCreateIndirectData pfCreate;
  105. pCryptSIPVerifyIndirectData pfVerify;
  106. pCryptSIPRemoveSignedDataMsg pfRemove;
  107. } SIP_DISPATCH_INFO, *LPSIP_DISPATCH_INFO;
  108. #include <poppack.h>
  109. typedef BOOL (WINAPI *pfnIsFileSupported)(HANDLE,GUID *);
  110. typedef BOOL (WINAPI *pfnIsFileSupportedName)(WCHAR *,GUID *);
  111. #include <pshpack8.h>
  112. typedef struct SIP_ADD_NEWPROVIDER_
  113. {
  114. DWORD cbStruct;
  115. GUID *pgSubject;
  116. WCHAR *pwszDLLFileName;
  117. WCHAR *pwszMagicNumber;
  118. WCHAR *pwszIsFunctionName;
  119. WCHAR *pwszGetFuncName;
  120. WCHAR *pwszPutFuncName;
  121. WCHAR *pwszCreateFuncName;
  122. WCHAR *pwszVerifyFuncName;
  123. WCHAR *pwszRemoveFuncName;
  124. WCHAR *pwszIsFunctionNameFmt2;
  125. } SIP_ADD_NEWPROVIDER, *PSIP_ADD_NEWPROVIDER;
  126. #include <poppack.h>
  127. /**********************************************************************/
  128. BOOL WINAPI CryptSIPGetSignedDataMsg(SIP_SUBJECTINFO *,DWORD *,DWORD,DWORD *,BYTE *);
  129. BOOL WINAPI CryptSIPPutSignedDataMsg(SIP_SUBJECTINFO *,DWORD,DWORD,DWORD,BYTE);
  130. BOOL WINAPI CryptSIPCreateIndirectData(SIP_SUBJECTINFO *,DWORD *,SIP_INDIRECT_DATA *);
  131. BOOL WINAPI CryptSIPVerifyIndirectData(SIP_SUBJECTINFO *,SIP_INDIRECT_DATA *);
  132. BOOL WINAPI CryptSIPRemoveSignedDataMsg(SIP_SUBJECTINFO *,DWORD);
  133. BOOL WINAPI CryptSIPLoad(const GUID *,DWORD,SIP_DISPATCH_INFO *);
  134. BOOL WINAPI CryptSIPRetrieveSubjectGuidForCatalogFile(LPCWSTR,HANDLE,GUID *);
  135. BOOL WINAPI CryptSIPAddProvider(SIP_ADD_NEWPROVIDER *);
  136. BOOL WINAPI CryptSIPRemoveProvider(GUID *);
  137. #ifdef __cplusplus
  138. } /* extern "C" */
  139. #endif /* defined(__cplusplus) */
  140. #endif /* __WINE_MSSIP_H */