From c2883ebeaf7c9c366bd011ff845296ceb47c2828 Mon Sep 17 00:00:00 2001 From: Christoph Hohmann Date: Mon, 10 Nov 2003 19:22:14 +0000 Subject: [PATCH] 0.9.6claws72 * src/mimeview.c * src/pgpmime.c * src/privacy.[ch] * src/sgpgme.[ch] * src/textview.[ch] o add code to view full signature info o do automatic signature checks --- ChangeLog.claws | 12 +++++++++++- configure.ac | 2 +- src/mimeview.c | 14 ++++++++++++++ src/pgpmime.c | 17 ++++++++++++++++- src/privacy.c | 19 +++++++++++++++++++ src/privacy.h | 1 + src/sgpgme.c | 5 +++++ src/sgpgme.h | 2 ++ src/textview.c | 17 ++++++++++++++++- src/textview.h | 2 ++ 10 files changed, 87 insertions(+), 4 deletions(-) diff --git a/ChangeLog.claws b/ChangeLog.claws index 7e2d0b0b2..c36368268 100644 --- a/ChangeLog.claws +++ b/ChangeLog.claws @@ -1,4 +1,14 @@ -2003-11-01 [alfons] 0.9.6claws71 +2003-11-10 [christoph] 0.9.6claws72 + + * src/mimeview.c + * src/pgpmime.c + * src/privacy.[ch] + * src/sgpgme.[ch] + * src/textview.[ch] + o add code to view full signature info + o do automatic signature checks + +2003-11-10 [alfons] 0.9.6claws71 * src/summaryview.c don't crash when gtkut_font_load() returns invalid font (has diff --git a/configure.ac b/configure.ac index ef8fb415e..dad22ad73 100644 --- a/configure.ac +++ b/configure.ac @@ -11,7 +11,7 @@ MINOR_VERSION=9 MICRO_VERSION=6 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=71 +EXTRA_VERSION=72 if test $EXTRA_VERSION -eq 0; then VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}claws else diff --git a/src/mimeview.c b/src/mimeview.c index 68b206b0c..937277d2b 100644 --- a/src/mimeview.c +++ b/src/mimeview.c @@ -615,6 +615,7 @@ void mimeview_clear(MimeView *mimeview) } static void check_signature_cb(GtkWidget *widget, gpointer user_data); +static void display_full_info_cb(GtkWidget *widget, gpointer user_data); static void update_signature_noticeview(MimeView *mimeview, MimeInfo *mimeinfo) { @@ -630,6 +631,8 @@ static void update_signature_noticeview(MimeView *mimeview, MimeInfo *mimeinfo) icon = STOCK_PIXMAP_PRIVACY_SIGNED; break; case SIGNATURE_OK: + button_text = _("Full info"); + func = display_full_info_cb; icon = STOCK_PIXMAP_PRIVACY_PASSED; break; case SIGNATURE_WARN: @@ -669,6 +672,17 @@ static void check_signature_cb(GtkWidget *widget, gpointer user_data) update_signature_noticeview(mimeview, mimeinfo); } +static void display_full_info_cb(GtkWidget *widget, gpointer user_data) +{ + MimeView *mimeview = (MimeView *) user_data; + MimeInfo *mimeinfo = mimeview_get_selected_part(mimeview); + gchar *siginfo; + + siginfo = privacy_mimeinfo_sig_info_full(mimeinfo); + textview_set_text(mimeview->textview, siginfo); + g_free(siginfo); +} + static void mimeview_selected(GtkCTree *ctree, GtkCTreeNode *node, gint column, MimeView *mimeview) { diff --git a/src/pgpmime.c b/src/pgpmime.c index c4d6f4486..55f0a8515 100644 --- a/src/pgpmime.c +++ b/src/pgpmime.c @@ -32,6 +32,7 @@ #include "procmime.h" #include "pgpmime.h" #include "sgpgme.h" +#include "prefs_common.h" typedef struct _PrivacyDataPGP PrivacyDataPGP; @@ -47,6 +48,8 @@ struct _PrivacyDataPGP static PrivacySystem pgpmime_system; +static gint pgpmime_check_signature(MimeInfo *mimeinfo); + static PrivacyDataPGP *pgpmime_new_privacydata() { PrivacyDataPGP *data; @@ -112,6 +115,9 @@ static gboolean pgpmime_is_signed(MimeInfo *mimeinfo) } data->done_sigtest = TRUE; data->is_signed = TRUE; + + if (prefs_common.auto_check_signatures) + pgpmime_check_signature(mimeinfo); return TRUE; } @@ -193,6 +199,15 @@ static gchar *pgpmime_get_sig_info_short(MimeInfo *mimeinfo) return sgpgme_sigstat_info_short(data->ctx, data->sigstatus); } +static gchar *pgpmime_get_sig_info_full(MimeInfo *mimeinfo) +{ + PrivacyDataPGP *data = (PrivacyDataPGP *) mimeinfo->privacy; + + g_return_val_if_fail(data != NULL, g_strdup("Error")); + + return sgpgme_sigstat_info_full(data->ctx, data->sigstatus); +} + static PrivacySystem pgpmime_system = { "PGP/Mime", /* name */ @@ -202,7 +217,7 @@ static PrivacySystem pgpmime_system = { pgpmime_check_signature, /* check_signature(MimeInfo *) */ pgpmime_get_sig_status, /* get_sig_status(MimeInfo *) */ pgpmime_get_sig_info_short, /* get_sig_info_short(MimeInfo *) */ - NULL, /* get_sig_info_full(MimeInfo *) */ + pgpmime_get_sig_info_full, /* get_sig_info_full(MimeInfo *) */ /* NOT YET */ NULL, /* is_encrypted(MimeInfo *) */ diff --git a/src/privacy.c b/src/privacy.c index 13059c722..04ec5cacf 100644 --- a/src/privacy.c +++ b/src/privacy.c @@ -123,6 +123,25 @@ gchar *privacy_mimeinfo_sig_info_short(MimeInfo *mimeinfo) return system->get_sig_info_short(mimeinfo); } +gchar *privacy_mimeinfo_sig_info_full(MimeInfo *mimeinfo) +{ + PrivacySystem *system; + + g_return_val_if_fail(mimeinfo != NULL, NULL); + + if (mimeinfo->privacy == NULL) + privacy_mimeinfo_is_signed(mimeinfo); + + if (mimeinfo->privacy == NULL) + return g_strdup(_("No signature found")); + + system = mimeinfo->privacy->system; + if (system->get_sig_info_full == NULL) + return g_strdup(_("No information available")); + + return system->get_sig_info_full(mimeinfo); +} + gboolean privacy_mimeinfo_is_encrypted(MimeInfo *mimeinfo) { g_return_val_if_fail(mimeinfo != NULL, FALSE); diff --git a/src/privacy.h b/src/privacy.h index 583665c1d..c4bdaa1c8 100644 --- a/src/privacy.h +++ b/src/privacy.h @@ -44,6 +44,7 @@ gboolean privacy_mimeinfo_is_signed (MimeInfo *); gint privacy_mimeinfo_check_signature (MimeInfo *); SignatureStatus privacy_mimeinfo_get_sig_status (MimeInfo *); gchar *privacy_mimeinfo_sig_info_short (MimeInfo *); +gchar *privacy_mimeinfo_sig_info_full (MimeInfo *); #if 0 /* NOT YET */ gboolean privacy_mimeinfo_is_encrypted (MimeInfo *); diff --git a/src/sgpgme.c b/src/sgpgme.c index 5098be048..7fb63768f 100644 --- a/src/sgpgme.c +++ b/src/sgpgme.c @@ -136,6 +136,11 @@ gchar *sgpgme_sigstat_info_short(GpgmeCtx ctx, GpgmeSigStat status) return g_strdup(_("Error")); } +gchar *sgpgme_sigstat_info_full(GpgmeCtx ctx, GpgmeSigStat status) +{ + return g_strdup(_("Todo")); +} + void sgpgme_init() { if (gpgme_engine_check_version(GPGME_PROTOCOL_OpenPGP) != diff --git a/src/sgpgme.h b/src/sgpgme.h index 37d3dd671..021b45688 100644 --- a/src/sgpgme.h +++ b/src/sgpgme.h @@ -34,5 +34,7 @@ SignatureStatus sgpgme_sigstat_gpgme_to_privacy (GpgmeSigStat status); gchar *sgpgme_sigstat_info_short (GpgmeCtx ctx, GpgmeSigStat status); +gchar *sgpgme_sigstat_info_full (GpgmeCtx ctx, + GpgmeSigStat status); #endif /* SGPGME_H */ diff --git a/src/textview.c b/src/textview.c index 7a211fc8f..3c0d6f57b 100644 --- a/src/textview.c +++ b/src/textview.c @@ -503,7 +503,7 @@ static void recursive_add_parts(TextView *textview, GNode *node) /* text/plain : score 3 - text/* : score 2 + text/ * : score 2 other : score 1 */ prefered_body = NULL; @@ -1314,6 +1314,21 @@ void textview_set_font(TextView *textview, const gchar *codeset) spacingfont = gdk_font_load("-*-*-medium-r-normal--6-*"); } +void textview_set_text(TextView *textview, const gchar *text) +{ + GtkSText *stext; + + g_return_if_fail(textview != NULL); + g_return_if_fail(text != NULL); + + textview_clear(textview); + + stext = GTK_STEXT(textview->text); + gtk_stext_freeze(stext); + gtk_stext_insert(stext, textview->msgfont, NULL, NULL, text, strlen(text)); + gtk_stext_thaw(stext); +} + enum { H_DATE = 0, diff --git a/src/textview.h b/src/textview.h index f786d7e89..48dd20d45 100644 --- a/src/textview.h +++ b/src/textview.h @@ -80,6 +80,8 @@ void textview_set_all_headers (TextView *textview, gboolean all_headers); void textview_set_font (TextView *textview, const gchar *codeset); +void textview_set_text (TextView *textview, + const gchar *text); void textview_set_position (TextView *textview, gint pos); void textview_scroll_one_line (TextView *textview, -- 2.25.1