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