1*de0e0e4dSAntonio Huete Jimenez /* $OpenBSD: ssl_stat.c,v 1.18 2022/02/05 14:54:10 jsing Exp $ */
2f5b1c8a1SJohn Marino /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3f5b1c8a1SJohn Marino * All rights reserved.
4f5b1c8a1SJohn Marino *
5f5b1c8a1SJohn Marino * This package is an SSL implementation written
6f5b1c8a1SJohn Marino * by Eric Young (eay@cryptsoft.com).
7f5b1c8a1SJohn Marino * The implementation was written so as to conform with Netscapes SSL.
8f5b1c8a1SJohn Marino *
9f5b1c8a1SJohn Marino * This library is free for commercial and non-commercial use as long as
10f5b1c8a1SJohn Marino * the following conditions are aheared to. The following conditions
11f5b1c8a1SJohn Marino * apply to all code found in this distribution, be it the RC4, RSA,
12f5b1c8a1SJohn Marino * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13f5b1c8a1SJohn Marino * included with this distribution is covered by the same copyright terms
14f5b1c8a1SJohn Marino * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15f5b1c8a1SJohn Marino *
16f5b1c8a1SJohn Marino * Copyright remains Eric Young's, and as such any Copyright notices in
17f5b1c8a1SJohn Marino * the code are not to be removed.
18f5b1c8a1SJohn Marino * If this package is used in a product, Eric Young should be given attribution
19f5b1c8a1SJohn Marino * as the author of the parts of the library used.
20f5b1c8a1SJohn Marino * This can be in the form of a textual message at program startup or
21f5b1c8a1SJohn Marino * in documentation (online or textual) provided with the package.
22f5b1c8a1SJohn Marino *
23f5b1c8a1SJohn Marino * Redistribution and use in source and binary forms, with or without
24f5b1c8a1SJohn Marino * modification, are permitted provided that the following conditions
25f5b1c8a1SJohn Marino * are met:
26f5b1c8a1SJohn Marino * 1. Redistributions of source code must retain the copyright
27f5b1c8a1SJohn Marino * notice, this list of conditions and the following disclaimer.
28f5b1c8a1SJohn Marino * 2. Redistributions in binary form must reproduce the above copyright
29f5b1c8a1SJohn Marino * notice, this list of conditions and the following disclaimer in the
30f5b1c8a1SJohn Marino * documentation and/or other materials provided with the distribution.
31f5b1c8a1SJohn Marino * 3. All advertising materials mentioning features or use of this software
32f5b1c8a1SJohn Marino * must display the following acknowledgement:
33f5b1c8a1SJohn Marino * "This product includes cryptographic software written by
34f5b1c8a1SJohn Marino * Eric Young (eay@cryptsoft.com)"
35f5b1c8a1SJohn Marino * The word 'cryptographic' can be left out if the rouines from the library
36f5b1c8a1SJohn Marino * being used are not cryptographic related :-).
37f5b1c8a1SJohn Marino * 4. If you include any Windows specific code (or a derivative thereof) from
38f5b1c8a1SJohn Marino * the apps directory (application code) you must include an acknowledgement:
39f5b1c8a1SJohn Marino * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40f5b1c8a1SJohn Marino *
41f5b1c8a1SJohn Marino * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42f5b1c8a1SJohn Marino * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43f5b1c8a1SJohn Marino * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44f5b1c8a1SJohn Marino * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45f5b1c8a1SJohn Marino * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46f5b1c8a1SJohn Marino * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47f5b1c8a1SJohn Marino * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48f5b1c8a1SJohn Marino * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49f5b1c8a1SJohn Marino * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50f5b1c8a1SJohn Marino * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51f5b1c8a1SJohn Marino * SUCH DAMAGE.
52f5b1c8a1SJohn Marino *
53f5b1c8a1SJohn Marino * The licence and distribution terms for any publically available version or
54f5b1c8a1SJohn Marino * derivative of this code cannot be changed. i.e. this code cannot simply be
55f5b1c8a1SJohn Marino * copied and put under another distribution licence
56f5b1c8a1SJohn Marino * [including the GNU Public Licence.]
57f5b1c8a1SJohn Marino */
58f5b1c8a1SJohn Marino /* ====================================================================
59f5b1c8a1SJohn Marino * Copyright 2005 Nokia. All rights reserved.
60f5b1c8a1SJohn Marino *
61f5b1c8a1SJohn Marino * The portions of the attached software ("Contribution") is developed by
62f5b1c8a1SJohn Marino * Nokia Corporation and is licensed pursuant to the OpenSSL open source
63f5b1c8a1SJohn Marino * license.
64f5b1c8a1SJohn Marino *
65f5b1c8a1SJohn Marino * The Contribution, originally written by Mika Kousa and Pasi Eronen of
66f5b1c8a1SJohn Marino * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
67f5b1c8a1SJohn Marino * support (see RFC 4279) to OpenSSL.
68f5b1c8a1SJohn Marino *
69f5b1c8a1SJohn Marino * No patent licenses or other rights except those expressly stated in
70f5b1c8a1SJohn Marino * the OpenSSL open source license shall be deemed granted or received
71f5b1c8a1SJohn Marino * expressly, by implication, estoppel, or otherwise.
72f5b1c8a1SJohn Marino *
73f5b1c8a1SJohn Marino * No assurances are provided by Nokia that the Contribution does not
74f5b1c8a1SJohn Marino * infringe the patent or other intellectual property rights of any third
75f5b1c8a1SJohn Marino * party or that the license provides you with all the necessary rights
76f5b1c8a1SJohn Marino * to make use of the Contribution.
77f5b1c8a1SJohn Marino *
78f5b1c8a1SJohn Marino * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
79f5b1c8a1SJohn Marino * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
80f5b1c8a1SJohn Marino * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
81f5b1c8a1SJohn Marino * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
82f5b1c8a1SJohn Marino * OTHERWISE.
83f5b1c8a1SJohn Marino */
84f5b1c8a1SJohn Marino
85f5b1c8a1SJohn Marino #include <stdio.h>
86f5b1c8a1SJohn Marino
87f5b1c8a1SJohn Marino #include "ssl_locl.h"
88f5b1c8a1SJohn Marino
89f5b1c8a1SJohn Marino const char *
SSL_state_string_long(const SSL * s)90f5b1c8a1SJohn Marino SSL_state_string_long(const SSL *s)
91f5b1c8a1SJohn Marino {
92f5b1c8a1SJohn Marino const char *str;
93f5b1c8a1SJohn Marino
94*de0e0e4dSAntonio Huete Jimenez switch (s->s3->hs.state) {
95f5b1c8a1SJohn Marino case SSL_ST_BEFORE:
96f5b1c8a1SJohn Marino str = "before SSL initialization";
97f5b1c8a1SJohn Marino break;
98f5b1c8a1SJohn Marino case SSL_ST_ACCEPT:
99f5b1c8a1SJohn Marino str = "before accept initialization";
100f5b1c8a1SJohn Marino break;
101f5b1c8a1SJohn Marino case SSL_ST_CONNECT:
102f5b1c8a1SJohn Marino str = "before connect initialization";
103f5b1c8a1SJohn Marino break;
104f5b1c8a1SJohn Marino case SSL_ST_OK:
105f5b1c8a1SJohn Marino str = "SSL negotiation finished successfully";
106f5b1c8a1SJohn Marino break;
107f5b1c8a1SJohn Marino case SSL_ST_RENEGOTIATE:
108f5b1c8a1SJohn Marino str = "SSL renegotiate ciphers";
109f5b1c8a1SJohn Marino break;
110f5b1c8a1SJohn Marino case SSL_ST_BEFORE|SSL_ST_CONNECT:
111f5b1c8a1SJohn Marino str = "before/connect initialization";
112f5b1c8a1SJohn Marino break;
113f5b1c8a1SJohn Marino case SSL_ST_OK|SSL_ST_CONNECT:
114f5b1c8a1SJohn Marino str = "ok/connect SSL initialization";
115f5b1c8a1SJohn Marino break;
116f5b1c8a1SJohn Marino case SSL_ST_BEFORE|SSL_ST_ACCEPT:
117f5b1c8a1SJohn Marino str = "before/accept initialization";
118f5b1c8a1SJohn Marino break;
119f5b1c8a1SJohn Marino case SSL_ST_OK|SSL_ST_ACCEPT:
120f5b1c8a1SJohn Marino str = "ok/accept SSL initialization";
121f5b1c8a1SJohn Marino break;
122f5b1c8a1SJohn Marino
123f5b1c8a1SJohn Marino /* SSLv3 additions */
124f5b1c8a1SJohn Marino case SSL3_ST_CW_CLNT_HELLO_A:
125f5b1c8a1SJohn Marino str = "SSLv3 write client hello A";
126f5b1c8a1SJohn Marino break;
127f5b1c8a1SJohn Marino case SSL3_ST_CW_CLNT_HELLO_B:
128f5b1c8a1SJohn Marino str = "SSLv3 write client hello B";
129f5b1c8a1SJohn Marino break;
130f5b1c8a1SJohn Marino case SSL3_ST_CR_SRVR_HELLO_A:
131f5b1c8a1SJohn Marino str = "SSLv3 read server hello A";
132f5b1c8a1SJohn Marino break;
133f5b1c8a1SJohn Marino case SSL3_ST_CR_SRVR_HELLO_B:
134f5b1c8a1SJohn Marino str = "SSLv3 read server hello B";
135f5b1c8a1SJohn Marino break;
136f5b1c8a1SJohn Marino case SSL3_ST_CR_CERT_A:
137f5b1c8a1SJohn Marino str = "SSLv3 read server certificate A";
138f5b1c8a1SJohn Marino break;
139f5b1c8a1SJohn Marino case SSL3_ST_CR_CERT_B:
140f5b1c8a1SJohn Marino str = "SSLv3 read server certificate B";
141f5b1c8a1SJohn Marino break;
142f5b1c8a1SJohn Marino case SSL3_ST_CR_KEY_EXCH_A:
143f5b1c8a1SJohn Marino str = "SSLv3 read server key exchange A";
144f5b1c8a1SJohn Marino break;
145f5b1c8a1SJohn Marino case SSL3_ST_CR_KEY_EXCH_B:
146f5b1c8a1SJohn Marino str = "SSLv3 read server key exchange B";
147f5b1c8a1SJohn Marino break;
148f5b1c8a1SJohn Marino case SSL3_ST_CR_CERT_REQ_A:
149f5b1c8a1SJohn Marino str = "SSLv3 read server certificate request A";
150f5b1c8a1SJohn Marino break;
151f5b1c8a1SJohn Marino case SSL3_ST_CR_CERT_REQ_B:
152f5b1c8a1SJohn Marino str = "SSLv3 read server certificate request B";
153f5b1c8a1SJohn Marino break;
154f5b1c8a1SJohn Marino case SSL3_ST_CR_SESSION_TICKET_A:
155f5b1c8a1SJohn Marino str = "SSLv3 read server session ticket A";
156f5b1c8a1SJohn Marino break;
157f5b1c8a1SJohn Marino case SSL3_ST_CR_SESSION_TICKET_B:
158f5b1c8a1SJohn Marino str = "SSLv3 read server session ticket B";
159f5b1c8a1SJohn Marino break;
160f5b1c8a1SJohn Marino case SSL3_ST_CR_SRVR_DONE_A:
161f5b1c8a1SJohn Marino str = "SSLv3 read server done A";
162f5b1c8a1SJohn Marino break;
163f5b1c8a1SJohn Marino case SSL3_ST_CR_SRVR_DONE_B:
164f5b1c8a1SJohn Marino str = "SSLv3 read server done B";
165f5b1c8a1SJohn Marino break;
166f5b1c8a1SJohn Marino case SSL3_ST_CW_CERT_A:
167f5b1c8a1SJohn Marino str = "SSLv3 write client certificate A";
168f5b1c8a1SJohn Marino break;
169f5b1c8a1SJohn Marino case SSL3_ST_CW_CERT_B:
170f5b1c8a1SJohn Marino str = "SSLv3 write client certificate B";
171f5b1c8a1SJohn Marino break;
172f5b1c8a1SJohn Marino case SSL3_ST_CW_CERT_C:
173f5b1c8a1SJohn Marino str = "SSLv3 write client certificate C";
174f5b1c8a1SJohn Marino break;
175f5b1c8a1SJohn Marino case SSL3_ST_CW_CERT_D:
176f5b1c8a1SJohn Marino str = "SSLv3 write client certificate D";
177f5b1c8a1SJohn Marino break;
178f5b1c8a1SJohn Marino case SSL3_ST_CW_KEY_EXCH_A:
179f5b1c8a1SJohn Marino str = "SSLv3 write client key exchange A";
180f5b1c8a1SJohn Marino break;
181f5b1c8a1SJohn Marino case SSL3_ST_CW_KEY_EXCH_B:
182f5b1c8a1SJohn Marino str = "SSLv3 write client key exchange B";
183f5b1c8a1SJohn Marino break;
184f5b1c8a1SJohn Marino case SSL3_ST_CW_CERT_VRFY_A:
185f5b1c8a1SJohn Marino str = "SSLv3 write certificate verify A";
186f5b1c8a1SJohn Marino break;
187f5b1c8a1SJohn Marino case SSL3_ST_CW_CERT_VRFY_B:
188f5b1c8a1SJohn Marino str = "SSLv3 write certificate verify B";
189f5b1c8a1SJohn Marino break;
190f5b1c8a1SJohn Marino
191f5b1c8a1SJohn Marino case SSL3_ST_CW_CHANGE_A:
192f5b1c8a1SJohn Marino case SSL3_ST_SW_CHANGE_A:
193f5b1c8a1SJohn Marino str = "SSLv3 write change cipher spec A";
194f5b1c8a1SJohn Marino break;
195f5b1c8a1SJohn Marino case SSL3_ST_CW_CHANGE_B:
196f5b1c8a1SJohn Marino case SSL3_ST_SW_CHANGE_B:
197f5b1c8a1SJohn Marino str = "SSLv3 write change cipher spec B";
198f5b1c8a1SJohn Marino break;
199f5b1c8a1SJohn Marino case SSL3_ST_CW_FINISHED_A:
200f5b1c8a1SJohn Marino case SSL3_ST_SW_FINISHED_A:
201f5b1c8a1SJohn Marino str = "SSLv3 write finished A";
202f5b1c8a1SJohn Marino break;
203f5b1c8a1SJohn Marino case SSL3_ST_CW_FINISHED_B:
204f5b1c8a1SJohn Marino case SSL3_ST_SW_FINISHED_B:
205f5b1c8a1SJohn Marino str = "SSLv3 write finished B";
206f5b1c8a1SJohn Marino break;
207f5b1c8a1SJohn Marino case SSL3_ST_CR_CHANGE_A:
208f5b1c8a1SJohn Marino case SSL3_ST_SR_CHANGE_A:
209f5b1c8a1SJohn Marino str = "SSLv3 read change cipher spec A";
210f5b1c8a1SJohn Marino break;
211f5b1c8a1SJohn Marino case SSL3_ST_CR_CHANGE_B:
212f5b1c8a1SJohn Marino case SSL3_ST_SR_CHANGE_B:
213f5b1c8a1SJohn Marino str = "SSLv3 read change cipher spec B";
214f5b1c8a1SJohn Marino break;
215f5b1c8a1SJohn Marino case SSL3_ST_CR_FINISHED_A:
216f5b1c8a1SJohn Marino case SSL3_ST_SR_FINISHED_A:
217f5b1c8a1SJohn Marino str = "SSLv3 read finished A";
218f5b1c8a1SJohn Marino break;
219f5b1c8a1SJohn Marino case SSL3_ST_CR_FINISHED_B:
220f5b1c8a1SJohn Marino case SSL3_ST_SR_FINISHED_B:
221f5b1c8a1SJohn Marino str = "SSLv3 read finished B";
222f5b1c8a1SJohn Marino break;
223f5b1c8a1SJohn Marino
224f5b1c8a1SJohn Marino case SSL3_ST_CW_FLUSH:
225f5b1c8a1SJohn Marino case SSL3_ST_SW_FLUSH:
226f5b1c8a1SJohn Marino str = "SSLv3 flush data";
227f5b1c8a1SJohn Marino break;
228f5b1c8a1SJohn Marino
229f5b1c8a1SJohn Marino case SSL3_ST_SR_CLNT_HELLO_A:
230f5b1c8a1SJohn Marino str = "SSLv3 read client hello A";
231f5b1c8a1SJohn Marino break;
232f5b1c8a1SJohn Marino case SSL3_ST_SR_CLNT_HELLO_B:
233f5b1c8a1SJohn Marino str = "SSLv3 read client hello B";
234f5b1c8a1SJohn Marino break;
235f5b1c8a1SJohn Marino case SSL3_ST_SR_CLNT_HELLO_C:
236f5b1c8a1SJohn Marino str = "SSLv3 read client hello C";
237f5b1c8a1SJohn Marino break;
238f5b1c8a1SJohn Marino case SSL3_ST_SW_HELLO_REQ_A:
239f5b1c8a1SJohn Marino str = "SSLv3 write hello request A";
240f5b1c8a1SJohn Marino break;
241f5b1c8a1SJohn Marino case SSL3_ST_SW_HELLO_REQ_B:
242f5b1c8a1SJohn Marino str = "SSLv3 write hello request B";
243f5b1c8a1SJohn Marino break;
244f5b1c8a1SJohn Marino case SSL3_ST_SW_HELLO_REQ_C:
245f5b1c8a1SJohn Marino str = "SSLv3 write hello request C";
246f5b1c8a1SJohn Marino break;
247f5b1c8a1SJohn Marino case SSL3_ST_SW_SRVR_HELLO_A:
248f5b1c8a1SJohn Marino str = "SSLv3 write server hello A";
249f5b1c8a1SJohn Marino break;
250f5b1c8a1SJohn Marino case SSL3_ST_SW_SRVR_HELLO_B:
251f5b1c8a1SJohn Marino str = "SSLv3 write server hello B";
252f5b1c8a1SJohn Marino break;
253f5b1c8a1SJohn Marino case SSL3_ST_SW_CERT_A:
254f5b1c8a1SJohn Marino str = "SSLv3 write certificate A";
255f5b1c8a1SJohn Marino break;
256f5b1c8a1SJohn Marino case SSL3_ST_SW_CERT_B:
257f5b1c8a1SJohn Marino str = "SSLv3 write certificate B";
258f5b1c8a1SJohn Marino break;
259f5b1c8a1SJohn Marino case SSL3_ST_SW_KEY_EXCH_A:
260f5b1c8a1SJohn Marino str = "SSLv3 write key exchange A";
261f5b1c8a1SJohn Marino break;
262f5b1c8a1SJohn Marino case SSL3_ST_SW_KEY_EXCH_B:
263f5b1c8a1SJohn Marino str = "SSLv3 write key exchange B";
264f5b1c8a1SJohn Marino break;
265f5b1c8a1SJohn Marino case SSL3_ST_SW_CERT_REQ_A:
266f5b1c8a1SJohn Marino str = "SSLv3 write certificate request A";
267f5b1c8a1SJohn Marino break;
268f5b1c8a1SJohn Marino case SSL3_ST_SW_CERT_REQ_B:
269f5b1c8a1SJohn Marino str = "SSLv3 write certificate request B";
270f5b1c8a1SJohn Marino break;
271f5b1c8a1SJohn Marino case SSL3_ST_SW_SESSION_TICKET_A:
272f5b1c8a1SJohn Marino str = "SSLv3 write session ticket A";
273f5b1c8a1SJohn Marino break;
274f5b1c8a1SJohn Marino case SSL3_ST_SW_SESSION_TICKET_B:
275f5b1c8a1SJohn Marino str = "SSLv3 write session ticket B";
276f5b1c8a1SJohn Marino break;
277f5b1c8a1SJohn Marino case SSL3_ST_SW_SRVR_DONE_A:
278f5b1c8a1SJohn Marino str = "SSLv3 write server done A";
279f5b1c8a1SJohn Marino break;
280f5b1c8a1SJohn Marino case SSL3_ST_SW_SRVR_DONE_B:
281f5b1c8a1SJohn Marino str = "SSLv3 write server done B";
282f5b1c8a1SJohn Marino break;
283f5b1c8a1SJohn Marino case SSL3_ST_SR_CERT_A:
284f5b1c8a1SJohn Marino str = "SSLv3 read client certificate A";
285f5b1c8a1SJohn Marino break;
286f5b1c8a1SJohn Marino case SSL3_ST_SR_CERT_B:
287f5b1c8a1SJohn Marino str = "SSLv3 read client certificate B";
288f5b1c8a1SJohn Marino break;
289f5b1c8a1SJohn Marino case SSL3_ST_SR_KEY_EXCH_A:
290f5b1c8a1SJohn Marino str = "SSLv3 read client key exchange A";
291f5b1c8a1SJohn Marino break;
292f5b1c8a1SJohn Marino case SSL3_ST_SR_KEY_EXCH_B:
293f5b1c8a1SJohn Marino str = "SSLv3 read client key exchange B";
294f5b1c8a1SJohn Marino break;
295f5b1c8a1SJohn Marino case SSL3_ST_SR_CERT_VRFY_A:
296f5b1c8a1SJohn Marino str = "SSLv3 read certificate verify A";
297f5b1c8a1SJohn Marino break;
298f5b1c8a1SJohn Marino case SSL3_ST_SR_CERT_VRFY_B:
299f5b1c8a1SJohn Marino str = "SSLv3 read certificate verify B";
300f5b1c8a1SJohn Marino break;
301f5b1c8a1SJohn Marino
302f5b1c8a1SJohn Marino /* DTLS */
303f5b1c8a1SJohn Marino case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A:
304f5b1c8a1SJohn Marino str = "DTLS1 read hello verify request A";
305f5b1c8a1SJohn Marino break;
306f5b1c8a1SJohn Marino case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B:
307f5b1c8a1SJohn Marino str = "DTLS1 read hello verify request B";
308f5b1c8a1SJohn Marino break;
309f5b1c8a1SJohn Marino case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A:
310f5b1c8a1SJohn Marino str = "DTLS1 write hello verify request A";
311f5b1c8a1SJohn Marino break;
312f5b1c8a1SJohn Marino case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B:
313f5b1c8a1SJohn Marino str = "DTLS1 write hello verify request B";
314f5b1c8a1SJohn Marino break;
315f5b1c8a1SJohn Marino
316f5b1c8a1SJohn Marino default:
317f5b1c8a1SJohn Marino str = "unknown state";
318f5b1c8a1SJohn Marino break;
319f5b1c8a1SJohn Marino }
320f5b1c8a1SJohn Marino return (str);
321f5b1c8a1SJohn Marino }
322f5b1c8a1SJohn Marino
323f5b1c8a1SJohn Marino const char *
SSL_rstate_string_long(const SSL * s)324f5b1c8a1SJohn Marino SSL_rstate_string_long(const SSL *s)
325f5b1c8a1SJohn Marino {
326f5b1c8a1SJohn Marino const char *str;
327f5b1c8a1SJohn Marino
32872c33676SMaxim Ag switch (s->internal->rstate) {
329f5b1c8a1SJohn Marino case SSL_ST_READ_HEADER:
330f5b1c8a1SJohn Marino str = "read header";
331f5b1c8a1SJohn Marino break;
332f5b1c8a1SJohn Marino case SSL_ST_READ_BODY:
333f5b1c8a1SJohn Marino str = "read body";
334f5b1c8a1SJohn Marino break;
335f5b1c8a1SJohn Marino case SSL_ST_READ_DONE:
336f5b1c8a1SJohn Marino str = "read done";
337f5b1c8a1SJohn Marino break;
338f5b1c8a1SJohn Marino default:
339f5b1c8a1SJohn Marino str = "unknown";
340f5b1c8a1SJohn Marino break;
341f5b1c8a1SJohn Marino }
342f5b1c8a1SJohn Marino return (str);
343f5b1c8a1SJohn Marino }
344f5b1c8a1SJohn Marino
345f5b1c8a1SJohn Marino const char *
SSL_state_string(const SSL * s)346f5b1c8a1SJohn Marino SSL_state_string(const SSL *s)
347f5b1c8a1SJohn Marino {
348f5b1c8a1SJohn Marino const char *str;
349f5b1c8a1SJohn Marino
350*de0e0e4dSAntonio Huete Jimenez switch (s->s3->hs.state) {
351f5b1c8a1SJohn Marino case SSL_ST_BEFORE:
352f5b1c8a1SJohn Marino str = "PINIT ";
353f5b1c8a1SJohn Marino break;
354f5b1c8a1SJohn Marino case SSL_ST_ACCEPT:
355f5b1c8a1SJohn Marino str = "AINIT ";
356f5b1c8a1SJohn Marino break;
357f5b1c8a1SJohn Marino case SSL_ST_CONNECT:
358f5b1c8a1SJohn Marino str = "CINIT ";
359f5b1c8a1SJohn Marino break;
360f5b1c8a1SJohn Marino case SSL_ST_OK:
361f5b1c8a1SJohn Marino str = "SSLOK ";
362f5b1c8a1SJohn Marino break;
363f5b1c8a1SJohn Marino
364f5b1c8a1SJohn Marino /* SSLv3 additions */
365f5b1c8a1SJohn Marino case SSL3_ST_SW_FLUSH:
366f5b1c8a1SJohn Marino case SSL3_ST_CW_FLUSH:
367f5b1c8a1SJohn Marino str = "3FLUSH";
368f5b1c8a1SJohn Marino break;
369f5b1c8a1SJohn Marino case SSL3_ST_CW_CLNT_HELLO_A:
370f5b1c8a1SJohn Marino str = "3WCH_A";
371f5b1c8a1SJohn Marino break;
372f5b1c8a1SJohn Marino case SSL3_ST_CW_CLNT_HELLO_B:
373f5b1c8a1SJohn Marino str = "3WCH_B";
374f5b1c8a1SJohn Marino break;
375f5b1c8a1SJohn Marino case SSL3_ST_CR_SRVR_HELLO_A:
376f5b1c8a1SJohn Marino str = "3RSH_A";
377f5b1c8a1SJohn Marino break;
378f5b1c8a1SJohn Marino case SSL3_ST_CR_SRVR_HELLO_B:
379f5b1c8a1SJohn Marino str = "3RSH_B";
380f5b1c8a1SJohn Marino break;
381f5b1c8a1SJohn Marino case SSL3_ST_CR_CERT_A:
382f5b1c8a1SJohn Marino str = "3RSC_A";
383f5b1c8a1SJohn Marino break;
384f5b1c8a1SJohn Marino case SSL3_ST_CR_CERT_B:
385f5b1c8a1SJohn Marino str = "3RSC_B";
386f5b1c8a1SJohn Marino break;
387f5b1c8a1SJohn Marino case SSL3_ST_CR_KEY_EXCH_A:
388f5b1c8a1SJohn Marino str = "3RSKEA";
389f5b1c8a1SJohn Marino break;
390f5b1c8a1SJohn Marino case SSL3_ST_CR_KEY_EXCH_B:
391f5b1c8a1SJohn Marino str = "3RSKEB";
392f5b1c8a1SJohn Marino break;
393f5b1c8a1SJohn Marino case SSL3_ST_CR_CERT_REQ_A:
394f5b1c8a1SJohn Marino str = "3RCR_A";
395f5b1c8a1SJohn Marino break;
396f5b1c8a1SJohn Marino case SSL3_ST_CR_CERT_REQ_B:
397f5b1c8a1SJohn Marino str = "3RCR_B";
398f5b1c8a1SJohn Marino break;
399f5b1c8a1SJohn Marino case SSL3_ST_CR_SRVR_DONE_A:
400f5b1c8a1SJohn Marino str = "3RSD_A";
401f5b1c8a1SJohn Marino break;
402f5b1c8a1SJohn Marino case SSL3_ST_CR_SRVR_DONE_B:
403f5b1c8a1SJohn Marino str = "3RSD_B";
404f5b1c8a1SJohn Marino break;
405f5b1c8a1SJohn Marino case SSL3_ST_CW_CERT_A:
406f5b1c8a1SJohn Marino str = "3WCC_A";
407f5b1c8a1SJohn Marino break;
408f5b1c8a1SJohn Marino case SSL3_ST_CW_CERT_B:
409f5b1c8a1SJohn Marino str = "3WCC_B";
410f5b1c8a1SJohn Marino break;
411f5b1c8a1SJohn Marino case SSL3_ST_CW_CERT_C:
412f5b1c8a1SJohn Marino str = "3WCC_C";
413f5b1c8a1SJohn Marino break;
414f5b1c8a1SJohn Marino case SSL3_ST_CW_CERT_D:
415f5b1c8a1SJohn Marino str = "3WCC_D";
416f5b1c8a1SJohn Marino break;
417f5b1c8a1SJohn Marino case SSL3_ST_CW_KEY_EXCH_A:
418f5b1c8a1SJohn Marino str = "3WCKEA";
419f5b1c8a1SJohn Marino break;
420f5b1c8a1SJohn Marino case SSL3_ST_CW_KEY_EXCH_B:
421f5b1c8a1SJohn Marino str = "3WCKEB";
422f5b1c8a1SJohn Marino break;
423f5b1c8a1SJohn Marino case SSL3_ST_CW_CERT_VRFY_A:
424f5b1c8a1SJohn Marino str = "3WCV_A";
425f5b1c8a1SJohn Marino break;
426f5b1c8a1SJohn Marino case SSL3_ST_CW_CERT_VRFY_B:
427f5b1c8a1SJohn Marino str = "3WCV_B";
428f5b1c8a1SJohn Marino break;
429f5b1c8a1SJohn Marino
430f5b1c8a1SJohn Marino case SSL3_ST_SW_CHANGE_A:
431f5b1c8a1SJohn Marino case SSL3_ST_CW_CHANGE_A:
432f5b1c8a1SJohn Marino str = "3WCCSA";
433f5b1c8a1SJohn Marino break;
434f5b1c8a1SJohn Marino case SSL3_ST_SW_CHANGE_B:
435f5b1c8a1SJohn Marino case SSL3_ST_CW_CHANGE_B:
436f5b1c8a1SJohn Marino str = "3WCCSB";
437f5b1c8a1SJohn Marino break;
438f5b1c8a1SJohn Marino case SSL3_ST_SW_FINISHED_A:
439f5b1c8a1SJohn Marino case SSL3_ST_CW_FINISHED_A:
440f5b1c8a1SJohn Marino str = "3WFINA";
441f5b1c8a1SJohn Marino break;
442f5b1c8a1SJohn Marino case SSL3_ST_SW_FINISHED_B:
443f5b1c8a1SJohn Marino case SSL3_ST_CW_FINISHED_B:
444f5b1c8a1SJohn Marino str = "3WFINB";
445f5b1c8a1SJohn Marino break;
446f5b1c8a1SJohn Marino case SSL3_ST_SR_CHANGE_A:
447f5b1c8a1SJohn Marino case SSL3_ST_CR_CHANGE_A:
448f5b1c8a1SJohn Marino str = "3RCCSA";
449f5b1c8a1SJohn Marino break;
450f5b1c8a1SJohn Marino case SSL3_ST_SR_CHANGE_B:
451f5b1c8a1SJohn Marino case SSL3_ST_CR_CHANGE_B:
452f5b1c8a1SJohn Marino str = "3RCCSB";
453f5b1c8a1SJohn Marino break;
454f5b1c8a1SJohn Marino case SSL3_ST_SR_FINISHED_A:
455f5b1c8a1SJohn Marino case SSL3_ST_CR_FINISHED_A:
456f5b1c8a1SJohn Marino str = "3RFINA";
457f5b1c8a1SJohn Marino break;
458f5b1c8a1SJohn Marino case SSL3_ST_SR_FINISHED_B:
459f5b1c8a1SJohn Marino case SSL3_ST_CR_FINISHED_B:
460f5b1c8a1SJohn Marino str = "3RFINB";
461f5b1c8a1SJohn Marino break;
462f5b1c8a1SJohn Marino
463f5b1c8a1SJohn Marino case SSL3_ST_SW_HELLO_REQ_A:
464f5b1c8a1SJohn Marino str = "3WHR_A";
465f5b1c8a1SJohn Marino break;
466f5b1c8a1SJohn Marino case SSL3_ST_SW_HELLO_REQ_B:
467f5b1c8a1SJohn Marino str = "3WHR_B";
468f5b1c8a1SJohn Marino break;
469f5b1c8a1SJohn Marino case SSL3_ST_SW_HELLO_REQ_C:
470f5b1c8a1SJohn Marino str = "3WHR_C";
471f5b1c8a1SJohn Marino break;
472f5b1c8a1SJohn Marino case SSL3_ST_SR_CLNT_HELLO_A:
473f5b1c8a1SJohn Marino str = "3RCH_A";
474f5b1c8a1SJohn Marino break;
475f5b1c8a1SJohn Marino case SSL3_ST_SR_CLNT_HELLO_B:
476f5b1c8a1SJohn Marino str = "3RCH_B";
477f5b1c8a1SJohn Marino break;
478f5b1c8a1SJohn Marino case SSL3_ST_SR_CLNT_HELLO_C:
479f5b1c8a1SJohn Marino str = "3RCH_C";
480f5b1c8a1SJohn Marino break;
481f5b1c8a1SJohn Marino case SSL3_ST_SW_SRVR_HELLO_A:
482f5b1c8a1SJohn Marino str = "3WSH_A";
483f5b1c8a1SJohn Marino break;
484f5b1c8a1SJohn Marino case SSL3_ST_SW_SRVR_HELLO_B:
485f5b1c8a1SJohn Marino str = "3WSH_B";
486f5b1c8a1SJohn Marino break;
487f5b1c8a1SJohn Marino case SSL3_ST_SW_CERT_A:
488f5b1c8a1SJohn Marino str = "3WSC_A";
489f5b1c8a1SJohn Marino break;
490f5b1c8a1SJohn Marino case SSL3_ST_SW_CERT_B:
491f5b1c8a1SJohn Marino str = "3WSC_B";
492f5b1c8a1SJohn Marino break;
493f5b1c8a1SJohn Marino case SSL3_ST_SW_KEY_EXCH_A:
494f5b1c8a1SJohn Marino str = "3WSKEA";
495f5b1c8a1SJohn Marino break;
496f5b1c8a1SJohn Marino case SSL3_ST_SW_KEY_EXCH_B:
497f5b1c8a1SJohn Marino str = "3WSKEB";
498f5b1c8a1SJohn Marino break;
499f5b1c8a1SJohn Marino case SSL3_ST_SW_CERT_REQ_A:
500f5b1c8a1SJohn Marino str = "3WCR_A";
501f5b1c8a1SJohn Marino break;
502f5b1c8a1SJohn Marino case SSL3_ST_SW_CERT_REQ_B:
503f5b1c8a1SJohn Marino str = "3WCR_B";
504f5b1c8a1SJohn Marino break;
505f5b1c8a1SJohn Marino case SSL3_ST_SW_SRVR_DONE_A:
506f5b1c8a1SJohn Marino str = "3WSD_A";
507f5b1c8a1SJohn Marino break;
508f5b1c8a1SJohn Marino case SSL3_ST_SW_SRVR_DONE_B:
509f5b1c8a1SJohn Marino str = "3WSD_B";
510f5b1c8a1SJohn Marino break;
511f5b1c8a1SJohn Marino case SSL3_ST_SR_CERT_A:
512f5b1c8a1SJohn Marino str = "3RCC_A";
513f5b1c8a1SJohn Marino break;
514f5b1c8a1SJohn Marino case SSL3_ST_SR_CERT_B:
515f5b1c8a1SJohn Marino str = "3RCC_B";
516f5b1c8a1SJohn Marino break;
517f5b1c8a1SJohn Marino case SSL3_ST_SR_KEY_EXCH_A:
518f5b1c8a1SJohn Marino str = "3RCKEA";
519f5b1c8a1SJohn Marino break;
520f5b1c8a1SJohn Marino case SSL3_ST_SR_KEY_EXCH_B:
521f5b1c8a1SJohn Marino str = "3RCKEB";
522f5b1c8a1SJohn Marino break;
523f5b1c8a1SJohn Marino case SSL3_ST_SR_CERT_VRFY_A:
524f5b1c8a1SJohn Marino str = "3RCV_A";
525f5b1c8a1SJohn Marino break;
526f5b1c8a1SJohn Marino case SSL3_ST_SR_CERT_VRFY_B:
527f5b1c8a1SJohn Marino str = "3RCV_B";
528f5b1c8a1SJohn Marino break;
529f5b1c8a1SJohn Marino
530f5b1c8a1SJohn Marino /* DTLS */
531f5b1c8a1SJohn Marino case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A:
532f5b1c8a1SJohn Marino str = "DRCHVA";
533f5b1c8a1SJohn Marino break;
534f5b1c8a1SJohn Marino case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B:
535f5b1c8a1SJohn Marino str = "DRCHVB";
536f5b1c8a1SJohn Marino break;
537f5b1c8a1SJohn Marino case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A:
538f5b1c8a1SJohn Marino str = "DWCHVA";
539f5b1c8a1SJohn Marino break;
540f5b1c8a1SJohn Marino case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B:
541f5b1c8a1SJohn Marino str = "DWCHVB";
542f5b1c8a1SJohn Marino break;
543f5b1c8a1SJohn Marino
544f5b1c8a1SJohn Marino default:
545f5b1c8a1SJohn Marino str = "UNKWN ";
546f5b1c8a1SJohn Marino break;
547f5b1c8a1SJohn Marino }
548f5b1c8a1SJohn Marino return (str);
549f5b1c8a1SJohn Marino }
550f5b1c8a1SJohn Marino
551f5b1c8a1SJohn Marino const char *
SSL_alert_type_string_long(int value)552f5b1c8a1SJohn Marino SSL_alert_type_string_long(int value)
553f5b1c8a1SJohn Marino {
554f5b1c8a1SJohn Marino value >>= 8;
555f5b1c8a1SJohn Marino if (value == SSL3_AL_WARNING)
556f5b1c8a1SJohn Marino return ("warning");
557f5b1c8a1SJohn Marino else if (value == SSL3_AL_FATAL)
558f5b1c8a1SJohn Marino return ("fatal");
559f5b1c8a1SJohn Marino else
560f5b1c8a1SJohn Marino return ("unknown");
561f5b1c8a1SJohn Marino }
562f5b1c8a1SJohn Marino
563f5b1c8a1SJohn Marino const char *
SSL_alert_type_string(int value)564f5b1c8a1SJohn Marino SSL_alert_type_string(int value)
565f5b1c8a1SJohn Marino {
566f5b1c8a1SJohn Marino value >>= 8;
567f5b1c8a1SJohn Marino if (value == SSL3_AL_WARNING)
568f5b1c8a1SJohn Marino return ("W");
569f5b1c8a1SJohn Marino else if (value == SSL3_AL_FATAL)
570f5b1c8a1SJohn Marino return ("F");
571f5b1c8a1SJohn Marino else
572f5b1c8a1SJohn Marino return ("U");
573f5b1c8a1SJohn Marino }
574f5b1c8a1SJohn Marino
575f5b1c8a1SJohn Marino const char *
SSL_alert_desc_string(int value)576f5b1c8a1SJohn Marino SSL_alert_desc_string(int value)
577f5b1c8a1SJohn Marino {
578f5b1c8a1SJohn Marino const char *str;
579f5b1c8a1SJohn Marino
580f5b1c8a1SJohn Marino switch (value & 0xff) {
581*de0e0e4dSAntonio Huete Jimenez case SSL_AD_CLOSE_NOTIFY:
582f5b1c8a1SJohn Marino str = "CN";
583f5b1c8a1SJohn Marino break;
584*de0e0e4dSAntonio Huete Jimenez case SSL_AD_UNEXPECTED_MESSAGE:
585f5b1c8a1SJohn Marino str = "UM";
586f5b1c8a1SJohn Marino break;
587*de0e0e4dSAntonio Huete Jimenez case SSL_AD_BAD_RECORD_MAC:
588f5b1c8a1SJohn Marino str = "BM";
589f5b1c8a1SJohn Marino break;
590*de0e0e4dSAntonio Huete Jimenez case SSL_AD_DECOMPRESSION_FAILURE:
591f5b1c8a1SJohn Marino str = "DF";
592f5b1c8a1SJohn Marino break;
593*de0e0e4dSAntonio Huete Jimenez case SSL_AD_HANDSHAKE_FAILURE:
594f5b1c8a1SJohn Marino str = "HF";
595f5b1c8a1SJohn Marino break;
596*de0e0e4dSAntonio Huete Jimenez case SSL_AD_BAD_CERTIFICATE:
597f5b1c8a1SJohn Marino str = "BC";
598f5b1c8a1SJohn Marino break;
599*de0e0e4dSAntonio Huete Jimenez case SSL_AD_UNSUPPORTED_CERTIFICATE:
600f5b1c8a1SJohn Marino str = "UC";
601f5b1c8a1SJohn Marino break;
602*de0e0e4dSAntonio Huete Jimenez case SSL_AD_CERTIFICATE_REVOKED:
603f5b1c8a1SJohn Marino str = "CR";
604f5b1c8a1SJohn Marino break;
605*de0e0e4dSAntonio Huete Jimenez case SSL_AD_CERTIFICATE_EXPIRED:
606f5b1c8a1SJohn Marino str = "CE";
607f5b1c8a1SJohn Marino break;
608*de0e0e4dSAntonio Huete Jimenez case SSL_AD_CERTIFICATE_UNKNOWN:
609f5b1c8a1SJohn Marino str = "CU";
610f5b1c8a1SJohn Marino break;
611*de0e0e4dSAntonio Huete Jimenez case SSL_AD_ILLEGAL_PARAMETER:
612f5b1c8a1SJohn Marino str = "IP";
613f5b1c8a1SJohn Marino break;
614*de0e0e4dSAntonio Huete Jimenez case SSL_AD_RECORD_OVERFLOW:
615f5b1c8a1SJohn Marino str = "RO";
616f5b1c8a1SJohn Marino break;
617*de0e0e4dSAntonio Huete Jimenez case SSL_AD_UNKNOWN_CA:
618f5b1c8a1SJohn Marino str = "CA";
619f5b1c8a1SJohn Marino break;
620*de0e0e4dSAntonio Huete Jimenez case SSL_AD_ACCESS_DENIED:
621f5b1c8a1SJohn Marino str = "AD";
622f5b1c8a1SJohn Marino break;
623*de0e0e4dSAntonio Huete Jimenez case SSL_AD_DECODE_ERROR:
624f5b1c8a1SJohn Marino str = "DE";
625f5b1c8a1SJohn Marino break;
626*de0e0e4dSAntonio Huete Jimenez case SSL_AD_DECRYPT_ERROR:
627f5b1c8a1SJohn Marino str = "CY";
628f5b1c8a1SJohn Marino break;
629*de0e0e4dSAntonio Huete Jimenez case SSL_AD_PROTOCOL_VERSION:
630f5b1c8a1SJohn Marino str = "PV";
631f5b1c8a1SJohn Marino break;
632*de0e0e4dSAntonio Huete Jimenez case SSL_AD_INSUFFICIENT_SECURITY:
633f5b1c8a1SJohn Marino str = "IS";
634f5b1c8a1SJohn Marino break;
635*de0e0e4dSAntonio Huete Jimenez case SSL_AD_INTERNAL_ERROR:
636f5b1c8a1SJohn Marino str = "IE";
637f5b1c8a1SJohn Marino break;
638*de0e0e4dSAntonio Huete Jimenez case SSL_AD_USER_CANCELLED:
639f5b1c8a1SJohn Marino str = "US";
640f5b1c8a1SJohn Marino break;
641*de0e0e4dSAntonio Huete Jimenez case SSL_AD_NO_RENEGOTIATION:
642f5b1c8a1SJohn Marino str = "NR";
643f5b1c8a1SJohn Marino break;
644*de0e0e4dSAntonio Huete Jimenez case SSL_AD_MISSING_EXTENSION:
645*de0e0e4dSAntonio Huete Jimenez str = "ME";
646*de0e0e4dSAntonio Huete Jimenez break;
647*de0e0e4dSAntonio Huete Jimenez case SSL_AD_UNSUPPORTED_EXTENSION:
648f5b1c8a1SJohn Marino str = "UE";
649f5b1c8a1SJohn Marino break;
650*de0e0e4dSAntonio Huete Jimenez case SSL_AD_CERTIFICATE_UNOBTAINABLE:
651f5b1c8a1SJohn Marino str = "CO";
652f5b1c8a1SJohn Marino break;
653*de0e0e4dSAntonio Huete Jimenez case SSL_AD_UNRECOGNIZED_NAME:
654f5b1c8a1SJohn Marino str = "UN";
655f5b1c8a1SJohn Marino break;
656*de0e0e4dSAntonio Huete Jimenez case SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE:
657f5b1c8a1SJohn Marino str = "BR";
658f5b1c8a1SJohn Marino break;
659*de0e0e4dSAntonio Huete Jimenez case SSL_AD_BAD_CERTIFICATE_HASH_VALUE:
660f5b1c8a1SJohn Marino str = "BH";
661f5b1c8a1SJohn Marino break;
662*de0e0e4dSAntonio Huete Jimenez case SSL_AD_UNKNOWN_PSK_IDENTITY:
663f5b1c8a1SJohn Marino str = "UP";
664f5b1c8a1SJohn Marino break;
665f5b1c8a1SJohn Marino default:
666f5b1c8a1SJohn Marino str = "UK";
667f5b1c8a1SJohn Marino break;
668f5b1c8a1SJohn Marino }
669f5b1c8a1SJohn Marino return (str);
670f5b1c8a1SJohn Marino }
671f5b1c8a1SJohn Marino
672f5b1c8a1SJohn Marino const char *
SSL_alert_desc_string_long(int value)673f5b1c8a1SJohn Marino SSL_alert_desc_string_long(int value)
674f5b1c8a1SJohn Marino {
675f5b1c8a1SJohn Marino const char *str;
676f5b1c8a1SJohn Marino
677f5b1c8a1SJohn Marino switch (value & 0xff) {
678*de0e0e4dSAntonio Huete Jimenez case SSL_AD_CLOSE_NOTIFY:
679f5b1c8a1SJohn Marino str = "close notify";
680f5b1c8a1SJohn Marino break;
681*de0e0e4dSAntonio Huete Jimenez case SSL_AD_UNEXPECTED_MESSAGE:
682f5b1c8a1SJohn Marino str = "unexpected_message";
683f5b1c8a1SJohn Marino break;
684*de0e0e4dSAntonio Huete Jimenez case SSL_AD_BAD_RECORD_MAC:
685f5b1c8a1SJohn Marino str = "bad record mac";
686f5b1c8a1SJohn Marino break;
687*de0e0e4dSAntonio Huete Jimenez case SSL_AD_DECOMPRESSION_FAILURE:
688f5b1c8a1SJohn Marino str = "decompression failure";
689f5b1c8a1SJohn Marino break;
690*de0e0e4dSAntonio Huete Jimenez case SSL_AD_HANDSHAKE_FAILURE:
691f5b1c8a1SJohn Marino str = "handshake failure";
692f5b1c8a1SJohn Marino break;
693*de0e0e4dSAntonio Huete Jimenez case SSL_AD_BAD_CERTIFICATE:
694f5b1c8a1SJohn Marino str = "bad certificate";
695f5b1c8a1SJohn Marino break;
696*de0e0e4dSAntonio Huete Jimenez case SSL_AD_UNSUPPORTED_CERTIFICATE:
697f5b1c8a1SJohn Marino str = "unsupported certificate";
698f5b1c8a1SJohn Marino break;
699*de0e0e4dSAntonio Huete Jimenez case SSL_AD_CERTIFICATE_REVOKED:
700f5b1c8a1SJohn Marino str = "certificate revoked";
701f5b1c8a1SJohn Marino break;
702*de0e0e4dSAntonio Huete Jimenez case SSL_AD_CERTIFICATE_EXPIRED:
703f5b1c8a1SJohn Marino str = "certificate expired";
704f5b1c8a1SJohn Marino break;
705*de0e0e4dSAntonio Huete Jimenez case SSL_AD_CERTIFICATE_UNKNOWN:
706f5b1c8a1SJohn Marino str = "certificate unknown";
707f5b1c8a1SJohn Marino break;
708*de0e0e4dSAntonio Huete Jimenez case SSL_AD_ILLEGAL_PARAMETER:
709f5b1c8a1SJohn Marino str = "illegal parameter";
710f5b1c8a1SJohn Marino break;
711*de0e0e4dSAntonio Huete Jimenez case SSL_AD_RECORD_OVERFLOW:
712f5b1c8a1SJohn Marino str = "record overflow";
713f5b1c8a1SJohn Marino break;
714*de0e0e4dSAntonio Huete Jimenez case SSL_AD_UNKNOWN_CA:
715f5b1c8a1SJohn Marino str = "unknown CA";
716f5b1c8a1SJohn Marino break;
717*de0e0e4dSAntonio Huete Jimenez case SSL_AD_ACCESS_DENIED:
718f5b1c8a1SJohn Marino str = "access denied";
719f5b1c8a1SJohn Marino break;
720*de0e0e4dSAntonio Huete Jimenez case SSL_AD_DECODE_ERROR:
721f5b1c8a1SJohn Marino str = "decode error";
722f5b1c8a1SJohn Marino break;
723*de0e0e4dSAntonio Huete Jimenez case SSL_AD_DECRYPT_ERROR:
724f5b1c8a1SJohn Marino str = "decrypt error";
725f5b1c8a1SJohn Marino break;
726*de0e0e4dSAntonio Huete Jimenez case SSL_AD_PROTOCOL_VERSION:
727f5b1c8a1SJohn Marino str = "protocol version";
728f5b1c8a1SJohn Marino break;
729*de0e0e4dSAntonio Huete Jimenez case SSL_AD_INSUFFICIENT_SECURITY:
730f5b1c8a1SJohn Marino str = "insufficient security";
731f5b1c8a1SJohn Marino break;
732*de0e0e4dSAntonio Huete Jimenez case SSL_AD_INTERNAL_ERROR:
733f5b1c8a1SJohn Marino str = "internal error";
734f5b1c8a1SJohn Marino break;
735*de0e0e4dSAntonio Huete Jimenez case SSL_AD_USER_CANCELLED:
736f5b1c8a1SJohn Marino str = "user canceled";
737f5b1c8a1SJohn Marino break;
738*de0e0e4dSAntonio Huete Jimenez case SSL_AD_NO_RENEGOTIATION:
739f5b1c8a1SJohn Marino str = "no renegotiation";
740f5b1c8a1SJohn Marino break;
741*de0e0e4dSAntonio Huete Jimenez case SSL_AD_MISSING_EXTENSION:
742*de0e0e4dSAntonio Huete Jimenez str = "missing extension";
743*de0e0e4dSAntonio Huete Jimenez break;
744*de0e0e4dSAntonio Huete Jimenez case SSL_AD_UNSUPPORTED_EXTENSION:
745f5b1c8a1SJohn Marino str = "unsupported extension";
746f5b1c8a1SJohn Marino break;
747*de0e0e4dSAntonio Huete Jimenez case SSL_AD_CERTIFICATE_UNOBTAINABLE:
748f5b1c8a1SJohn Marino str = "certificate unobtainable";
749f5b1c8a1SJohn Marino break;
750*de0e0e4dSAntonio Huete Jimenez case SSL_AD_UNRECOGNIZED_NAME:
751f5b1c8a1SJohn Marino str = "unrecognized name";
752f5b1c8a1SJohn Marino break;
753*de0e0e4dSAntonio Huete Jimenez case SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE:
754f5b1c8a1SJohn Marino str = "bad certificate status response";
755f5b1c8a1SJohn Marino break;
756*de0e0e4dSAntonio Huete Jimenez case SSL_AD_BAD_CERTIFICATE_HASH_VALUE:
757f5b1c8a1SJohn Marino str = "bad certificate hash value";
758f5b1c8a1SJohn Marino break;
759*de0e0e4dSAntonio Huete Jimenez case SSL_AD_UNKNOWN_PSK_IDENTITY:
760f5b1c8a1SJohn Marino str = "unknown PSK identity";
761f5b1c8a1SJohn Marino break;
762f5b1c8a1SJohn Marino default:
763f5b1c8a1SJohn Marino str = "unknown";
764f5b1c8a1SJohn Marino break;
765f5b1c8a1SJohn Marino }
766f5b1c8a1SJohn Marino return (str);
767f5b1c8a1SJohn Marino }
768f5b1c8a1SJohn Marino
769f5b1c8a1SJohn Marino const char *
SSL_rstate_string(const SSL * s)770f5b1c8a1SJohn Marino SSL_rstate_string(const SSL *s)
771f5b1c8a1SJohn Marino {
772f5b1c8a1SJohn Marino const char *str;
773f5b1c8a1SJohn Marino
77472c33676SMaxim Ag switch (s->internal->rstate) {
775f5b1c8a1SJohn Marino case SSL_ST_READ_HEADER:
776f5b1c8a1SJohn Marino str = "RH";
777f5b1c8a1SJohn Marino break;
778f5b1c8a1SJohn Marino case SSL_ST_READ_BODY:
779f5b1c8a1SJohn Marino str = "RB";
780f5b1c8a1SJohn Marino break;
781f5b1c8a1SJohn Marino case SSL_ST_READ_DONE:
782f5b1c8a1SJohn Marino str = "RD";
783f5b1c8a1SJohn Marino break;
784f5b1c8a1SJohn Marino default:
785f5b1c8a1SJohn Marino str = "unknown";
786f5b1c8a1SJohn Marino break;
787f5b1c8a1SJohn Marino }
788f5b1c8a1SJohn Marino return (str);
789f5b1c8a1SJohn Marino }
790