https://git.reactos.org/?p=reactos.git;a=commitdiff;h=b81745a3a07b7bf829514…
commit b81745a3a07b7bf829514ecf54fef007b0dab77f
Author: Amine Khaldi <amine.khaldi(a)reactos.org>
AuthorDate: Sat Oct 26 22:55:21 2019 +0100
Commit: Amine Khaldi <amine.khaldi(a)reactos.org>
CommitDate: Sat Oct 26 22:55:21 2019 +0100
[CRYPTUI] Sync with Wine Staging 4.18. CORE-16441
---
dll/win32/cryptui/main.c | 117 ++++++++++++++++++++++++++---------------------
media/doc/README.WINE | 2 +-
2 files changed, 65 insertions(+), 54 deletions(-)
diff --git a/dll/win32/cryptui/main.c b/dll/win32/cryptui/main.c
index 41938f5177b..3d27d82e64f 100644
--- a/dll/win32/cryptui/main.c
+++ b/dll/win32/cryptui/main.c
@@ -16,9 +16,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "config.h"
-
#include <stdarg.h>
+#include <wchar.h>
#define COBJMACROS
#define NONAMELESSUNION
@@ -40,7 +39,6 @@
#include "hlink.h"
#include "winreg.h"
#include "wine/debug.h"
-#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL(cryptui);
@@ -895,11 +893,11 @@ static void get_cert_usages(PCCERT_CONTEXT cert, LPWSTR *str)
CRYPT_ENHKEY_USAGE_OID_GROUP_ID);
if (info)
- len += strlenW(info->pwszName);
+ len += lstrlenW(info->pwszName);
else
len += strlen(usage->rgpszUsageIdentifier[i]);
if (i < usage->cUsageIdentifier - 1)
- len += strlenW(commaSpace);
+ len += lstrlenW(commaSpace);
}
*str = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
if (*str)
@@ -913,8 +911,8 @@ static void get_cert_usages(PCCERT_CONTEXT cert, LPWSTR *str)
if (info)
{
- strcpyW(ptr, info->pwszName);
- ptr += strlenW(info->pwszName);
+ lstrcpyW(ptr, info->pwszName);
+ ptr += lstrlenW(info->pwszName);
}
else
{
@@ -926,8 +924,8 @@ static void get_cert_usages(PCCERT_CONTEXT cert, LPWSTR *str)
}
if (i < usage->cUsageIdentifier - 1)
{
- strcpyW(ptr, commaSpace);
- ptr += strlenW(commaSpace);
+ lstrcpyW(ptr, commaSpace);
+ ptr += lstrlenW(commaSpace);
}
}
*ptr = 0;
@@ -1087,7 +1085,7 @@ static int cert_mgr_sort_by_text(HWND lv, int col, int index1, int
index2)
item.pszText = buf2;
item.iItem = index2;
SendMessageW(lv, LVM_GETITEMW, 0, (LPARAM)&item);
- return strcmpW(buf1, buf2);
+ return lstrcmpW(buf1, buf2);
}
static int CALLBACK cert_mgr_sort_by_subject(LPARAM lp1, LPARAM lp2, LPARAM lp)
@@ -1389,12 +1387,12 @@ static BOOL WINAPI enum_store_callback(const void *pvSystemStore,
{
storeInfo->type = SystemStore;
storeInfo->u.name = HeapAlloc(GetProcessHeap(), 0,
- (strlenW(pvSystemStore) + 1) * sizeof(WCHAR));
+ (lstrlenW(pvSystemStore) + 1) * sizeof(WCHAR));
if (storeInfo->u.name)
{
tvis.u.item.mask |= TVIF_PARAM;
tvis.u.item.lParam = (LPARAM)storeInfo;
- strcpyW(storeInfo->u.name, pvSystemStore);
+ lstrcpyW(storeInfo->u.name, pvSystemStore);
}
else
{
@@ -1994,7 +1992,7 @@ static void add_local_oid_text_to_control(HWND text, LPCSTR oid)
len = LoadStringW(hInstance, entry->id, (LPWSTR)&str, 0);
ptr = str;
do {
- if ((linebreak = memchrW(ptr, '\n', len)))
+ if ((linebreak = wmemchr(ptr, '\n', len)))
{
WCHAR copy[MAX_STRING_LEN];
@@ -2247,9 +2245,9 @@ static WCHAR *get_user_notice_from_qualifier(const CRYPT_OBJID_BLOB
*qualifier)
&qualifierValue, &size))
{
str = HeapAlloc(GetProcessHeap(), 0,
- (strlenW(qualifierValue->pszDisplayText) + 1) * sizeof(WCHAR));
+ (lstrlenW(qualifierValue->pszDisplayText) + 1) * sizeof(WCHAR));
if (str)
- strcpyW(str, qualifierValue->pszDisplayText);
+ lstrcpyW(str, qualifierValue->pszDisplayText);
LocalFree(qualifierValue);
}
return str;
@@ -2459,7 +2457,7 @@ static LRESULT CALLBACK user_notice_dlg_proc(HWND hwnd, UINT msg,
WPARAM wp,
text = GetDlgItem(hwnd, IDC_USERNOTICE);
issuerStatement = (struct IssuerStatement *)lp;
add_unformatted_text_to_control(text, issuerStatement->userNotice,
- strlenW(issuerStatement->userNotice));
+ lstrlenW(issuerStatement->userNotice));
if (issuerStatement->cps)
SetWindowLongPtrW(hwnd, DWLP_USER, (LPARAM)issuerStatement->cps);
else
@@ -2588,7 +2586,7 @@ static WCHAR *field_format_version(PCCERT_CONTEXT cert)
WCHAR *buf = HeapAlloc(GetProcessHeap(), 0, 12 * sizeof(WCHAR));
if (buf)
- sprintfW(buf, fmt, cert->pCertInfo->dwVersion);
+ swprintf(buf, fmt, cert->pCertInfo->dwVersion);
return buf;
}
@@ -2603,7 +2601,7 @@ static WCHAR *format_hex_string(void *pb, DWORD cb)
WCHAR *ptr;
for (i = 0, ptr = buf; i < cb; i++, ptr += 3)
- sprintfW(ptr, fmt, ((BYTE *)pb)[i]);
+ swprintf(ptr, fmt, ((BYTE *)pb)[i]);
}
return buf;
}
@@ -2706,7 +2704,7 @@ static WCHAR *field_format_public_key(PCCERT_CONTEXT cert)
* good idea, but as this isn't a sentence fragment, it shouldn't
* be word-order dependent.
*/
- len = strlenW(fmt) + strlenW(oidInfo->pwszName) +
+ len = lstrlenW(fmt) + lstrlenW(oidInfo->pwszName) +
cert->pCertInfo->SubjectPublicKeyInfo.PublicKey.cbData * 8;
buf = HeapAlloc(GetProcessHeap(), 0, len * sizeof(*buf));
if (buf)
@@ -2898,7 +2896,7 @@ static WCHAR *field_format_extension_hex_with_ascii(const
CERT_EXTENSION *ext)
{
/* Output as hex bytes first */
for (j = i; j < min(i + 8, ext->Value.cbData); j++, ptr += 3)
- sprintfW(ptr, fmt, ext->Value.pbData[j]);
+ swprintf(ptr, fmt, ext->Value.pbData[j]);
/* Pad the hex output with spaces for alignment */
if (j == ext->Value.cbData && j % 8)
{
@@ -2907,15 +2905,15 @@ static WCHAR *field_format_extension_hex_with_ascii(const
CERT_EXTENSION *ext)
for (; j % 8; j++, ptr += ARRAY_SIZE(pad))
memcpy(ptr, pad, sizeof(pad));
}
- /* The last sprintfW included a space, so just insert one
+ /* The last swprintf included a space, so just insert one
* more space between the hex bytes and the ASCII output
*/
*ptr++ = ' ';
/* Output as ASCII bytes */
for (j = i; j < min(i + 8, ext->Value.cbData); j++, ptr++)
{
- if (isprintW(ext->Value.pbData[j]) &&
- !isspaceW(ext->Value.pbData[j]))
+ if (iswprint(ext->Value.pbData[j]) &&
+ !iswspace(ext->Value.pbData[j]))
*ptr = ext->Value.pbData[j];
else
*ptr = '.';
@@ -3502,7 +3500,7 @@ static void set_cert_string_property(PCCERT_CONTEXT cert, DWORD
prop,
CRYPT_DATA_BLOB blob;
blob.pbData = (BYTE *)str;
- blob.cbData = (strlenW(str) + 1) * sizeof(WCHAR);
+ blob.cbData = (lstrlenW(str) + 1) * sizeof(WCHAR);
CertSetCertificateContextProperty(cert, prop, 0, &blob);
}
else
@@ -3836,7 +3834,7 @@ static LRESULT CALLBACK detail_dlg_proc(HWND hwnd, UINT msg, WPARAM
wp,
*/
SendMessageW(valueCtl, EM_SETSEL, 0, -1);
add_unformatted_text_to_control(valueCtl, val,
- val ? strlenW(val) : 0);
+ val ? lstrlenW(val) : 0);
if (val != buf)
HeapFree(GetProcessHeap(), 0, val);
}
@@ -4931,7 +4929,7 @@ static WCHAR *make_import_file_filter(DWORD dwFlags)
(dwFlags & import_filters[i].allowFlags))
{
len = LoadStringW(hInstance, import_filters[i].id, (LPWSTR)&str, 0);
- totalLen += len + strlenW(import_filters[i].filter) + 2;
+ totalLen += len + lstrlenW(import_filters[i].filter) + 2;
}
}
filter = HeapAlloc(GetProcessHeap(), 0, totalLen * sizeof(WCHAR));
@@ -4950,8 +4948,8 @@ static WCHAR *make_import_file_filter(DWORD dwFlags)
memcpy(ptr, str, len * sizeof(WCHAR));
ptr += len;
*ptr++ = 0;
- strcpyW(ptr, import_filters[i].filter);
- ptr += strlenW(import_filters[i].filter) + 1;
+ lstrcpyW(ptr, import_filters[i].filter);
+ ptr += lstrlenW(import_filters[i].filter) + 1;
}
}
*ptr++ = 0;
@@ -5010,19 +5008,19 @@ static BOOL import_validate_filename(HWND hwnd, struct
ImportWizData *data,
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,
GetLastError(), 0, (LPWSTR) &msgBuf, 0, NULL);
fullError = HeapAlloc(GetProcessHeap(), 0,
- (strlenW(error) + strlenW(fileName) + strlenW(msgBuf) + 3)
+ (lstrlenW(error) + lstrlenW(fileName) + lstrlenW(msgBuf) + 3)
* sizeof(WCHAR));
if (fullError)
{
LPWSTR ptr = fullError;
- strcpyW(ptr, error);
- ptr += strlenW(error);
- strcpyW(ptr, fileName);
- ptr += strlenW(fileName);
+ lstrcpyW(ptr, error);
+ ptr += lstrlenW(error);
+ lstrcpyW(ptr, fileName);
+ ptr += lstrlenW(fileName);
*ptr++ = ':';
*ptr++ = '\n';
- strcpyW(ptr, msgBuf);
+ lstrcpyW(ptr, msgBuf);
MessageBoxW(hwnd, fullError, pTitle, MB_ICONERROR | MB_OK);
HeapFree(GetProcessHeap(), 0, fullError);
}
@@ -5994,7 +5992,7 @@ static LRESULT CALLBACK export_password_dlg_proc(HWND hwnd, UINT
msg,
(LPARAM)password);
SendMessageW(passwordConfirmEdit, WM_GETTEXT,
passwordConfirmLen + 1, (LPARAM)passwordConfirm);
- if (strcmpW(password, passwordConfirm))
+ if (lstrcmpW(password, passwordConfirm))
{
export_password_mismatch(hwnd, data);
SetWindowLongPtrW(hwnd, DWLP_MSGRESULT, 1);
@@ -6057,17 +6055,17 @@ static LPWSTR export_append_extension(const struct ExportWizData
*data,
extension = cer;
}
}
- dot = strrchrW(fileName, '.');
+ dot = wcsrchr(fileName, '.');
if (dot)
- appendExtension = strcmpiW(dot, extension) != 0;
+ appendExtension = wcsicmp(dot, extension) != 0;
else
appendExtension = TRUE;
if (appendExtension)
{
fileName = HeapReAlloc(GetProcessHeap(), 0, fileName,
- (strlenW(fileName) + strlenW(extension) + 1) * sizeof(WCHAR));
+ (lstrlenW(fileName) + lstrlenW(extension) + 1) * sizeof(WCHAR));
if (fileName)
- strcatW(fileName, extension);
+ lstrcatW(fileName, extension);
}
return fileName;
}
@@ -6128,19 +6126,19 @@ static BOOL export_validate_filename(HWND hwnd, struct
ExportWizData *data,
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,
GetLastError(), 0, (LPWSTR) &msgBuf, 0, NULL);
fullError = HeapAlloc(GetProcessHeap(), 0,
- (strlenW(error) + strlenW(fileName) + strlenW(msgBuf) + 3)
+ (lstrlenW(error) + lstrlenW(fileName) + lstrlenW(msgBuf) + 3)
* sizeof(WCHAR));
if (fullError)
{
LPWSTR ptr = fullError;
- strcpyW(ptr, error);
- ptr += strlenW(error);
- strcpyW(ptr, fileName);
- ptr += strlenW(fileName);
+ lstrcpyW(ptr, error);
+ ptr += lstrlenW(error);
+ lstrcpyW(ptr, fileName);
+ ptr += lstrlenW(fileName);
*ptr++ = ':';
*ptr++ = '\n';
- strcpyW(ptr, msgBuf);
+ lstrcpyW(ptr, msgBuf);
MessageBoxW(hwnd, fullError, pTitle, MB_ICONERROR | MB_OK);
HeapFree(GetProcessHeap(), 0, fullError);
}
@@ -6199,9 +6197,9 @@ static WCHAR *make_export_file_filter(DWORD exportFormat, DWORD
subjectChoice)
}
}
baseLen = LoadStringW(hInstance, baseID, (LPWSTR)&baseFilter, 0);
- totalLen += baseLen + strlenW(filterStr) + 2;
+ totalLen += baseLen + lstrlenW(filterStr) + 2;
allLen = LoadStringW(hInstance, IDS_IMPORT_FILTER_ALL, (LPWSTR)&all, 0);
- totalLen += allLen + strlenW(filter_all) + 2;
+ totalLen += allLen + lstrlenW(filter_all) + 2;
filter = HeapAlloc(GetProcessHeap(), 0, totalLen * sizeof(WCHAR));
if (filter)
{
@@ -6211,13 +6209,13 @@ static WCHAR *make_export_file_filter(DWORD exportFormat, DWORD
subjectChoice)
memcpy(ptr, baseFilter, baseLen * sizeof(WCHAR));
ptr += baseLen;
*ptr++ = 0;
- strcpyW(ptr, filterStr);
- ptr += strlenW(filterStr) + 1;
+ lstrcpyW(ptr, filterStr);
+ ptr += lstrlenW(filterStr) + 1;
memcpy(ptr, all, allLen * sizeof(WCHAR));
ptr += allLen;
*ptr++ = 0;
- strcpyW(ptr, filter_all);
- ptr += strlenW(filter_all) + 1;
+ lstrcpyW(ptr, filter_all);
+ ptr += lstrlenW(filter_all) + 1;
*ptr++ = 0;
}
return filter;
@@ -7550,8 +7548,21 @@ PCCERT_CONTEXT WINAPI
CryptUIDlgSelectCertificateFromStore(HCERTSTORE hCertStore
LPCWSTR pwszDisplayString,
DWORD dwDontUseColumn,
DWORD dwFlags, void
*pvReserved)
{
- FIXME("%p %p %s %s %d %d %p: stub\n", hCertStore, hwnd,
debugstr_w(pwszTitle), debugstr_w(pwszDisplayString), dwDontUseColumn, dwFlags,
pvReserved);
- return NULL;
+ CRYPTUI_SELECTCERTIFICATE_STRUCTW sc;
+
+ TRACE("%p %p %s %s %x %x %p\n", hCertStore, hwnd, debugstr_w(pwszTitle),
debugstr_w(pwszDisplayString), dwDontUseColumn, dwFlags, pvReserved);
+
+ memset(&sc, 0, sizeof(sc));
+
+ sc.dwSize = sizeof(sc);
+ sc.hwndParent = hwnd;
+ sc.dwFlags = dwFlags;
+ sc.szTitle = pwszTitle;
+ sc.szDisplayString = pwszDisplayString;
+ sc.dwDontUseColumn = dwDontUseColumn;
+ sc.cDisplayStores = 1;
+ sc.rghDisplayStores = &hCertStore;
+ return CryptUIDlgSelectCertificateW(&sc);
}
BOOL WINAPI CryptUIWizDigitalSign(DWORD flags, HWND parent, LPCWSTR title,
PCCRYPTUI_WIZ_DIGITAL_SIGN_INFO info,
diff --git a/media/doc/README.WINE b/media/doc/README.WINE
index 806eb9aec5d..c46f8b29eb1 100644
--- a/media/doc/README.WINE
+++ b/media/doc/README.WINE
@@ -63,7 +63,7 @@ dll/win32/crypt32 # Synced to WineStaging-4.0
dll/win32/cryptdlg # Synced to WineStaging-4.18
dll/win32/cryptdll # Synced to WineStaging-4.18
dll/win32/cryptnet # Synced to WineStaging-4.18
-dll/win32/cryptui # Synced to WineStaging-4.0
+dll/win32/cryptui # Synced to WineStaging-4.18
dll/win32/dbghelp # Synced to WineStaging-3.9
dll/win32/dciman32 # Synced to WineStaging-3.3
dll/win32/faultrep # Synced to WineStaging-2.9