Juan Lang : cryptui: Implement CryptUIWizExport for the no UI case.

Alexandre Julliard julliard at winehq.org
Mon Jan 26 10:13:49 CST 2009


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Fri Jan 23 13:25:51 2009 -0800

cryptui: Implement CryptUIWizExport for the no UI case.

---

 dlls/cryptui/main.c |   49 +++++++++++++++++++++++++++++--------------------
 1 files changed, 29 insertions(+), 20 deletions(-)

diff --git a/dlls/cryptui/main.c b/dlls/cryptui/main.c
index b03659e..78d5b18 100644
--- a/dlls/cryptui/main.c
+++ b/dlls/cryptui/main.c
@@ -6097,42 +6097,41 @@ static BOOL save_cms(HANDLE file, PCCRYPTUI_WIZ_EXPORT_INFO pExportInfo,
     return ret;
 }
 
-static BOOL do_export(struct ExportWizData *data)
+static BOOL do_export(HANDLE file, PCCRYPTUI_WIZ_EXPORT_INFO pExportInfo,
+ PCCRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO pContextInfo)
 {
     BOOL ret;
 
-    switch (data->pExportInfo->dwSubjectChoice)
+    switch (pExportInfo->dwSubjectChoice)
     {
     case CRYPTUI_WIZ_EXPORT_CRL_CONTEXT:
-        ret = save_der(data->file,
-         data->pExportInfo->u.pCRLContext->pbCrlEncoded,
-         data->pExportInfo->u.pCRLContext->cbCrlEncoded);
+        ret = save_der(file,
+         pExportInfo->u.pCRLContext->pbCrlEncoded,
+         pExportInfo->u.pCRLContext->cbCrlEncoded);
         break;
     case CRYPTUI_WIZ_EXPORT_CTL_CONTEXT:
-        ret = save_der(data->file,
-         data->pExportInfo->u.pCTLContext->pbCtlEncoded,
-         data->pExportInfo->u.pCTLContext->cbCtlEncoded);
+        ret = save_der(file,
+         pExportInfo->u.pCTLContext->pbCtlEncoded,
+         pExportInfo->u.pCTLContext->cbCtlEncoded);
         break;
     default:
-        switch (data->contextInfo.dwExportFormat)
+        switch (pContextInfo->dwExportFormat)
         {
         case CRYPTUI_WIZ_EXPORT_FORMAT_BASE64:
-            ret = save_base64(data->file,
-             data->pExportInfo->u.pCertContext->pbCertEncoded,
-             data->pExportInfo->u.pCertContext->cbCertEncoded);
+            ret = save_base64(file,
+             pExportInfo->u.pCertContext->pbCertEncoded,
+             pExportInfo->u.pCertContext->cbCertEncoded);
             break;
         case CRYPTUI_WIZ_EXPORT_FORMAT_PKCS7:
-            ret = save_cms(data->file, data->pExportInfo,
-             data->contextInfo.fExportChain);
+            ret = save_cms(file, pExportInfo, pContextInfo->fExportChain);
             break;
         case CRYPTUI_WIZ_EXPORT_FORMAT_PFX:
             FIXME("unimplemented for PFX\n");
             ret = FALSE;
             break;
         default:
-            ret = save_der(data->file,
-             data->pExportInfo->u.pCertContext->pbCertEncoded,
-             data->pExportInfo->u.pCertContext->cbCertEncoded);
+            ret = save_der(file, pExportInfo->u.pCertContext->pbCertEncoded,
+             pExportInfo->u.pCertContext->cbCertEncoded);
         }
     }
     return ret;
@@ -6191,7 +6190,8 @@ static LRESULT CALLBACK export_finish_dlg_proc(HWND hwnd, UINT msg, WPARAM wp,
             DWORD mbFlags;
 
             data = (struct ExportWizData *)GetWindowLongPtrW(hwnd, DWLP_USER);
-            if ((data->success = do_export(data)))
+            if ((data->success = do_export(data->file, data->pExportInfo,
+             &data->contextInfo)))
             {
                 messageID = IDS_EXPORT_SUCCEEDED;
                 mbFlags = MB_OK;
@@ -6344,8 +6344,17 @@ BOOL WINAPI CryptUIWizExport(DWORD dwFlags, HWND hwndParent,
          pvoid);
     else
     {
-        FIXME("stub\n");
-        ret = FALSE;
+        HANDLE file = CreateFileW(pExportInfo->pwszExportFileName,
+         GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
+         CREATE_ALWAYS, 0, NULL);
+
+        if (file != INVALID_HANDLE_VALUE)
+        {
+            ret = do_export(file, pExportInfo, pvoid);
+            CloseHandle(file);
+        }
+        else
+            ret = FALSE;
     }
     return ret;
 }




More information about the wine-cvs mailing list