Author: tfaber
Date: Fri Jul 13 08:19:36 2012
New Revision: 56879
URL:
http://svn.reactos.org/svn/reactos?rev=56879&view=rev
Log:
[WINTRUST]
- Sync to Wine 1.5.4
Removed:
trunk/reactos/dll/win32/wintrust/wintrust_ros.diff
Modified:
trunk/reactos/dll/win32/wintrust/CMakeLists.txt
trunk/reactos/dll/win32/wintrust/crypt.c
trunk/reactos/dll/win32/wintrust/softpub.c
trunk/reactos/dll/win32/wintrust/wintrust.spec
trunk/reactos/dll/win32/wintrust/wintrust_main.c
trunk/reactos/dll/win32/wintrust/wintrust_priv.h
trunk/reactos/media/doc/README.WINE
Modified: trunk/reactos/dll/win32/wintrust/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wintrust/CMakeLi…
==============================================================================
--- trunk/reactos/dll/win32/wintrust/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/wintrust/CMakeLists.txt [iso-8859-1] Fri Jul 13 08:19:36 2012
@@ -2,15 +2,14 @@
add_definitions(-D__WINESRC__)
include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine)
-set_rc_compiler()
spec2def(wintrust.dll wintrust.spec ADD_IMPORTLIB)
list(APPEND SOURCE
+ asn.c
crypt.c
register.c
+ softpub.c
wintrust_main.c
- asn.c
- softpub.c
version.rc
${CMAKE_CURRENT_BINARY_DIR}/wintrust_stubs.c
${CMAKE_CURRENT_BINARY_DIR}/wintrust.def)
Modified: trunk/reactos/dll/win32/wintrust/crypt.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wintrust/crypt.c…
==============================================================================
--- trunk/reactos/dll/win32/wintrust/crypt.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/wintrust/crypt.c [iso-8859-1] Fri Jul 13 08:19:36 2012
@@ -858,7 +858,6 @@
return INVALID_HANDLE_VALUE;
}
- if (!dwPublicVersion) dwPublicVersion = 0x00000100;
if (!dwEncodingType) dwEncodingType = X509_ASN_ENCODING | PKCS_7_ASN_ENCODING;
if (fdwOpenFlags & CRYPTCAT_OPEN_ALWAYS) flags |= OPEN_ALWAYS;
@@ -1017,16 +1016,27 @@
{
BOOL ret;
WIN_CERTIFICATE *pCert = NULL;
+ HANDLE file;
TRACE("(%p %p %d %p %p)\n", pSubjectInfo, pdwEncodingType, dwIndex,
pcbSignedDataMsg, pbSignedDataMsg);
+
+ if(pSubjectInfo->hFile && pSubjectInfo->hFile!=INVALID_HANDLE_VALUE)
+ file = pSubjectInfo->hFile;
+ else
+ {
+ file = CreateFileW(pSubjectInfo->pwsFileName, GENERIC_READ,
+ FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
+ if(file == INVALID_HANDLE_VALUE)
+ return FALSE;
+ }
if (!pbSignedDataMsg)
{
WIN_CERTIFICATE cert;
/* app hasn't passed buffer, just get the length */
- ret = ImageGetCertificateHeader(pSubjectInfo->hFile, dwIndex, &cert);
+ ret = ImageGetCertificateHeader(file, dwIndex, &cert);
if (ret)
{
switch (cert.wCertificateType)
@@ -1045,7 +1055,7 @@
{
DWORD len = 0;
- ret = ImageGetCertificateData(pSubjectInfo->hFile, dwIndex, NULL, &len);
+ ret = ImageGetCertificateData(file, dwIndex, NULL, &len);
if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
goto error;
pCert = HeapAlloc(GetProcessHeap(), 0, len);
@@ -1054,10 +1064,10 @@
ret = FALSE;
goto error;
}
- ret = ImageGetCertificateData(pSubjectInfo->hFile, dwIndex, pCert,
- &len);
+ ret = ImageGetCertificateData(file, dwIndex, pCert, &len);
if (!ret)
goto error;
+ pCert->dwLength -= FIELD_OFFSET(WIN_CERTIFICATE, bCertificate);
if (*pcbSignedDataMsg < pCert->dwLength)
{
*pcbSignedDataMsg = pCert->dwLength;
@@ -1067,6 +1077,7 @@
else
{
memcpy(pbSignedDataMsg, pCert->bCertificate, pCert->dwLength);
+ *pcbSignedDataMsg = pCert->dwLength;
switch (pCert->wCertificateType)
{
case WIN_CERT_TYPE_X509:
@@ -1084,7 +1095,45 @@
}
}
error:
+ if(pSubjectInfo->hFile != file)
+ CloseHandle(file);
HeapFree(GetProcessHeap(), 0, pCert);
+ return ret;
+}
+
+static BOOL WINTRUST_PutSignedMsgToPEFile(SIP_SUBJECTINFO* pSubjectInfo, DWORD
pdwEncodingType,
+ DWORD* pdwIndex, DWORD cbSignedDataMsg, BYTE* pbSignedDataMsg)
+{
+ WIN_CERTIFICATE *cert;
+ HANDLE file;
+ DWORD size;
+ BOOL ret;
+
+ if(pSubjectInfo->hFile && pSubjectInfo->hFile!=INVALID_HANDLE_VALUE)
+ file = pSubjectInfo->hFile;
+ else
+ {
+ file = CreateFileW(pSubjectInfo->pwsFileName, GENERIC_READ|GENERIC_WRITE,
+ FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
+ if(file == INVALID_HANDLE_VALUE)
+ return FALSE;
+ }
+
+ /* int aligned WIN_CERTIFICATE structure with cbSignedDataMsg+1 bytes of data */
+ size = FIELD_OFFSET(WIN_CERTIFICATE, bCertificate[cbSignedDataMsg+4]) & (~3);
+ cert = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size);
+ if(!cert)
+ return FALSE;
+
+ cert->dwLength = size;
+ cert->wRevision = WIN_CERT_REVISION_2_0;
+ cert->wCertificateType = WIN_CERT_TYPE_PKCS_SIGNED_DATA;
+ memcpy(cert->bCertificate, pbSignedDataMsg, cbSignedDataMsg);
+ ret = ImageAddCertificate(file, cert, pdwIndex);
+
+ HeapFree(GetProcessHeap(), 0, cert);
+ if(file != pSubjectInfo->hFile)
+ CloseHandle(file);
return ret;
}
@@ -1297,22 +1346,30 @@
return ret;
}
+/* GUIDs used by CryptSIPGetSignedDataMsg and CryptSIPPutSignedDataMsg */
+static const GUID unknown = { 0xC689AAB8, 0x8E78, 0x11D0, { 0x8C,0x47,
+ 0x00,0xC0,0x4F,0xC2,0x95,0xEE } };
+static const GUID cabGUID = { 0xC689AABA, 0x8E78, 0x11D0, { 0x8C,0x47,
+ 0x00,0xC0,0x4F,0xC2,0x95,0xEE } };
+static const GUID catGUID = { 0xDE351A43, 0x8E59, 0x11D0, { 0x8C,0x47,
+ 0x00,0xC0,0x4F,0xC2,0x95,0xEE }};
+
/***********************************************************************
* CryptSIPGetSignedDataMsg (WINTRUST.@)
*/
BOOL WINAPI CryptSIPGetSignedDataMsg(SIP_SUBJECTINFO* pSubjectInfo, DWORD*
pdwEncodingType,
DWORD dwIndex, DWORD* pcbSignedDataMsg, BYTE*
pbSignedDataMsg)
{
- static const GUID unknown = { 0xC689AAB8, 0x8E78, 0x11D0, { 0x8C,0x47,
- 0x00,0xC0,0x4F,0xC2,0x95,0xEE } };
- static const GUID cabGUID = { 0xC689AABA, 0x8E78, 0x11D0, { 0x8C,0x47,
- 0x00,0xC0,0x4F,0xC2,0x95,0xEE } };
- static const GUID catGUID = { 0xDE351A43, 0x8E59, 0x11D0, { 0x8C,0x47,
- 0x00,0xC0,0x4F,0xC2,0x95,0xEE }};
BOOL ret;
TRACE("(%p %p %d %p %p)\n", pSubjectInfo, pdwEncodingType, dwIndex,
pcbSignedDataMsg, pbSignedDataMsg);
+
+ if(!pSubjectInfo)
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+ }
if (!memcmp(pSubjectInfo->pgSubjectType, &unknown, sizeof(unknown)))
ret = WINTRUST_GetSignedMsgFromPEFile(pSubjectInfo, pdwEncodingType,
@@ -1338,11 +1395,23 @@
* CryptSIPPutSignedDataMsg (WINTRUST.@)
*/
BOOL WINAPI CryptSIPPutSignedDataMsg(SIP_SUBJECTINFO* pSubjectInfo, DWORD
pdwEncodingType,
- DWORD* pdwIndex, DWORD cbSignedDataMsg, BYTE*
pbSignedDataMsg)
-{
- FIXME("(%p %d %p %d %p) stub\n", pSubjectInfo, pdwEncodingType, pdwIndex,
+ DWORD* pdwIndex, DWORD cbSignedDataMsg, BYTE* pbSignedDataMsg)
+{
+ TRACE("(%p %d %p %d %p)\n", pSubjectInfo, pdwEncodingType, pdwIndex,
cbSignedDataMsg, pbSignedDataMsg);
-
+
+ if(!pSubjectInfo) {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+ }
+
+ if(!memcmp(pSubjectInfo->pgSubjectType, &unknown, sizeof(unknown)))
+ return WINTRUST_PutSignedMsgToPEFile(pSubjectInfo, pdwEncodingType,
+ pdwIndex, cbSignedDataMsg, pbSignedDataMsg);
+ else
+ FIXME("unimplemented for subject type %s\n",
+ debugstr_guid(pSubjectInfo->pgSubjectType));
+
return FALSE;
}
Modified: trunk/reactos/dll/win32/wintrust/softpub.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wintrust/softpub…
==============================================================================
--- trunk/reactos/dll/win32/wintrust/softpub.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/wintrust/softpub.c [iso-8859-1] Fri Jul 13 08:19:36 2012
@@ -24,6 +24,7 @@
#include "wintrust.h"
#include "mssip.h"
#include "softpub.h"
+#include "winnls.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(wintrust);
@@ -116,7 +117,20 @@
data->pWintrustData->u.pFile->pcwszFilePath,
data->pWintrustData->u.pFile->hFile,
&data->u.pPDSip->gSubject))
- err = GetLastError();
+ {
+ LARGE_INTEGER fileSize;
+ DWORD sipError = GetLastError();
+
+ /* Special case for empty files: the error is expected to be
+ * TRUST_E_SUBJECT_FORM_UNKNOWN, rather than whatever
+ * CryptSIPRetrieveSubjectGuid returns.
+ */
+ if (GetFileSizeEx(data->pWintrustData->u.pFile->hFile,
&fileSize)
+ && !fileSize.QuadPart)
+ err = TRUST_E_SUBJECT_FORM_UNKNOWN;
+ else
+ err = sipError;
+ }
}
else
data->u.pPDSip->gSubject =
*data->pWintrustData->u.pFile->pgKnownSubject;
@@ -469,6 +483,98 @@
return signerInfo;
}
+static BOOL WINTRUST_GetTimeFromCounterSigner(
+ const CMSG_CMS_SIGNER_INFO *counterSignerInfo, FILETIME *time)
+{
+ DWORD i;
+ BOOL foundTimeStamp = FALSE;
+
+ for (i = 0; !foundTimeStamp && i < counterSignerInfo->AuthAttrs.cAttr;
i++)
+ {
+ if (!strcmp(counterSignerInfo->AuthAttrs.rgAttr[i].pszObjId,
+ szOID_RSA_signingTime))
+ {
+ const CRYPT_ATTRIBUTE *attr =
+ &counterSignerInfo->AuthAttrs.rgAttr[i];
+ DWORD j;
+
+ for (j = 0; !foundTimeStamp && j < attr->cValue; j++)
+ {
+ static const DWORD encoding = X509_ASN_ENCODING |
+ PKCS_7_ASN_ENCODING;
+ DWORD size = sizeof(FILETIME);
+
+ foundTimeStamp = CryptDecodeObjectEx(encoding,
+ X509_CHOICE_OF_TIME,
+ attr->rgValue[j].pbData, attr->rgValue[j].cbData, 0, NULL,
+ time, &size);
+ }
+ }
+ }
+ return foundTimeStamp;
+}
+
+static LPCSTR filetime_to_str(const FILETIME *time)
+{
+ static char date[80];
+ char dateFmt[80]; /* sufficient for all versions of LOCALE_SSHORTDATE */
+ SYSTEMTIME sysTime;
+
+ if (!time) return NULL;
+
+ GetLocaleInfoA(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE, dateFmt,
+ sizeof(dateFmt) / sizeof(dateFmt[0]));
+ FileTimeToSystemTime(time, &sysTime);
+ GetDateFormatA(LOCALE_SYSTEM_DEFAULT, 0, &sysTime, dateFmt, date,
+ sizeof(date) / sizeof(date[0]));
+ return date;
+}
+
+static FILETIME WINTRUST_GetTimeFromSigner(const CRYPT_PROVIDER_DATA *data,
+ const CMSG_SIGNER_INFO *signerInfo)
+{
+ DWORD i;
+ FILETIME time;
+ BOOL foundTimeStamp = FALSE;
+
+ for (i = 0; !foundTimeStamp && i < signerInfo->UnauthAttrs.cAttr; i++)
+ {
+ if (!strcmp(signerInfo->UnauthAttrs.rgAttr[i].pszObjId,
+ szOID_RSA_counterSign))
+ {
+ const CRYPT_ATTRIBUTE *attr = &signerInfo->UnauthAttrs.rgAttr[i];
+ DWORD j;
+
+ for (j = 0; j < attr->cValue; j++)
+ {
+ static const DWORD encoding = X509_ASN_ENCODING |
+ PKCS_7_ASN_ENCODING;
+ CMSG_CMS_SIGNER_INFO *counterSignerInfo;
+ DWORD size;
+ BOOL ret = CryptDecodeObjectEx(encoding, CMS_SIGNER_INFO,
+ attr->rgValue[j].pbData, attr->rgValue[j].cbData,
+ CRYPT_DECODE_ALLOC_FLAG, NULL, &counterSignerInfo, &size);
+ if (ret)
+ {
+ /* FIXME: need to verify countersigner signature too */
+ foundTimeStamp = WINTRUST_GetTimeFromCounterSigner(
+ counterSignerInfo, &time);
+ LocalFree(counterSignerInfo);
+ }
+ }
+ }
+ }
+ if (!foundTimeStamp)
+ {
+ TRACE("returning system time %s\n",
+ filetime_to_str(&data->sftSystemTime));
+ time = data->sftSystemTime;
+ }
+ else
+ TRACE("returning time from message %s\n", filetime_to_str(&time));
+ return time;
+}
+
static DWORD WINTRUST_SaveSigner(CRYPT_PROVIDER_DATA *data, DWORD signerIdx)
{
DWORD err;
@@ -479,7 +585,7 @@
CRYPT_PROVIDER_SGNR sgnr = { sizeof(sgnr), { 0 } };
sgnr.psSigner = signerInfo;
- sgnr.sftVerifyAsOf = data->sftSystemTime;
+ sgnr.sftVerifyAsOf = WINTRUST_GetTimeFromSigner(data, signerInfo);
if (!data->psPfns->pfnAddSgnr2Chain(data, FALSE, signerIdx, &sgnr))
err = GetLastError();
else
@@ -1101,7 +1207,8 @@
CryptMsgClose(data->hMsg);
if (data->fOpenedFile &&
- data->pWintrustData->dwUnionChoice == WTD_CHOICE_FILE)
+ data->pWintrustData->dwUnionChoice == WTD_CHOICE_FILE &&
+ data->pWintrustData->u.pFile)
CloseHandle(data->pWintrustData->u.pFile->hFile);
return S_OK;
Modified: trunk/reactos/dll/win32/wintrust/wintrust.spec
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wintrust/wintrus…
==============================================================================
--- trunk/reactos/dll/win32/wintrust/wintrust.spec [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/wintrust/wintrust.spec [iso-8859-1] Fri Jul 13 08:19:36 2012
@@ -45,12 +45,12 @@
@ stdcall DriverCleanupPolicy(ptr)
@ stdcall DriverFinalPolicy(ptr)
@ stdcall DriverInitializePolicy(ptr)
-@ stub FindCertsByIssuer
+@ stdcall FindCertsByIssuer(ptr ptr ptr ptr long wstr long)
@ stdcall GenericChainCertificateTrust(ptr)
@ stdcall GenericChainFinalProv(ptr)
@ stdcall HTTPSCertificateTrust(ptr)
@ stdcall HTTPSFinalProv(ptr)
-@ stub IsCatalogFile
+@ stdcall IsCatalogFile(ptr wstr)
@ stub MsCatConstructHashTag
@ stub MsCatFreeHashTag
@ stub OfficeCleanupPolicy
Modified: trunk/reactos/dll/win32/wintrust/wintrust_main.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wintrust/wintrus…
==============================================================================
--- trunk/reactos/dll/win32/wintrust/wintrust_main.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/wintrust/wintrust_main.c [iso-8859-1] Fri Jul 13 08:19:36
2012
@@ -1201,3 +1201,31 @@
FIXME("Stub\n");
return S_OK;
}
+
+/***********************************************************************
+ * IsCatalogFile
+ */
+BOOL WINAPI IsCatalogFile(HANDLE hFile, WCHAR *pwszFileName)
+{
+ static const GUID catGUID = { 0xDE351A43, 0x8E59, 0x11D0, {
0x8C,0x47,0x00,0xC0,0x4F,0xC2,0x95,0xEE }};
+ GUID guid;
+
+ TRACE("(%p, %s)\n", hFile, debugstr_w(pwszFileName));
+
+ if (!CryptSIPRetrieveSubjectGuid(pwszFileName, hFile, &guid))
+ return FALSE;
+ return IsEqualGUID(&guid, &catGUID);
+}
+
+/***********************************************************************
+ * FindCertsByIssuer
+ */
+HRESULT WINAPI FindCertsByIssuer(PCERT_CHAIN pCertChains, DWORD *pcbCertChains,
+ DWORD *pcCertChains, BYTE* pbEncodedIssuerName, DWORD cbEncodedIssuerName,
+ LPCWSTR pwszPurpose, DWORD dwKeySpec)
+{
+ FIXME("(%p, %p, %p, %p, %d, %s, %d): stub\n", pCertChains, pcbCertChains,
+ pcCertChains, pbEncodedIssuerName, cbEncodedIssuerName,
+ debugstr_w(pwszPurpose), dwKeySpec);
+ return E_FAIL;
+}
Modified: trunk/reactos/dll/win32/wintrust/wintrust_priv.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wintrust/wintrus…
==============================================================================
--- trunk/reactos/dll/win32/wintrust/wintrust_priv.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/wintrust/wintrust_priv.h [iso-8859-1] Fri Jul 13 08:19:36
2012
@@ -18,14 +18,14 @@
#ifndef __WINTRUST_PRIV_H__
#define __WINTRUST_PRIV_H__
-void * WINAPI WINTRUST_Alloc(DWORD cb) __WINE_ALLOC_SIZE(1);
-void WINAPI WINTRUST_Free(void *p);
-BOOL WINAPI WINTRUST_AddStore(CRYPT_PROVIDER_DATA *data, HCERTSTORE store);
+void * WINAPI WINTRUST_Alloc(DWORD cb) __WINE_ALLOC_SIZE(1) DECLSPEC_HIDDEN;
+void WINAPI WINTRUST_Free(void *p) DECLSPEC_HIDDEN;
+BOOL WINAPI WINTRUST_AddStore(CRYPT_PROVIDER_DATA *data, HCERTSTORE store)
DECLSPEC_HIDDEN;
BOOL WINAPI WINTRUST_AddSgnr(CRYPT_PROVIDER_DATA *data,
- BOOL fCounterSigner, DWORD idxSigner, CRYPT_PROVIDER_SGNR *sgnr);
+ BOOL fCounterSigner, DWORD idxSigner, CRYPT_PROVIDER_SGNR *sgnr) DECLSPEC_HIDDEN;
BOOL WINAPI WINTRUST_AddCert(CRYPT_PROVIDER_DATA *data, DWORD idxSigner,
- BOOL fCounterSigner, DWORD idxCounterSigner, PCCERT_CONTEXT pCert2Add);
+ BOOL fCounterSigner, DWORD idxCounterSigner, PCCERT_CONTEXT pCert2Add) DECLSPEC_HIDDEN;
BOOL WINAPI WINTRUST_AddPrivData(CRYPT_PROVIDER_DATA *data,
- CRYPT_PROVIDER_PRIVDATA *pPrivData2Add);
+ CRYPT_PROVIDER_PRIVDATA *pPrivData2Add) DECLSPEC_HIDDEN;
#endif /* ndef __WINTRUST_PRIV_H__ */
Removed: trunk/reactos/dll/win32/wintrust/wintrust_ros.diff
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wintrust/wintrus…
==============================================================================
--- trunk/reactos/dll/win32/wintrust/wintrust_ros.diff [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/wintrust/wintrust_ros.diff (removed)
@@ -1,31 +1,0 @@
-Index: wintrust_main.c
-===================================================================
---- wintrust_main.c (revision 23867)
-+++ wintrust_main.c (working copy)
-@@ -83,7 +83,26 @@
- */
- LONG WINAPI WinVerifyTrust( HWND hwnd, GUID *ActionID, LPVOID ActionData )
- {
-+ static const GUID gen_verify_v2 = WINTRUST_ACTION_GENERIC_VERIFY_V2;
-+
- FIXME("%p %s %p\n", hwnd, debugstr_guid(ActionID), ActionData);
-+
-+ /* Trust providers can be found at:
-+ * HKLM\SOFTWARE\Microsoft\Cryptography\Providers\Trust\CertCheck\
-+ *
-+ * Process Explorer expects a correct implementation, so we
-+ * return TRUST_E_PROVIDER_UNKNOWN.
-+ *
-+ * Girotel needs ERROR_SUCCESS.
-+ *
-+ * For now return TRUST_E_PROVIDER_UNKNOWN only when
-+ * ActionID = WINTRUST_ACTION_GENERIC_VERIFY_V2.
-+ *
-+ */
-+
-+ if (IsEqualCLSID(ActionID, &gen_verify_v2))
-+ return TRUST_E_PROVIDER_UNKNOWN;
-+
- return ERROR_SUCCESS;
- }
-
Modified: trunk/reactos/media/doc/README.WINE
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
==============================================================================
--- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original)
+++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Fri Jul 13 08:19:36 2012
@@ -189,7 +189,7 @@
reactos/dll/win32/winmm # Forked at Wine-20050628
reactos/dll/win32/winmm/midimap # Forked at Wine-20050628
reactos/dll/win32/winmm/wavemap # Forked at Wine-20050628
-reactos/dll/win32/wintrust # Autosync
+reactos/dll/win32/wintrust # Synced to Wine-1.5.4
reactos/dll/win32/wldap32 # Autosync
reactos/dll/win32/wmi # Synced to Wine-1.5.4
reactos/dll/win32/wtsapi32 # Synced to Wine-1.5.4