Juan Lang : wintrust: Separate loading a message from a WINTRUST_CERT_INFO into a helper function .

Alexandre Julliard julliard at winehq.org
Fri Oct 24 08:12:41 CDT 2008


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Thu Oct 23 13:40:34 2008 -0700

wintrust: Separate loading a message from a WINTRUST_CERT_INFO into a helper function.

---

 dlls/wintrust/softpub.c |   83 +++++++++++++++++++++++++---------------------
 1 files changed, 45 insertions(+), 38 deletions(-)

diff --git a/dlls/wintrust/softpub.c b/dlls/wintrust/softpub.c
index 6faaa1f..72d223c 100644
--- a/dlls/wintrust/softpub.c
+++ b/dlls/wintrust/softpub.c
@@ -249,61 +249,68 @@ error:
     return ret;
 }
 
-HRESULT WINAPI SoftpubLoadMessage(CRYPT_PROVIDER_DATA *data)
+static BOOL SOFTPUB_LoadCertMessage(CRYPT_PROVIDER_DATA *data)
 {
     BOOL ret;
 
-    TRACE("(%p)\n", data);
-
-    if (!data->padwTrustStepErrors)
-        return S_FALSE;
-
-    switch (data->pWintrustData->dwUnionChoice)
+    if (data->pWintrustData->u.pCert &&
+     data->pWintrustData->u.pCert->cbStruct == sizeof(WINTRUST_CERT_INFO))
     {
-    case WTD_CHOICE_CERT:
-        if (data->pWintrustData->u.pCert &&
-         data->pWintrustData->u.pCert->cbStruct == sizeof(WINTRUST_CERT_INFO))
+        if (data->psPfns)
         {
-            if (data->psPfns)
+            CRYPT_PROVIDER_SGNR signer = { sizeof(signer), { 0 } };
+            DWORD i;
+
+            /* Add a signer with nothing but the time to verify, so we can
+             * add a cert to it
+             */
+            if (data->pWintrustData->u.pCert->psftVerifyAsOf)
+                data->sftSystemTime = signer.sftVerifyAsOf;
+            else
             {
-                CRYPT_PROVIDER_SGNR signer = { sizeof(signer), { 0 } };
-                DWORD i;
-
-                /* Add a signer with nothing but the time to verify, so we can
-                 * add a cert to it
-                 */
-                if (data->pWintrustData->u.pCert->psftVerifyAsOf)
-                    data->sftSystemTime = signer.sftVerifyAsOf;
-                else
-                {
-                    SYSTEMTIME sysTime;
+                SYSTEMTIME sysTime;
 
-                    GetSystemTime(&sysTime);
-                    SystemTimeToFileTime(&sysTime, &signer.sftVerifyAsOf);
-                }
-                ret = data->psPfns->pfnAddSgnr2Chain(data, FALSE, 0, &signer);
-                if (!ret)
-                    goto error;
+                GetSystemTime(&sysTime);
+                SystemTimeToFileTime(&sysTime, &signer.sftVerifyAsOf);
+            }
+            ret = data->psPfns->pfnAddSgnr2Chain(data, FALSE, 0, &signer);
+            if (ret)
+            {
                 ret = data->psPfns->pfnAddCert2Chain(data, 0, FALSE, 0,
                  data->pWintrustData->u.pCert->psCertContext);
-                if (!ret)
-                    goto error;
                 for (i = 0; ret && i < data->pWintrustData->u.pCert->chStores;
                  i++)
                     ret = data->psPfns->pfnAddStore2Chain(data,
                      data->pWintrustData->u.pCert->pahStores[i]);
             }
-            else
-            {
-                /* Do nothing!?  See the tests */
-                ret = TRUE;
-            }
         }
         else
         {
-            SetLastError(ERROR_INVALID_PARAMETER);
-            ret = FALSE;
+            /* Do nothing!?  See the tests */
+            ret = TRUE;
         }
+    }
+    else
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+        ret = FALSE;
+    }
+    return ret;
+}
+
+HRESULT WINAPI SoftpubLoadMessage(CRYPT_PROVIDER_DATA *data)
+{
+    BOOL ret;
+
+    TRACE("(%p)\n", data);
+
+    if (!data->padwTrustStepErrors)
+        return S_FALSE;
+
+    switch (data->pWintrustData->dwUnionChoice)
+    {
+    case WTD_CHOICE_CERT:
+        ret = SOFTPUB_LoadCertMessage(data);
         break;
     case WTD_CHOICE_FILE:
         if (!data->pWintrustData->u.pFile)




More information about the wine-cvs mailing list