Module: wine Branch: master Commit: 8216c07a967e589e71ecc3cc6029dd0cccd6ab9a URL: http://source.winehq.org/git/wine.git/?a=commit;h=8216c07a967e589e71ecc3cc60...
Author: Juan Lang juan.lang@gmail.com Date: Mon Dec 22 10:56:35 2008 -0800
cryptui: Use helper function for importing certificates.
---
dlls/cryptui/main.c | 53 ++++++++++++++++++++++++++++---------------------- 1 files changed, 30 insertions(+), 23 deletions(-)
diff --git a/dlls/cryptui/main.c b/dlls/cryptui/main.c index 442cd19..8a1b149 100644 --- a/dlls/cryptui/main.c +++ b/dlls/cryptui/main.c @@ -3443,13 +3443,36 @@ static HCERTSTORE choose_store_for_cert(PCCERT_CONTEXT cert) CERT_SYSTEM_STORE_CURRENT_USER, storeName); }
+static BOOL import_cert(PCCERT_CONTEXT cert, HCERTSTORE hDestCertStore) +{ + HCERTSTORE store; + BOOL ret; + + if (!cert) + { + SetLastError(E_INVALIDARG); + return FALSE; + } + if (hDestCertStore) store = hDestCertStore; + else + { + if (!(store = choose_store_for_cert(cert))) + { + WARN("unable to open certificate store\n"); + return FALSE; + } + } + ret = CertAddCertificateContextToStore(store, cert, + CERT_STORE_ADD_REPLACE_EXISTING, NULL); + if (!hDestCertStore) CertCloseStore(store, 0); + return ret; +} + BOOL WINAPI CryptUIWizImport(DWORD dwFlags, HWND hwndParent, LPCWSTR pwszWizardTitle, PCCRYPTUI_WIZ_IMPORT_SRC_INFO pImportSrc, HCERTSTORE hDestCertStore) { BOOL ret; - HCERTSTORE store; const CERT_CONTEXT *cert; - BOOL freeCert = FALSE;
TRACE("(0x%08x, %p, %s, %p, %p)\n", dwFlags, hwndParent, debugstr_w(pwszWizardTitle), pImportSrc, hDestCertStore); @@ -3472,35 +3495,19 @@ BOOL WINAPI CryptUIWizImport(DWORD dwFlags, HWND hwndParent, LPCWSTR pwszWizardT return FALSE; } else - freeCert = TRUE; - break; - case CRYPTUI_WIZ_IMPORT_SUBJECT_CERT_CONTEXT: - cert = pImportSrc->u.pCertContext; - if (!cert) { - SetLastError(E_INVALIDARG); - return FALSE; + ret = import_cert(cert, hDestCertStore); + CertFreeCertificateContext(cert); } break; + case CRYPTUI_WIZ_IMPORT_SUBJECT_CERT_CONTEXT: + ret = import_cert(pImportSrc->u.pCertContext, hDestCertStore); + break; default: FIXME("source type not implemented: %u\n", pImportSrc->dwSubjectChoice); SetLastError(E_INVALIDARG); return FALSE; } - if (hDestCertStore) store = hDestCertStore; - else - { - if (!(store = choose_store_for_cert(cert))) - { - WARN("unable to open certificate store\n"); - CertFreeCertificateContext(cert); - return FALSE; - } - } - ret = CertAddCertificateContextToStore(store, cert, CERT_STORE_ADD_REPLACE_EXISTING, NULL);
- if (!hDestCertStore) CertCloseStore(store, 0); - if (freeCert) - CertFreeCertificateContext(cert); return ret; }