https://gitlab.gnome.org/GNOME/vinagre/merge_requests/4.patch

From 141f9383129795da267a8111897fb3a0a324b080 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
Date: Thu, 22 Nov 2018 17:22:35 +0100
Subject: [PATCH 2/2] Handle new RDP certificate parameters

The freerdp2 certificate callbacks contains more parameters, let's
present some of them to user also.
---
 data/vinagre.ui               | 80 ++++++++++++++++++++++++++++++-----
 plugins/rdp/vinagre-rdp-tab.c | 26 +++++-------
 2 files changed, 80 insertions(+), 26 deletions(-)

diff --git a/data/vinagre.ui b/data/vinagre.ui
index 3135336..d7ce258 100644
--- a/data/vinagre.ui
+++ b/data/vinagre.ui
@@ -885,7 +885,7 @@ Do you trust the new certificate?</property>
                 <property name="vexpand">True</property>
                 <property name="xalign">0</property>
                 <property name="xpad">12</property>
-                <property name="label" translatable="yes" comments="Subject of the certificate.">Subject:</property>
+                <property name="label" translatable="yes" comments="Subject of the certificate.">New subject:</property>
               </object>
               <packing>
                 <property name="left_attach">0</property>
@@ -901,7 +901,7 @@ Do you trust the new certificate?</property>
                 <property name="vexpand">True</property>
                 <property name="xalign">0</property>
                 <property name="xpad">12</property>
-                <property name="label" translatable="yes" comments="Issuer of the certificate.">Issuer:</property>
+                <property name="label" translatable="yes" comments="Issuer of the certificate.">New issuer:</property>
               </object>
               <packing>
                 <property name="left_attach">0</property>
@@ -927,7 +927,55 @@ Do you trust the new certificate?</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="certificate_changed_subject">
+              <object class="GtkLabel">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="vexpand">True</property>
+                <property name="xalign">0</property>
+                <property name="xpad">12</property>
+                <property name="label" translatable="yes" comments="Subject of the old certificate.">Old subject:</property>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">3</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="vexpand">True</property>
+                <property name="xalign">0</property>
+                <property name="xpad">12</property>
+                <property name="label" translatable="yes" comments="Issuer of the old certificate.">Old issuer:</property>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">4</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="vexpand">True</property>
+                <property name="xalign">0</property>
+                <property name="xpad">12</property>
+                <property name="label" translatable="yes" comments="Fingerprint of the old certificate.">Old fingerprint:</property>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">5</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="certificate_changed_new_subject">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="hexpand">True</property>
@@ -942,7 +990,7 @@ Do you trust the new certificate?</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="certificate_changed_issuer">
+              <object class="GtkLabel" id="certificate_changed_new_issuer">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="hexpand">True</property>
@@ -972,21 +1020,33 @@ Do you trust the new certificate?</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="certificate_changed_old_fingerprint_label">
+              <object class="GtkLabel" id="certificate_changed_old_subject">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="vexpand">True</property>
+                <property name="hexpand">True</property>
                 <property name="xalign">0</property>
-                <property name="xpad">12</property>
-                <property name="label" translatable="yes" comments="Fingerprint of the old certificate.">Old fingerprint:</property>
               </object>
               <packing>
-                <property name="left_attach">0</property>
+                <property name="left_attach">1</property>
                 <property name="top_attach">3</property>
                 <property name="width">1</property>
                 <property name="height">1</property>
               </packing>
             </child>
+            <child>
+              <object class="GtkLabel" id="certificate_changed_old_issuer">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="hexpand">True</property>
+                <property name="xalign">0</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="top_attach">4</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
             <child>
               <object class="GtkLabel" id="certificate_changed_old_fingerprint">
                 <property name="visible">True</property>
@@ -997,7 +1057,7 @@ Do you trust the new certificate?</property>
               </object>
               <packing>
                 <property name="left_attach">1</property>
-                <property name="top_attach">3</property>
+                <property name="top_attach">5</property>
                 <property name="width">1</property>
                 <property name="height">1</property>
               </packing>
diff --git a/plugins/rdp/vinagre-rdp-tab.c b/plugins/rdp/vinagre-rdp-tab.c
index 28e3eb6..30a8698 100644
--- a/plugins/rdp/vinagre-rdp-tab.c
+++ b/plugins/rdp/vinagre-rdp-tab.c
@@ -917,6 +917,7 @@ frdp_certificate_verify (freerdp *instance,
   widget = GTK_WIDGET (gtk_builder_get_object (builder, "certificate_fingerprint"));
   gtk_label_set_text (GTK_LABEL (widget), fingerprint);
 
+  /* FIXME: Warn user in case of host_mismatch. */
 
   response = gtk_dialog_run (GTK_DIALOG (dialog));
   gtk_widget_hide (dialog);
@@ -939,7 +940,6 @@ frdp_changed_certificate_verify (freerdp *instance,
   GtkBuilder *builder;
   GtkWidget  *dialog;
   GtkWidget  *widget;
-  GtkWidget  *label;
   gint        response;
 
   builder = vinagre_utils_get_builder ();
@@ -950,29 +950,23 @@ frdp_changed_certificate_verify (freerdp *instance,
                           _("Connect"), GTK_RESPONSE_YES, NULL);
   gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES);
 
-  widget = GTK_WIDGET (gtk_builder_get_object (builder, "certificate_changed_subject"));
+  widget = GTK_WIDGET (gtk_builder_get_object (builder, "certificate_changed_new_subject"));
   gtk_label_set_text (GTK_LABEL (widget), subject);
 
-  widget = GTK_WIDGET (gtk_builder_get_object (builder, "certificate_changed_issuer"));
+  widget = GTK_WIDGET (gtk_builder_get_object (builder, "certificate_changed_new_issuer"));
   gtk_label_set_text (GTK_LABEL (widget), issuer);
 
   widget = GTK_WIDGET (gtk_builder_get_object (builder, "certificate_changed_new_fingerprint"));
   gtk_label_set_text (GTK_LABEL (widget), new_fingerprint);
 
-  widget = GTK_WIDGET (gtk_builder_get_object (builder, "certificate_changed_old_fingerprint"));
-  label = GTK_WIDGET (gtk_builder_get_object (builder, "certificate_changed_old_fingerprint_label"));
-  if (old_fingerprint != NULL && old_fingerprint[0] != '\0')
-    {
-      gtk_label_set_text (GTK_LABEL (widget), old_fingerprint);
-      gtk_widget_show (widget);
-      gtk_widget_show (label);
-    }
-  else
-    {
-      gtk_widget_hide (widget);
-      gtk_widget_hide (label);
-    }
+  widget = GTK_WIDGET (gtk_builder_get_object (builder, "certificate_changed_old_subject"));
+  gtk_label_set_text (GTK_LABEL (widget), old_subject);
 
+  widget = GTK_WIDGET (gtk_builder_get_object (builder, "certificate_changed_old_issuer"));
+  gtk_label_set_text (GTK_LABEL (widget), old_issuer);
+
+  widget = GTK_WIDGET (gtk_builder_get_object (builder, "certificate_changed_old_fingerprint"));
+  gtk_label_set_text (GTK_LABEL (widget), old_fingerprint);
 
   response = gtk_dialog_run (GTK_DIALOG (dialog));
   gtk_widget_hide (dialog);
-- 
2.18.1

