Juan Lang : wininet: Implement ShowX509EncodedCertificate.

Alexandre Julliard julliard at winehq.org
Tue Nov 1 13:23:19 CDT 2011


Module: wine
Branch: master
Commit: 044f645477f2721cb5c9192b905a8353427702b0
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=044f645477f2721cb5c9192b905a8353427702b0

Author: Juan Lang <juan.lang at gmail.com>
Date:   Mon Oct 31 12:55:15 2011 -0700

wininet: 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;
 }




More information about the wine-cvs mailing list