Initial record tracing code. Print out all fields in SSL/TLS records

for debugging purposes. Needs "enable-ssl-trace" configuration option.
This commit is contained in:
Dr. Stephen Henson
2012-06-15 12:46:09 +00:00
parent dfcf48f499
commit 93ab9e421e
7 changed files with 1285 additions and 8 deletions

View File

@@ -217,6 +217,7 @@ static int ocsp_resp_cb(SSL *s, void *arg);
static int audit_proof_cb(SSL *s, void *arg);
#endif
static BIO *bio_c_out=NULL;
static BIO *bio_c_msg=NULL;
static int c_quiet=0;
static int c_ign_eof=0;
@@ -743,6 +744,15 @@ int MAIN(int argc, char **argv)
#endif
else if (strcmp(*argv,"-msg") == 0)
c_msg=1;
else if (strcmp(*argv,"-msgfile") == 0)
{
if (--argc < 1) goto bad;
bio_c_msg = BIO_new_file(*(++argv), "w");
}
#ifndef OPENSSL_NO_SSL_TRACE
else if (strcmp(*argv,"-trace") == 0)
c_msg=2;
#endif
else if (strcmp(*argv,"-showcerts") == 0)
c_showcerts=1;
else if (strcmp(*argv,"-nbio_test") == 0)
@@ -1348,8 +1358,13 @@ re_start:
}
if (c_msg)
{
SSL_set_msg_callback(con, msg_cb);
SSL_set_msg_callback_arg(con, bio_c_out);
#ifndef OPENSSL_NO_SSL_TRACE
if (c_msg == 2)
SSL_set_msg_callback(con, SSL_trace);
else
#endif
SSL_set_msg_callback(con, msg_cb);
SSL_set_msg_callback_arg(con, bio_c_msg ? bio_c_msg : bio_c_out);
}
#ifndef OPENSSL_NO_TLSEXT
if (c_tlsextdebug)
@@ -1926,6 +1941,11 @@ end:
BIO_free(bio_c_out);
bio_c_out=NULL;
}
if (bio_c_msg != NULL)
{
BIO_free(bio_c_msg);
bio_c_msg=NULL;
}
apps_shutdown();
OPENSSL_EXIT(ret);
}

View File

@@ -288,6 +288,7 @@ static SSL_CTX *ctx2=NULL;
static int www=0;
static BIO *bio_s_out=NULL;
static BIO *bio_s_msg = NULL;
static int s_debug=0;
#ifndef OPENSSL_NO_TLSEXT
static int s_tlsextdebug=0;
@@ -1207,6 +1208,15 @@ int MAIN(int argc, char *argv[])
#endif
else if (strcmp(*argv,"-msg") == 0)
{ s_msg=1; }
else if (strcmp(*argv,"-msgfile") == 0)
{
if (--argc < 1) goto bad;
bio_s_msg = BIO_new_file(*(++argv), "w");
}
#ifndef OPENSSL_NO_SSL_TRACE
else if (strcmp(*argv,"-trace") == 0)
{ s_msg=2; }
#endif
else if (strcmp(*argv,"-hack") == 0)
{ hack=1; }
else if (strcmp(*argv,"-state") == 0)
@@ -2004,6 +2014,11 @@ end:
BIO_free(bio_s_out);
bio_s_out=NULL;
}
if (bio_s_msg != NULL)
{
BIO_free(bio_s_msg);
bio_s_msg = NULL;
}
apps_shutdown();
OPENSSL_EXIT(ret);
}
@@ -2158,8 +2173,13 @@ static int sv_body(char *hostname, int s, unsigned char *context)
}
if (s_msg)
{
SSL_set_msg_callback(con, msg_cb);
SSL_set_msg_callback_arg(con, bio_s_out);
#ifndef OPENSSL_NO_SSL_TRACE
if (s_msg == 2)
SSL_set_msg_callback(con, SSL_trace);
else
#endif
SSL_set_msg_callback(con, msg_cb);
SSL_set_msg_callback_arg(con, bio_s_msg ? bio_s_msg : bio_s_out);
}
#ifndef OPENSSL_NO_TLSEXT
if (s_tlsextdebug)
@@ -2712,8 +2732,13 @@ static int www_body(char *hostname, int s, unsigned char *context)
}
if (s_msg)
{
SSL_set_msg_callback(con, msg_cb);
SSL_set_msg_callback_arg(con, bio_s_out);
#ifndef OPENSSL_NO_SSL_TRACE
if (s_msg == 2)
SSL_set_msg_callback(con, SSL_trace);
else
#endif
SSL_set_msg_callback(con, msg_cb);
SSL_set_msg_callback_arg(con, bio_s_msg ? bio_s_msg : bio_s_out);
}
for (;;)