1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ssl/ssl_txt.c */
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * All rights reserved.
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This package is an SSL implementation written
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * by Eric Young (eay@cryptsoft.com).
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The implementation was written so as to conform with Netscapes SSL.
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This library is free for commercial and non-commercial use as long as
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the following conditions are aheared to.  The following conditions
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * apply to all code found in this distribution, be it the RC4, RSA,
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * included with this distribution is covered by the same copyright terms
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright remains Eric Young's, and as such any Copyright notices in
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the code are not to be removed.
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * If this package is used in a product, Eric Young should be given attribution
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * as the author of the parts of the library used.
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This can be in the form of a textual message at program startup or
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * in documentation (online or textual) provided with the package.
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Redistribution and use in source and binary forms, with or without
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * modification, are permitted provided that the following conditions
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * are met:
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1. Redistributions of source code must retain the copyright
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer.
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    documentation and/or other materials provided with the distribution.
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 3. All advertising materials mentioning features or use of this software
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    must display the following acknowledgement:
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes cryptographic software written by
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *     Eric Young (eay@cryptsoft.com)"
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    The word 'cryptographic' can be left out if the rouines from the library
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    being used are not cryptographic related :-).
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 4. If you include any Windows specific code (or a derivative thereof) from
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    the apps directory (application code) you must include an acknowledgement:
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SUCH DAMAGE.
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The licence and distribution terms for any publically available version or
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * derivative of this code cannot be changed.  i.e. this code cannot simply be
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * copied and put under another distribution licence
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * [including the GNU Public Licence.]
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
58221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom/* ====================================================================
59221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * Copyright 2005 Nokia. All rights reserved.
60221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom *
61221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * The portions of the attached software ("Contribution") is developed by
62221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * Nokia Corporation and is licensed pursuant to the OpenSSL open source
63221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * license.
64221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom *
65221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * The Contribution, originally written by Mika Kousa and Pasi Eronen of
66221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
67221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * support (see RFC 4279) to OpenSSL.
68221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom *
69221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * No patent licenses or other rights except those expressly stated in
70221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * the OpenSSL open source license shall be deemed granted or received
71221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * expressly, by implication, estoppel, or otherwise.
72221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom *
73221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * No assurances are provided by Nokia that the Contribution does not
74221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * infringe the patent or other intellectual property rights of any third
75221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * party or that the license provides you with all the necessary rights
76221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * to make use of the Contribution.
77221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom *
78221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
79221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
80221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
81221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
82221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom * OTHERWISE.
83221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom */
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <stdio.h>
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/buffer.h>
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "ssl_locl.h"
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_FP_API
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *x)
91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	BIO *b;
93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int ret;
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ((b=BIO_new(BIO_s_file_internal())) == NULL)
96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		SSLerr(SSL_F_SSL_SESSION_PRINT_FP,ERR_R_BUF_LIB);
98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return(0);
99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	BIO_set_fp(b,fp,BIO_NOCLOSE);
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ret=SSL_SESSION_print(b,x);
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	BIO_free(b);
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(ret);
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint SSL_SESSION_print(BIO *bp, const SSL_SESSION *x)
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned int i;
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	const char *s;
111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (x == NULL) goto err;
113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (BIO_puts(bp,"SSL-Session:\n") <= 0) goto err;
114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (x->ssl_version == SSL2_VERSION)
115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s="SSLv2";
116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	else if (x->ssl_version == SSL3_VERSION)
117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s="SSLv3";
118392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	else if (x->ssl_version == TLS1_2_VERSION)
119392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		s="TLSv1.2";
120392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	else if (x->ssl_version == TLS1_1_VERSION)
121392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom		s="TLSv1.1";
122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	else if (x->ssl_version == TLS1_VERSION)
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s="TLSv1";
12498d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom	else if (x->ssl_version == DTLS1_VERSION)
12598d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom		s="DTLSv1";
12698d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom	else if (x->ssl_version == DTLS1_BAD_VER)
12798d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom		s="DTLSv1-bad";
128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	else
129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		s="unknown";
130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (BIO_printf(bp,"    Protocol  : %s\n",s) <= 0) goto err;
131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (x->cipher == NULL)
133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (((x->cipher_id) & 0xff000000) == 0x02000000)
135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (BIO_printf(bp,"    Cipher    : %06lX\n",x->cipher_id&0xffffff) <= 0)
137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				goto err;
138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (BIO_printf(bp,"    Cipher    : %04lX\n",x->cipher_id&0xffff) <= 0)
142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				goto err;
143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	else
146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (BIO_printf(bp,"    Cipher    : %s\n",((x->cipher == NULL)?"unknown":x->cipher->name)) <= 0)
148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			goto err;
149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (BIO_puts(bp,"    Session-ID: ") <= 0) goto err;
151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<x->session_id_length; i++)
152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (BIO_printf(bp,"%02X",x->session_id[i]) <= 0) goto err;
154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (BIO_puts(bp,"\n    Session-ID-ctx: ") <= 0) goto err;
156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<x->sid_ctx_length; i++)
157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (BIO_printf(bp,"%02X",x->sid_ctx[i]) <= 0)
159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			goto err;
160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (BIO_puts(bp,"\n    Master-Key: ") <= 0) goto err;
162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<(unsigned int)x->master_key_length; i++)
163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (BIO_printf(bp,"%02X",x->master_key[i]) <= 0) goto err;
165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (BIO_puts(bp,"\n    Key-Arg   : ") <= 0) goto err;
167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (x->key_arg_length == 0)
168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (BIO_puts(bp,"None") <= 0) goto err;
170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	else
172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (i=0; i<x->key_arg_length; i++)
173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (BIO_printf(bp,"%02X",x->key_arg[i]) <= 0) goto err;
175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_KRB5
177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project       if (BIO_puts(bp,"\n    Krb5 Principal: ") <= 0) goto err;
178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project            if (x->krb5_client_princ_len == 0)
179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project            {
180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (BIO_puts(bp,"None") <= 0) goto err;
181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	else
183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (i=0; i<x->krb5_client_princ_len; i++)
184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (BIO_printf(bp,"%02X",x->krb5_client_princ[i]) <= 0) goto err;
186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif /* OPENSSL_NO_KRB5 */
188221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifndef OPENSSL_NO_PSK
189221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	if (BIO_puts(bp,"\n    PSK identity: ") <= 0) goto err;
190221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	if (BIO_printf(bp, "%s", x->psk_identity ? x->psk_identity : "None") <= 0) goto err;
191221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	if (BIO_puts(bp,"\n    PSK identity hint: ") <= 0) goto err;
192221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	if (BIO_printf(bp, "%s", x->psk_identity_hint ? x->psk_identity_hint : "None") <= 0) goto err;
193221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
194392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifndef OPENSSL_NO_SRP
195392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	if (BIO_puts(bp,"\n    SRP username: ") <= 0) goto err;
196392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom	if (BIO_printf(bp, "%s", x->srp_username ? x->srp_username : "None") <= 0) goto err;
197392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif
198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_TLSEXT
199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (x->tlsext_tick_lifetime_hint)
200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (BIO_printf(bp,
202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			"\n    TLS session ticket lifetime hint: %ld (seconds)",
203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			x->tlsext_tick_lifetime_hint) <=0)
204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			goto err;
205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (x->tlsext_tick)
207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (BIO_puts(bp, "\n    TLS session ticket:\n") <= 0) goto err;
209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (BIO_dump_indent(bp, (char *)x->tlsext_tick, x->tlsext_ticklen, 4) <= 0)
210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			goto err;
211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
213221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_COMP
215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (x->compress_meth != 0)
216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		SSL_COMP *comp = NULL;
218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
219221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom		ssl_cipher_get_evp(x,NULL,NULL,NULL,NULL,&comp);
220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (comp == NULL)
221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
22298d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom			if (BIO_printf(bp,"\n    Compression: %d",x->compress_meth) <= 0) goto err;
223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
22698d58bb80c64b02a33662f0ea80351d4a1535267Brian Carlstrom			if (BIO_printf(bp,"\n    Compression: %d (%s)", comp->id,comp->method->name) <= 0) goto err;
227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (x->time != 0L)
231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (BIO_printf(bp, "\n    Start Time: %ld",x->time) <= 0) goto err;
233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (x->timeout != 0L)
235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (BIO_printf(bp, "\n    Timeout   : %ld (sec)",x->timeout) <= 0) goto err;
237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (BIO_puts(bp,"\n") <= 0) goto err;
239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (BIO_puts(bp, "    Verify return code: ") <= 0) goto err;
241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (BIO_printf(bp, "%ld (%s)\n", x->verify_result,
242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		X509_verify_cert_error_string(x->verify_result)) <= 0) goto err;
243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(1);
245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecterr:
246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(0);
247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
249