Juan Lang : wintrust: Don' t assume input file is a PE file in CryptSIPGetSignedDataMsg.

Alexandre Julliard julliard at winehq.org
Thu Jul 24 07:12:53 CDT 2008


Module: wine
Branch: master
Commit: c7d1d34956ab8a9759bd423ee156aa6472b80522
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=c7d1d34956ab8a9759bd423ee156aa6472b80522

Author: Juan Lang <juan.lang at gmail.com>
Date:   Wed Jul 23 17:42:09 2008 -0700

wintrust: Don't assume input file is a PE file in CryptSIPGetSignedDataMsg.

---

 dlls/wintrust/crypt.c |   35 +++++++++++++++++++++++++++++------
 1 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/dlls/wintrust/crypt.c b/dlls/wintrust/crypt.c
index 8819ea8..b1b7771 100644
--- a/dlls/wintrust/crypt.c
+++ b/dlls/wintrust/crypt.c
@@ -202,11 +202,9 @@ BOOL WINAPI CryptSIPCreateIndirectData(SIP_SUBJECTINFO* pSubjectInfo, DWORD* pcb
     return FALSE;
 }
 
-/***********************************************************************
- *      CryptSIPGetSignedDataMsg  (WINTRUST.@)
- */
-BOOL WINAPI CryptSIPGetSignedDataMsg(SIP_SUBJECTINFO* pSubjectInfo, DWORD* pdwEncodingType,
-                                       DWORD dwIndex, DWORD* pcbSignedDataMsg, BYTE* pbSignedDataMsg)
+static BOOL WINTRUST_GetSignedMsgFromPEFile(SIP_SUBJECTINFO *pSubjectInfo,
+ DWORD *pdwEncodingType, DWORD dwIndex, DWORD *pcbSignedDataMsg,
+ BYTE *pbSignedDataMsg)
 {
     BOOL ret;
     WIN_CERTIFICATE *pCert = NULL;
@@ -264,9 +262,34 @@ BOOL WINAPI CryptSIPGetSignedDataMsg(SIP_SUBJECTINFO* pSubjectInfo, DWORD* pdwEn
             }
         }
     }
-
 error:
     HeapFree(GetProcessHeap(), 0, pCert);
+    return ret;
+}
+
+/***********************************************************************
+ *      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 } };
+    BOOL ret;
+
+    TRACE("(%p %p %d %p %p)\n", pSubjectInfo, pdwEncodingType, dwIndex,
+          pcbSignedDataMsg, pbSignedDataMsg);
+
+    if (!memcmp(pSubjectInfo->pgSubjectType, &unknown, sizeof(unknown)))
+        ret = WINTRUST_GetSignedMsgFromPEFile(pSubjectInfo, pdwEncodingType,
+         dwIndex, pcbSignedDataMsg, pbSignedDataMsg);
+    else
+    {
+        FIXME("unimplemented for subject type %s\n",
+         debugstr_guid(pSubjectInfo->pgSubjectType));
+        ret = FALSE;
+    }
+
     TRACE("returning %d\n", ret);
     return ret;
 }




More information about the wine-cvs mailing list