/src/libressl/ssl/ssl_txt.c
Line | Count | Source (jump to first uncovered line) |
1 | | /* $OpenBSD: ssl_txt.c,v 1.35 2022/06/07 17:55:08 tb Exp $ */ |
2 | | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | | * All rights reserved. |
4 | | * |
5 | | * This package is an SSL implementation written |
6 | | * by Eric Young (eay@cryptsoft.com). |
7 | | * The implementation was written so as to conform with Netscapes SSL. |
8 | | * |
9 | | * This library is free for commercial and non-commercial use as long as |
10 | | * the following conditions are aheared to. The following conditions |
11 | | * apply to all code found in this distribution, be it the RC4, RSA, |
12 | | * lhash, DES, etc., code; not just the SSL code. The SSL documentation |
13 | | * included with this distribution is covered by the same copyright terms |
14 | | * except that the holder is Tim Hudson (tjh@cryptsoft.com). |
15 | | * |
16 | | * Copyright remains Eric Young's, and as such any Copyright notices in |
17 | | * the code are not to be removed. |
18 | | * If this package is used in a product, Eric Young should be given attribution |
19 | | * as the author of the parts of the library used. |
20 | | * This can be in the form of a textual message at program startup or |
21 | | * in documentation (online or textual) provided with the package. |
22 | | * |
23 | | * Redistribution and use in source and binary forms, with or without |
24 | | * modification, are permitted provided that the following conditions |
25 | | * are met: |
26 | | * 1. Redistributions of source code must retain the copyright |
27 | | * notice, this list of conditions and the following disclaimer. |
28 | | * 2. Redistributions in binary form must reproduce the above copyright |
29 | | * notice, this list of conditions and the following disclaimer in the |
30 | | * documentation and/or other materials provided with the distribution. |
31 | | * 3. All advertising materials mentioning features or use of this software |
32 | | * must display the following acknowledgement: |
33 | | * "This product includes cryptographic software written by |
34 | | * Eric Young (eay@cryptsoft.com)" |
35 | | * The word 'cryptographic' can be left out if the rouines from the library |
36 | | * being used are not cryptographic related :-). |
37 | | * 4. If you include any Windows specific code (or a derivative thereof) from |
38 | | * the apps directory (application code) you must include an acknowledgement: |
39 | | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" |
40 | | * |
41 | | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND |
42 | | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
43 | | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
44 | | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE |
45 | | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
46 | | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
47 | | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
48 | | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
49 | | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
50 | | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
51 | | * SUCH DAMAGE. |
52 | | * |
53 | | * The licence and distribution terms for any publically available version or |
54 | | * derivative of this code cannot be changed. i.e. this code cannot simply be |
55 | | * copied and put under another distribution licence |
56 | | * [including the GNU Public Licence.] |
57 | | */ |
58 | | /* ==================================================================== |
59 | | * Copyright 2005 Nokia. All rights reserved. |
60 | | * |
61 | | * The portions of the attached software ("Contribution") is developed by |
62 | | * Nokia Corporation and is licensed pursuant to the OpenSSL open source |
63 | | * license. |
64 | | * |
65 | | * The Contribution, originally written by Mika Kousa and Pasi Eronen of |
66 | | * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites |
67 | | * support (see RFC 4279) to OpenSSL. |
68 | | * |
69 | | * No patent licenses or other rights except those expressly stated in |
70 | | * the OpenSSL open source license shall be deemed granted or received |
71 | | * expressly, by implication, estoppel, or otherwise. |
72 | | * |
73 | | * No assurances are provided by Nokia that the Contribution does not |
74 | | * infringe the patent or other intellectual property rights of any third |
75 | | * party or that the license provides you with all the necessary rights |
76 | | * to make use of the Contribution. |
77 | | * |
78 | | * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN |
79 | | * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA |
80 | | * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY |
81 | | * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR |
82 | | * OTHERWISE. |
83 | | */ |
84 | | |
85 | | #include <inttypes.h> |
86 | | #include <stdio.h> |
87 | | |
88 | | #include <openssl/buffer.h> |
89 | | |
90 | | #include "ssl_locl.h" |
91 | | |
92 | | int |
93 | | SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *x) |
94 | 0 | { |
95 | 0 | BIO *b; |
96 | 0 | int ret; |
97 | |
|
98 | 0 | if ((b = BIO_new(BIO_s_file())) == NULL) { |
99 | 0 | SSLerrorx(ERR_R_BUF_LIB); |
100 | 0 | return 0; |
101 | 0 | } |
102 | 0 | BIO_set_fp(b, fp, BIO_NOCLOSE); |
103 | 0 | ret = SSL_SESSION_print(b, x); |
104 | 0 | BIO_free(b); |
105 | 0 | return ret; |
106 | 0 | } |
107 | | |
108 | | int |
109 | | SSL_SESSION_print(BIO *bp, const SSL_SESSION *x) |
110 | 422 | { |
111 | 422 | size_t i; |
112 | 422 | int ret = 0; |
113 | | |
114 | 422 | if (x == NULL) |
115 | 0 | goto err; |
116 | | |
117 | 422 | if (BIO_puts(bp, "SSL-Session:\n") <= 0) |
118 | 0 | goto err; |
119 | | |
120 | 422 | if (BIO_printf(bp, " Protocol : %s\n", |
121 | 422 | ssl_version_string(x->ssl_version)) <= 0) |
122 | 0 | goto err; |
123 | | |
124 | 422 | if (x->cipher == NULL) { |
125 | 422 | if (BIO_printf(bp, " Cipher : %04lX\n", |
126 | 422 | x->cipher_id & SSL3_CK_VALUE_MASK) <= 0) |
127 | 0 | goto err; |
128 | 422 | } else { |
129 | 0 | const char *cipher_name = "unknown"; |
130 | |
|
131 | 0 | if (x->cipher->name != NULL) |
132 | 0 | cipher_name = x->cipher->name; |
133 | |
|
134 | 0 | if (BIO_printf(bp, " Cipher : %s\n", cipher_name) <= 0) |
135 | 0 | goto err; |
136 | 0 | } |
137 | | |
138 | 422 | if (BIO_puts(bp, " Session-ID: ") <= 0) |
139 | 0 | goto err; |
140 | | |
141 | 894 | for (i = 0; i < x->session_id_length; i++) { |
142 | 472 | if (BIO_printf(bp, "%02X", x->session_id[i]) <= 0) |
143 | 0 | goto err; |
144 | 472 | } |
145 | | |
146 | 422 | if (BIO_puts(bp, "\n Session-ID-ctx: ") <= 0) |
147 | 0 | goto err; |
148 | | |
149 | 447 | for (i = 0; i < x->sid_ctx_length; i++) { |
150 | 25 | if (BIO_printf(bp, "%02X", x->sid_ctx[i]) <= 0) |
151 | 0 | goto err; |
152 | 25 | } |
153 | | |
154 | 422 | if (BIO_puts(bp, "\n Master-Key: ") <= 0) |
155 | 0 | goto err; |
156 | | |
157 | 1.23k | for (i = 0; i < x->master_key_length; i++) { |
158 | 809 | if (BIO_printf(bp, "%02X", x->master_key[i]) <= 0) |
159 | 0 | goto err; |
160 | 809 | } |
161 | | |
162 | 422 | if (x->tlsext_tick_lifetime_hint > 0) { |
163 | 26 | if (BIO_printf(bp, |
164 | 26 | "\n TLS session ticket lifetime hint: %u (seconds)", |
165 | 26 | x->tlsext_tick_lifetime_hint) <= 0) |
166 | 0 | goto err; |
167 | 26 | } |
168 | | |
169 | 422 | if (x->tlsext_tick != NULL) { |
170 | 8 | if (BIO_puts(bp, "\n TLS session ticket:\n") <= 0) |
171 | 0 | goto err; |
172 | 8 | if (BIO_dump_indent(bp, x->tlsext_tick, x->tlsext_ticklen, |
173 | 8 | 4) <= 0) |
174 | 0 | goto err; |
175 | 8 | } |
176 | | |
177 | 422 | if (x->time != 0) { |
178 | 422 | if (BIO_printf(bp, "\n Start Time: %"PRId64, |
179 | 422 | (int64_t)x->time) <= 0) |
180 | 0 | goto err; |
181 | 422 | } |
182 | | |
183 | 422 | if (x->timeout != 0) { |
184 | 422 | if (BIO_printf(bp, "\n Timeout : %ld (sec)", |
185 | 422 | x->timeout) <= 0) |
186 | 0 | goto err; |
187 | 422 | } |
188 | | |
189 | 422 | if (BIO_puts(bp, "\n") <= 0) |
190 | 0 | goto err; |
191 | | |
192 | 422 | if (BIO_printf(bp, " Verify return code: %ld (%s)\n", |
193 | 422 | x->verify_result, |
194 | 422 | X509_verify_cert_error_string(x->verify_result)) <= 0) |
195 | 0 | goto err; |
196 | | |
197 | 422 | ret = 1; |
198 | 422 | err: |
199 | 422 | return ret; |
200 | 422 | } |