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)"),

Reply via email to