]> granicus.if.org Git - mutt/commitdiff
Fix compilation without deprecated OpenSSL 1.1 APIs
authorRosen Penev <rosenp@gmail.com>
Mon, 3 Dec 2018 00:46:28 +0000 (16:46 -0800)
committerKevin McCarthy <kevin@8t8.us>
Fri, 21 Dec 2018 02:48:04 +0000 (18:48 -0800)
mutt_ssl.c

index 309394bc4ef697788fc2f6fe46e0e241cbacec97..37e5471c1768fd72cee2c4467c73dab072d5a825 100644 (file)
 #include <openssl/rand.h>
 #include <openssl/evp.h>
 
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+#define X509_get0_notBefore X509_get_notBefore
+#define X509_get0_notAfter X509_get_notAfter
+#define X509_getm_notBefore X509_get_notBefore
+#define X509_getm_notAfter X509_get_notAfter
+#define X509_STORE_CTX_get0_chain X509_STORE_CTX_get_chain
+#endif
+
 #undef _
 
 #include <string.h>
@@ -121,8 +129,8 @@ static int ssl_load_certificates (SSL_CTX *ctx)
 
   while (NULL != PEM_read_X509 (fp, &cert, NULL, NULL))
   {
-    if ((X509_cmp_current_time (X509_get_notBefore (cert)) >= 0) ||
-        (X509_cmp_current_time (X509_get_notAfter (cert)) <= 0))
+    if ((X509_cmp_current_time (X509_get0_notBefore (cert)) >= 0) ||
+        (X509_cmp_current_time (X509_get0_notAfter (cert)) <= 0))
     {
       dprint (2, (debugfile, "ssl_load_certificates: filtering expired cert: %s\n",
               X509_NAME_oneline (X509_get_subject_name (cert), buf, sizeof (buf))));
@@ -331,10 +339,12 @@ static int ssl_init (void)
     }
   }
 
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
   /* I don't think you can do this just before reading the error. The call
    * itself might clobber the last SSL error. */
   SSL_load_error_strings();
   SSL_library_init();
+#endif
   init_complete = 1;
   return 0;
 }
@@ -811,7 +821,7 @@ static int check_certificate_expiration (X509 *peercert, int silent)
 {
   if (option (OPTSSLVERIFYDATES) != MUTT_NO)
   {
-    if (X509_cmp_current_time (X509_get_notBefore (peercert)) >= 0)
+    if (X509_cmp_current_time (X509_get0_notBefore (peercert)) >= 0)
     {
       if (!silent)
       {
@@ -821,7 +831,7 @@ static int check_certificate_expiration (X509 *peercert, int silent)
       }
       return 0;
     }
-    if (X509_cmp_current_time (X509_get_notAfter (peercert)) <= 0)
+    if (X509_cmp_current_time (X509_get0_notAfter (peercert)) <= 0)
     {
       if (!silent)
       {
@@ -1069,7 +1079,7 @@ static int ssl_verify_callback (int preverify_ok, X509_STORE_CTX *ctx)
 
   cert = X509_STORE_CTX_get_current_cert (ctx);
   pos = X509_STORE_CTX_get_error_depth (ctx);
-  len = sk_X509_num (X509_STORE_CTX_get_chain (ctx));
+  len = sk_X509_num (X509_STORE_CTX_get0_chain (ctx));
 
   dprint (1, (debugfile,
               "ssl_verify_callback: checking cert chain entry %s (preverify: %d skipmode: %d)\n",
@@ -1198,9 +1208,9 @@ static int interactive_check_cert (X509 *cert, int idx, int len, SSL *ssl, int a
   row++;
   snprintf (menu->dialog[row++], SHORT_STRING, "%s", _("This certificate is valid"));
   snprintf (menu->dialog[row++], SHORT_STRING, _("   from %s"),
-      asn1time_to_string (X509_get_notBefore (cert)));
+      asn1time_to_string (X509_getm_notBefore (cert)));
   snprintf (menu->dialog[row++], SHORT_STRING, _("     to %s"),
-      asn1time_to_string (X509_get_notAfter (cert)));
+      asn1time_to_string (X509_getm_notAfter (cert)));
 
   row++;
   buf[0] = '\0';