#include "winbase.h"
#include "winnls.h"
#include "winuser.h"
-#include "undocuser.h"
#include "softpub.h"
#include "wingdi.h"
#include "richedit.h"
hInstance = hinstDLL;
DisableThreadLibraryCalls(hinstDLL);
break;
- case DLL_PROCESS_DETACH:
- break;
- default:
- break;
}
return TRUE;
}
{
if (comma)
*comma = 0;
- add_oid_to_usage(usage, ptr);
+ usage = add_oid_to_usage(usage, ptr);
}
}
return usage;
{
PCCRYPT_OID_INFO *ptr;
- for (ptr = usages; *ptr; ptr++)
+ for (ptr = usages; advancedUsage && *ptr; ptr++)
{
DWORD i;
BOOL disabled = FALSE;
(*ptr)->pszOID))
disabled = TRUE;
if (!disabled)
- add_oid_to_usage(advancedUsage,
+ advancedUsage = add_oid_to_usage(advancedUsage,
(LPSTR)(*ptr)->pszOID);
}
/* The individual strings are pointers to disabledUsagesStr,
break;
case LVN_ITEMCHANGED:
{
- NMITEMACTIVATE *nm;
+ WCHAR empty[] = { 0 };
+ NMITEMACTIVATE *nm = (NMITEMACTIVATE*)lp;
HWND lv = GetDlgItem(hwnd, IDC_MGR_CERTS);
+ int numSelected = SendMessageW(lv, LVM_GETSELECTEDCOUNT, 0, 0);
- nm = (NMITEMACTIVATE*)lp;
- if (nm->uNewState & LVN_ITEMACTIVATE)
- {
- int numSelected = SendMessageW(lv, LVM_GETSELECTEDCOUNT, 0, 0);
-
- EnableWindow(GetDlgItem(hwnd, IDC_MGR_EXPORT), numSelected > 0);
- EnableWindow(GetDlgItem(hwnd, IDC_MGR_REMOVE), numSelected > 0);
- EnableWindow(GetDlgItem(hwnd, IDC_MGR_VIEW), numSelected == 1);
- if (numSelected == 1)
- cert_mgr_show_cert_usages(hwnd, nm->iItem);
- }
+ EnableWindow(GetDlgItem(hwnd, IDC_MGR_EXPORT), numSelected > 0);
+ EnableWindow(GetDlgItem(hwnd, IDC_MGR_REMOVE), numSelected > 0);
+ EnableWindow(GetDlgItem(hwnd, IDC_MGR_VIEW), numSelected == 1);
+ if (numSelected == 1)
+ cert_mgr_show_cert_usages(hwnd, nm->iItem);
+ else
+ SendMessageW(GetDlgItem(hwnd, IDC_MGR_PURPOSES), WM_SETTEXT, 0,
+ (LPARAM)empty);
break;
}
case NM_DBLCLK:
case IDCANCEL:
free_certs(GetDlgItem(hwnd, IDC_MGR_CERTS));
close_stores(GetDlgItem(hwnd, IDC_MGR_STORES));
- close_stores(GetDlgItem(hwnd, IDC_MGR_STORES));
data = (struct CertMgrData *)GetWindowLongPtrW(hwnd, DWLP_USER);
ImageList_Destroy(data->imageList);
HeapFree(GetProcessHeap(), 0, data);
SetLastError(E_INVALIDARG);
return NULL;
}
- memcpy(&infoW, &info, sizeof(info));
+ memcpy(&infoW, info, sizeof(*info));
if (info->pszTitle)
{
len = MultiByteToWideChar(CP_ACP, 0, info->pszTitle, -1, NULL, 0);
static void add_icon_to_control(HWND hwnd, int id)
{
HRESULT hr;
- LPRICHEDITOLE richEditOle = NULL;
- LPOLEOBJECT object = NULL;
+ IRichEditOle *richEditOle = NULL;
+ IOleObject *object = NULL;
CLSID clsid;
LPOLECACHE oleCache = NULL;
FORMATETC formatEtc;
DWORD conn;
- LPDATAOBJECT dataObject = NULL;
+ IDataObject *dataObject = NULL;
HBITMAP bitmap = NULL;
- RECT rect;
STGMEDIUM stgm;
- LPOLECLIENTSITE clientSite = NULL;
+ IOleClientSite *clientSite = NULL;
REOBJECT reObject;
TRACE("(%p, %d)\n", hwnd, id);
LR_DEFAULTSIZE | LR_LOADTRANSPARENT);
if (!bitmap)
goto end;
- rect.left = rect.top = 0;
- rect.right = GetSystemMetrics(SM_CXICON);
- rect.bottom = GetSystemMetrics(SM_CYICON);
stgm.tymed = TYMED_GDI;
stgm.u.hBitmap = bitmap;
stgm.pUnkForRelease = NULL;
static struct OIDToString *findSupportedOID(LPCSTR oid)
{
- int indexHigh = sizeof(oidMap) / sizeof(oidMap[0]) - 1, indexLow = 0, i;
- struct OIDToString *ret = NULL;
+ int indexHigh = sizeof(oidMap) / sizeof(oidMap[0]) - 1, indexLow = 0;
- for (i = (indexLow + indexHigh) / 2; !ret && indexLow <= indexHigh;
- i = (indexLow + indexHigh) / 2)
+ while (indexLow <= indexHigh)
{
- int cmp;
-
- cmp = strcmp(oid, oidMap[i].oid);
- if (!cmp)
- ret = &oidMap[i];
- else if (cmp > 0)
+ int cmp, i = (indexLow + indexHigh) / 2;
+ if (!(cmp = strcmp(oid, oidMap[i].oid)))
+ return &oidMap[i];
+ if (cmp > 0)
indexLow = i + 1;
else
indexHigh = i - 1;
}
- return ret;
+ return NULL;
}
static void add_local_oid_text_to_control(HWND text, LPCSTR oid)
if (LoadStringW(hInstance, IDS_FIELD_PUBLIC_KEY_FORMAT, fmt,
sizeof(fmt) / sizeof(fmt[0])))
{
+ DWORD len;
+
/* Allocate the output buffer. Use the number of bytes in the
* public key as a conservative (high) estimate for the number of
* digits in its output.
* good idea, but as this isn't a sentence fragment, it shouldn't
* be word-order dependent.
*/
- buf = HeapAlloc(GetProcessHeap(), 0,
- (strlenW(fmt) + strlenW(oidInfo->pwszName) +
- cert->pCertInfo->SubjectPublicKeyInfo.PublicKey.cbData * 8)
- * sizeof(WCHAR));
+ len = strlenW(fmt) + strlenW(oidInfo->pwszName) +
+ cert->pCertInfo->SubjectPublicKeyInfo.PublicKey.cbData * 8;
+ buf = HeapAlloc(GetProcessHeap(), 0, len * sizeof(*buf));
if (buf)
- sprintfW(buf, fmt, oidInfo->pwszName,
- CertGetPublicKeyLength(X509_ASN_ENCODING,
- &cert->pCertInfo->SubjectPublicKeyInfo));
+ {
+ DWORD_PTR args[2];
+ args[0] = (DWORD_PTR)oidInfo->pwszName;
+ args[1] = CertGetPublicKeyLength(X509_ASN_ENCODING,
+ &cert->pCertInfo->SubjectPublicKeyInfo);
+ FormatMessageW(FORMAT_MESSAGE_FROM_STRING|FORMAT_MESSAGE_ARGUMENT_ARRAY,
+ fmt, 0, 0, buf, len, (__ms_va_list*)args);
+ }
}
}
return buf;
static void add_v1_fields(HWND hwnd, struct detail_data *data)
{
- int i;
+ unsigned int i;
PCCERT_CONTEXT cert = data->pCertViewInfo->pCertContext;
/* The last item in v1_fields is the public key, which is not in the loop
add_fields_func add;
};
-const struct selection_list_item listItems[] = {
+static const struct selection_list_item listItems[] = {
{ IDS_FIELDS_ALL, add_all_fields },
{ IDS_FIELDS_V1, add_v1_fields },
{ IDS_FIELDS_EXTENSIONS, add_all_extensions },
static void free_detail_fields(struct detail_data *data)
{
- DWORD i;
+ int i;
for (i = 0; i < data->cFields; i++)
HeapFree(GetProcessHeap(), 0, data->fields[i].detailed_value);
tvis.u.item.pszText = name;
tvis.u.item.state = TVIS_EXPANDED;
tvis.u.item.stateMask = TVIS_EXPANDED;
- if (i == 1 &&
- (provSigner->pChainContext->TrustStatus.dwErrorStatus &
+ if (i == 1 && (!provSigner->pChainContext ||
+ provSigner->pChainContext->TrustStatus.dwErrorStatus &
CERT_TRUST_IS_PARTIAL_CHAIN))
{
/* The root of the chain has a special case: if the chain is
static int CALLBACK cert_prop_sheet_proc(HWND hwnd, UINT msg, LPARAM lp)
{
RECT rc;
- POINT topLeft;
TRACE("(%p, %08x, %08lx)\n", hwnd, msg, lp);
case PSCB_INITIALIZED:
/* Get cancel button's position.. */
GetWindowRect(GetDlgItem(hwnd, IDCANCEL), &rc);
- topLeft.x = rc.left;
- topLeft.y = rc.top;
- ScreenToClient(hwnd, &topLeft);
+ MapWindowPoints( 0, hwnd, (POINT *)&rc, 2 );
/* hide the cancel button.. */
ShowWindow(GetDlgItem(hwnd, IDCANCEL), FALSE);
- /* get the OK button's size.. */
- GetWindowRect(GetDlgItem(hwnd, IDOK), &rc);
/* and move the OK button to the cancel button's original position. */
- MoveWindow(GetDlgItem(hwnd, IDOK), topLeft.x, topLeft.y,
- rc.right - rc.left, rc.bottom - rc.top, FALSE);
- GetWindowRect(GetDlgItem(hwnd, IDOK), &rc);
+ SetWindowPos(GetDlgItem(hwnd, IDOK), 0, rc.left, rc.top, 0, 0,
+ SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREDRAW );
break;
}
return 0;
}
/* Make a local copy in case we have to call WinVerifyTrust ourselves */
memcpy(&viewInfo, pCertViewInfo, sizeof(viewInfo));
- if (!viewInfo.u.hWVTStateData)
+ if (!pCertViewInfo->u.hWVTStateData)
{
memset(&wvt, 0, sizeof(wvt));
wvt.cbStruct = sizeof(wvt);
if (ret)
{
ret = show_cert_dialog(&viewInfo, provCert, pfPropertiesChanged);
- if (!viewInfo.u.hWVTStateData)
+ if (!pCertViewInfo->u.hWVTStateData)
{
wvt.dwStateAction = WTD_STATEACTION_CLOSE;
WinVerifyTrust(NULL, &generic_cert_verify, &wvt);
'p','7','b',0 };
static const WCHAR filter_all[] = { '*','.','*',0 };
-struct StringToFilter
+static struct StringToFilter
{
int id;
DWORD allowFlags;
data.autoDest = TRUE;
data.success = TRUE;
- memset(&pages, 0, sizeof(pages));
+ memset(pages, 0, sizeof(pages));
pages[nPages].dwSize = sizeof(pages[0]);
pages[nPages].hInstance = hInstance;
data.file = INVALID_HANDLE_VALUE;
data.success = FALSE;
- memset(&pages, 0, sizeof(pages));
+ memset(pages, 0, sizeof(pages));
pages[nPages].dwSize = sizeof(pages[0]);
pages[nPages].hInstance = hInstance;
}
return ret;
}
+
+BOOL WINAPI CryptUIDlgViewSignerInfoA(CRYPTUI_VIEWSIGNERINFO_STRUCTA *pcvsi)
+{
+ FIXME("%p: stub\n", pcvsi);
+ return FALSE;
+}
+
+PCCERT_CONTEXT WINAPI CryptUIDlgSelectCertificateW(PCCRYPTUI_SELECTCERTIFICATE_STRUCTW pcsc)
+{
+ FIXME("%p: stub\n", pcsc);
+ return NULL;
+}
+
+PCCERT_CONTEXT WINAPI CryptUIDlgSelectCertificateA(PCCRYPTUI_SELECTCERTIFICATE_STRUCTA pcsc)
+{
+ FIXME("%p: stub\n", pcsc);
+ return NULL;
+}
+
+PCCERT_CONTEXT WINAPI CryptUIDlgSelectCertificateFromStore(HCERTSTORE hCertStore, HWND hwnd, LPCWSTR pwszTitle,
+ 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;
+}
+
+BOOL WINAPI CryptUIWizDigitalSign(DWORD flags, HWND parent, LPCWSTR title, PCCRYPTUI_WIZ_DIGITAL_SIGN_INFO info,
+ PCCRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT *context)
+{
+ FIXME("%d %p %s %p %p: stub\n", flags, parent, debugstr_w(title), info, context);
+ return FALSE;
+}