| /** | |
| * This file has no copyright assigned and is placed in the Public Domain. | |
| * This file is part of the mingw-w64 runtime package. | |
| * No warranty is given; refer to the file DISCLAIMER.PD within this package. | |
| */ | |
| #ifndef MSSIP_H | |
| #define MSSIP_H | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| #pragma pack (8) | |
| typedef CRYPT_HASH_BLOB CRYPT_DIGEST_DATA; | |
| #define MSSIP_FLAGS_PROHIBIT_RESIZE_ON_CREATE 0x00010000 | |
| #define MSSIP_FLAGS_USE_CATALOG 0x00020000 | |
| #define SPC_INC_PE_RESOURCES_FLAG 0x80 | |
| #define SPC_INC_PE_DEBUG_INFO_FLAG 0x40 | |
| #define SPC_INC_PE_IMPORT_ADDR_TABLE_FLAG 0x20 | |
| typedef struct SIP_SUBJECTINFO_ { | |
| DWORD cbSize; | |
| GUID *pgSubjectType; | |
| HANDLE hFile; | |
| LPCWSTR pwsFileName; | |
| LPCWSTR pwsDisplayName; | |
| DWORD dwReserved1; | |
| DWORD dwIntVersion; | |
| HCRYPTPROV hProv; | |
| CRYPT_ALGORITHM_IDENTIFIER DigestAlgorithm; | |
| DWORD dwFlags; | |
| DWORD dwEncodingType; | |
| DWORD dwReserved2; | |
| DWORD fdwCAPISettings; | |
| DWORD fdwSecuritySettings; | |
| DWORD dwIndex; | |
| DWORD dwUnionChoice; | |
| #define MSSIP_ADDINFO_NONE 0 | |
| #define MSSIP_ADDINFO_FLAT 1 | |
| #define MSSIP_ADDINFO_CATMEMBER 2 | |
| #define MSSIP_ADDINFO_BLOB 3 | |
| #define MSSIP_ADDINFO_NONMSSIP 500 | |
| __C89_NAMELESS union { | |
| struct MS_ADDINFO_FLAT_ *psFlat; | |
| struct MS_ADDINFO_CATALOGMEMBER_ *psCatMember; | |
| struct MS_ADDINFO_BLOB_ *psBlob; | |
| }; | |
| LPVOID pClientData; | |
| } SIP_SUBJECTINFO,*LPSIP_SUBJECTINFO; | |
| typedef struct MS_ADDINFO_FLAT_ { | |
| DWORD cbStruct; | |
| struct SIP_INDIRECT_DATA_ *pIndirectData; | |
| } MS_ADDINFO_FLAT,*PMS_ADDINFO_FLAT; | |
| typedef struct MS_ADDINFO_CATALOGMEMBER_ { | |
| DWORD cbStruct; | |
| struct CRYPTCATSTORE_ *pStore; | |
| struct CRYPTCATMEMBER_ *pMember; | |
| } MS_ADDINFO_CATALOGMEMBER,*PMS_ADDINFO_CATALOGMEMBER; | |
| typedef struct MS_ADDINFO_BLOB_ { | |
| DWORD cbStruct; | |
| DWORD cbMemObject; | |
| BYTE *pbMemObject; | |
| DWORD cbMemSignedMsg; | |
| BYTE *pbMemSignedMsg; | |
| } MS_ADDINFO_BLOB,*PMS_ADDINFO_BLOB; | |
| typedef struct SIP_INDIRECT_DATA_ { | |
| CRYPT_ATTRIBUTE_TYPE_VALUE Data; | |
| CRYPT_ALGORITHM_IDENTIFIER DigestAlgorithm; | |
| CRYPT_HASH_BLOB Digest; | |
| } SIP_INDIRECT_DATA,*PSIP_INDIRECT_DATA; | |
| #pragma pack() | |
| extern WINBOOL WINAPI CryptSIPGetSignedDataMsg(SIP_SUBJECTINFO *pSubjectInfo,DWORD *pdwEncodingType,DWORD dwIndex,DWORD *pcbSignedDataMsg,BYTE *pbSignedDataMsg); | |
| typedef WINBOOL (WINAPI *pCryptSIPGetSignedDataMsg)(SIP_SUBJECTINFO *pSubjectInfo,DWORD *pdwEncodingType,DWORD dwIndex,DWORD *pcbSignedDataMsg,BYTE *pbSignedDataMsg); | |
| extern WINBOOL WINAPI CryptSIPPutSignedDataMsg(SIP_SUBJECTINFO *pSubjectInfo,DWORD dwEncodingType,DWORD *pdwIndex,DWORD cbSignedDataMsg,BYTE *pbSignedDataMsg); | |
| typedef WINBOOL (WINAPI *pCryptSIPPutSignedDataMsg)(SIP_SUBJECTINFO *pSubjectInfo,DWORD dwEncodingType,DWORD *pdwIndex,DWORD cbSignedDataMsg,BYTE *pbSignedDataMsg); | |
| extern WINBOOL WINAPI CryptSIPCreateIndirectData(SIP_SUBJECTINFO *pSubjectInfo,DWORD *pcbIndirectData,SIP_INDIRECT_DATA *pIndirectData); | |
| typedef WINBOOL (WINAPI *pCryptSIPCreateIndirectData)(SIP_SUBJECTINFO *pSubjectInfo,DWORD *pcbIndirectData,SIP_INDIRECT_DATA *pIndirectData); | |
| extern WINBOOL WINAPI CryptSIPVerifyIndirectData(SIP_SUBJECTINFO *pSubjectInfo,SIP_INDIRECT_DATA *pIndirectData); | |
| typedef WINBOOL (WINAPI *pCryptSIPVerifyIndirectData)(SIP_SUBJECTINFO *pSubjectInfo,SIP_INDIRECT_DATA *pIndirectData); | |
| extern WINBOOL WINAPI CryptSIPRemoveSignedDataMsg(SIP_SUBJECTINFO *pSubjectInfo,DWORD dwIndex); | |
| typedef WINBOOL (WINAPI *pCryptSIPRemoveSignedDataMsg)(SIP_SUBJECTINFO *pSubjectInfo,DWORD dwIndex); | |
| #pragma pack(8) | |
| typedef struct SIP_DISPATCH_INFO_ { | |
| DWORD cbSize; | |
| HANDLE hSIP; | |
| pCryptSIPGetSignedDataMsg pfGet; | |
| pCryptSIPPutSignedDataMsg pfPut; | |
| pCryptSIPCreateIndirectData pfCreate; | |
| pCryptSIPVerifyIndirectData pfVerify; | |
| pCryptSIPRemoveSignedDataMsg pfRemove; | |
| } SIP_DISPATCH_INFO,*LPSIP_DISPATCH_INFO; | |
| typedef WINBOOL (WINAPI *pfnIsFileSupported)(HANDLE hFile,GUID *pgSubject); | |
| typedef WINBOOL (WINAPI *pfnIsFileSupportedName)(WCHAR *pwszFileName,GUID *pgSubject); | |
| typedef struct SIP_ADD_NEWPROVIDER_ { | |
| DWORD cbStruct; | |
| GUID *pgSubject; | |
| WCHAR *pwszDLLFileName; | |
| WCHAR *pwszMagicNumber; | |
| WCHAR *pwszIsFunctionName; | |
| WCHAR *pwszGetFuncName; | |
| WCHAR *pwszPutFuncName; | |
| WCHAR *pwszCreateFuncName; | |
| WCHAR *pwszVerifyFuncName; | |
| WCHAR *pwszRemoveFuncName; | |
| WCHAR *pwszIsFunctionNameFmt2; | |
| } SIP_ADD_NEWPROVIDER,*PSIP_ADD_NEWPROVIDER; | |
| #define SIP_MAX_MAGIC_NUMBER 4 | |
| #pragma pack() | |
| extern WINBOOL WINAPI CryptSIPLoad(const GUID *pgSubject,DWORD dwFlags,SIP_DISPATCH_INFO *pSipDispatch); | |
| extern WINBOOL WINAPI CryptSIPRetrieveSubjectGuid(LPCWSTR FileName,HANDLE hFileIn,GUID *pgSubject); | |
| extern WINBOOL WINAPI CryptSIPRetrieveSubjectGuidForCatalogFile(LPCWSTR FileName,HANDLE hFileIn,GUID *pgSubject); | |
| extern WINBOOL WINAPI CryptSIPAddProvider(SIP_ADD_NEWPROVIDER *psNewProv); | |
| extern WINBOOL WINAPI CryptSIPRemoveProvider(GUID *pgProv); | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif |