From a4def5c093033ffe2fd645624235afaea8720f91 Mon Sep 17 00:00:00 2001 From: "Matthew W. S. Bell" Date: Wed, 16 Dec 2009 20:19:58 +0100 Subject: Bug #553057 - Show signer's information in a message window/preview --- mail/em-format-html-display.c | 8 ++++++ mail/em-format-html.c | 61 +++++++++++++++++++++++++++++++++++++++++-- mail/em-format-html.h | 2 ++ 3 files changed, 69 insertions(+), 2 deletions(-) diff --git a/mail/em-format-html-display.c b/mail/em-format-html-display.c index 95197077f6..c795929091 100644 --- a/mail/em-format-html-display.c +++ b/mail/em-format-html-display.c @@ -565,12 +565,20 @@ efhd_format_secure (EMFormat *emf, g_free (classid); if (valid->sign.status != CAMEL_CIPHER_VALIDITY_SIGN_NONE) { + gchar *signers; const gchar *desc; gint status; status = valid->sign.status; desc = smime_sign_table[status].shortdesc; + camel_stream_printf (stream, "%s", gettext (desc)); + + signers = em_format_html_format_cert_infos ((CamelCipherCertInfo *)valid->sign.signers.head); + if (signers && *signers) { + camel_stream_printf (stream, " (%s)", signers); + } + g_free (signers); } if (valid->encrypt.status != CAMEL_CIPHER_VALIDITY_ENCRYPT_NONE) { diff --git a/mail/em-format-html.c b/mail/em-format-html.c index 6fbc6079aa..86ad0a5701 100644 --- a/mail/em-format-html.c +++ b/mail/em-format-html.c @@ -1595,11 +1595,23 @@ efh_format_secure(EMFormat *emf, CamelStream *stream, CamelMimePart *part, Camel g_free(classid); if (valid->sign.status != CAMEL_CIPHER_VALIDITY_SIGN_NONE) { - camel_stream_printf(stream, "%s
", _(smime_sign_table[valid->sign.status].shortdesc)); + gchar *signers; + + camel_stream_printf (stream, "%s", _(smime_sign_table[valid->sign.status].shortdesc)); + + signers = em_format_html_format_cert_infos ((CamelCipherCertInfo *)valid->sign.signers.head); + if (signers && *signers) { + camel_stream_printf (stream, " (%s)", signers); + } + g_free (signers); } if (valid->encrypt.status != CAMEL_CIPHER_VALIDITY_ENCRYPT_NONE) { - camel_stream_printf(stream, "%s
", _(smime_encrypt_table[valid->encrypt.status].shortdesc)); + if (valid->sign.status != CAMEL_CIPHER_VALIDITY_SIGN_NONE) { + camel_stream_printf (stream, "
"); + } + + camel_stream_printf (stream, "%s", _(smime_encrypt_table[valid->encrypt.status].shortdesc)); } camel_stream_printf(stream, ""); @@ -2776,3 +2788,48 @@ efh_format_message(EMFormat *emf, CamelStream *stream, CamelMimePart *part, cons emf->valid = save; emf->valid_parent = save_parent; } + +gchar * +em_format_html_format_cert_infos (CamelCipherCertInfo *first_cinfo) +{ + GString *res = NULL; + CamelCipherCertInfo *cinfo; + + if (!first_cinfo) + return NULL; + + #define append(x) G_STMT_START { \ + if (!res) { \ + res = g_string_new (x); \ + } else { \ + g_string_append (res, x); \ + } \ + } G_STMT_END + + for (cinfo = first_cinfo; cinfo && cinfo->next; cinfo = cinfo->next) { + if (!cinfo->name && !cinfo->email) + continue; + + if (res) + append (", "); + + if (cinfo->name && *cinfo->name) { + append (cinfo->name); + + if (cinfo->email && *cinfo->email) { + append (" <"); + append (cinfo->email); + append (">"); + } + } else if (cinfo->email && *cinfo->email) { + append (cinfo->email); + } + } + + #undef append + + if (!res) + return NULL; + + return g_string_free (res, FALSE); +} diff --git a/mail/em-format-html.h b/mail/em-format-html.h index 9d96c4056c..bac45d8ecc 100644 --- a/mail/em-format-html.h +++ b/mail/em-format-html.h @@ -282,6 +282,8 @@ gboolean em_format_html_get_show_real_date(EMFormatHTML *efh); void em_format_html_set_show_real_date(EMFormatHTML *efh, gboolean show_real_date); +gchar * em_format_html_format_cert_infos (CamelCipherCertInfo *first_cinfo); + G_END_DECLS #endif /* EM_FORMAT_HTML_H */ -- cgit