#include "procmime.h"
#include "pgpmime.h"
#include "sgpgme.h"
+#include "prefs_common.h"
typedef struct _PrivacyDataPGP PrivacyDataPGP;
static PrivacySystem pgpmime_system;
+static gint pgpmime_check_signature(MimeInfo *mimeinfo);
+
static PrivacyDataPGP *pgpmime_new_privacydata()
{
PrivacyDataPGP *data;
}
data->done_sigtest = TRUE;
data->is_signed = TRUE;
+
+ if (prefs_common.auto_check_signatures)
+ pgpmime_check_signature(mimeinfo);
return TRUE;
}
gpgme_data_release(textdata);
g_string_free(textstr, TRUE);
- printf("result: %d\n", data->sigstatus);
-
return 0;
}
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 gboolean pgpmime_is_encrypted(MimeInfo *mimeinfo)
+{
+ MimeInfo *tmpinfo;
+
+ if (mimeinfo->type != MIMETYPE_MULTIPART)
+ return FALSE;
+ if (g_strcasecmp(mimeinfo->subtype, "encrypted"))
+ return FALSE;
+ if (g_strcasecmp(procmime_mimeinfo_get_parameter(mimeinfo, "protocol"), "application/pgp-encrypted"))
+ return FALSE;
+ if (g_node_n_children(mimeinfo->node) != 2)
+ return FALSE;
+
+ tmpinfo = (MimeInfo *) g_node_nth_child(mimeinfo->node, 0)->data;
+ if (tmpinfo->type != MIMETYPE_APPLICATION)
+ return FALSE;
+ if (g_strcasecmp(tmpinfo->subtype, "pgp-encrypted"))
+ return FALSE;
+
+ tmpinfo = (MimeInfo *) g_node_nth_child(mimeinfo->node, 1)->data;
+ if (tmpinfo->type != MIMETYPE_APPLICATION)
+ return FALSE;
+ if (g_strcasecmp(tmpinfo->subtype, "octet-stream"))
+ return FALSE;
+
+ return TRUE;
+}
+
static PrivacySystem pgpmime_system = {
"PGP/Mime", /* name */
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 *) */
+ pgpmime_is_encrypted, /* is_encrypted(MimeInfo *) */
NULL, /* decrypt(MimeInfo *) */
};