wininet: Implement ShowX509EncodedCertificate

Juan Lang juan.lang at gmail.com
Mon Oct 31 14:56:10 CDT 2011


>From the "why not" department.
--Juan
-------------- next part --------------
From a1011702e801189943804f96ddc30283b4746848 Mon Sep 17 00:00:00 2001
From: Juan Lang <juan.lang at gmail.com>
Date: Mon, 31 Oct 2011 12:55:15 -0700
Subject: [PATCH 5/5] Implement ShowX509EncodedCertificate

---
 dlls/wininet/Makefile.in |    2 +-
 dlls/wininet/http.c      |   24 ++++++++++++++++++++++--
 2 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/dlls/wininet/Makefile.in b/dlls/wininet/Makefile.in
index 1e705a3..f3710f3 100644
--- a/dlls/wininet/Makefile.in
+++ b/dlls/wininet/Makefile.in
@@ -2,7 +2,7 @@ EXTRADEFS = -D_WINX32_
 MODULE    = wininet.dll
 IMPORTLIB = wininet
 IMPORTS   = mpr shlwapi shell32 user32 advapi32
-DELAYIMPORTS = secur32 crypt32
+DELAYIMPORTS = secur32 crypt32 cryptui
 EXTRALIBS = @SOCKETLIBS@ @ZLIB@
 
 C_SRCS = \
diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index 70d5f2e..1847820 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -65,6 +65,8 @@
 #include "shlwapi.h"
 #include "sspi.h"
 #include "wincrypt.h"
+#include "winuser.h"
+#include "cryptuiapi.h"
 
 #include "internet.h"
 #include "wine/debug.h"
@@ -6077,6 +6079,24 @@ BOOL WINAPI InternetShowSecurityInfoByURLW(LPCWSTR url, HWND window)
  */
 DWORD WINAPI ShowX509EncodedCertificate(HWND parent, LPBYTE cert, DWORD len)
 {
-   FIXME("stub: %p %p %u\n", parent, cert, len);
-   return ERROR_CALL_NOT_IMPLEMENTED;
+    PCCERT_CONTEXT certContext = CertCreateCertificateContext(X509_ASN_ENCODING,
+        cert, len);
+    DWORD ret;
+
+    if (certContext)
+    {
+        CRYPTUI_VIEWCERTIFICATE_STRUCTW view;
+
+        memset(&view, 0, sizeof(view));
+        view.hwndParent = parent;
+        view.pCertContext = certContext;
+        if (CryptUIDlgViewCertificateW(&view, NULL))
+            ret = ERROR_SUCCESS;
+        else
+            ret = GetLastError();
+        CertFreeCertificateContext(certContext);
+    }
+    else
+        ret = GetLastError();
+    return ret;
 }
-- 
1.7.3.1


More information about the wine-patches mailing list