From 6455674c9792ee4a5ee45690189af99e6931c445 Mon Sep 17 00:00:00 2001 From: Juan Lang Date: Thu, 23 Oct 2008 13:40:34 -0700 Subject: [PATCH] wintrust: Separate loading a message from a WINTRUST_CERT_INFO into a helper function. --- dlls/wintrust/softpub.c | 81 +++++++++++++++++++++++++++---------------------- 1 file changed, 44 insertions(+), 37 deletions(-) diff --git a/dlls/wintrust/softpub.c b/dlls/wintrust/softpub.c index 6faaa1f1169..72d223c3684 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) -- 2.11.4.GIT