Juan Lang : wintrust: Implement GenericChainCertificateTrust.
Alexandre Julliard
julliard at winehq.org
Tue Oct 9 13:37:49 CDT 2007
Module: wine
Branch: master
Commit: d1fcdea034168bfb25dd595638a1c50114edba3d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d1fcdea034168bfb25dd595638a1c50114edba3d
Author: Juan Lang <juan.lang at gmail.com>
Date: Mon Oct 8 15:40:22 2007 -0700
wintrust: Implement GenericChainCertificateTrust.
---
dlls/wintrust/softpub.c | 52 +++++++++++++++++++++++++++++++++++++++++++
dlls/wintrust/wintrust.spec | 2 +-
2 files changed, 53 insertions(+), 1 deletions(-)
diff --git a/dlls/wintrust/softpub.c b/dlls/wintrust/softpub.c
index bbbd227..5770244 100644
--- a/dlls/wintrust/softpub.c
+++ b/dlls/wintrust/softpub.c
@@ -660,6 +660,58 @@ HRESULT WINAPI WintrustCertificateTrust(CRYPT_PROVIDER_DATA *data)
return ret ? S_OK : S_FALSE;
}
+HRESULT WINAPI GenericChainCertificateTrust(CRYPT_PROVIDER_DATA *data)
+{
+ BOOL ret;
+ WTD_GENERIC_CHAIN_POLICY_DATA *policyData =
+ (WTD_GENERIC_CHAIN_POLICY_DATA *)data->pWintrustData->pPolicyCallbackData;
+
+ TRACE("(%p)\n", data);
+
+ if (policyData && policyData->u.cbSize !=
+ sizeof(WTD_GENERIC_CHAIN_POLICY_CREATE_INFO))
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ ret = FALSE;
+ goto end;
+ }
+ if (!data->csSigners)
+ {
+ ret = FALSE;
+ SetLastError(TRUST_E_NOSIGNATURE);
+ }
+ else
+ {
+ DWORD i;
+ WTD_GENERIC_CHAIN_POLICY_CREATE_INFO createInfo, *pCreateInfo;
+ CERT_CHAIN_PARA chainPara, *pChainPara;
+
+ if (policyData)
+ {
+ pCreateInfo = policyData->pSignerChainInfo;
+ pChainPara = pCreateInfo->pChainPara;
+ }
+ else
+ {
+ WINTRUST_CreateChainPolicyCreateInfo(data, &createInfo, &chainPara);
+ pChainPara = &chainPara;
+ pCreateInfo = &createInfo;
+ }
+ ret = TRUE;
+ for (i = 0; i < data->csSigners; i++)
+ ret = WINTRUST_CreateChainForSigner(data, i, pCreateInfo,
+ pChainPara);
+ }
+
+end:
+ if (!ret)
+ data->padwTrustStepErrors[TRUSTERROR_STEP_FINAL_CERTPROV] =
+ GetLastError();
+ TRACE("returning %d (%08x)\n", ret ? S_OK : S_FALSE,
+ data->padwTrustStepErrors[TRUSTERROR_STEP_FINAL_CERTPROV]);
+ return ret ? S_OK : S_FALSE;
+}
+
HRESULT WINAPI SoftpubAuthenticode(CRYPT_PROVIDER_DATA *data)
{
BOOL ret;
diff --git a/dlls/wintrust/wintrust.spec b/dlls/wintrust/wintrust.spec
index bcac267..a5ee3d0 100644
--- a/dlls/wintrust/wintrust.spec
+++ b/dlls/wintrust/wintrust.spec
@@ -46,7 +46,7 @@
@ stub DriverFinalPolicy
@ stub DriverInitializePolicy
@ stub FindCertsByIssuer
-@ stub GenericChainCertificateTrust
+@ stdcall GenericChainCertificateTrust(ptr)
@ stub GenericChainFinalProv
@ stub HTTPSCertificateTrust
@ stub HTTPSFinalProv
More information about the wine-cvs
mailing list