* crypto: improved signature / verify output

This commit is contained in:
djcb
2012-09-19 11:36:02 +03:00
parent 7d8a58896e
commit 1ef9dae6bd
3 changed files with 52 additions and 32 deletions

View File

@ -215,10 +215,10 @@ get_digestkey_algo_name (GMimeDigestAlgo algo)
static char*
get_cert_data (GMimeCertificate *cert)
{
const char *email, *name, *digest_algo, *pubkey_algo,
const char /**email,*/ *name, *digest_algo, *pubkey_algo,
*keyid, *trust;
email = g_mime_certificate_get_email (cert);
/* email = g_mime_certificate_get_email (cert); */
name = g_mime_certificate_get_name (cert);
keyid = g_mime_certificate_get_key_id (cert);
@ -239,10 +239,11 @@ get_cert_data (GMimeCertificate *cert)
}
return g_strdup_printf (
"signed by: %s <%s>; "
"algos: <%s,%s>; key-id: %s; trust: %s",
name ? name : "?", email ? email : "?",
pubkey_algo, digest_algo, keyid, trust);
"signer:%s, key:%s (%s,%s), trust:%s",
name ? name : "?",
/* email ? email : "?", */
keyid, pubkey_algo, digest_algo,
trust);
}
@ -269,7 +270,7 @@ get_verdict_report (GMimeSignature *msig)
expires = (t == 0 || t == (time_t)-1) ? "?" : mu_date_str_s ("%x", t);
certdata = get_cert_data (g_mime_signature_get_certificate (msig));
report = g_strdup_printf ("status: %s; created: %s, expires: %s (%s)",
report = g_strdup_printf ("%s; created:%s, expires:%s, %s",
status, created, expires,
certdata ? certdata : "?");
g_free (certdata);
@ -287,7 +288,8 @@ get_status_report (GMimeSignatureList *sigs)
status = MU_MSG_PART_SIG_STATUS_GOOD; /* let's start positive! */
for (i = 0, report = NULL; i != g_mime_signature_list_length (sigs); ++i) {
for (i = 0, report = NULL; i != g_mime_signature_list_length (sigs);
++i) {
GMimeSignature *msig;
GMimeSignatureStatus sigstat;
@ -308,8 +310,10 @@ get_status_report (GMimeSignatureList *sigs)
}
rep = get_verdict_report (msig);
report = g_strdup_printf ("%s%s[%d] %s", report ? report : "",
report ? "; " : "", i, rep);
report = g_strdup_printf ("%s%s%d: %s",
report ? report : "",
report ? "; " : "", i + 1,
rep);
g_free (rep);
}

View File

@ -403,6 +403,7 @@ mu_cmd_remove (MuStore *store, MuConfig *opts, GError **err)
struct _VData {
MuMsgPartSigStatus combined_status;
char *report;
gboolean oneline;
};
typedef struct _VData VData;
@ -410,15 +411,23 @@ static void
each_sig (MuMsg *msg, MuMsgPart *part, VData *vdata)
{
MuMsgPartSigStatusReport *report;
report = part->sig_status_report;
if (!report)
return;
vdata->report = g_strdup_printf
("%s%s%s",
vdata->report ? vdata->report : "",
vdata->report ? "; " : "",
report->report);
if (vdata->oneline)
vdata->report = g_strdup_printf
("%s%s%s",
vdata->report ? vdata->report : "",
vdata->report ? "; " : "",
report->report);
else
vdata->report = g_strdup_printf
("%s%s\t%s",
vdata->report ? vdata->report : "",
vdata->report ? "\n" : "",
report->report);
if (vdata->combined_status == MU_MSG_PART_SIG_STATUS_BAD ||
vdata->combined_status == MU_MSG_PART_SIG_STATUS_ERROR)
@ -431,33 +440,36 @@ each_sig (MuMsg *msg, MuMsgPart *part, VData *vdata)
static void
print_verdict (VData *vdata, gboolean color)
{
char *str;
g_print ("verdict: ");
switch (vdata->combined_status) {
case MU_MSG_PART_SIG_STATUS_UNSIGNED:
str = g_strdup ("no signature found");
g_print ("%s", "no signature found");
break;
case MU_MSG_PART_SIG_STATUS_GOOD:
str = g_strdup_printf ("signature verified; %s",
vdata->report);
color_maybe (MU_COLOR_GREEN);
g_print ("%s", "signature(s) verified");
break;
case MU_MSG_PART_SIG_STATUS_BAD:
str = g_strdup_printf ("bad signature; %s",
vdata->report);
color_maybe (MU_COLOR_RED);
g_print ("%s", "bad signature");
break;
case MU_MSG_PART_SIG_STATUS_ERROR:
str = g_strdup_printf ("verification failed; %s",
vdata->report);
color_maybe (MU_COLOR_RED);
g_print ("%s", "verification failed");
break;
case MU_MSG_PART_SIG_STATUS_FAIL:
str = g_strdup ("error in verification process");
color_maybe(MU_COLOR_RED);
g_print ("%s", "error in verification process");
break;
default: g_return_if_reached ();
}
print_field ("verdict", str, color);
g_free (str);
color_maybe (MU_COLOR_DEFAULT);
if (vdata->report)
g_print ("%s%s\n",
(vdata->oneline) ? ";" : "\n",
vdata->report);
}
@ -483,8 +495,11 @@ mu_cmd_verify (MuConfig *opts, GError **err)
return MU_ERROR;
msgopts = mu_config_get_msg_options (opts) | MU_MSG_OPTION_VERIFY;
vdata.report = NULL;
vdata.combined_status = MU_MSG_PART_SIG_STATUS_UNSIGNED;
vdata.oneline = FALSE;
mu_msg_part_foreach (msg, msgopts,
(MuMsgPartForeachFunc)each_sig, &vdata);

View File

@ -62,7 +62,7 @@ toggle between long/short display by klicking / M-RET on the
contact."
:type 'boolean
:group 'mu4e-view)
(make-obsolete-variable 'mu4e-view-wrap-lines nil "0.9.9-dev7")
(make-obsolete-variable 'mu4e-view-hide-cited nil "0.9.9-dev7")
@ -71,7 +71,7 @@ contact."
`format-time-string'."
:type 'string
:group 'mu4e-view)
(defcustom mu4e-view-image-max-width 800
"The maximum width for images to display; this is only effective
if you're using an emacs with Imagemagick support, and
@ -772,7 +772,7 @@ N (prefix argument), to the Nth previous header."
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Interactive functions
(defun mu4e-view-toggle-hide-cited ()
"Toggle hiding of cited lines in the message body."
(interactive)
@ -871,7 +871,7 @@ message-at-point if nil) to disk."
(mu4e~view-get-attach-num "Attachment to save" msg)))
(att (mu4e~view-get-attach msg attnum))
_ (path (concat mu4e-attachment-dir "/"))
(fname (plist-get att :name))
(fname (plist-get att :name))
(index (plist-get att :index))
(retry t))
(while retry
@ -1133,7 +1133,8 @@ or message-at-point."
(erase-buffer)
(insert output)
(goto-char (point-min))
(local-set-key "q" 'kill-buffer-and-window)))
(local-set-key "q" 'kill-buffer-and-window))
(setq buffer-read-only t))
(select-window win)))