mirror of
https://github.com/reactos/wine.git
synced 2025-05-13 10:56:08 +00:00
wintrust: Return error directly from WINTRUST_CopyChain.
This commit is contained in:
parent
c9c23190f7
commit
59dcf9c9ee
@ -694,24 +694,22 @@ static DWORD WINTRUST_TrustStatusToError(DWORD errorStatus)
|
|||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL WINTRUST_CopyChain(CRYPT_PROVIDER_DATA *data, DWORD signerIdx)
|
static DWORD WINTRUST_CopyChain(CRYPT_PROVIDER_DATA *data, DWORD signerIdx)
|
||||||
{
|
{
|
||||||
BOOL ret;
|
DWORD err, i;
|
||||||
PCERT_SIMPLE_CHAIN simpleChain =
|
PCERT_SIMPLE_CHAIN simpleChain =
|
||||||
data->pasSigners[signerIdx].pChainContext->rgpChain[0];
|
data->pasSigners[signerIdx].pChainContext->rgpChain[0];
|
||||||
DWORD i;
|
|
||||||
|
|
||||||
data->pasSigners[signerIdx].pasCertChain[0].dwConfidence =
|
data->pasSigners[signerIdx].pasCertChain[0].dwConfidence =
|
||||||
WINTRUST_TrustStatusToConfidence(
|
WINTRUST_TrustStatusToConfidence(
|
||||||
simpleChain->rgpElement[0]->TrustStatus.dwErrorStatus);
|
simpleChain->rgpElement[0]->TrustStatus.dwErrorStatus);
|
||||||
data->pasSigners[signerIdx].pasCertChain[0].pChainElement =
|
data->pasSigners[signerIdx].pasCertChain[0].pChainElement =
|
||||||
simpleChain->rgpElement[0];
|
simpleChain->rgpElement[0];
|
||||||
ret = TRUE;
|
err = ERROR_SUCCESS;
|
||||||
for (i = 1; ret && i < simpleChain->cElement; i++)
|
for (i = 1; !err && i < simpleChain->cElement; i++)
|
||||||
{
|
{
|
||||||
ret = data->psPfns->pfnAddCert2Chain(data, signerIdx, FALSE, 0,
|
if (data->psPfns->pfnAddCert2Chain(data, signerIdx, FALSE, 0,
|
||||||
simpleChain->rgpElement[i]->pCertContext);
|
simpleChain->rgpElement[i]->pCertContext))
|
||||||
if (ret)
|
|
||||||
{
|
{
|
||||||
data->pasSigners[signerIdx].pasCertChain[i].pChainElement =
|
data->pasSigners[signerIdx].pasCertChain[i].pChainElement =
|
||||||
simpleChain->rgpElement[i];
|
simpleChain->rgpElement[i];
|
||||||
@ -719,12 +717,14 @@ static BOOL WINTRUST_CopyChain(CRYPT_PROVIDER_DATA *data, DWORD signerIdx)
|
|||||||
WINTRUST_TrustStatusToConfidence(
|
WINTRUST_TrustStatusToConfidence(
|
||||||
simpleChain->rgpElement[i]->TrustStatus.dwErrorStatus);
|
simpleChain->rgpElement[i]->TrustStatus.dwErrorStatus);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
err = GetLastError();
|
||||||
}
|
}
|
||||||
data->pasSigners[signerIdx].pasCertChain[simpleChain->cElement - 1].dwError
|
data->pasSigners[signerIdx].pasCertChain[simpleChain->cElement - 1].dwError
|
||||||
= WINTRUST_TrustStatusToError(
|
= WINTRUST_TrustStatusToError(
|
||||||
simpleChain->rgpElement[simpleChain->cElement - 1]->
|
simpleChain->rgpElement[simpleChain->cElement - 1]->
|
||||||
TrustStatus.dwErrorStatus);
|
TrustStatus.dwErrorStatus);
|
||||||
return ret;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void WINTRUST_CreateChainPolicyCreateInfo(
|
static void WINTRUST_CreateChainPolicyCreateInfo(
|
||||||
@ -792,7 +792,9 @@ static BOOL WINTRUST_CreateChainForSigner(CRYPT_PROVIDER_DATA *data,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ((ret = WINTRUST_CopyChain(data, signer)))
|
DWORD err;
|
||||||
|
|
||||||
|
if (!(err = WINTRUST_CopyChain(data, signer)))
|
||||||
{
|
{
|
||||||
if (data->psPfns->pfnCertCheckPolicy)
|
if (data->psPfns->pfnCertCheckPolicy)
|
||||||
ret = data->psPfns->pfnCertCheckPolicy(data, signer,
|
ret = data->psPfns->pfnCertCheckPolicy(data, signer,
|
||||||
@ -800,6 +802,11 @@ static BOOL WINTRUST_CreateChainForSigner(CRYPT_PROVIDER_DATA *data,
|
|||||||
else
|
else
|
||||||
TRACE("no cert check policy, skipping policy check\n");
|
TRACE("no cert check policy, skipping policy check\n");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetLastError(err);
|
||||||
|
ret = FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user