Don't set client_version to the ServerHello version.
[openssl.git] / ssl / ssl_txt.c
index 22f9a403af334cda5622e37d73e776086881fedc..b09fecad81a8eccab98d099c14bd51cf9f22996c 100644 (file)
@@ -111,12 +111,20 @@ int SSL_SESSION_print(BIO *bp, const SSL_SESSION *x)
 
        if (x == NULL) goto err;
        if (BIO_puts(bp,"SSL-Session:\n") <= 0) goto err;
-       if (x->ssl_version == SSL2_VERSION)
-               s="SSLv2";
-       else if (x->ssl_version == SSL3_VERSION)
+       if (x->ssl_version == SSL3_VERSION)
                s="SSLv3";
+       else if (x->ssl_version == TLS1_2_VERSION)
+               s="TLSv1.2";
+       else if (x->ssl_version == TLS1_1_VERSION)
+               s="TLSv1.1";
        else if (x->ssl_version == TLS1_VERSION)
                s="TLSv1";
+       else if (x->ssl_version == DTLS1_VERSION)
+               s="DTLSv1";
+       else if (x->ssl_version == DTLS1_2_VERSION)
+               s="DTLSv1.2";
+       else if (x->ssl_version == DTLS1_BAD_VER)
+               s="DTLSv1-bad";
        else
                s="unknown";
        if (BIO_printf(bp,"    Protocol  : %s\n",s) <= 0) goto err;
@@ -155,16 +163,6 @@ int SSL_SESSION_print(BIO *bp, const SSL_SESSION *x)
                {
                if (BIO_printf(bp,"%02X",x->master_key[i]) <= 0) goto err;
                }
-       if (BIO_puts(bp,"\n    Key-Arg   : ") <= 0) goto err;
-       if (x->key_arg_length == 0)
-               {
-               if (BIO_puts(bp,"None") <= 0) goto err;
-               }
-       else
-               for (i=0; i<x->key_arg_length; i++)
-                       {
-                       if (BIO_printf(bp,"%02X",x->key_arg[i]) <= 0) goto err;
-                       }
 #ifndef OPENSSL_NO_KRB5
        if (BIO_puts(bp,"\n    Krb5 Principal: ") <= 0) goto err;
             if (x->krb5_client_princ_len == 0)
@@ -183,19 +181,39 @@ int SSL_SESSION_print(BIO *bp, const SSL_SESSION *x)
        if (BIO_puts(bp,"\n    PSK identity hint: ") <= 0) goto err;
        if (BIO_printf(bp, "%s", x->psk_identity_hint ? x->psk_identity_hint : "None") <= 0) goto err;
 #endif
+#ifndef OPENSSL_NO_SRP
+       if (BIO_puts(bp,"\n    SRP username: ") <= 0) goto err;
+       if (BIO_printf(bp, "%s", x->srp_username ? x->srp_username : "None") <= 0) goto err;
+#endif
+#ifndef OPENSSL_NO_TLSEXT
+       if (x->tlsext_tick_lifetime_hint)
+               {
+               if (BIO_printf(bp,
+                       "\n    TLS session ticket lifetime hint: %ld (seconds)",
+                       x->tlsext_tick_lifetime_hint) <=0)
+                       goto err;
+               }
+       if (x->tlsext_tick)
+               {
+               if (BIO_puts(bp, "\n    TLS session ticket:\n") <= 0) goto err;
+               if (BIO_dump_indent(bp, (char *)x->tlsext_tick, x->tlsext_ticklen, 4) <= 0)
+                       goto err;
+               }
+#endif
+
 #ifndef OPENSSL_NO_COMP
        if (x->compress_meth != 0)
                {
                SSL_COMP *comp = NULL;
 
-               ssl_cipher_get_evp(x,NULL,NULL,NULL,NULL,&comp);
+               ssl_cipher_get_evp(x,NULL,NULL,NULL,NULL,&comp, 0);
                if (comp == NULL)
                        {
-                       if (BIO_printf(bp,"\n   Compression: %d",x->compress_meth) <= 0) goto err;
+                       if (BIO_printf(bp,"\n    Compression: %d",x->compress_meth) <= 0) goto err;
                        }
                else
                        {
-                       if (BIO_printf(bp,"\n   Compression: %d (%s)", comp->id,comp->method->name) <= 0) goto err;
+                       if (BIO_printf(bp,"\n    Compression: %d (%s)", comp->id,comp->method->name) <= 0) goto err;
                        }
                }       
 #endif
@@ -218,3 +236,33 @@ err:
        return(0);
        }
 
+/* print session id and master key in NSS keylog format
+   (RSA Session-ID:<session id> Master-Key:<master key>) */
+int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x)
+       {
+       unsigned int i;
+
+       if (x == NULL) goto err;
+       if (x->session_id_length==0 || x->master_key_length==0) goto err;
+
+       /* the RSA prefix is required by the format's definition although there's
+          nothing RSA-specifc in the output, therefore, we don't have to check
+          if the cipher suite is based on RSA */
+       if (BIO_puts(bp,"RSA ") <= 0) goto err;
+
+       if (BIO_puts(bp,"Session-ID:") <= 0) goto err;
+       for (i=0; i<x->session_id_length; i++)
+               {
+               if (BIO_printf(bp,"%02X",x->session_id[i]) <= 0) goto err;
+               }
+       if (BIO_puts(bp," Master-Key:") <= 0) goto err;
+       for (i=0; i<(unsigned int)x->master_key_length; i++)
+               {
+               if (BIO_printf(bp,"%02X",x->master_key[i]) <= 0) goto err;
+               }
+       if (BIO_puts(bp,"\n") <= 0) goto err;
+
+       return(1);
+err:
+       return(0);
+       }