Juan Lang : cryptui: Show status for end cert in hierarchy page.

Alexandre Julliard julliard at winehq.org
Thu Dec 18 08:08:43 CST 2008


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Wed Dec 17 09:00:58 2008 -0800

cryptui: Show status for end cert in hierarchy page.

---

 dlls/cryptui/cryptui_En.rc |    5 +++++
 dlls/cryptui/cryptuires.h  |    5 +++++
 dlls/cryptui/main.c        |   33 ++++++++++++++++++++++++++++++++-
 3 files changed, 42 insertions(+), 1 deletions(-)

diff --git a/dlls/cryptui/cryptui_En.rc b/dlls/cryptui/cryptui_En.rc
index af1725e..08e79e6 100644
--- a/dlls/cryptui/cryptui_En.rc
+++ b/dlls/cryptui/cryptui_En.rc
@@ -34,6 +34,11 @@ STRINGTABLE DISCARDABLE
     IDS_ISSUER_HEADING "Issued by: "
     IDS_VALID_FROM "Valid from "
     IDS_VALID_TO " to "
+    IDS_CERTIFICATE_BAD_SIGNATURE "This certificate has an invalid signature."
+    IDS_CERTIFICATE_BAD_TIME "This certificate has expired or is not yet valid."
+    IDS_CERTIFICATE_BAD_TIMENEST "This certificate's validity period exceeds that of its issuer."
+    IDS_CERTIFICATE_REVOKED "This certificate was revoked by its issuer."
+    IDS_CERTIFICATE_VALID "This certificate is OK."
     IDS_FIELD "Field"
     IDS_VALUE "Value"
     IDS_FIELDS_ALL "<All>"
diff --git a/dlls/cryptui/cryptuires.h b/dlls/cryptui/cryptuires.h
index b8183ee..66206d0 100644
--- a/dlls/cryptui/cryptuires.h
+++ b/dlls/cryptui/cryptuires.h
@@ -31,6 +31,11 @@
 #define IDS_ISSUER_HEADING 1011
 #define IDS_VALID_FROM 1012
 #define IDS_VALID_TO 1013
+#define IDS_CERTIFICATE_BAD_SIGNATURE 1014
+#define IDS_CERTIFICATE_BAD_TIME 1015
+#define IDS_CERTIFICATE_BAD_TIMENEST 1016
+#define IDS_CERTIFICATE_REVOKED 1017
+#define IDS_CERTIFICATE_VALID 1018
 #define IDS_FIELD 1019
 #define IDS_VALUE 1020
 #define IDS_FIELDS_ALL 1021
diff --git a/dlls/cryptui/main.c b/dlls/cryptui/main.c
index 98ecad7..76273a2 100644
--- a/dlls/cryptui/main.c
+++ b/dlls/cryptui/main.c
@@ -1828,12 +1828,43 @@ static void show_cert_chain(HWND hwnd, struct hierarchy_data *data)
     }
 }
 
+static void set_certificate_status(HWND hwnd, CRYPT_PROVIDER_CERT *cert)
+{
+    /* Select all the text in the control, the next update will replace it */
+    SendMessageW(hwnd, EM_SETSEL, 0, -1);
+    /* Set the highest priority error messages first. */
+    if (!(cert->dwConfidence & CERT_CONFIDENCE_SIG))
+        add_string_resource_to_control(hwnd, IDS_CERTIFICATE_BAD_SIGNATURE);
+    else if (!(cert->dwConfidence & CERT_CONFIDENCE_TIME))
+        add_string_resource_to_control(hwnd, IDS_CERTIFICATE_BAD_TIME);
+    else if (!(cert->dwConfidence & CERT_CONFIDENCE_TIMENEST))
+        add_string_resource_to_control(hwnd, IDS_CERTIFICATE_BAD_TIMENEST);
+    else if (cert->dwRevokedReason)
+        add_string_resource_to_control(hwnd, IDS_CERTIFICATE_REVOKED);
+    else
+        add_string_resource_to_control(hwnd, IDS_CERTIFICATE_VALID);
+}
+
+static void set_certificate_status_for_end_cert(HWND hwnd,
+ PCCRYPTUI_VIEWCERTIFICATE_STRUCTW pCertViewInfo)
+{
+    HWND status = GetDlgItem(hwnd, IDC_CERTIFICATESTATUSTEXT);
+    CRYPT_PROVIDER_SGNR *provSigner = WTHelperGetProvSignerFromChain(
+     (CRYPT_PROVIDER_DATA *)pCertViewInfo->u.pCryptProviderData,
+     pCertViewInfo->idxSigner, pCertViewInfo->fCounterSigner,
+     pCertViewInfo->idxCounterSigner);
+    CRYPT_PROVIDER_CERT *provCert = WTHelperGetProvCertFromChain(provSigner,
+     pCertViewInfo->idxCert);
+
+    set_certificate_status(status, provCert);
+}
+
 static void show_cert_hierarchy(HWND hwnd, struct hierarchy_data *data)
 {
     /* Disable view certificate button until a certificate is selected */
     EnableWindow(GetDlgItem(hwnd, IDC_VIEWCERTIFICATE), FALSE);
     show_cert_chain(hwnd, data);
-    FIXME("show cert status\n");
+    set_certificate_status_for_end_cert(hwnd, data->pCertViewInfo);
 }
 
 static LRESULT CALLBACK hierarchy_dlg_proc(HWND hwnd, UINT msg, WPARAM wp,




More information about the wine-cvs mailing list