summaryrefslogtreecommitdiffstats
path: root/engines/e_capi.c
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2008-06-25 10:43:07 +0000
committerDr. Stephen Henson <steve@openssl.org>2008-06-25 10:43:07 +0000
commita0f3679b52a803447acfd91d009df3fb3fbc1bb4 (patch)
treed60bb8c027804367db8356f4bf2d93301236a678 /engines/e_capi.c
parent8228fd89fc63ea766529075ac25628c47d4d5546 (diff)
Update from stable branch.
Diffstat (limited to 'engines/e_capi.c')
-rw-r--r--engines/e_capi.c29
1 files changed, 26 insertions, 3 deletions
diff --git a/engines/e_capi.c b/engines/e_capi.c
index c2e5e64458..7a7064c216 100644
--- a/engines/e_capi.c
+++ b/engines/e_capi.c
@@ -62,12 +62,27 @@
#ifdef OPENSSL_SYS_WIN32
#ifndef OPENSSL_NO_CAPIENG
+
#include <windows.h>
+
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0x0400
+#endif
+
#include <wincrypt.h>
#undef X509_EXTENSIONS
#undef X509_CERT_PAIR
+/* Definitions which may be missing from earlier version of headers */
+#ifndef CERT_STORE_OPEN_EXISTING_FLAG
+#define CERT_STORE_OPEN_EXISTING_FLAG 0x00004000
+#endif
+
+#ifndef CERT_STORE_CREATE_NEW_FLAG
+#define CERT_STORE_CREATE_NEW_FLAG 0x00002000
+#endif
+
#include <openssl/engine.h>
#include <openssl/pem.h>
#include <openssl/x509v3.h>
@@ -1670,8 +1685,14 @@ static int cert_select_simple(ENGINE *e, SSL *ssl, STACK_OF(X509) *certs)
* CryptUIDlgSelectCertificateFromStore() to produce a dialog box.
*/
-#include <PrSht.h>
-#include <cryptuiapi.h>
+/* Definitions which are in cryptuiapi.h but this is not present in older
+ * versions of headers.
+ */
+
+#ifndef CRYPTUI_SELECT_LOCATION_COLUMN
+#define CRYPTUI_SELECT_LOCATION_COLUMN 0x000000010
+#define CRYPTUI_SELECT_INTENDEDUSE_COLUMN 0x000000004
+#endif
#define dlg_title L"OpenSSL Application SSL Client Certificate Selection"
#define dlg_prompt L"Select a certificate to use for authentication"
@@ -1714,7 +1735,9 @@ static int cert_select_dialog(ENGINE *e, SSL *ssl, STACK_OF(X509) *certs)
}
}
- hwnd = GetActiveWindow();
+ hwnd = GetForegroundWindow();
+ if (!hwnd)
+ hwnd = GetActiveWindow();
if (!hwnd && ctx->getconswindow)
hwnd = ctx->getconswindow();
/* Call dialog to select one */