diff --git a/dlls/crypt32/crypt32_private.h b/dlls/crypt32/crypt32_private.h index 63d7c2dc984..89755227f88 100644 --- a/dlls/crypt32/crypt32_private.h +++ b/dlls/crypt32/crypt32_private.h @@ -233,7 +233,6 @@ typedef struct WINE_CRYPTCERTSTORE void CRYPT_InitStore(WINECRYPT_CERTSTORE *store, DWORD dwFlags, CertStoreType type); void CRYPT_FreeStore(PWINECRYPT_CERTSTORE store); -void CRYPT_EmptyStore(HCERTSTORE store); BOOL WINAPI I_CertUpdateStore(HCERTSTORE store1, HCERTSTORE store2, DWORD unk0, DWORD unk1); diff --git a/dlls/crypt32/regstore.c b/dlls/crypt32/regstore.c index 3754011708d..35928b8960a 100644 --- a/dlls/crypt32/regstore.c +++ b/dlls/crypt32/regstore.c @@ -442,11 +442,17 @@ static BOOL WINAPI CRYPT_RegControl(HCERTSTORE hCertStore, DWORD dwFlags, switch (dwCtrlType) { case CERT_STORE_CTRL_RESYNC: + { + HCERTSTORE memStore = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, 0, + CERT_STORE_CREATE_NEW_FLAG, NULL); + CRYPT_RegFlushStore(store, FALSE); - CRYPT_EmptyStore(store->memStore); - CRYPT_RegReadFromReg(store->key, store->memStore); + CRYPT_RegReadFromReg(store->key, memStore); + I_CertUpdateStore(store->memStore, memStore, 0, 0); + CertCloseStore(memStore, 0); ret = TRUE; break; + } case CERT_STORE_CTRL_COMMIT: ret = CRYPT_RegFlushStore(store, dwFlags & CERT_STORE_CTRL_COMMIT_FORCE_FLAG); diff --git a/dlls/crypt32/store.c b/dlls/crypt32/store.c index 28c37d2786d..57a2bd8abdd 100644 --- a/dlls/crypt32/store.c +++ b/dlls/crypt32/store.c @@ -199,7 +199,7 @@ static BOOL CRYPT_MemDeleteCrl(PWINECRYPT_CERTSTORE store, void *pCrlContext) return TRUE; } -void CRYPT_EmptyStore(HCERTSTORE store) +static void CRYPT_EmptyStore(HCERTSTORE store) { PCCERT_CONTEXT cert; PCCRL_CONTEXT crl;