Juan Lang : crypt32: (Re) introduce helper function to get issuer certificate.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Sep 12 07:50:36 CDT 2007


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Tue Sep 11 12:47:13 2007 -0700

crypt32: (Re)introduce helper function to get issuer certificate.

---

 dlls/crypt32/chain.c |   22 +++++++++++++++-------
 1 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/dlls/crypt32/chain.c b/dlls/crypt32/chain.c
index f2fa84e..bd26cb1 100644
--- a/dlls/crypt32/chain.c
+++ b/dlls/crypt32/chain.c
@@ -511,6 +511,17 @@ static void CRYPT_CheckSimpleChain(PCertificateChainEngine engine,
     CRYPT_CombineTrustStatus(&chain->TrustStatus, &rootElement->TrustStatus);
 }
 
+static PCCERT_CONTEXT CRYPT_GetIssuer(HCERTSTORE store, PCCERT_CONTEXT subject,
+ PCCERT_CONTEXT prevIssuer)
+{
+    PCCERT_CONTEXT issuer;
+    DWORD flags = 0;
+
+    issuer = CertGetIssuerCertificateFromStore(store, subject, prevIssuer,
+     &flags);
+    return issuer;
+}
+
 /* Builds a simple chain by finding an issuer for the last cert in the chain,
  * until reaching a self-signed cert, or until no issuer can be found.
  */
@@ -523,9 +534,7 @@ static BOOL CRYPT_BuildSimpleChain(PCertificateChainEngine engine,
     while (ret && !CRYPT_IsSimpleChainCyclic(chain) &&
      !CRYPT_IsCertificateSelfSigned(cert))
     {
-        DWORD flags = 0;
-        PCCERT_CONTEXT issuer =
-         CertGetIssuerCertificateFromStore(world, cert, NULL, &flags);
+        PCCERT_CONTEXT issuer = CRYPT_GetIssuer(world, cert, NULL);
 
         if (issuer)
         {
@@ -782,7 +791,7 @@ static PCertificateChain CRYPT_BuildAlternateContextFromChain(
         alternate = NULL;
     else
     {
-        DWORD i, j, flags;
+        DWORD i, j;
         PCCERT_CONTEXT alternateIssuer = NULL;
 
         alternate = NULL;
@@ -795,9 +804,8 @@ static PCertificateChain CRYPT_BuildAlternateContextFromChain(
                 PCCERT_CONTEXT prevIssuer = CertDuplicateCertificateContext(
                  chain->context.rgpChain[i]->rgpElement[j + 1]->pCertContext);
 
-                flags = CERT_STORE_REVOCATION_FLAG | CERT_STORE_SIGNATURE_FLAG;
-                alternateIssuer = CertGetIssuerCertificateFromStore(
-                 prevIssuer->hCertStore, subject, prevIssuer, &flags);
+                alternateIssuer = CRYPT_GetIssuer(prevIssuer->hCertStore,
+                 subject, prevIssuer);
             }
         if (alternateIssuer)
         {




More information about the wine-cvs mailing list