msg-crypto: add support for more signature-status values
This commit is contained in:
@ -125,24 +125,56 @@ get_cert_data (GMimeCertificate *cert)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static char*
|
||||||
|
get_signature_status (GMimeSignatureStatus status)
|
||||||
|
{
|
||||||
|
size_t n;
|
||||||
|
GString *descr;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
GMimeSignatureStatus status;
|
||||||
|
const char *name;
|
||||||
|
} status_info[] = {
|
||||||
|
{ GMIME_SIGNATURE_STATUS_VALID, "valid" },
|
||||||
|
{ GMIME_SIGNATURE_STATUS_GREEN, "green" },
|
||||||
|
{ GMIME_SIGNATURE_STATUS_RED, "red" },
|
||||||
|
{ GMIME_SIGNATURE_STATUS_KEY_REVOKED, "key revoked" },
|
||||||
|
{ GMIME_SIGNATURE_STATUS_KEY_EXPIRED, "key expired" },
|
||||||
|
{ GMIME_SIGNATURE_STATUS_SIG_EXPIRED, "signature expired" },
|
||||||
|
{ GMIME_SIGNATURE_STATUS_KEY_MISSING, "key missing" },
|
||||||
|
{ GMIME_SIGNATURE_STATUS_CRL_MISSING, "crl missing" },
|
||||||
|
{ GMIME_SIGNATURE_STATUS_CRL_TOO_OLD, "crl too old" },
|
||||||
|
{ GMIME_SIGNATURE_STATUS_BAD_POLICY, "bad policy" },
|
||||||
|
{ GMIME_SIGNATURE_STATUS_SYS_ERROR, "system error" },
|
||||||
|
{ GMIME_SIGNATURE_STATUS_TOFU_CONFLICT, "tofu conflict " },
|
||||||
|
};
|
||||||
|
|
||||||
|
descr = g_string_new("");
|
||||||
|
for (n = 0; n != G_N_ELEMENTS(status_info); ++n) {
|
||||||
|
|
||||||
|
if (!(status & status_info[n].status))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
g_string_append_printf (descr, "%s%s",
|
||||||
|
descr->len > 0 ? ", " : "",
|
||||||
|
status_info[n].name);
|
||||||
|
}
|
||||||
|
|
||||||
|
return g_string_free (descr, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* get a human-readable report about the signature */
|
/* get a human-readable report about the signature */
|
||||||
static char*
|
static char*
|
||||||
get_verdict_report (GMimeSignature *msig)
|
get_verdict_report (GMimeSignature *msig)
|
||||||
{
|
{
|
||||||
time_t t;
|
time_t t;
|
||||||
const char *status, *created, *expires;
|
const char *created, *expires;
|
||||||
gchar *certdata, *report;
|
gchar *certdata, *report, *status;
|
||||||
GMimeSignatureStatus sigstat;
|
GMimeSignatureStatus sigstat;
|
||||||
|
|
||||||
sigstat = g_mime_signature_get_status (msig);
|
sigstat = g_mime_signature_get_status (msig);
|
||||||
if (sigstat & GMIME_SIGNATURE_STATUS_ERROR_MASK)
|
status = get_signature_status(sigstat);
|
||||||
status = "error";
|
|
||||||
else if (sigstat & GMIME_SIGNATURE_STATUS_RED)
|
|
||||||
status = "bad";
|
|
||||||
else if (sigstat & GMIME_SIGNATURE_STATUS_GREEN)
|
|
||||||
status = "good";
|
|
||||||
else
|
|
||||||
g_return_val_if_reached (NULL);
|
|
||||||
|
|
||||||
t = g_mime_signature_get_created (msig);
|
t = g_mime_signature_get_created (msig);
|
||||||
created = (t == 0 || t == (time_t)-1) ? "?" : mu_date_str_s ("%x", t);
|
created = (t == 0 || t == (time_t)-1) ? "?" : mu_date_str_s ("%x", t);
|
||||||
@ -155,6 +187,8 @@ get_verdict_report (GMimeSignature *msig)
|
|||||||
status, created, expires,
|
status, created, expires,
|
||||||
certdata ? certdata : "?");
|
certdata ? certdata : "?");
|
||||||
g_free (certdata);
|
g_free (certdata);
|
||||||
|
g_free (status);
|
||||||
|
|
||||||
return report;
|
return report;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user