From 1b32e5eca9aff6e6b698b77054f7f7ccbd40baa9 Mon Sep 17 00:00:00 2001 From: Patrik Stridvall Date: Mon, 9 Sep 2002 19:35:42 +0000 Subject: [PATCH] Add and use the header files mssip.h and sipbase.h. --- dlls/crypt32/main.c | 7 +- include/Makefile.in | 2 + include/mssip.h | 179 ++++++++++++++++++++++++++++++++++++++++++++ include/sipbase.h | 24 ++++++ include/wincrypt.h | 10 +++ 5 files changed, 217 insertions(+), 5 deletions(-) create mode 100644 include/mssip.h create mode 100644 include/sipbase.h diff --git a/dlls/crypt32/main.c b/dlls/crypt32/main.c index e35a242a037..7577ed4dc7e 100644 --- a/dlls/crypt32/main.c +++ b/dlls/crypt32/main.c @@ -19,14 +19,11 @@ #include "config.h" #include "winbase.h" #include "wincrypt.h" -/* #include "mssip.h" */ +#include "mssip.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(crypt); -typedef struct SIP_DISPATCH_INFO_ SIP_DISPATCH_INFO, *LPSIP_DISPATCH_INFO; -typedef struct SIP_ADD_NEWPROVIDER_ SIP_ADD_NEWPROVIDER, *PSIP_ADD_NEWPROVIDER; - /* this function is called by Internet Explorer when it is about to verify a downloaded component */ BOOL WINAPI I_CryptCreateLruCache(DWORD x, DWORD y) { @@ -66,7 +63,7 @@ BOOL WINAPI CryptSIPAddProvider(SIP_ADD_NEWPROVIDER *psNewProv) } BOOL WINAPI CryptSIPRetrieveSubjectGuid - (LPCWSTR FileName, OPTIONAL HANDLE hFileIn, GUID *pgSubject) + (LPCWSTR FileName, HANDLE hFileIn, GUID *pgSubject) { FIXME("stub!\n"); return FALSE; diff --git a/include/Makefile.in b/include/Makefile.in index 4911d2e5349..702a6607c47 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -52,6 +52,7 @@ INSTALLED_INCLUDES = \ mmsystem.h \ msacm.h \ msacmdlg.h \ + mssip.h \ msvcrt/conio.h \ msvcrt/crtdbg.h \ msvcrt/ctype.h \ @@ -118,6 +119,7 @@ INSTALLED_INCLUDES = \ shlguid.h \ shlobj.h \ shlwapi.h \ + sipbase.h \ sql.h \ sqlext.h \ sqltypes.h \ diff --git a/include/mssip.h b/include/mssip.h new file mode 100644 index 00000000000..92fbe11e1cb --- /dev/null +++ b/include/mssip.h @@ -0,0 +1,179 @@ +/* + * Copyright (C) 2002 Patrik Stridvall + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __WINE_MSSIP_H +#define __WINE_MSSIP_H + +#ifdef __cplusplus +extern "C" { +#endif /* defined(__cplusplus) */ + +/**********************************************************************/ + +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 + +#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 + +#define SIP_MAX_MAGIC_NUMBER 4 + +/**********************************************************************/ + +#include "pshpack8.h" +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; + union { + struct MS_ADDINFO_FLAT_ *psFlat; + struct MS_ADDINFO_CATALOGMEMBER_ *psCatMember; + struct MS_ADDINFO_BLOB_ *psBlob; + } DUMMYUNIONNAME; + + LPVOID pClientData; +} SIP_SUBJECTINFO, *LPSIP_SUBJECTINFO; +#include "poppack.h" + +#include "pshpack8.h" +typedef struct MS_ADDINFO_FLAT_ { + DWORD cbStruct; + + struct SIP_INDIRECT_DATA_ *pIndirectData; +} MS_ADDINFO_FLAT, *PMS_ADDINFO_FLAT; +#include "poppack.h" + +#include "pshpack8.h" +typedef struct MS_ADDINFO_CATALOGMEMBER_ { + DWORD cbStruct; + + struct CRYPTCATSTORE_ *pStore; + struct CRYPTCATMEMBER_ *pMember; +} MS_ADDINFO_CATALOGMEMBER, *PMS_ADDINFO_CATALOGMEMBER; +#include "poppack.h" + +#include "pshpack8.h" +typedef struct MS_ADDINFO_BLOB_ { + DWORD cbStruct; + + DWORD cbMemObject; + BYTE *pbMemObject; + + DWORD cbMemSignedMsg; + BYTE *pbMemSignedMsg; +} MS_ADDINFO_BLOB, *PMS_ADDINFO_BLOB; +#include "poppack.h" + +#include "pshpack8.h" +typedef struct SIP_INDIRECT_DATA_ { + CRYPT_ATTRIBUTE_TYPE_VALUE Data; + CRYPT_ALGORITHM_IDENTIFIER DigestAlgorithm; + CRYPT_HASH_BLOB Digest; +} SIP_INDIRECT_DATA, *PSIP_INDIRECT_DATA; +#include "poppack.h" + +typedef BOOL (WINAPI * pCryptSIPGetSignedDataMsg)(SIP_SUBJECTINFO *,DWORD *,DWORD,DWORD *,BYTE *); +typedef BOOL (WINAPI * pCryptSIPPutSignedDataMsg)(SIP_SUBJECTINFO *,DWORD,DWORD,DWORD,BYTE); +typedef BOOL (WINAPI * pCryptSIPCreateIndirectData)(SIP_SUBJECTINFO *,DWORD *,SIP_INDIRECT_DATA *); +typedef BOOL (WINAPI * pCryptSIPVerifyIndirectData)(SIP_SUBJECTINFO *,SIP_INDIRECT_DATA *); +typedef BOOL (WINAPI * pCryptSIPRemoveSignedDataMsg)(SIP_SUBJECTINFO *,DWORD); + +#include "pshpack8.h" +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; +#include "poppack.h" + +typedef BOOL (WINAPI *pfnIsFileSupported)(HANDLE,GUID *); +typedef BOOL (WINAPI *pfnIsFileSupportedName)(WCHAR *,GUID *); + +#include "pshpack8.h" +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; +#include "poppack.h" + +/**********************************************************************/ + +BOOL WINAPI CryptSIPGetSignedDataMsg(SIP_SUBJECTINFO *,DWORD *,DWORD,DWORD *,BYTE *); +BOOL WINAPI CryptSIPPutSignedDataMsg(SIP_SUBJECTINFO *,DWORD,DWORD,DWORD,BYTE); +BOOL WINAPI CryptSIPCreateIndirectData(SIP_SUBJECTINFO *,DWORD *,SIP_INDIRECT_DATA *); +BOOL WINAPI CryptSIPVerifyIndirectData(SIP_SUBJECTINFO *,SIP_INDIRECT_DATA *); +BOOL WINAPI CryptSIPRemoveSignedDataMsg(SIP_SUBJECTINFO *,DWORD); + +BOOL WINAPI CryptSIPLoad(const GUID *,DWORD,SIP_DISPATCH_INFO *); +BOOL WINAPI CryptSIPRetrieveSubjectGuidForCatalogFile(LPCWSTR,HANDLE,GUID *); +BOOL WINAPI CryptSIPAddProvider(SIP_ADD_NEWPROVIDER *); +BOOL WINAPI CryptSIPRemoveProvider(GUID *); + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* defined(__cplusplus) */ + +#endif /* __WINE_MSSIP_H */ diff --git a/include/sipbase.h b/include/sipbase.h new file mode 100644 index 00000000000..a575b68f2b6 --- /dev/null +++ b/include/sipbase.h @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2002 Patrik Stridvall + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __WINE_SIPBASE_H +#define __WINE_SIPBASE_H + +#include "mssip.h" + +#endif /* __WINE_SIPBASE_H */ diff --git a/include/wincrypt.h b/include/wincrypt.h index 1084b52cef2..cf87d26b38b 100644 --- a/include/wincrypt.h +++ b/include/wincrypt.h @@ -46,6 +46,16 @@ typedef struct _CRYPTOAPI_BLOB { CRYPT_DER_BLOB, *PCRYPT_DER_BLOB, CRYPT_ATTR_BLOB, *PCRYPT_ATTR_BLOB; +typedef struct _CRYPT_ALGORITHM_IDENTIFIER { + LPSTR pszObjId; + CRYPT_OBJID_BLOB Parameters; +} CRYPT_ALGORITHM_IDENTIFIER, *PCRYPT_ALGORITHM_IDENTIFIER; + +typedef struct _CRYPT_ATTRIBUTE_TYPE_VALUE { + LPSTR pszObjId; + CRYPT_OBJID_BLOB Value; +} CRYPT_ATTRIBUTE_TYPE_VALUE, *PCRYPT_ATTRIBUTE_TYPE_VALUE; + typedef struct _PUBLICKEYSTRUC { BYTE bType; BYTE bVersion;