Jacek Caban : crypt32: Moved CertAddCertificateContextToStore to cert.c.
Alexandre Julliard
julliard at winehq.org
Tue Oct 15 13:27:13 CDT 2013
Module: wine
Branch: master
Commit: 988e8a78c2deda0463c8bad9734fa6fd8d4ec543
URL: http://source.winehq.org/git/wine.git/?a=commit;h=988e8a78c2deda0463c8bad9734fa6fd8d4ec543
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Oct 15 16:52:57 2013 +0200
crypt32: Moved CertAddCertificateContextToStore to cert.c.
---
dlls/crypt32/cert.c | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++
dlls/crypt32/store.c | 128 --------------------------------------------------
2 files changed, 128 insertions(+), 128 deletions(-)
diff --git a/dlls/crypt32/cert.c b/dlls/crypt32/cert.c
index 9016d8c..2c96419 100644
--- a/dlls/crypt32/cert.c
+++ b/dlls/crypt32/cert.c
@@ -121,6 +121,134 @@ static const context_vtbl_t cert_vtbl = {
Cert_free
};
+BOOL WINAPI CertAddCertificateContextToStore(HCERTSTORE hCertStore,
+ PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition,
+ PCCERT_CONTEXT *ppStoreContext)
+{
+ WINECRYPT_CERTSTORE *store = hCertStore;
+ BOOL ret = TRUE;
+ PCCERT_CONTEXT toAdd = NULL, existing = NULL;
+
+ TRACE("(%p, %p, %08x, %p)\n", hCertStore, pCertContext,
+ dwAddDisposition, ppStoreContext);
+
+ switch (dwAddDisposition)
+ {
+ case CERT_STORE_ADD_ALWAYS:
+ break;
+ case CERT_STORE_ADD_NEW:
+ case CERT_STORE_ADD_REPLACE_EXISTING:
+ case CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES:
+ case CERT_STORE_ADD_USE_EXISTING:
+ case CERT_STORE_ADD_NEWER:
+ case CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES:
+ {
+ BYTE hashToAdd[20];
+ DWORD size = sizeof(hashToAdd);
+
+ ret = CertGetCertificateContextProperty(pCertContext, CERT_HASH_PROP_ID,
+ hashToAdd, &size);
+ if (ret)
+ {
+ CRYPT_HASH_BLOB blob = { sizeof(hashToAdd), hashToAdd };
+
+ existing = CertFindCertificateInStore(hCertStore,
+ pCertContext->dwCertEncodingType, 0, CERT_FIND_SHA1_HASH, &blob,
+ NULL);
+ }
+ break;
+ }
+ default:
+ FIXME("Unimplemented add disposition %d\n", dwAddDisposition);
+ SetLastError(E_INVALIDARG);
+ ret = FALSE;
+ }
+
+ switch (dwAddDisposition)
+ {
+ case CERT_STORE_ADD_ALWAYS:
+ toAdd = CertDuplicateCertificateContext(pCertContext);
+ break;
+ case CERT_STORE_ADD_NEW:
+ if (existing)
+ {
+ TRACE("found matching certificate, not adding\n");
+ SetLastError(CRYPT_E_EXISTS);
+ ret = FALSE;
+ }
+ else
+ toAdd = CertDuplicateCertificateContext(pCertContext);
+ break;
+ case CERT_STORE_ADD_REPLACE_EXISTING:
+ toAdd = CertDuplicateCertificateContext(pCertContext);
+ break;
+ case CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES:
+ toAdd = CertDuplicateCertificateContext(pCertContext);
+ if (existing)
+ Context_CopyProperties(toAdd, existing);
+ break;
+ case CERT_STORE_ADD_USE_EXISTING:
+ if (existing)
+ {
+ Context_CopyProperties(existing, pCertContext);
+ if (ppStoreContext)
+ *ppStoreContext = CertDuplicateCertificateContext(existing);
+ }
+ else
+ toAdd = CertDuplicateCertificateContext(pCertContext);
+ break;
+ case CERT_STORE_ADD_NEWER:
+ if (existing)
+ {
+ if (CompareFileTime(&existing->pCertInfo->NotBefore,
+ &pCertContext->pCertInfo->NotBefore) >= 0)
+ {
+ TRACE("existing certificate is newer, not adding\n");
+ SetLastError(CRYPT_E_EXISTS);
+ ret = FALSE;
+ }
+ else
+ toAdd = CertDuplicateCertificateContext(pCertContext);
+ }
+ else
+ toAdd = CertDuplicateCertificateContext(pCertContext);
+ break;
+ case CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES:
+ if (existing)
+ {
+ if (CompareFileTime(&existing->pCertInfo->NotBefore,
+ &pCertContext->pCertInfo->NotBefore) >= 0)
+ {
+ TRACE("existing certificate is newer, not adding\n");
+ SetLastError(CRYPT_E_EXISTS);
+ ret = FALSE;
+ }
+ else
+ {
+ toAdd = CertDuplicateCertificateContext(pCertContext);
+ Context_CopyProperties(toAdd, existing);
+ }
+ }
+ else
+ toAdd = CertDuplicateCertificateContext(pCertContext);
+ break;
+ }
+
+ if (toAdd)
+ {
+ if (store)
+ ret = store->vtbl->certs.addContext(store, (void *)toAdd,
+ (void *)existing, (const void **)ppStoreContext);
+ else if (ppStoreContext)
+ *ppStoreContext = CertDuplicateCertificateContext(toAdd);
+ CertFreeCertificateContext(toAdd);
+ }
+ CertFreeCertificateContext(existing);
+
+ TRACE("returning %d\n", ret);
+ return ret;
+}
+
BOOL WINAPI CertAddCertificateLinkToStore(HCERTSTORE hCertStore,
PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition,
PCCERT_CONTEXT *ppCertContext)
diff --git a/dlls/crypt32/store.c b/dlls/crypt32/store.c
index f11279c..5bd19eb 100644
--- a/dlls/crypt32/store.c
+++ b/dlls/crypt32/store.c
@@ -892,134 +892,6 @@ HCERTSTORE WINAPI CertOpenSystemStoreW(HCRYPTPROV_LEGACY hProv,
CERT_SYSTEM_STORE_CURRENT_USER, szSubSystemProtocol);
}
-BOOL WINAPI CertAddCertificateContextToStore(HCERTSTORE hCertStore,
- PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition,
- PCCERT_CONTEXT *ppStoreContext)
-{
- WINECRYPT_CERTSTORE *store = hCertStore;
- BOOL ret = TRUE;
- PCCERT_CONTEXT toAdd = NULL, existing = NULL;
-
- TRACE("(%p, %p, %08x, %p)\n", hCertStore, pCertContext,
- dwAddDisposition, ppStoreContext);
-
- switch (dwAddDisposition)
- {
- case CERT_STORE_ADD_ALWAYS:
- break;
- case CERT_STORE_ADD_NEW:
- case CERT_STORE_ADD_REPLACE_EXISTING:
- case CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES:
- case CERT_STORE_ADD_USE_EXISTING:
- case CERT_STORE_ADD_NEWER:
- case CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES:
- {
- BYTE hashToAdd[20];
- DWORD size = sizeof(hashToAdd);
-
- ret = CertGetCertificateContextProperty(pCertContext, CERT_HASH_PROP_ID,
- hashToAdd, &size);
- if (ret)
- {
- CRYPT_HASH_BLOB blob = { sizeof(hashToAdd), hashToAdd };
-
- existing = CertFindCertificateInStore(hCertStore,
- pCertContext->dwCertEncodingType, 0, CERT_FIND_SHA1_HASH, &blob,
- NULL);
- }
- break;
- }
- default:
- FIXME("Unimplemented add disposition %d\n", dwAddDisposition);
- SetLastError(E_INVALIDARG);
- ret = FALSE;
- }
-
- switch (dwAddDisposition)
- {
- case CERT_STORE_ADD_ALWAYS:
- toAdd = CertDuplicateCertificateContext(pCertContext);
- break;
- case CERT_STORE_ADD_NEW:
- if (existing)
- {
- TRACE("found matching certificate, not adding\n");
- SetLastError(CRYPT_E_EXISTS);
- ret = FALSE;
- }
- else
- toAdd = CertDuplicateCertificateContext(pCertContext);
- break;
- case CERT_STORE_ADD_REPLACE_EXISTING:
- toAdd = CertDuplicateCertificateContext(pCertContext);
- break;
- case CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES:
- toAdd = CertDuplicateCertificateContext(pCertContext);
- if (existing)
- Context_CopyProperties(toAdd, existing);
- break;
- case CERT_STORE_ADD_USE_EXISTING:
- if (existing)
- {
- Context_CopyProperties(existing, pCertContext);
- if (ppStoreContext)
- *ppStoreContext = CertDuplicateCertificateContext(existing);
- }
- else
- toAdd = CertDuplicateCertificateContext(pCertContext);
- break;
- case CERT_STORE_ADD_NEWER:
- if (existing)
- {
- if (CompareFileTime(&existing->pCertInfo->NotBefore,
- &pCertContext->pCertInfo->NotBefore) >= 0)
- {
- TRACE("existing certificate is newer, not adding\n");
- SetLastError(CRYPT_E_EXISTS);
- ret = FALSE;
- }
- else
- toAdd = CertDuplicateCertificateContext(pCertContext);
- }
- else
- toAdd = CertDuplicateCertificateContext(pCertContext);
- break;
- case CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES:
- if (existing)
- {
- if (CompareFileTime(&existing->pCertInfo->NotBefore,
- &pCertContext->pCertInfo->NotBefore) >= 0)
- {
- TRACE("existing certificate is newer, not adding\n");
- SetLastError(CRYPT_E_EXISTS);
- ret = FALSE;
- }
- else
- {
- toAdd = CertDuplicateCertificateContext(pCertContext);
- Context_CopyProperties(toAdd, existing);
- }
- }
- else
- toAdd = CertDuplicateCertificateContext(pCertContext);
- break;
- }
-
- if (toAdd)
- {
- if (store)
- ret = store->vtbl->certs.addContext(store, (void *)toAdd,
- (void *)existing, (const void **)ppStoreContext);
- else if (ppStoreContext)
- *ppStoreContext = CertDuplicateCertificateContext(toAdd);
- CertFreeCertificateContext(toAdd);
- }
- CertFreeCertificateContext(existing);
-
- TRACE("returning %d\n", ret);
- return ret;
-}
-
PCCERT_CONTEXT WINAPI CertEnumCertificatesInStore(HCERTSTORE hCertStore,
PCCERT_CONTEXT pPrev)
{
More information about the wine-cvs
mailing list