Jacek Caban : crypt32: Simplified getting context expiration.

Alexandre Julliard julliard at winehq.org
Fri Mar 7 11:02:58 CST 2014


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Mar  7 16:08:10 2014 +0100

crypt32: Simplified getting context expiration.

---

 dlls/cryptnet/cryptnet_main.c |   77 ++++++++++-------------------------------
 1 file changed, 18 insertions(+), 59 deletions(-)

diff --git a/dlls/cryptnet/cryptnet_main.c b/dlls/cryptnet/cryptnet_main.c
index 13ca6e2..3986f0f 100644
--- a/dlls/cryptnet/cryptnet_main.c
+++ b/dlls/cryptnet/cryptnet_main.c
@@ -1424,61 +1424,24 @@ static BOOL CRYPT_GetCreateFunction(LPCSTR pszObjectOid,
     return ret;
 }
 
-typedef BOOL (*get_object_expiration_func)(const void *pvContext,
- FILETIME *expiration);
-
-static BOOL CRYPT_GetExpirationFromCert(const void *pvObject, FILETIME *expiration)
-{
-    PCCERT_CONTEXT cert = pvObject;
-
-    *expiration = cert->pCertInfo->NotAfter;
-    return TRUE;
-}
-
-static BOOL CRYPT_GetExpirationFromCRL(const void *pvObject, FILETIME *expiration)
+static BOOL CRYPT_GetExpiration(const void *object, const char *pszObjectOid, FILETIME *expiration)
 {
-    PCCRL_CONTEXT cert = pvObject;
-
-    *expiration = cert->pCrlInfo->NextUpdate;
-    return TRUE;
-}
-
-static BOOL CRYPT_GetExpirationFromCTL(const void *pvObject, FILETIME *expiration)
-{
-    PCCTL_CONTEXT cert = pvObject;
-
-    *expiration = cert->pCtlInfo->NextUpdate;
-    return TRUE;
-}
-
-static BOOL CRYPT_GetExpirationFunction(LPCSTR pszObjectOid,
- get_object_expiration_func *getExpiration)
-{
-    BOOL ret;
+    if (!IS_INTOID(pszObjectOid))
+        return FALSE;
 
-    if (IS_INTOID(pszObjectOid))
-    {
-        switch (LOWORD(pszObjectOid))
-        {
-        case LOWORD(CONTEXT_OID_CERTIFICATE):
-            *getExpiration = CRYPT_GetExpirationFromCert;
-            ret = TRUE;
-            break;
-        case LOWORD(CONTEXT_OID_CRL):
-            *getExpiration = CRYPT_GetExpirationFromCRL;
-            ret = TRUE;
-            break;
-        case LOWORD(CONTEXT_OID_CTL):
-            *getExpiration = CRYPT_GetExpirationFromCTL;
-            ret = TRUE;
-            break;
-        default:
-            ret = FALSE;
-        }
+    switch (LOWORD(pszObjectOid)) {
+    case LOWORD(CONTEXT_OID_CERTIFICATE):
+        *expiration = ((const CERT_CONTEXT*)object)->pCertInfo->NotAfter;
+        return TRUE;
+    case LOWORD(CONTEXT_OID_CRL):
+        *expiration = ((const CRL_CONTEXT*)object)->pCrlInfo->NextUpdate;
+        return TRUE;
+    case LOWORD(CONTEXT_OID_CTL):
+        *expiration = ((const CTL_CONTEXT*)object)->pCtlInfo->NextUpdate;
+        return TRUE;
     }
-    else
-        ret = FALSE;
-    return ret;
+
+    return FALSE;
 }
 
 /***********************************************************************
@@ -1511,22 +1474,18 @@ BOOL WINAPI CryptRetrieveObjectByUrlW(LPCWSTR pszURL, LPCSTR pszObjectOid,
         CRYPT_BLOB_ARRAY object = { 0, NULL };
         PFN_FREE_ENCODED_OBJECT_FUNC freeObject;
         void *freeContext;
+        FILETIME expires;
 
         ret = retrieve(pszURL, pszObjectOid, dwRetrievalFlags, dwTimeout,
          &object, &freeObject, &freeContext, hAsyncRetrieve, pCredentials,
          pAuxInfo);
         if (ret)
         {
-            get_object_expiration_func getExpiration;
-
             ret = create(pszObjectOid, dwRetrievalFlags, &object, ppvObject);
             if (ret && !(dwRetrievalFlags & CRYPT_DONT_CACHE_RESULT) &&
-             CRYPT_GetExpirationFunction(pszObjectOid, &getExpiration))
+                CRYPT_GetExpiration(*ppvObject, pszObjectOid, &expires))
             {
-                FILETIME expires;
-
-                if (getExpiration(*ppvObject, &expires))
-                    CRYPT_CacheURL(pszURL, &object, dwRetrievalFlags, expires);
+                CRYPT_CacheURL(pszURL, &object, dwRetrievalFlags, expires);
             }
             freeObject(pszObjectOid, &object, freeContext);
         }




More information about the wine-cvs mailing list