OpenSSL: Debug output TLS 1.3 keying
authorJeremy Harris <jgh146exb@wizmail.org>
Sun, 30 Dec 2018 22:51:18 +0000 (22:51 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Sun, 10 Feb 2019 23:56:45 +0000 (23:56 +0000)
(cherry picked from commit 3c1f3b85aa4139ba062268ca958bab0dd0d64140)

doc/doc-txt/ChangeLog
src/src/tls-openssl.c

index 01c3a129ea73533ffca75e4ff4ec1036a644a6c0..9e91192cfea62ef7804b62a7ee83d0ee366a5c93 100644 (file)
@@ -8,7 +8,8 @@ options, and new features, see the NewStuff file next to this ChangeLog.
 Exim version 4.93
 -----------------
 
 Exim version 4.93
 -----------------
 
-     (none yet)
+JH/01 OpenSSL: With debug enabled output keying information sufficient, server
+      side, to decode a TLS 1.3 packet capture.
 
 
 Exim version 4.92
 
 
 Exim version 4.92
index f04cbf813957a704597d9925d21d49f5872f5a0b..045e30a85f0ff95375d93c77711f8fabd2fc6448 100644 (file)
@@ -91,6 +91,12 @@ change this guard and punt the issue for a while longer. */
 # endif
 #endif
 
 # endif
 #endif
 
+#ifndef LIBRESSL_VERSION_NUMBER
+# if OPENSSL_VERSION_NUMBER >= 0x010101000L
+#  define OPENSSL_HAVE_KEYLOG_CB
+# endif
+#endif
+
 #if !defined(EXIM_HAVE_OPENSSL_TLSEXT) && !defined(DISABLE_OCSP)
 # warning "OpenSSL library version too old; define DISABLE_OCSP in Makefile"
 # define DISABLE_OCSP
 #if !defined(EXIM_HAVE_OPENSSL_TLSEXT) && !defined(DISABLE_OCSP)
 # warning "OpenSSL library version too old; define DISABLE_OCSP in Makefile"
 # define DISABLE_OCSP
@@ -774,6 +780,12 @@ DEBUG(D_tls)
   }
 }
 
   }
 }
 
+static void
+keylog_callback(const SSL *ssl, const char *line)
+{
+DEBUG(D_tls) debug_printf("%.200s\n", line);
+}
+
 
 
 /*************************************************
 
 
 /*************************************************
@@ -1768,6 +1780,9 @@ if (!RAND_status())
 level. */
 
 DEBUG(D_tls) SSL_CTX_set_info_callback(ctx, (void (*)())info_callback);
 level. */
 
 DEBUG(D_tls) SSL_CTX_set_info_callback(ctx, (void (*)())info_callback);
+#ifdef OPENSSL_HAVE_KEYLOG_CB
+DEBUG(D_tls) SSL_CTX_set_keylog_callback(ctx, (void (*)())keylog_callback);
+#endif
 
 /* Automatically re-try reads/writes after renegotiation. */
 (void) SSL_CTX_set_mode(ctx, SSL_MODE_AUTO_RETRY);
 
 /* Automatically re-try reads/writes after renegotiation. */
 (void) SSL_CTX_set_mode(ctx, SSL_MODE_AUTO_RETRY);