Juan Lang : wintrust: Use helper function to add the trust steps to execute .
Alexandre Julliard
julliard at winehq.org
Tue Sep 23 09:28:22 CDT 2008
Module: wine
Branch: master
Commit: f3ba89f94864c15c75bda7ea104062e20ca2e4c5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f3ba89f94864c15c75bda7ea104062e20ca2e4c5
Author: Juan Lang <juan.lang at gmail.com>
Date: Mon Sep 22 13:18:57 2008 -0700
wintrust: Use helper function to add the trust steps to execute.
---
dlls/wintrust/wintrust_main.c | 63 ++++++++++++++++++++++++----------------
1 files changed, 38 insertions(+), 25 deletions(-)
diff --git a/dlls/wintrust/wintrust_main.c b/dlls/wintrust/wintrust_main.c
index 9da584c..a1893d3 100644
--- a/dlls/wintrust/wintrust_main.c
+++ b/dlls/wintrust/wintrust_main.c
@@ -125,6 +125,42 @@ oom:
return NULL;
}
+/* Adds trust steps for each function in psPfns. Assumes steps has at least
+ * 5 entries. Returns the number of steps added.
+ */
+static DWORD WINTRUST_AddTrustStepsFromFunctions(struct wintrust_step *steps,
+ const CRYPT_PROVIDER_FUNCTIONS *psPfns)
+{
+ DWORD numSteps = 0;
+
+ if (psPfns->pfnInitialize)
+ {
+ steps[numSteps].func = psPfns->pfnInitialize;
+ steps[numSteps++].error_index = TRUSTERROR_STEP_FINAL_WVTINIT;
+ }
+ if (psPfns->pfnObjectTrust)
+ {
+ steps[numSteps].func = psPfns->pfnObjectTrust;
+ steps[numSteps++].error_index = TRUSTERROR_STEP_FINAL_OBJPROV;
+ }
+ if (psPfns->pfnSignatureTrust)
+ {
+ steps[numSteps].func = psPfns->pfnSignatureTrust;
+ steps[numSteps++].error_index = TRUSTERROR_STEP_FINAL_SIGPROV;
+ }
+ if (psPfns->pfnCertificateTrust)
+ {
+ steps[numSteps].func = psPfns->pfnCertificateTrust;
+ steps[numSteps++].error_index = TRUSTERROR_STEP_FINAL_CERTPROV;
+ }
+ if (psPfns->pfnFinalPolicy)
+ {
+ steps[numSteps].func = psPfns->pfnFinalPolicy;
+ steps[numSteps++].error_index = TRUSTERROR_STEP_FINAL_POLICYPROV;
+ }
+ return numSteps;
+}
+
static LONG WINTRUST_DefaultVerify(HWND hwnd, GUID *actionID,
WINTRUST_DATA *data)
{
@@ -155,31 +191,8 @@ static LONG WINTRUST_DefaultVerify(HWND hwnd, GUID *actionID,
provData->pgActionID = actionID;
WintrustGetRegPolicyFlags(&provData->dwRegPolicySettings);
- if (provData->psPfns->pfnInitialize)
- {
- verifySteps[numSteps].func = provData->psPfns->pfnInitialize;
- verifySteps[numSteps++].error_index = TRUSTERROR_STEP_FINAL_WVTINIT;
- }
- if (provData->psPfns->pfnObjectTrust)
- {
- verifySteps[numSteps].func = provData->psPfns->pfnObjectTrust;
- verifySteps[numSteps++].error_index = TRUSTERROR_STEP_FINAL_OBJPROV;
- }
- if (provData->psPfns->pfnSignatureTrust)
- {
- verifySteps[numSteps].func = provData->psPfns->pfnSignatureTrust;
- verifySteps[numSteps++].error_index = TRUSTERROR_STEP_FINAL_SIGPROV;
- }
- if (provData->psPfns->pfnCertificateTrust)
- {
- verifySteps[numSteps].func = provData->psPfns->pfnCertificateTrust;
- verifySteps[numSteps++].error_index = TRUSTERROR_STEP_FINAL_CERTPROV;
- }
- if (provData->psPfns->pfnFinalPolicy)
- {
- verifySteps[numSteps].func = provData->psPfns->pfnFinalPolicy;
- verifySteps[numSteps++].error_index = TRUSTERROR_STEP_FINAL_POLICYPROV;
- }
+ numSteps = WINTRUST_AddTrustStepsFromFunctions(verifySteps,
+ provData->psPfns);
err = WINTRUST_ExecuteSteps(verifySteps, numSteps, provData);
goto done;
More information about the wine-cvs
mailing list