From dc7a4e1302b3c1cfad5d7dc7b71e5c2c93325eb0 Mon Sep 17 00:00:00 2001 From: Juan Lang Date: Fri, 29 Aug 2008 07:33:24 -0700 Subject: [PATCH] crypt32: Add CTLs to the registry store. --- dlls/crypt32/regstore.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/dlls/crypt32/regstore.c b/dlls/crypt32/regstore.c index 35928b8960a..5574a5e42dc 100644 --- a/dlls/crypt32/regstore.c +++ b/dlls/crypt32/regstore.c @@ -43,6 +43,7 @@ typedef struct _WINE_REGSTOREINFO CRITICAL_SECTION cs; struct list certsToDelete; struct list crlsToDelete; + struct list ctlsToDelete; } WINE_REGSTOREINFO, *PWINE_REGSTOREINFO; static void CRYPT_HashToStr(const BYTE *hash, LPWSTR asciiHash) @@ -251,7 +252,7 @@ static BOOL CRYPT_RegWriteToReg(PWINE_REGSTOREINFO store) const WINE_CONTEXT_INTERFACE * const interfaces[] = { pCertInterface, pCRLInterface, pCTLInterface }; struct list *listToDelete[] = { &store->certsToDelete, &store->crlsToDelete, - NULL }; + &store->ctlsToDelete }; BOOL ret = TRUE; DWORD i; @@ -430,6 +431,27 @@ static BOOL WINAPI CRYPT_RegDeleteCRL(HCERTSTORE hCertStore, pCRLInterface); } +static BOOL WINAPI CRYPT_RegWriteCTL(HCERTSTORE hCertStore, + PCCTL_CONTEXT ctl, DWORD dwFlags) +{ + PWINE_REGSTOREINFO store = (PWINE_REGSTOREINFO)hCertStore; + + TRACE("(%p, %p, %d)\n", hCertStore, ctl, dwFlags); + + return CRYPT_RegWriteContext(store, ctl, dwFlags); +} + +static BOOL WINAPI CRYPT_RegDeleteCTL(HCERTSTORE hCertStore, + PCCTL_CONTEXT pCtlContext, DWORD dwFlags) +{ + PWINE_REGSTOREINFO store = (PWINE_REGSTOREINFO)hCertStore; + + TRACE("(%p, %p, %08x)\n", store, pCtlContext, dwFlags); + + return CRYPT_RegDeleteContext(store, &store->ctlsToDelete, pCtlContext, + pCTLInterface); +} + static BOOL WINAPI CRYPT_RegControl(HCERTSTORE hCertStore, DWORD dwFlags, DWORD dwCtrlType, void const *pvCtrlPara) { @@ -475,8 +497,8 @@ static void *regProvFuncs[] = { CRYPT_RegDeleteCRL, NULL, /* CERT_STORE_PROV_SET_CRL_PROPERTY_FUNC */ NULL, /* CERT_STORE_PROV_READ_CTL_FUNC */ - NULL, /* CERT_STORE_PROV_WRITE_CTL_FUNC */ - NULL, /* CERT_STORE_PROV_DELETE_CTL_FUNC */ + CRYPT_RegWriteCTL, + CRYPT_RegDeleteCTL, NULL, /* CERT_STORE_PROV_SET_CTL_PROPERTY_FUNC */ CRYPT_RegControl, }; @@ -529,6 +551,7 @@ PWINECRYPT_CERTSTORE CRYPT_RegOpenStore(HCRYPTPROV hCryptProv, DWORD dwFlags, regInfo->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": PWINE_REGSTOREINFO->cs"); list_init(®Info->certsToDelete); list_init(®Info->crlsToDelete); + list_init(®Info->ctlsToDelete); CRYPT_RegReadFromReg(regInfo->key, regInfo->memStore); regInfo->dirty = FALSE; provInfo.cbSize = sizeof(provInfo); -- 2.11.4.GIT