Juan Lang : cryptui: Implement CryptUIWizExport for CRYPTUI_WIZ_EXPORT_CERT_STORE_CERTIFICATES_ONLY .

Alexandre Julliard julliard at winehq.org
Tue Jan 27 09:06:54 CST 2009


Module: wine
Branch: master
Commit: 15a8ea6a51ceb9bce131f1af9c1535cb4aa92b3d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=15a8ea6a51ceb9bce131f1af9c1535cb4aa92b3d

Author: Juan Lang <juan.lang at gmail.com>
Date:   Sat Jan 24 13:58:46 2009 -0800

cryptui: Implement CryptUIWizExport for CRYPTUI_WIZ_EXPORT_CERT_STORE_CERTIFICATES_ONLY.

---

 dlls/cryptui/main.c |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/dlls/cryptui/main.c b/dlls/cryptui/main.c
index 3108c6a..18d809f 100644
--- a/dlls/cryptui/main.c
+++ b/dlls/cryptui/main.c
@@ -5978,6 +5978,7 @@ static void show_export_details(HWND lv, struct ExportWizData *data)
     case CRYPTUI_WIZ_EXPORT_CRL_CONTEXT:
     case CRYPTUI_WIZ_EXPORT_CTL_CONTEXT:
     case CRYPTUI_WIZ_EXPORT_CERT_STORE:
+    case CRYPTUI_WIZ_EXPORT_CERT_STORE_CERTIFICATES_ONLY:
         /* do nothing */
         break;
     default:
@@ -6076,7 +6077,13 @@ static BOOL save_base64(HANDLE file, const BYTE *pb, DWORD cb)
     return ret;
 }
 
-static BOOL save_cms(HANDLE file, PCCRYPTUI_WIZ_EXPORT_INFO pExportInfo,
+static inline BOOL save_store_as_cms(HANDLE file, HCERTSTORE store)
+{
+    return CertSaveStore(store, PKCS_7_ASN_ENCODING | X509_ASN_ENCODING,
+     CERT_STORE_SAVE_AS_PKCS7, CERT_STORE_SAVE_TO_FILE, file, 0);
+}
+
+static BOOL save_cert_as_cms(HANDLE file, PCCRYPTUI_WIZ_EXPORT_INFO pExportInfo,
  BOOL includeChain)
 {
     BOOL ret;
@@ -6136,8 +6143,7 @@ static BOOL save_cms(HANDLE file, PCCRYPTUI_WIZ_EXPORT_INFO pExportInfo,
             ret = CertAddCertificateContextToStore(store,
              pExportInfo->u.pCertContext, CERT_STORE_ADD_ALWAYS, NULL);
         if (ret)
-            ret = CertSaveStore(store, PKCS_7_ASN_ENCODING | X509_ASN_ENCODING,
-             CERT_STORE_SAVE_AS_PKCS7, CERT_STORE_SAVE_TO_FILE, file, 0);
+            ret = save_store_as_cms(file, store);
         CertCloseStore(store, 0);
     }
     else
@@ -6176,6 +6182,9 @@ static BOOL do_export(HANDLE file, PCCRYPTUI_WIZ_EXPORT_INFO pExportInfo,
     case CRYPTUI_WIZ_EXPORT_CERT_STORE:
         ret = save_serialized_store(file, pExportInfo->u.hCertStore);
         break;
+    case CRYPTUI_WIZ_EXPORT_CERT_STORE_CERTIFICATES_ONLY:
+        ret = save_store_as_cms(file, pExportInfo->u.hCertStore);
+        break;
     default:
         switch (pContextInfo->dwExportFormat)
         {
@@ -6189,7 +6198,8 @@ static BOOL do_export(HANDLE file, PCCRYPTUI_WIZ_EXPORT_INFO pExportInfo,
              pExportInfo->u.pCertContext->cbCertEncoded);
             break;
         case CRYPTUI_WIZ_EXPORT_FORMAT_PKCS7:
-            ret = save_cms(file, pExportInfo, pContextInfo->fExportChain);
+            ret = save_cert_as_cms(file, pExportInfo,
+             pContextInfo->fExportChain);
             break;
         case CRYPTUI_WIZ_EXPORT_FORMAT_PFX:
             FIXME("unimplemented for PFX\n");




More information about the wine-cvs mailing list