diff --git a/dlls/wintrust/wintrust_main.c b/dlls/wintrust/wintrust_main.c index bb1fc6272fc..c2ca1b4621c 100644 --- a/dlls/wintrust/wintrust_main.c +++ b/dlls/wintrust/wintrust_main.c @@ -24,6 +24,8 @@ #include "winbase.h" #include "winerror.h" #include "guiddef.h" +#include "wintrust.h" +#include "mscat.h" #include "wine/debug.h" @@ -32,8 +34,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(wintrust); /*********************************************************************** * CryptCATAdminAcquireContext (WINTRUST.@) */ -BOOL WINAPI CryptCATAdminAcquireContext(/* HCATADMIN */ void *catAdmin, - GUID *sysSystem, DWORD dwFlags ) +BOOL WINAPI CryptCATAdminAcquireContext(HCATADMIN* catAdmin, + const GUID *sysSystem, DWORD dwFlags ) { FIXME("%p %s %lx\n", catAdmin, debugstr_guid(sysSystem), dwFlags); SetLastError(ERROR_CALL_NOT_IMPLEMENTED); @@ -43,7 +45,7 @@ BOOL WINAPI CryptCATAdminAcquireContext(/* HCATADMIN */ void *catAdmin, /*********************************************************************** * WinVerifyTrust (WINTRUST.@) */ -LONG WINAPI WinVerifyTrust( HWND hwnd, GUID *ActionID, LPVOID ActionData ) +LONG WINAPI WinVerifyTrust( HWND hwnd, GUID *ActionID, WINTRUST_DATA* ActionData ) { FIXME("(hwnd %p ActionId %p ActionData %p): stub (nothing will be verified)\n", hwnd, ActionID, ActionData); diff --git a/include/Makefile.in b/include/Makefile.in index 8fd4227d809..62d5c47ccc2 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -154,6 +154,7 @@ WINDOWS_INCLUDES = \ msacm.h \ msacmdlg.h \ msacmdrv.h \ + mscat.h \ msi.h \ msiquery.h \ mssip.h \ @@ -238,6 +239,7 @@ WINDOWS_INCLUDES = \ wintab.h \ wintabx.h \ winternl.h \ + wintrust.h \ winuser.h \ winver.h \ wnaspi32.h \ diff --git a/include/mscat.h b/include/mscat.h new file mode 100644 index 00000000000..947b4e109c6 --- /dev/null +++ b/include/mscat.h @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2004 Francois Gouget + * + * 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_MSCAT_H +#define __WINE_MSCAT_H + +typedef HANDLE HCATADMIN; + + +#ifdef __cplusplus +extern "C" { +#endif + +BOOL WINAPI CryptCATAdminAcquireContext(HCATADMIN*,const GUID*,DWORD); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/wincrypt.h b/include/wincrypt.h index 6032e4cbd3f..a908eef34d6 100644 --- a/include/wincrypt.h +++ b/include/wincrypt.h @@ -234,6 +234,17 @@ typedef struct _CTL_CONTEXT { } CTL_CONTEXT, *PCTL_CONTEXT; typedef const CTL_CONTEXT *PCCTL_CONTEXT; +typedef struct _CMSG_SIGNER_INFO { + DWORD dwVersion; + CERT_NAME_BLOB Issuer; + CRYPT_INTEGER_BLOB SerialNumber; + CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; + CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm; + CRYPT_DATA_BLOB EncryptedHash; + CRYPT_ATTRIBUTES AuthAttrs; + CRYPT_ATTRIBUTES UnauthAttrs; +} CMSG_SIGNER_INFO, *PCMSG_SIGNER_INFO; + typedef struct _CERT_REVOCATION_CRL_INFO { DWORD cbSize; PCCRL_CONTEXT pBaseCrlContext; diff --git a/include/wintrust.h b/include/wintrust.h new file mode 100644 index 00000000000..9f84c2bfa2a --- /dev/null +++ b/include/wintrust.h @@ -0,0 +1,116 @@ +/* + * Copyright (C) 2004 Francois Gouget + * + * 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_WINTRUST_H +#define __WINE_WINTRUST_H + +#include + + +#include + +typedef struct WINTRUST_FILE_INFO_ +{ + DWORD cbStruct; + LPCWSTR pcwszFilePath; + HANDLE hFile; + GUID* pgKnownSubject; +} WINTRUST_FILE_INFO, *PWINTRUST_FILE_INFO; + +typedef struct WINTRUST_CATALOG_INFO_ +{ + DWORD cbStruct; + DWORD dwCatalogVersion; + LPCWSTR pcwszCatalogFilePath; + LPCWSTR pcwszMemberTag; + LPCWSTR pcwszMemberFilePath; + HANDLE hMemberFile; + BYTE* pbCalculatedFileHash; + DWORD cbCalculatedFileHash; + PCCTL_CONTEXT pcCatalogContext; +} WINTRUST_CATALOG_INFO, *PWINTRUST_CATALOG_INFO; + +typedef struct WINTRUST_BLOB_INFO_ +{ + DWORD cbStruct; + GUID gSubject; + LPCWSTR pcwszDisplayName; + DWORD cbMemObject; + BYTE* pbMemObject; + DWORD cbMemSignedMsg; + BYTE* pbMemSignedMsg; +} WINTRUST_BLOB_INFO, *PWINTRUST_BLOB_INFO; + +typedef struct WINTRUST_SGNR_INFO_ +{ + DWORD cbStruct; + LPCWSTR pcwszDisplayName; + CMSG_SIGNER_INFO* psSignerInfo; + DWORD chStores; + HCERTSTORE* pahStores; +} WINTRUST_SGNR_INFO, *PWINTRUST_SGNR_INFO; + +typedef struct WINTRUST_CERT_INFO_ +{ + DWORD cbStruct; + LPCWSTR pcwszDisplayName; + CERT_CONTEXT* psCertContext; + DWORD chStores; + HCERTSTORE* pahStores; + DWORD dwFlags; + FILETIME* psftVerifyAsOf; +} WINTRUST_CERT_INFO, *PWINTRUST_CERT_INFO; + + +typedef struct _WINTRUST_DATA +{ + DWORD cbStruct; + LPVOID pPolicyCallbackData; + LPVOID pSIPClientData; + DWORD dwUIChoice; + DWORD fdwRevocationChecks; + DWORD dwUnionChoice; + union + { + struct WINTRUST_FILE_INFO_* pFile; + struct WINTRUST_CATALOG_INFO_* pCatalog; + struct WINTRUST_BLOB_INFO_* pBlob; + struct WINTRUST_SGNR_INFO_* pSgnr; + struct WINTRUST_CERT_INFO_* pCert; + } DUMMYUNIONNAME; + + DWORD dwStateAction; + HANDLE hWVTStateData; + WCHAR* pwszURLReference; + DWORD dwProvFlags; +} WINTRUST_DATA, *PWINTRUST_DATA; + +#include + + +#ifdef __cplusplus +extern "C" { +#endif + +LONG WINAPI WinVerifyTrust(HWND,GUID*,WINTRUST_DATA*); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tools/winapi/win32.api b/tools/winapi/win32.api index a2b1afe544e..2fdb88bd55b 100644 --- a/tools/winapi/win32.api +++ b/tools/winapi/win32.api @@ -4511,13 +4511,16 @@ LPWSTR %long +BOOL +DWORD HWND LONG %ptr GUID * -LPVOID +HCATADMIN * +WINTRUST_DATA * %%wnaspi32.dll