Juan Lang : crypt32: Combine redundant code.

Alexandre Julliard julliard at wine.codeweavers.com
Fri May 26 13:55:30 CDT 2006


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

Author: Juan Lang <juan_lang at yahoo.com>
Date:   Fri May 26 09:41:37 2006 -0700

crypt32: Combine redundant code.

---

 dlls/crypt32/context.c         |   10 +++
 dlls/crypt32/crypt32_private.h |    4 +
 dlls/crypt32/store.c           |  117 +++++++++++++---------------------------
 3 files changed, 53 insertions(+), 78 deletions(-)

diff --git a/dlls/crypt32/context.c b/dlls/crypt32/context.c
index a88286b..558be9d 100644
--- a/dlls/crypt32/context.c
+++ b/dlls/crypt32/context.c
@@ -164,6 +164,16 @@ void Context_Release(void *context, size
         TRACE("%p's ref count is %ld\n", context, base->ref);
 }
 
+void Context_CopyProperties(const void *to, const void *from,
+ size_t contextSize)
+{
+    PCONTEXT_PROPERTY_LIST toProperties, fromProperties;
+
+    toProperties = Context_GetProperties((void *)to, contextSize);
+    fromProperties = Context_GetProperties((void *)from, contextSize);
+    ContextPropertyList_Copy(toProperties, fromProperties);
+}
+
 struct ContextList
 {
     PCWINE_CONTEXT_INTERFACE contextInterface;
diff --git a/dlls/crypt32/crypt32_private.h b/dlls/crypt32/crypt32_private.h
index 67306b3..f8365d6 100644
--- a/dlls/crypt32/crypt32_private.h
+++ b/dlls/crypt32/crypt32_private.h
@@ -125,6 +125,10 @@ void *Context_GetExtra(const void *conte
 /* Gets the context linked to by context, which must be a link context. */
 void *Context_GetLinkedContext(void *context, size_t contextSize);
 
+/* Copies properties from fromContext to toContext. */
+void Context_CopyProperties(const void *to, const void *from,
+ size_t contextSize);
+
 struct _CONTEXT_PROPERTY_LIST;
 typedef struct _CONTEXT_PROPERTY_LIST *PCONTEXT_PROPERTY_LIST;
 
diff --git a/dlls/crypt32/store.c b/dlls/crypt32/store.c
index 6d3a1be..2ea714e 100644
--- a/dlls/crypt32/store.c
+++ b/dlls/crypt32/store.c
@@ -220,8 +220,7 @@ static BOOL CRYPT_MemAddCert(PWINECRYPT_
     {
         context->hCertStore = store;
         if (ppStoreContext)
-            *ppStoreContext =
-             CertDuplicateCertificateContext(context);
+            *ppStoreContext = CertDuplicateCertificateContext(context);
     }
     return context ? TRUE : FALSE;
 }
@@ -262,8 +261,7 @@ static BOOL CRYPT_MemAddCrl(PWINECRYPT_C
     {
         context->hCertStore = store;
         if (ppStoreContext)
-            *ppStoreContext =
-             CertDuplicateCRLContext(context);
+            *ppStoreContext = CertDuplicateCRLContext(context);
     }
     return context ? TRUE : FALSE;
 }
@@ -597,7 +595,7 @@ static void *CRYPT_CollectionEnumCRL(PWI
     {
         PWINE_STORE_LIST_ENTRY storeEntry =
          *(PWINE_STORE_LIST_ENTRY *)Context_GetExtra(pPrev,
-         sizeof(CERT_CONTEXT));
+         sizeof(CRL_CONTEXT));
 
         ret = CRYPT_CollectionAdvanceEnum(cs, storeEntry,
          offsetof(WINECRYPT_CERTSTORE, crls), pCRLInterface, pPrev,
@@ -1227,14 +1225,11 @@ static void WINAPI CRYPT_RegCloseStore(H
     CryptMemFree(store);
 }
 
-static BOOL WINAPI CRYPT_RegWriteCert(HCERTSTORE hCertStore,
- PCCERT_CONTEXT cert, DWORD dwFlags)
+static BOOL WINAPI CRYPT_RegWriteContext(PWINE_REGSTOREINFO store,
+ const void *context, DWORD dwFlags)
 {
-    PWINE_REGSTOREINFO store = (PWINE_REGSTOREINFO)hCertStore;
     BOOL ret;
 
-    TRACE("(%p, %p, %ld)\n", hCertStore, cert, dwFlags);
-
     if (dwFlags & CERT_STORE_PROV_WRITE_ADD_FLAG)
     {
         store->dirty = TRUE;
@@ -1245,14 +1240,12 @@ static BOOL WINAPI CRYPT_RegWriteCert(HC
     return ret;
 }
 
-static BOOL WINAPI CRYPT_RegDeleteCert(HCERTSTORE hCertStore,
- PCCERT_CONTEXT pCertContext, DWORD dwFlags)
+static BOOL CRYPT_RegDeleteContext(PWINE_REGSTOREINFO store,
+ struct list *deleteList, const void *context,
+ PCWINE_CONTEXT_INTERFACE contextInterface)
 {
-    PWINE_REGSTOREINFO store = (PWINE_REGSTOREINFO)hCertStore;
     BOOL ret;
 
-    TRACE("(%p, %p, %08lx)\n", store, pCertContext, dwFlags);
-
     if (store->dwOpenFlags & CERT_STORE_READONLY_FLAG)
     {
         SetLastError(ERROR_ACCESS_DENIED);
@@ -1267,12 +1260,12 @@ static BOOL WINAPI CRYPT_RegDeleteCert(H
         {
             DWORD size = sizeof(toDelete->hash);
 
-            ret = CertGetCertificateContextProperty(pCertContext,
-             CERT_HASH_PROP_ID, toDelete->hash, &size);
+            ret = contextInterface->getProp(context, CERT_HASH_PROP_ID,
+             toDelete->hash, &size);
             if (ret)
             {
                 EnterCriticalSection(&store->cs);
-                list_add_tail(&store->certsToDelete, &toDelete->entry);
+                list_add_tail(deleteList, &toDelete->entry);
                 LeaveCriticalSection(&store->cs);
             }
             else
@@ -1289,66 +1282,46 @@ static BOOL WINAPI CRYPT_RegDeleteCert(H
     return ret;
 }
 
+static BOOL WINAPI CRYPT_RegWriteCert(HCERTSTORE hCertStore,
+ PCCERT_CONTEXT cert, DWORD dwFlags)
+{
+    PWINE_REGSTOREINFO store = (PWINE_REGSTOREINFO)hCertStore;
+
+    TRACE("(%p, %p, %ld)\n", hCertStore, cert, dwFlags);
+
+    return CRYPT_RegWriteContext(store, cert, dwFlags);
+}
+
+static BOOL WINAPI CRYPT_RegDeleteCert(HCERTSTORE hCertStore,
+ PCCERT_CONTEXT pCertContext, DWORD dwFlags)
+{
+    PWINE_REGSTOREINFO store = (PWINE_REGSTOREINFO)hCertStore;
+
+    TRACE("(%p, %p, %08lx)\n", store, pCertContext, dwFlags);
+
+    return CRYPT_RegDeleteContext(store, &store->certsToDelete, pCertContext,
+     pCertInterface);
+}
+
 static BOOL WINAPI CRYPT_RegWriteCRL(HCERTSTORE hCertStore,
  PCCRL_CONTEXT crl, DWORD dwFlags)
 {
     PWINE_REGSTOREINFO store = (PWINE_REGSTOREINFO)hCertStore;
-    BOOL ret;
 
     TRACE("(%p, %p, %ld)\n", hCertStore, crl, dwFlags);
 
-    if (dwFlags & CERT_STORE_PROV_WRITE_ADD_FLAG)
-    {
-        store->dirty = TRUE;
-        ret = TRUE;
-    }
-    else
-        ret = FALSE;
-    return ret;
+    return CRYPT_RegWriteContext(store, crl, dwFlags);
 }
 
 static BOOL WINAPI CRYPT_RegDeleteCRL(HCERTSTORE hCertStore,
  PCCRL_CONTEXT pCrlContext, DWORD dwFlags)
 {
     PWINE_REGSTOREINFO store = (PWINE_REGSTOREINFO)hCertStore;
-    BOOL ret;
 
     TRACE("(%p, %p, %08lx)\n", store, pCrlContext, dwFlags);
 
-    if (store->dwOpenFlags & CERT_STORE_READONLY_FLAG)
-    {
-        SetLastError(ERROR_ACCESS_DENIED);
-        ret = FALSE;
-    }
-    else
-    {
-        PWINE_HASH_TO_DELETE toDelete =
-         CryptMemAlloc(sizeof(WINE_HASH_TO_DELETE));
-
-        if (toDelete)
-        {
-            DWORD size = sizeof(toDelete->hash);
-
-            ret = CertGetCRLContextProperty(pCrlContext, CERT_HASH_PROP_ID,
-             toDelete->hash, &size);
-            if (ret)
-            {
-                EnterCriticalSection(&store->cs);
-                list_add_tail(&store->crlsToDelete, &toDelete->entry);
-                LeaveCriticalSection(&store->cs);
-            }
-            else
-            {
-                CryptMemFree(toDelete);
-                ret = FALSE;
-            }
-        }
-        else
-            ret = FALSE;
-        if (ret)
-            store->dirty = TRUE;
-    }
-    return ret;
+    return CRYPT_RegDeleteContext(store, &store->crlsToDelete, pCrlContext,
+     pCRLInterface);
 }
 
 static BOOL WINAPI CRYPT_RegControl(HCERTSTORE hCertStore, DWORD dwFlags,
@@ -1859,14 +1832,8 @@ DWORD CertStore_GetAccessState(HCERTSTOR
     return state;
 }
 
-static void CertContext_CopyProperties(PCCERT_CONTEXT to, PCCERT_CONTEXT from)
-{
-    PCONTEXT_PROPERTY_LIST toProperties, fromProperties;
-
-    toProperties = Context_GetProperties((void *)to, sizeof(CERT_CONTEXT));
-    fromProperties = Context_GetProperties((void *)from, sizeof(CERT_CONTEXT));
-    ContextPropertyList_Copy(toProperties, fromProperties);
-}
+#define CertContext_CopyProperties(to, from) \
+ Context_CopyProperties((to), (from), sizeof(CERT_CONTEXT))
 
 BOOL WINAPI CertAddCertificateContextToStore(HCERTSTORE hCertStore,
  PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition,
@@ -1992,14 +1959,8 @@ BOOL WINAPI CertDeleteCertificateFromSto
     return ret;
 }
 
-static void CrlContext_CopyProperties(PCCRL_CONTEXT to, PCCRL_CONTEXT from)
-{
-    PCONTEXT_PROPERTY_LIST toProperties, fromProperties;
-
-    toProperties = Context_GetProperties((void *)to, sizeof(CRL_CONTEXT));
-    fromProperties = Context_GetProperties((void *)from, sizeof(CRL_CONTEXT));
-    ContextPropertyList_Copy(toProperties, fromProperties);
-}
+#define CrlContext_CopyProperties(to, from) \
+ Context_CopyProperties((to), (from), sizeof(CRL_CONTEXT))
 
 BOOL WINAPI CertAddCRLContextToStore(HCERTSTORE hCertStore,
  PCCRL_CONTEXT pCrlContext, DWORD dwAddDisposition,




More information about the wine-cvs mailing list