changeset: 6934:cec61c6926ea user: Matthias Andree <matthias.and...@gmx.de> date: Sun Feb 12 13:03:03 2017 -0800 link: http://dev.mutt.org/hg/mutt/rev/cec61c6926ea
Show SHA1 fp in interactive cert check menu. While here, fix a few compiler warnings about sign mismatch in comparison. diffs (75 lines): diff -r 2350d7d61b34 -r cec61c6926ea mutt_ssl.c --- a/mutt_ssl.c Sun Feb 12 12:24:51 2017 -0800 +++ b/mutt_ssl.c Sun Feb 12 13:03:03 2017 -0800 @@ -25,6 +25,7 @@ #include <openssl/x509v3.h> #include <openssl/err.h> #include <openssl/rand.h> +#include <openssl/evp.h> #undef _ @@ -641,13 +642,13 @@ return ret; } -static void x509_fingerprint (char *s, int l, X509 * cert) +static void x509_fingerprint (char *s, int l, X509 * cert, const EVP_MD *(*hashfunc)(void)) { unsigned char md[EVP_MAX_MD_SIZE]; unsigned int n; int j; - if (!X509_digest (cert, EVP_md5 (), md, &n)) + if (!X509_digest (cert, hashfunc(), md, &n)) { snprintf (s, l, _("[unable to calculate]")); } @@ -1018,9 +1019,10 @@ char title[STRING]; MUTTMENU *menu = mutt_new_menu (MENU_GENERIC); int done, row, i; + unsigned u; FILE *fp; - menu->max = mutt_array_size (part) * 2 + 9; + menu->max = mutt_array_size (part) * 2 + 10; menu->dialog = (char **) safe_calloc (1, menu->max * sizeof (char *)); for (i = 0; i < menu->max; i++) menu->dialog[i] = (char *) safe_calloc (1, SHORT_STRING * sizeof (char)); @@ -1029,17 +1031,17 @@ strfcpy (menu->dialog[row], _("This certificate belongs to:"), SHORT_STRING); row++; x509_subject = X509_get_subject_name (cert); - for (i = 0; i < mutt_array_size (part); i++) + for (u = 0; u < mutt_array_size (part); u++) snprintf (menu->dialog[row++], SHORT_STRING, " %s", - x509_get_part (x509_subject, part[i])); + x509_get_part (x509_subject, part[u])); row++; strfcpy (menu->dialog[row], _("This certificate was issued by:"), SHORT_STRING); row++; x509_issuer = X509_get_issuer_name (cert); - for (i = 0; i < mutt_array_size (part); i++) + for (u = 0; u < mutt_array_size (part); u++) snprintf (menu->dialog[row++], SHORT_STRING, " %s", - x509_get_part (x509_issuer, part[i])); + x509_get_part (x509_issuer, part[u])); row++; snprintf (menu->dialog[row++], SHORT_STRING, _("This certificate is valid")); @@ -1050,8 +1052,11 @@ row++; buf[0] = '\0'; - x509_fingerprint (buf, sizeof (buf), cert); - snprintf (menu->dialog[row++], SHORT_STRING, _("Fingerprint: %s"), buf); + x509_fingerprint (buf, sizeof (buf), cert, EVP_sha1); + snprintf (menu->dialog[row++], SHORT_STRING, _("SHA1 Fingerprint: %s"), buf); + buf[0] = '\0'; + x509_fingerprint (buf, sizeof (buf), cert, EVP_md5); + snprintf (menu->dialog[row++], SHORT_STRING, _("MD5 Fingerprint: %s"), buf); snprintf (title, sizeof (title), _("SSL Certificate check (certificate %d of %d in chain)"),