aboutsummaryrefslogtreecommitdiffstats
path: root/smime/gui/certificate-manager.c
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2012-12-12 02:48:07 +0800
committerMilan Crha <mcrha@redhat.com>2012-12-12 02:48:07 +0800
commit8a1eb1f24e2a4624d78d3eeb4ab563d9e48ec865 (patch)
treea1bc41f9d06c7206fc4ba9a217b356966a99a569 /smime/gui/certificate-manager.c
parentc18043684137440e5853d5c952f89751148b6c24 (diff)
downloadgsoc2013-evolution-8a1eb1f24e2a4624d78d3eeb4ab563d9e48ec865.tar
gsoc2013-evolution-8a1eb1f24e2a4624d78d3eeb4ab563d9e48ec865.tar.gz
gsoc2013-evolution-8a1eb1f24e2a4624d78d3eeb4ab563d9e48ec865.tar.bz2
gsoc2013-evolution-8a1eb1f24e2a4624d78d3eeb4ab563d9e48ec865.tar.lz
gsoc2013-evolution-8a1eb1f24e2a4624d78d3eeb4ab563d9e48ec865.tar.xz
gsoc2013-evolution-8a1eb1f24e2a4624d78d3eeb4ab563d9e48ec865.tar.zst
gsoc2013-evolution-8a1eb1f24e2a4624d78d3eeb4ab563d9e48ec865.zip
Use the same certificate-viewer as the trust-prompt from eds
This way it'll be possible to copy whole files if change in one of them will be done. A real code reuse, rather than copy, would be ideal, but the trust-prompt is just a module for evolution-user-prompter.
Diffstat (limited to 'smime/gui/certificate-manager.c')
-rw-r--r--smime/gui/certificate-manager.c33
1 files changed, 32 insertions, 1 deletions
diff --git a/smime/gui/certificate-manager.c b/smime/gui/certificate-manager.c
index 548c9c7d79..109bbba515 100644
--- a/smime/gui/certificate-manager.c
+++ b/smime/gui/certificate-manager.c
@@ -531,7 +531,13 @@ view_cert (GtkWidget *button,
-1);
if (cert) {
- GtkWidget *dialog = certificate_viewer_show (cert);
+ GtkWidget *dialog, *parent;
+
+ parent = gtk_widget_get_toplevel (button);
+ if (!parent || !GTK_IS_WINDOW (parent))
+ parent = NULL;
+
+ dialog = e_cert_manager_new_certificate_viewer ((GtkWindow *) parent, cert);
g_signal_connect (
dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
@@ -1107,3 +1113,28 @@ e_cert_manager_config_new (EPreferencesWindow *window)
return GTK_WIDGET (ecmc);
}
+
+GtkWidget *
+e_cert_manager_new_certificate_viewer (GtkWindow *parent,
+ ECert *cert)
+{
+ GtkWidget *dialog;
+ GList *chain, *citer;
+ GSList *issuers = NULL;
+
+ g_return_val_if_fail (cert != NULL, NULL);
+
+ chain = e_cert_get_issuers_chain (cert);
+ for (citer = chain; citer; citer = g_list_next (citer)) {
+ issuers = g_slist_append (issuers, e_cert_get_internal_cert (citer->data));
+ }
+
+ dialog = certificate_viewer_new ((GtkWindow *) parent,
+ e_cert_get_internal_cert (cert),
+ issuers);
+
+ g_list_free_full (chain, g_object_unref);
+ g_slist_free (issuers);
+
+ return dialog;
+}