xref: /freebsd/crypto/openssl/ssl/ssl_stat.c (revision 6f9291cea8b06d251243fd47a7234018541832a3)
174664626SKris Kennaway /* ssl/ssl_stat.c */
274664626SKris Kennaway /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
374664626SKris Kennaway  * All rights reserved.
474664626SKris Kennaway  *
574664626SKris Kennaway  * This package is an SSL implementation written
674664626SKris Kennaway  * by Eric Young (eay@cryptsoft.com).
774664626SKris Kennaway  * The implementation was written so as to conform with Netscapes SSL.
874664626SKris Kennaway  *
974664626SKris Kennaway  * This library is free for commercial and non-commercial use as long as
1074664626SKris Kennaway  * the following conditions are aheared to.  The following conditions
1174664626SKris Kennaway  * apply to all code found in this distribution, be it the RC4, RSA,
1274664626SKris Kennaway  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
1374664626SKris Kennaway  * included with this distribution is covered by the same copyright terms
1474664626SKris Kennaway  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
1574664626SKris Kennaway  *
1674664626SKris Kennaway  * Copyright remains Eric Young's, and as such any Copyright notices in
1774664626SKris Kennaway  * the code are not to be removed.
1874664626SKris Kennaway  * If this package is used in a product, Eric Young should be given attribution
1974664626SKris Kennaway  * as the author of the parts of the library used.
2074664626SKris Kennaway  * This can be in the form of a textual message at program startup or
2174664626SKris Kennaway  * in documentation (online or textual) provided with the package.
2274664626SKris Kennaway  *
2374664626SKris Kennaway  * Redistribution and use in source and binary forms, with or without
2474664626SKris Kennaway  * modification, are permitted provided that the following conditions
2574664626SKris Kennaway  * are met:
2674664626SKris Kennaway  * 1. Redistributions of source code must retain the copyright
2774664626SKris Kennaway  *    notice, this list of conditions and the following disclaimer.
2874664626SKris Kennaway  * 2. Redistributions in binary form must reproduce the above copyright
2974664626SKris Kennaway  *    notice, this list of conditions and the following disclaimer in the
3074664626SKris Kennaway  *    documentation and/or other materials provided with the distribution.
3174664626SKris Kennaway  * 3. All advertising materials mentioning features or use of this software
3274664626SKris Kennaway  *    must display the following acknowledgement:
3374664626SKris Kennaway  *    "This product includes cryptographic software written by
3474664626SKris Kennaway  *     Eric Young (eay@cryptsoft.com)"
3574664626SKris Kennaway  *    The word 'cryptographic' can be left out if the rouines from the library
3674664626SKris Kennaway  *    being used are not cryptographic related :-).
3774664626SKris Kennaway  * 4. If you include any Windows specific code (or a derivative thereof) from
3874664626SKris Kennaway  *    the apps directory (application code) you must include an acknowledgement:
3974664626SKris Kennaway  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
4074664626SKris Kennaway  *
4174664626SKris Kennaway  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
4274664626SKris Kennaway  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
4374664626SKris Kennaway  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
4474664626SKris Kennaway  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
4574664626SKris Kennaway  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
4674664626SKris Kennaway  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
4774664626SKris Kennaway  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
4874664626SKris Kennaway  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
4974664626SKris Kennaway  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
5074664626SKris Kennaway  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
5174664626SKris Kennaway  * SUCH DAMAGE.
5274664626SKris Kennaway  *
5374664626SKris Kennaway  * The licence and distribution terms for any publically available version or
5474664626SKris Kennaway  * derivative of this code cannot be changed.  i.e. this code cannot simply be
5574664626SKris Kennaway  * copied and put under another distribution licence
5674664626SKris Kennaway  * [including the GNU Public Licence.]
5774664626SKris Kennaway  */
581f13597dSJung-uk Kim /* ====================================================================
591f13597dSJung-uk Kim  * Copyright 2005 Nokia. All rights reserved.
601f13597dSJung-uk Kim  *
611f13597dSJung-uk Kim  * The portions of the attached software ("Contribution") is developed by
621f13597dSJung-uk Kim  * Nokia Corporation and is licensed pursuant to the OpenSSL open source
631f13597dSJung-uk Kim  * license.
641f13597dSJung-uk Kim  *
651f13597dSJung-uk Kim  * The Contribution, originally written by Mika Kousa and Pasi Eronen of
661f13597dSJung-uk Kim  * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
671f13597dSJung-uk Kim  * support (see RFC 4279) to OpenSSL.
681f13597dSJung-uk Kim  *
691f13597dSJung-uk Kim  * No patent licenses or other rights except those expressly stated in
701f13597dSJung-uk Kim  * the OpenSSL open source license shall be deemed granted or received
711f13597dSJung-uk Kim  * expressly, by implication, estoppel, or otherwise.
721f13597dSJung-uk Kim  *
731f13597dSJung-uk Kim  * No assurances are provided by Nokia that the Contribution does not
741f13597dSJung-uk Kim  * infringe the patent or other intellectual property rights of any third
751f13597dSJung-uk Kim  * party or that the license provides you with all the necessary rights
761f13597dSJung-uk Kim  * to make use of the Contribution.
771f13597dSJung-uk Kim  *
781f13597dSJung-uk Kim  * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
791f13597dSJung-uk Kim  * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
801f13597dSJung-uk Kim  * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
811f13597dSJung-uk Kim  * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
821f13597dSJung-uk Kim  * OTHERWISE.
831f13597dSJung-uk Kim  */
8474664626SKris Kennaway 
8574664626SKris Kennaway #include <stdio.h>
8674664626SKris Kennaway #include "ssl_locl.h"
8774664626SKris Kennaway 
885c87c606SMark Murray const char *SSL_state_string_long(const SSL *s)
8974664626SKris Kennaway {
905c87c606SMark Murray     const char *str;
9174664626SKris Kennaway 
92*6f9291ceSJung-uk Kim     switch (s->state) {
93*6f9291ceSJung-uk Kim     case SSL_ST_BEFORE:
94*6f9291ceSJung-uk Kim         str = "before SSL initialization";
95*6f9291ceSJung-uk Kim         break;
96*6f9291ceSJung-uk Kim     case SSL_ST_ACCEPT:
97*6f9291ceSJung-uk Kim         str = "before accept initialization";
98*6f9291ceSJung-uk Kim         break;
99*6f9291ceSJung-uk Kim     case SSL_ST_CONNECT:
100*6f9291ceSJung-uk Kim         str = "before connect initialization";
101*6f9291ceSJung-uk Kim         break;
102*6f9291ceSJung-uk Kim     case SSL_ST_OK:
103*6f9291ceSJung-uk Kim         str = "SSL negotiation finished successfully";
104*6f9291ceSJung-uk Kim         break;
105*6f9291ceSJung-uk Kim     case SSL_ST_RENEGOTIATE:
106*6f9291ceSJung-uk Kim         str = "SSL renegotiate ciphers";
107*6f9291ceSJung-uk Kim         break;
108*6f9291ceSJung-uk Kim     case SSL_ST_BEFORE | SSL_ST_CONNECT:
109*6f9291ceSJung-uk Kim         str = "before/connect initialization";
110*6f9291ceSJung-uk Kim         break;
111*6f9291ceSJung-uk Kim     case SSL_ST_OK | SSL_ST_CONNECT:
112*6f9291ceSJung-uk Kim         str = "ok/connect SSL initialization";
113*6f9291ceSJung-uk Kim         break;
114*6f9291ceSJung-uk Kim     case SSL_ST_BEFORE | SSL_ST_ACCEPT:
115*6f9291ceSJung-uk Kim         str = "before/accept initialization";
116*6f9291ceSJung-uk Kim         break;
117*6f9291ceSJung-uk Kim     case SSL_ST_OK | SSL_ST_ACCEPT:
118*6f9291ceSJung-uk Kim         str = "ok/accept SSL initialization";
119*6f9291ceSJung-uk Kim         break;
1205c87c606SMark Murray #ifndef OPENSSL_NO_SSL2
121*6f9291ceSJung-uk Kim     case SSL2_ST_CLIENT_START_ENCRYPTION:
122*6f9291ceSJung-uk Kim         str = "SSLv2 client start encryption";
123*6f9291ceSJung-uk Kim         break;
124*6f9291ceSJung-uk Kim     case SSL2_ST_SERVER_START_ENCRYPTION:
125*6f9291ceSJung-uk Kim         str = "SSLv2 server start encryption";
126*6f9291ceSJung-uk Kim         break;
127*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_HELLO_A:
128*6f9291ceSJung-uk Kim         str = "SSLv2 write client hello A";
129*6f9291ceSJung-uk Kim         break;
130*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_HELLO_B:
131*6f9291ceSJung-uk Kim         str = "SSLv2 write client hello B";
132*6f9291ceSJung-uk Kim         break;
133*6f9291ceSJung-uk Kim     case SSL2_ST_GET_SERVER_HELLO_A:
134*6f9291ceSJung-uk Kim         str = "SSLv2 read server hello A";
135*6f9291ceSJung-uk Kim         break;
136*6f9291ceSJung-uk Kim     case SSL2_ST_GET_SERVER_HELLO_B:
137*6f9291ceSJung-uk Kim         str = "SSLv2 read server hello B";
138*6f9291ceSJung-uk Kim         break;
139*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_MASTER_KEY_A:
140*6f9291ceSJung-uk Kim         str = "SSLv2 write client master key A";
141*6f9291ceSJung-uk Kim         break;
142*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_MASTER_KEY_B:
143*6f9291ceSJung-uk Kim         str = "SSLv2 write client master key B";
144*6f9291ceSJung-uk Kim         break;
145*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_FINISHED_A:
146*6f9291ceSJung-uk Kim         str = "SSLv2 write client finished A";
147*6f9291ceSJung-uk Kim         break;
148*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_FINISHED_B:
149*6f9291ceSJung-uk Kim         str = "SSLv2 write client finished B";
150*6f9291ceSJung-uk Kim         break;
151*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_CERTIFICATE_A:
152*6f9291ceSJung-uk Kim         str = "SSLv2 write client certificate A";
153*6f9291ceSJung-uk Kim         break;
154*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_CERTIFICATE_B:
155*6f9291ceSJung-uk Kim         str = "SSLv2 write client certificate B";
156*6f9291ceSJung-uk Kim         break;
157*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_CERTIFICATE_C:
158*6f9291ceSJung-uk Kim         str = "SSLv2 write client certificate C";
159*6f9291ceSJung-uk Kim         break;
160*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_CERTIFICATE_D:
161*6f9291ceSJung-uk Kim         str = "SSLv2 write client certificate D";
162*6f9291ceSJung-uk Kim         break;
163*6f9291ceSJung-uk Kim     case SSL2_ST_GET_SERVER_VERIFY_A:
164*6f9291ceSJung-uk Kim         str = "SSLv2 read server verify A";
165*6f9291ceSJung-uk Kim         break;
166*6f9291ceSJung-uk Kim     case SSL2_ST_GET_SERVER_VERIFY_B:
167*6f9291ceSJung-uk Kim         str = "SSLv2 read server verify B";
168*6f9291ceSJung-uk Kim         break;
169*6f9291ceSJung-uk Kim     case SSL2_ST_GET_SERVER_FINISHED_A:
170*6f9291ceSJung-uk Kim         str = "SSLv2 read server finished A";
171*6f9291ceSJung-uk Kim         break;
172*6f9291ceSJung-uk Kim     case SSL2_ST_GET_SERVER_FINISHED_B:
173*6f9291ceSJung-uk Kim         str = "SSLv2 read server finished B";
174*6f9291ceSJung-uk Kim         break;
175*6f9291ceSJung-uk Kim     case SSL2_ST_GET_CLIENT_HELLO_A:
176*6f9291ceSJung-uk Kim         str = "SSLv2 read client hello A";
177*6f9291ceSJung-uk Kim         break;
178*6f9291ceSJung-uk Kim     case SSL2_ST_GET_CLIENT_HELLO_B:
179*6f9291ceSJung-uk Kim         str = "SSLv2 read client hello B";
180*6f9291ceSJung-uk Kim         break;
181*6f9291ceSJung-uk Kim     case SSL2_ST_GET_CLIENT_HELLO_C:
182*6f9291ceSJung-uk Kim         str = "SSLv2 read client hello C";
183*6f9291ceSJung-uk Kim         break;
184*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_SERVER_HELLO_A:
185*6f9291ceSJung-uk Kim         str = "SSLv2 write server hello A";
186*6f9291ceSJung-uk Kim         break;
187*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_SERVER_HELLO_B:
188*6f9291ceSJung-uk Kim         str = "SSLv2 write server hello B";
189*6f9291ceSJung-uk Kim         break;
190*6f9291ceSJung-uk Kim     case SSL2_ST_GET_CLIENT_MASTER_KEY_A:
191*6f9291ceSJung-uk Kim         str = "SSLv2 read client master key A";
192*6f9291ceSJung-uk Kim         break;
193*6f9291ceSJung-uk Kim     case SSL2_ST_GET_CLIENT_MASTER_KEY_B:
194*6f9291ceSJung-uk Kim         str = "SSLv2 read client master key B";
195*6f9291ceSJung-uk Kim         break;
196*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_SERVER_VERIFY_A:
197*6f9291ceSJung-uk Kim         str = "SSLv2 write server verify A";
198*6f9291ceSJung-uk Kim         break;
199*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_SERVER_VERIFY_B:
200*6f9291ceSJung-uk Kim         str = "SSLv2 write server verify B";
201*6f9291ceSJung-uk Kim         break;
202*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_SERVER_VERIFY_C:
203*6f9291ceSJung-uk Kim         str = "SSLv2 write server verify C";
204*6f9291ceSJung-uk Kim         break;
205*6f9291ceSJung-uk Kim     case SSL2_ST_GET_CLIENT_FINISHED_A:
206*6f9291ceSJung-uk Kim         str = "SSLv2 read client finished A";
207*6f9291ceSJung-uk Kim         break;
208*6f9291ceSJung-uk Kim     case SSL2_ST_GET_CLIENT_FINISHED_B:
209*6f9291ceSJung-uk Kim         str = "SSLv2 read client finished B";
210*6f9291ceSJung-uk Kim         break;
211*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_SERVER_FINISHED_A:
212*6f9291ceSJung-uk Kim         str = "SSLv2 write server finished A";
213*6f9291ceSJung-uk Kim         break;
214*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_SERVER_FINISHED_B:
215*6f9291ceSJung-uk Kim         str = "SSLv2 write server finished B";
216*6f9291ceSJung-uk Kim         break;
217*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_REQUEST_CERTIFICATE_A:
218*6f9291ceSJung-uk Kim         str = "SSLv2 write request certificate A";
219*6f9291ceSJung-uk Kim         break;
220*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_REQUEST_CERTIFICATE_B:
221*6f9291ceSJung-uk Kim         str = "SSLv2 write request certificate B";
222*6f9291ceSJung-uk Kim         break;
223*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_REQUEST_CERTIFICATE_C:
224*6f9291ceSJung-uk Kim         str = "SSLv2 write request certificate C";
225*6f9291ceSJung-uk Kim         break;
226*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_REQUEST_CERTIFICATE_D:
227*6f9291ceSJung-uk Kim         str = "SSLv2 write request certificate D";
228*6f9291ceSJung-uk Kim         break;
229*6f9291ceSJung-uk Kim     case SSL2_ST_X509_GET_SERVER_CERTIFICATE:
230*6f9291ceSJung-uk Kim         str = "SSLv2 X509 read server certificate";
231*6f9291ceSJung-uk Kim         break;
232*6f9291ceSJung-uk Kim     case SSL2_ST_X509_GET_CLIENT_CERTIFICATE:
233*6f9291ceSJung-uk Kim         str = "SSLv2 X509 read client certificate";
234*6f9291ceSJung-uk Kim         break;
23574664626SKris Kennaway #endif
23674664626SKris Kennaway 
2375c87c606SMark Murray #ifndef OPENSSL_NO_SSL3
23874664626SKris Kennaway /* SSLv3 additions */
239*6f9291ceSJung-uk Kim     case SSL3_ST_CW_CLNT_HELLO_A:
240*6f9291ceSJung-uk Kim         str = "SSLv3 write client hello A";
241*6f9291ceSJung-uk Kim         break;
242*6f9291ceSJung-uk Kim     case SSL3_ST_CW_CLNT_HELLO_B:
243*6f9291ceSJung-uk Kim         str = "SSLv3 write client hello B";
244*6f9291ceSJung-uk Kim         break;
245*6f9291ceSJung-uk Kim     case SSL3_ST_CR_SRVR_HELLO_A:
246*6f9291ceSJung-uk Kim         str = "SSLv3 read server hello A";
247*6f9291ceSJung-uk Kim         break;
248*6f9291ceSJung-uk Kim     case SSL3_ST_CR_SRVR_HELLO_B:
249*6f9291ceSJung-uk Kim         str = "SSLv3 read server hello B";
250*6f9291ceSJung-uk Kim         break;
251*6f9291ceSJung-uk Kim     case SSL3_ST_CR_CERT_A:
252*6f9291ceSJung-uk Kim         str = "SSLv3 read server certificate A";
253*6f9291ceSJung-uk Kim         break;
254*6f9291ceSJung-uk Kim     case SSL3_ST_CR_CERT_B:
255*6f9291ceSJung-uk Kim         str = "SSLv3 read server certificate B";
256*6f9291ceSJung-uk Kim         break;
257*6f9291ceSJung-uk Kim     case SSL3_ST_CR_KEY_EXCH_A:
258*6f9291ceSJung-uk Kim         str = "SSLv3 read server key exchange A";
259*6f9291ceSJung-uk Kim         break;
260*6f9291ceSJung-uk Kim     case SSL3_ST_CR_KEY_EXCH_B:
261*6f9291ceSJung-uk Kim         str = "SSLv3 read server key exchange B";
262*6f9291ceSJung-uk Kim         break;
263*6f9291ceSJung-uk Kim     case SSL3_ST_CR_CERT_REQ_A:
264*6f9291ceSJung-uk Kim         str = "SSLv3 read server certificate request A";
265*6f9291ceSJung-uk Kim         break;
266*6f9291ceSJung-uk Kim     case SSL3_ST_CR_CERT_REQ_B:
267*6f9291ceSJung-uk Kim         str = "SSLv3 read server certificate request B";
268*6f9291ceSJung-uk Kim         break;
269*6f9291ceSJung-uk Kim     case SSL3_ST_CR_SESSION_TICKET_A:
270*6f9291ceSJung-uk Kim         str = "SSLv3 read server session ticket A";
271*6f9291ceSJung-uk Kim         break;
272*6f9291ceSJung-uk Kim     case SSL3_ST_CR_SESSION_TICKET_B:
273*6f9291ceSJung-uk Kim         str = "SSLv3 read server session ticket B";
274*6f9291ceSJung-uk Kim         break;
275*6f9291ceSJung-uk Kim     case SSL3_ST_CR_SRVR_DONE_A:
276*6f9291ceSJung-uk Kim         str = "SSLv3 read server done A";
277*6f9291ceSJung-uk Kim         break;
278*6f9291ceSJung-uk Kim     case SSL3_ST_CR_SRVR_DONE_B:
279*6f9291ceSJung-uk Kim         str = "SSLv3 read server done B";
280*6f9291ceSJung-uk Kim         break;
281*6f9291ceSJung-uk Kim     case SSL3_ST_CW_CERT_A:
282*6f9291ceSJung-uk Kim         str = "SSLv3 write client certificate A";
283*6f9291ceSJung-uk Kim         break;
284*6f9291ceSJung-uk Kim     case SSL3_ST_CW_CERT_B:
285*6f9291ceSJung-uk Kim         str = "SSLv3 write client certificate B";
286*6f9291ceSJung-uk Kim         break;
287*6f9291ceSJung-uk Kim     case SSL3_ST_CW_CERT_C:
288*6f9291ceSJung-uk Kim         str = "SSLv3 write client certificate C";
289*6f9291ceSJung-uk Kim         break;
290*6f9291ceSJung-uk Kim     case SSL3_ST_CW_CERT_D:
291*6f9291ceSJung-uk Kim         str = "SSLv3 write client certificate D";
292*6f9291ceSJung-uk Kim         break;
293*6f9291ceSJung-uk Kim     case SSL3_ST_CW_KEY_EXCH_A:
294*6f9291ceSJung-uk Kim         str = "SSLv3 write client key exchange A";
295*6f9291ceSJung-uk Kim         break;
296*6f9291ceSJung-uk Kim     case SSL3_ST_CW_KEY_EXCH_B:
297*6f9291ceSJung-uk Kim         str = "SSLv3 write client key exchange B";
298*6f9291ceSJung-uk Kim         break;
299*6f9291ceSJung-uk Kim     case SSL3_ST_CW_CERT_VRFY_A:
300*6f9291ceSJung-uk Kim         str = "SSLv3 write certificate verify A";
301*6f9291ceSJung-uk Kim         break;
302*6f9291ceSJung-uk Kim     case SSL3_ST_CW_CERT_VRFY_B:
303*6f9291ceSJung-uk Kim         str = "SSLv3 write certificate verify B";
304*6f9291ceSJung-uk Kim         break;
30574664626SKris Kennaway 
30674664626SKris Kennaway     case SSL3_ST_CW_CHANGE_A:
307*6f9291ceSJung-uk Kim     case SSL3_ST_SW_CHANGE_A:
308*6f9291ceSJung-uk Kim         str = "SSLv3 write change cipher spec A";
309*6f9291ceSJung-uk Kim         break;
31074664626SKris Kennaway     case SSL3_ST_CW_CHANGE_B:
311*6f9291ceSJung-uk Kim     case SSL3_ST_SW_CHANGE_B:
312*6f9291ceSJung-uk Kim         str = "SSLv3 write change cipher spec B";
313*6f9291ceSJung-uk Kim         break;
31474664626SKris Kennaway     case SSL3_ST_CW_FINISHED_A:
315*6f9291ceSJung-uk Kim     case SSL3_ST_SW_FINISHED_A:
316*6f9291ceSJung-uk Kim         str = "SSLv3 write finished A";
317*6f9291ceSJung-uk Kim         break;
31874664626SKris Kennaway     case SSL3_ST_CW_FINISHED_B:
319*6f9291ceSJung-uk Kim     case SSL3_ST_SW_FINISHED_B:
320*6f9291ceSJung-uk Kim         str = "SSLv3 write finished B";
321*6f9291ceSJung-uk Kim         break;
32274664626SKris Kennaway     case SSL3_ST_CR_CHANGE_A:
323*6f9291ceSJung-uk Kim     case SSL3_ST_SR_CHANGE_A:
324*6f9291ceSJung-uk Kim         str = "SSLv3 read change cipher spec A";
325*6f9291ceSJung-uk Kim         break;
32674664626SKris Kennaway     case SSL3_ST_CR_CHANGE_B:
327*6f9291ceSJung-uk Kim     case SSL3_ST_SR_CHANGE_B:
328*6f9291ceSJung-uk Kim         str = "SSLv3 read change cipher spec B";
329*6f9291ceSJung-uk Kim         break;
33074664626SKris Kennaway     case SSL3_ST_CR_FINISHED_A:
331*6f9291ceSJung-uk Kim     case SSL3_ST_SR_FINISHED_A:
332*6f9291ceSJung-uk Kim         str = "SSLv3 read finished A";
333*6f9291ceSJung-uk Kim         break;
33474664626SKris Kennaway     case SSL3_ST_CR_FINISHED_B:
335*6f9291ceSJung-uk Kim     case SSL3_ST_SR_FINISHED_B:
336*6f9291ceSJung-uk Kim         str = "SSLv3 read finished B";
337*6f9291ceSJung-uk Kim         break;
33874664626SKris Kennaway 
33974664626SKris Kennaway     case SSL3_ST_CW_FLUSH:
340*6f9291ceSJung-uk Kim     case SSL3_ST_SW_FLUSH:
341*6f9291ceSJung-uk Kim         str = "SSLv3 flush data";
342*6f9291ceSJung-uk Kim         break;
34374664626SKris Kennaway 
344*6f9291ceSJung-uk Kim     case SSL3_ST_SR_CLNT_HELLO_A:
345*6f9291ceSJung-uk Kim         str = "SSLv3 read client hello A";
346*6f9291ceSJung-uk Kim         break;
347*6f9291ceSJung-uk Kim     case SSL3_ST_SR_CLNT_HELLO_B:
348*6f9291ceSJung-uk Kim         str = "SSLv3 read client hello B";
349*6f9291ceSJung-uk Kim         break;
350*6f9291ceSJung-uk Kim     case SSL3_ST_SR_CLNT_HELLO_C:
351*6f9291ceSJung-uk Kim         str = "SSLv3 read client hello C";
352*6f9291ceSJung-uk Kim         break;
353*6f9291ceSJung-uk Kim     case SSL3_ST_SW_HELLO_REQ_A:
354*6f9291ceSJung-uk Kim         str = "SSLv3 write hello request A";
355*6f9291ceSJung-uk Kim         break;
356*6f9291ceSJung-uk Kim     case SSL3_ST_SW_HELLO_REQ_B:
357*6f9291ceSJung-uk Kim         str = "SSLv3 write hello request B";
358*6f9291ceSJung-uk Kim         break;
359*6f9291ceSJung-uk Kim     case SSL3_ST_SW_HELLO_REQ_C:
360*6f9291ceSJung-uk Kim         str = "SSLv3 write hello request C";
361*6f9291ceSJung-uk Kim         break;
362*6f9291ceSJung-uk Kim     case SSL3_ST_SW_SRVR_HELLO_A:
363*6f9291ceSJung-uk Kim         str = "SSLv3 write server hello A";
364*6f9291ceSJung-uk Kim         break;
365*6f9291ceSJung-uk Kim     case SSL3_ST_SW_SRVR_HELLO_B:
366*6f9291ceSJung-uk Kim         str = "SSLv3 write server hello B";
367*6f9291ceSJung-uk Kim         break;
368*6f9291ceSJung-uk Kim     case SSL3_ST_SW_CERT_A:
369*6f9291ceSJung-uk Kim         str = "SSLv3 write certificate A";
370*6f9291ceSJung-uk Kim         break;
371*6f9291ceSJung-uk Kim     case SSL3_ST_SW_CERT_B:
372*6f9291ceSJung-uk Kim         str = "SSLv3 write certificate B";
373*6f9291ceSJung-uk Kim         break;
374*6f9291ceSJung-uk Kim     case SSL3_ST_SW_KEY_EXCH_A:
375*6f9291ceSJung-uk Kim         str = "SSLv3 write key exchange A";
376*6f9291ceSJung-uk Kim         break;
377*6f9291ceSJung-uk Kim     case SSL3_ST_SW_KEY_EXCH_B:
378*6f9291ceSJung-uk Kim         str = "SSLv3 write key exchange B";
379*6f9291ceSJung-uk Kim         break;
380*6f9291ceSJung-uk Kim     case SSL3_ST_SW_CERT_REQ_A:
381*6f9291ceSJung-uk Kim         str = "SSLv3 write certificate request A";
382*6f9291ceSJung-uk Kim         break;
383*6f9291ceSJung-uk Kim     case SSL3_ST_SW_CERT_REQ_B:
384*6f9291ceSJung-uk Kim         str = "SSLv3 write certificate request B";
385*6f9291ceSJung-uk Kim         break;
386*6f9291ceSJung-uk Kim     case SSL3_ST_SW_SESSION_TICKET_A:
387*6f9291ceSJung-uk Kim         str = "SSLv3 write session ticket A";
388*6f9291ceSJung-uk Kim         break;
389*6f9291ceSJung-uk Kim     case SSL3_ST_SW_SESSION_TICKET_B:
390*6f9291ceSJung-uk Kim         str = "SSLv3 write session ticket B";
391*6f9291ceSJung-uk Kim         break;
392*6f9291ceSJung-uk Kim     case SSL3_ST_SW_SRVR_DONE_A:
393*6f9291ceSJung-uk Kim         str = "SSLv3 write server done A";
394*6f9291ceSJung-uk Kim         break;
395*6f9291ceSJung-uk Kim     case SSL3_ST_SW_SRVR_DONE_B:
396*6f9291ceSJung-uk Kim         str = "SSLv3 write server done B";
397*6f9291ceSJung-uk Kim         break;
398*6f9291ceSJung-uk Kim     case SSL3_ST_SR_CERT_A:
399*6f9291ceSJung-uk Kim         str = "SSLv3 read client certificate A";
400*6f9291ceSJung-uk Kim         break;
401*6f9291ceSJung-uk Kim     case SSL3_ST_SR_CERT_B:
402*6f9291ceSJung-uk Kim         str = "SSLv3 read client certificate B";
403*6f9291ceSJung-uk Kim         break;
404*6f9291ceSJung-uk Kim     case SSL3_ST_SR_KEY_EXCH_A:
405*6f9291ceSJung-uk Kim         str = "SSLv3 read client key exchange A";
406*6f9291ceSJung-uk Kim         break;
407*6f9291ceSJung-uk Kim     case SSL3_ST_SR_KEY_EXCH_B:
408*6f9291ceSJung-uk Kim         str = "SSLv3 read client key exchange B";
409*6f9291ceSJung-uk Kim         break;
410*6f9291ceSJung-uk Kim     case SSL3_ST_SR_CERT_VRFY_A:
411*6f9291ceSJung-uk Kim         str = "SSLv3 read certificate verify A";
412*6f9291ceSJung-uk Kim         break;
413*6f9291ceSJung-uk Kim     case SSL3_ST_SR_CERT_VRFY_B:
414*6f9291ceSJung-uk Kim         str = "SSLv3 read certificate verify B";
415*6f9291ceSJung-uk Kim         break;
41674664626SKris Kennaway #endif
41774664626SKris Kennaway 
418f579bf8eSKris Kennaway /* SSLv2/v3 compatibility states */
41974664626SKris Kennaway /* client */
420*6f9291ceSJung-uk Kim     case SSL23_ST_CW_CLNT_HELLO_A:
421*6f9291ceSJung-uk Kim         str = "SSLv2/v3 write client hello A";
422*6f9291ceSJung-uk Kim         break;
423*6f9291ceSJung-uk Kim     case SSL23_ST_CW_CLNT_HELLO_B:
424*6f9291ceSJung-uk Kim         str = "SSLv2/v3 write client hello B";
425*6f9291ceSJung-uk Kim         break;
426*6f9291ceSJung-uk Kim     case SSL23_ST_CR_SRVR_HELLO_A:
427*6f9291ceSJung-uk Kim         str = "SSLv2/v3 read server hello A";
428*6f9291ceSJung-uk Kim         break;
429*6f9291ceSJung-uk Kim     case SSL23_ST_CR_SRVR_HELLO_B:
430*6f9291ceSJung-uk Kim         str = "SSLv2/v3 read server hello B";
431*6f9291ceSJung-uk Kim         break;
43274664626SKris Kennaway /* server */
433*6f9291ceSJung-uk Kim     case SSL23_ST_SR_CLNT_HELLO_A:
434*6f9291ceSJung-uk Kim         str = "SSLv2/v3 read client hello A";
435*6f9291ceSJung-uk Kim         break;
436*6f9291ceSJung-uk Kim     case SSL23_ST_SR_CLNT_HELLO_B:
437*6f9291ceSJung-uk Kim         str = "SSLv2/v3 read client hello B";
438*6f9291ceSJung-uk Kim         break;
43974664626SKris Kennaway 
4406a599222SSimon L. B. Nielsen /* DTLS */
441*6f9291ceSJung-uk Kim     case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A:
442*6f9291ceSJung-uk Kim         str = "DTLS1 read hello verify request A";
443*6f9291ceSJung-uk Kim         break;
444*6f9291ceSJung-uk Kim     case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B:
445*6f9291ceSJung-uk Kim         str = "DTLS1 read hello verify request B";
446*6f9291ceSJung-uk Kim         break;
447*6f9291ceSJung-uk Kim     case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A:
448*6f9291ceSJung-uk Kim         str = "DTLS1 write hello verify request A";
449*6f9291ceSJung-uk Kim         break;
450*6f9291ceSJung-uk Kim     case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B:
451*6f9291ceSJung-uk Kim         str = "DTLS1 write hello verify request B";
452*6f9291ceSJung-uk Kim         break;
4536a599222SSimon L. B. Nielsen 
454*6f9291ceSJung-uk Kim     default:
455*6f9291ceSJung-uk Kim         str = "unknown state";
456*6f9291ceSJung-uk Kim         break;
45774664626SKris Kennaway     }
45874664626SKris Kennaway     return (str);
45974664626SKris Kennaway }
46074664626SKris Kennaway 
4615c87c606SMark Murray const char *SSL_rstate_string_long(const SSL *s)
46274664626SKris Kennaway {
4635c87c606SMark Murray     const char *str;
46474664626SKris Kennaway 
465*6f9291ceSJung-uk Kim     switch (s->rstate) {
466*6f9291ceSJung-uk Kim     case SSL_ST_READ_HEADER:
467*6f9291ceSJung-uk Kim         str = "read header";
468*6f9291ceSJung-uk Kim         break;
469*6f9291ceSJung-uk Kim     case SSL_ST_READ_BODY:
470*6f9291ceSJung-uk Kim         str = "read body";
471*6f9291ceSJung-uk Kim         break;
472*6f9291ceSJung-uk Kim     case SSL_ST_READ_DONE:
473*6f9291ceSJung-uk Kim         str = "read done";
474*6f9291ceSJung-uk Kim         break;
475*6f9291ceSJung-uk Kim     default:
476*6f9291ceSJung-uk Kim         str = "unknown";
477*6f9291ceSJung-uk Kim         break;
47874664626SKris Kennaway     }
47974664626SKris Kennaway     return (str);
48074664626SKris Kennaway }
48174664626SKris Kennaway 
4825c87c606SMark Murray const char *SSL_state_string(const SSL *s)
48374664626SKris Kennaway {
4845c87c606SMark Murray     const char *str;
48574664626SKris Kennaway 
486*6f9291ceSJung-uk Kim     switch (s->state) {
487*6f9291ceSJung-uk Kim     case SSL_ST_BEFORE:
488*6f9291ceSJung-uk Kim         str = "PINIT ";
489*6f9291ceSJung-uk Kim         break;
490*6f9291ceSJung-uk Kim     case SSL_ST_ACCEPT:
491*6f9291ceSJung-uk Kim         str = "AINIT ";
492*6f9291ceSJung-uk Kim         break;
493*6f9291ceSJung-uk Kim     case SSL_ST_CONNECT:
494*6f9291ceSJung-uk Kim         str = "CINIT ";
495*6f9291ceSJung-uk Kim         break;
496*6f9291ceSJung-uk Kim     case SSL_ST_OK:
497*6f9291ceSJung-uk Kim         str = "SSLOK ";
498*6f9291ceSJung-uk Kim         break;
4995c87c606SMark Murray #ifndef OPENSSL_NO_SSL2
500*6f9291ceSJung-uk Kim     case SSL2_ST_CLIENT_START_ENCRYPTION:
501*6f9291ceSJung-uk Kim         str = "2CSENC";
502*6f9291ceSJung-uk Kim         break;
503*6f9291ceSJung-uk Kim     case SSL2_ST_SERVER_START_ENCRYPTION:
504*6f9291ceSJung-uk Kim         str = "2SSENC";
505*6f9291ceSJung-uk Kim         break;
506*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_HELLO_A:
507*6f9291ceSJung-uk Kim         str = "2SCH_A";
508*6f9291ceSJung-uk Kim         break;
509*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_HELLO_B:
510*6f9291ceSJung-uk Kim         str = "2SCH_B";
511*6f9291ceSJung-uk Kim         break;
512*6f9291ceSJung-uk Kim     case SSL2_ST_GET_SERVER_HELLO_A:
513*6f9291ceSJung-uk Kim         str = "2GSH_A";
514*6f9291ceSJung-uk Kim         break;
515*6f9291ceSJung-uk Kim     case SSL2_ST_GET_SERVER_HELLO_B:
516*6f9291ceSJung-uk Kim         str = "2GSH_B";
517*6f9291ceSJung-uk Kim         break;
518*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_MASTER_KEY_A:
519*6f9291ceSJung-uk Kim         str = "2SCMKA";
520*6f9291ceSJung-uk Kim         break;
521*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_MASTER_KEY_B:
522*6f9291ceSJung-uk Kim         str = "2SCMKB";
523*6f9291ceSJung-uk Kim         break;
524*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_FINISHED_A:
525*6f9291ceSJung-uk Kim         str = "2SCF_A";
526*6f9291ceSJung-uk Kim         break;
527*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_FINISHED_B:
528*6f9291ceSJung-uk Kim         str = "2SCF_B";
529*6f9291ceSJung-uk Kim         break;
530*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_CERTIFICATE_A:
531*6f9291ceSJung-uk Kim         str = "2SCC_A";
532*6f9291ceSJung-uk Kim         break;
533*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_CERTIFICATE_B:
534*6f9291ceSJung-uk Kim         str = "2SCC_B";
535*6f9291ceSJung-uk Kim         break;
536*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_CERTIFICATE_C:
537*6f9291ceSJung-uk Kim         str = "2SCC_C";
538*6f9291ceSJung-uk Kim         break;
539*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_CLIENT_CERTIFICATE_D:
540*6f9291ceSJung-uk Kim         str = "2SCC_D";
541*6f9291ceSJung-uk Kim         break;
542*6f9291ceSJung-uk Kim     case SSL2_ST_GET_SERVER_VERIFY_A:
543*6f9291ceSJung-uk Kim         str = "2GSV_A";
544*6f9291ceSJung-uk Kim         break;
545*6f9291ceSJung-uk Kim     case SSL2_ST_GET_SERVER_VERIFY_B:
546*6f9291ceSJung-uk Kim         str = "2GSV_B";
547*6f9291ceSJung-uk Kim         break;
548*6f9291ceSJung-uk Kim     case SSL2_ST_GET_SERVER_FINISHED_A:
549*6f9291ceSJung-uk Kim         str = "2GSF_A";
550*6f9291ceSJung-uk Kim         break;
551*6f9291ceSJung-uk Kim     case SSL2_ST_GET_SERVER_FINISHED_B:
552*6f9291ceSJung-uk Kim         str = "2GSF_B";
553*6f9291ceSJung-uk Kim         break;
554*6f9291ceSJung-uk Kim     case SSL2_ST_GET_CLIENT_HELLO_A:
555*6f9291ceSJung-uk Kim         str = "2GCH_A";
556*6f9291ceSJung-uk Kim         break;
557*6f9291ceSJung-uk Kim     case SSL2_ST_GET_CLIENT_HELLO_B:
558*6f9291ceSJung-uk Kim         str = "2GCH_B";
559*6f9291ceSJung-uk Kim         break;
560*6f9291ceSJung-uk Kim     case SSL2_ST_GET_CLIENT_HELLO_C:
561*6f9291ceSJung-uk Kim         str = "2GCH_C";
562*6f9291ceSJung-uk Kim         break;
563*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_SERVER_HELLO_A:
564*6f9291ceSJung-uk Kim         str = "2SSH_A";
565*6f9291ceSJung-uk Kim         break;
566*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_SERVER_HELLO_B:
567*6f9291ceSJung-uk Kim         str = "2SSH_B";
568*6f9291ceSJung-uk Kim         break;
569*6f9291ceSJung-uk Kim     case SSL2_ST_GET_CLIENT_MASTER_KEY_A:
570*6f9291ceSJung-uk Kim         str = "2GCMKA";
571*6f9291ceSJung-uk Kim         break;
572*6f9291ceSJung-uk Kim     case SSL2_ST_GET_CLIENT_MASTER_KEY_B:
573*6f9291ceSJung-uk Kim         str = "2GCMKA";
574*6f9291ceSJung-uk Kim         break;
575*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_SERVER_VERIFY_A:
576*6f9291ceSJung-uk Kim         str = "2SSV_A";
577*6f9291ceSJung-uk Kim         break;
578*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_SERVER_VERIFY_B:
579*6f9291ceSJung-uk Kim         str = "2SSV_B";
580*6f9291ceSJung-uk Kim         break;
581*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_SERVER_VERIFY_C:
582*6f9291ceSJung-uk Kim         str = "2SSV_C";
583*6f9291ceSJung-uk Kim         break;
584*6f9291ceSJung-uk Kim     case SSL2_ST_GET_CLIENT_FINISHED_A:
585*6f9291ceSJung-uk Kim         str = "2GCF_A";
586*6f9291ceSJung-uk Kim         break;
587*6f9291ceSJung-uk Kim     case SSL2_ST_GET_CLIENT_FINISHED_B:
588*6f9291ceSJung-uk Kim         str = "2GCF_B";
589*6f9291ceSJung-uk Kim         break;
590*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_SERVER_FINISHED_A:
591*6f9291ceSJung-uk Kim         str = "2SSF_A";
592*6f9291ceSJung-uk Kim         break;
593*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_SERVER_FINISHED_B:
594*6f9291ceSJung-uk Kim         str = "2SSF_B";
595*6f9291ceSJung-uk Kim         break;
596*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_REQUEST_CERTIFICATE_A:
597*6f9291ceSJung-uk Kim         str = "2SRC_A";
598*6f9291ceSJung-uk Kim         break;
599*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_REQUEST_CERTIFICATE_B:
600*6f9291ceSJung-uk Kim         str = "2SRC_B";
601*6f9291ceSJung-uk Kim         break;
602*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_REQUEST_CERTIFICATE_C:
603*6f9291ceSJung-uk Kim         str = "2SRC_C";
604*6f9291ceSJung-uk Kim         break;
605*6f9291ceSJung-uk Kim     case SSL2_ST_SEND_REQUEST_CERTIFICATE_D:
606*6f9291ceSJung-uk Kim         str = "2SRC_D";
607*6f9291ceSJung-uk Kim         break;
608*6f9291ceSJung-uk Kim     case SSL2_ST_X509_GET_SERVER_CERTIFICATE:
609*6f9291ceSJung-uk Kim         str = "2X9GSC";
610*6f9291ceSJung-uk Kim         break;
611*6f9291ceSJung-uk Kim     case SSL2_ST_X509_GET_CLIENT_CERTIFICATE:
612*6f9291ceSJung-uk Kim         str = "2X9GCC";
613*6f9291ceSJung-uk Kim         break;
61474664626SKris Kennaway #endif
61574664626SKris Kennaway 
6165c87c606SMark Murray #ifndef OPENSSL_NO_SSL3
61774664626SKris Kennaway /* SSLv3 additions */
61874664626SKris Kennaway     case SSL3_ST_SW_FLUSH:
619*6f9291ceSJung-uk Kim     case SSL3_ST_CW_FLUSH:
620*6f9291ceSJung-uk Kim         str = "3FLUSH";
621*6f9291ceSJung-uk Kim         break;
622*6f9291ceSJung-uk Kim     case SSL3_ST_CW_CLNT_HELLO_A:
623*6f9291ceSJung-uk Kim         str = "3WCH_A";
624*6f9291ceSJung-uk Kim         break;
625*6f9291ceSJung-uk Kim     case SSL3_ST_CW_CLNT_HELLO_B:
626*6f9291ceSJung-uk Kim         str = "3WCH_B";
627*6f9291ceSJung-uk Kim         break;
628*6f9291ceSJung-uk Kim     case SSL3_ST_CR_SRVR_HELLO_A:
629*6f9291ceSJung-uk Kim         str = "3RSH_A";
630*6f9291ceSJung-uk Kim         break;
631*6f9291ceSJung-uk Kim     case SSL3_ST_CR_SRVR_HELLO_B:
632*6f9291ceSJung-uk Kim         str = "3RSH_B";
633*6f9291ceSJung-uk Kim         break;
634*6f9291ceSJung-uk Kim     case SSL3_ST_CR_CERT_A:
635*6f9291ceSJung-uk Kim         str = "3RSC_A";
636*6f9291ceSJung-uk Kim         break;
637*6f9291ceSJung-uk Kim     case SSL3_ST_CR_CERT_B:
638*6f9291ceSJung-uk Kim         str = "3RSC_B";
639*6f9291ceSJung-uk Kim         break;
640*6f9291ceSJung-uk Kim     case SSL3_ST_CR_KEY_EXCH_A:
641*6f9291ceSJung-uk Kim         str = "3RSKEA";
642*6f9291ceSJung-uk Kim         break;
643*6f9291ceSJung-uk Kim     case SSL3_ST_CR_KEY_EXCH_B:
644*6f9291ceSJung-uk Kim         str = "3RSKEB";
645*6f9291ceSJung-uk Kim         break;
646*6f9291ceSJung-uk Kim     case SSL3_ST_CR_CERT_REQ_A:
647*6f9291ceSJung-uk Kim         str = "3RCR_A";
648*6f9291ceSJung-uk Kim         break;
649*6f9291ceSJung-uk Kim     case SSL3_ST_CR_CERT_REQ_B:
650*6f9291ceSJung-uk Kim         str = "3RCR_B";
651*6f9291ceSJung-uk Kim         break;
652*6f9291ceSJung-uk Kim     case SSL3_ST_CR_SRVR_DONE_A:
653*6f9291ceSJung-uk Kim         str = "3RSD_A";
654*6f9291ceSJung-uk Kim         break;
655*6f9291ceSJung-uk Kim     case SSL3_ST_CR_SRVR_DONE_B:
656*6f9291ceSJung-uk Kim         str = "3RSD_B";
657*6f9291ceSJung-uk Kim         break;
658*6f9291ceSJung-uk Kim     case SSL3_ST_CW_CERT_A:
659*6f9291ceSJung-uk Kim         str = "3WCC_A";
660*6f9291ceSJung-uk Kim         break;
661*6f9291ceSJung-uk Kim     case SSL3_ST_CW_CERT_B:
662*6f9291ceSJung-uk Kim         str = "3WCC_B";
663*6f9291ceSJung-uk Kim         break;
664*6f9291ceSJung-uk Kim     case SSL3_ST_CW_CERT_C:
665*6f9291ceSJung-uk Kim         str = "3WCC_C";
666*6f9291ceSJung-uk Kim         break;
667*6f9291ceSJung-uk Kim     case SSL3_ST_CW_CERT_D:
668*6f9291ceSJung-uk Kim         str = "3WCC_D";
669*6f9291ceSJung-uk Kim         break;
670*6f9291ceSJung-uk Kim     case SSL3_ST_CW_KEY_EXCH_A:
671*6f9291ceSJung-uk Kim         str = "3WCKEA";
672*6f9291ceSJung-uk Kim         break;
673*6f9291ceSJung-uk Kim     case SSL3_ST_CW_KEY_EXCH_B:
674*6f9291ceSJung-uk Kim         str = "3WCKEB";
675*6f9291ceSJung-uk Kim         break;
676*6f9291ceSJung-uk Kim     case SSL3_ST_CW_CERT_VRFY_A:
677*6f9291ceSJung-uk Kim         str = "3WCV_A";
678*6f9291ceSJung-uk Kim         break;
679*6f9291ceSJung-uk Kim     case SSL3_ST_CW_CERT_VRFY_B:
680*6f9291ceSJung-uk Kim         str = "3WCV_B";
681*6f9291ceSJung-uk Kim         break;
68274664626SKris Kennaway 
68374664626SKris Kennaway     case SSL3_ST_SW_CHANGE_A:
684*6f9291ceSJung-uk Kim     case SSL3_ST_CW_CHANGE_A:
685*6f9291ceSJung-uk Kim         str = "3WCCSA";
686*6f9291ceSJung-uk Kim         break;
68774664626SKris Kennaway     case SSL3_ST_SW_CHANGE_B:
688*6f9291ceSJung-uk Kim     case SSL3_ST_CW_CHANGE_B:
689*6f9291ceSJung-uk Kim         str = "3WCCSB";
690*6f9291ceSJung-uk Kim         break;
69174664626SKris Kennaway     case SSL3_ST_SW_FINISHED_A:
692*6f9291ceSJung-uk Kim     case SSL3_ST_CW_FINISHED_A:
693*6f9291ceSJung-uk Kim         str = "3WFINA";
694*6f9291ceSJung-uk Kim         break;
69574664626SKris Kennaway     case SSL3_ST_SW_FINISHED_B:
696*6f9291ceSJung-uk Kim     case SSL3_ST_CW_FINISHED_B:
697*6f9291ceSJung-uk Kim         str = "3WFINB";
698*6f9291ceSJung-uk Kim         break;
69974664626SKris Kennaway     case SSL3_ST_SR_CHANGE_A:
700*6f9291ceSJung-uk Kim     case SSL3_ST_CR_CHANGE_A:
701*6f9291ceSJung-uk Kim         str = "3RCCSA";
702*6f9291ceSJung-uk Kim         break;
70374664626SKris Kennaway     case SSL3_ST_SR_CHANGE_B:
704*6f9291ceSJung-uk Kim     case SSL3_ST_CR_CHANGE_B:
705*6f9291ceSJung-uk Kim         str = "3RCCSB";
706*6f9291ceSJung-uk Kim         break;
70774664626SKris Kennaway     case SSL3_ST_SR_FINISHED_A:
708*6f9291ceSJung-uk Kim     case SSL3_ST_CR_FINISHED_A:
709*6f9291ceSJung-uk Kim         str = "3RFINA";
710*6f9291ceSJung-uk Kim         break;
71174664626SKris Kennaway     case SSL3_ST_SR_FINISHED_B:
712*6f9291ceSJung-uk Kim     case SSL3_ST_CR_FINISHED_B:
713*6f9291ceSJung-uk Kim         str = "3RFINB";
714*6f9291ceSJung-uk Kim         break;
71574664626SKris Kennaway 
716*6f9291ceSJung-uk Kim     case SSL3_ST_SW_HELLO_REQ_A:
717*6f9291ceSJung-uk Kim         str = "3WHR_A";
718*6f9291ceSJung-uk Kim         break;
719*6f9291ceSJung-uk Kim     case SSL3_ST_SW_HELLO_REQ_B:
720*6f9291ceSJung-uk Kim         str = "3WHR_B";
721*6f9291ceSJung-uk Kim         break;
722*6f9291ceSJung-uk Kim     case SSL3_ST_SW_HELLO_REQ_C:
723*6f9291ceSJung-uk Kim         str = "3WHR_C";
724*6f9291ceSJung-uk Kim         break;
725*6f9291ceSJung-uk Kim     case SSL3_ST_SR_CLNT_HELLO_A:
726*6f9291ceSJung-uk Kim         str = "3RCH_A";
727*6f9291ceSJung-uk Kim         break;
728*6f9291ceSJung-uk Kim     case SSL3_ST_SR_CLNT_HELLO_B:
729*6f9291ceSJung-uk Kim         str = "3RCH_B";
730*6f9291ceSJung-uk Kim         break;
731*6f9291ceSJung-uk Kim     case SSL3_ST_SR_CLNT_HELLO_C:
732*6f9291ceSJung-uk Kim         str = "3RCH_C";
733*6f9291ceSJung-uk Kim         break;
734*6f9291ceSJung-uk Kim     case SSL3_ST_SW_SRVR_HELLO_A:
735*6f9291ceSJung-uk Kim         str = "3WSH_A";
736*6f9291ceSJung-uk Kim         break;
737*6f9291ceSJung-uk Kim     case SSL3_ST_SW_SRVR_HELLO_B:
738*6f9291ceSJung-uk Kim         str = "3WSH_B";
739*6f9291ceSJung-uk Kim         break;
740*6f9291ceSJung-uk Kim     case SSL3_ST_SW_CERT_A:
741*6f9291ceSJung-uk Kim         str = "3WSC_A";
742*6f9291ceSJung-uk Kim         break;
743*6f9291ceSJung-uk Kim     case SSL3_ST_SW_CERT_B:
744*6f9291ceSJung-uk Kim         str = "3WSC_B";
745*6f9291ceSJung-uk Kim         break;
746*6f9291ceSJung-uk Kim     case SSL3_ST_SW_KEY_EXCH_A:
747*6f9291ceSJung-uk Kim         str = "3WSKEA";
748*6f9291ceSJung-uk Kim         break;
749*6f9291ceSJung-uk Kim     case SSL3_ST_SW_KEY_EXCH_B:
750*6f9291ceSJung-uk Kim         str = "3WSKEB";
751*6f9291ceSJung-uk Kim         break;
752*6f9291ceSJung-uk Kim     case SSL3_ST_SW_CERT_REQ_A:
753*6f9291ceSJung-uk Kim         str = "3WCR_A";
754*6f9291ceSJung-uk Kim         break;
755*6f9291ceSJung-uk Kim     case SSL3_ST_SW_CERT_REQ_B:
756*6f9291ceSJung-uk Kim         str = "3WCR_B";
757*6f9291ceSJung-uk Kim         break;
758*6f9291ceSJung-uk Kim     case SSL3_ST_SW_SRVR_DONE_A:
759*6f9291ceSJung-uk Kim         str = "3WSD_A";
760*6f9291ceSJung-uk Kim         break;
761*6f9291ceSJung-uk Kim     case SSL3_ST_SW_SRVR_DONE_B:
762*6f9291ceSJung-uk Kim         str = "3WSD_B";
763*6f9291ceSJung-uk Kim         break;
764*6f9291ceSJung-uk Kim     case SSL3_ST_SR_CERT_A:
765*6f9291ceSJung-uk Kim         str = "3RCC_A";
766*6f9291ceSJung-uk Kim         break;
767*6f9291ceSJung-uk Kim     case SSL3_ST_SR_CERT_B:
768*6f9291ceSJung-uk Kim         str = "3RCC_B";
769*6f9291ceSJung-uk Kim         break;
770*6f9291ceSJung-uk Kim     case SSL3_ST_SR_KEY_EXCH_A:
771*6f9291ceSJung-uk Kim         str = "3RCKEA";
772*6f9291ceSJung-uk Kim         break;
773*6f9291ceSJung-uk Kim     case SSL3_ST_SR_KEY_EXCH_B:
774*6f9291ceSJung-uk Kim         str = "3RCKEB";
775*6f9291ceSJung-uk Kim         break;
776*6f9291ceSJung-uk Kim     case SSL3_ST_SR_CERT_VRFY_A:
777*6f9291ceSJung-uk Kim         str = "3RCV_A";
778*6f9291ceSJung-uk Kim         break;
779*6f9291ceSJung-uk Kim     case SSL3_ST_SR_CERT_VRFY_B:
780*6f9291ceSJung-uk Kim         str = "3RCV_B";
781*6f9291ceSJung-uk Kim         break;
78274664626SKris Kennaway #endif
78374664626SKris Kennaway 
784f579bf8eSKris Kennaway /* SSLv2/v3 compatibility states */
78574664626SKris Kennaway /* client */
786*6f9291ceSJung-uk Kim     case SSL23_ST_CW_CLNT_HELLO_A:
787*6f9291ceSJung-uk Kim         str = "23WCHA";
788*6f9291ceSJung-uk Kim         break;
789*6f9291ceSJung-uk Kim     case SSL23_ST_CW_CLNT_HELLO_B:
790*6f9291ceSJung-uk Kim         str = "23WCHB";
791*6f9291ceSJung-uk Kim         break;
792*6f9291ceSJung-uk Kim     case SSL23_ST_CR_SRVR_HELLO_A:
793*6f9291ceSJung-uk Kim         str = "23RSHA";
794*6f9291ceSJung-uk Kim         break;
795*6f9291ceSJung-uk Kim     case SSL23_ST_CR_SRVR_HELLO_B:
796*6f9291ceSJung-uk Kim         str = "23RSHA";
797*6f9291ceSJung-uk Kim         break;
79874664626SKris Kennaway /* server */
799*6f9291ceSJung-uk Kim     case SSL23_ST_SR_CLNT_HELLO_A:
800*6f9291ceSJung-uk Kim         str = "23RCHA";
801*6f9291ceSJung-uk Kim         break;
802*6f9291ceSJung-uk Kim     case SSL23_ST_SR_CLNT_HELLO_B:
803*6f9291ceSJung-uk Kim         str = "23RCHB";
804*6f9291ceSJung-uk Kim         break;
805a93cbc2bSJung-uk Kim 
8066a599222SSimon L. B. Nielsen /* DTLS */
807*6f9291ceSJung-uk Kim     case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A:
808*6f9291ceSJung-uk Kim         str = "DRCHVA";
809*6f9291ceSJung-uk Kim         break;
810*6f9291ceSJung-uk Kim     case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B:
811*6f9291ceSJung-uk Kim         str = "DRCHVB";
812*6f9291ceSJung-uk Kim         break;
813*6f9291ceSJung-uk Kim     case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A:
814*6f9291ceSJung-uk Kim         str = "DWCHVA";
815*6f9291ceSJung-uk Kim         break;
816*6f9291ceSJung-uk Kim     case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B:
817*6f9291ceSJung-uk Kim         str = "DWCHVB";
818*6f9291ceSJung-uk Kim         break;
81974664626SKris Kennaway 
820*6f9291ceSJung-uk Kim     default:
821*6f9291ceSJung-uk Kim         str = "UNKWN ";
822*6f9291ceSJung-uk Kim         break;
82374664626SKris Kennaway     }
82474664626SKris Kennaway     return (str);
82574664626SKris Kennaway }
82674664626SKris Kennaway 
8275c87c606SMark Murray const char *SSL_alert_type_string_long(int value)
82874664626SKris Kennaway {
82974664626SKris Kennaway     value >>= 8;
83074664626SKris Kennaway     if (value == SSL3_AL_WARNING)
83174664626SKris Kennaway         return ("warning");
83274664626SKris Kennaway     else if (value == SSL3_AL_FATAL)
83374664626SKris Kennaway         return ("fatal");
83474664626SKris Kennaway     else
83574664626SKris Kennaway         return ("unknown");
83674664626SKris Kennaway }
83774664626SKris Kennaway 
8385c87c606SMark Murray const char *SSL_alert_type_string(int value)
83974664626SKris Kennaway {
84074664626SKris Kennaway     value >>= 8;
84174664626SKris Kennaway     if (value == SSL3_AL_WARNING)
84274664626SKris Kennaway         return ("W");
84374664626SKris Kennaway     else if (value == SSL3_AL_FATAL)
84474664626SKris Kennaway         return ("F");
84574664626SKris Kennaway     else
84674664626SKris Kennaway         return ("U");
84774664626SKris Kennaway }
84874664626SKris Kennaway 
8495c87c606SMark Murray const char *SSL_alert_desc_string(int value)
85074664626SKris Kennaway {
8515c87c606SMark Murray     const char *str;
85274664626SKris Kennaway 
853*6f9291ceSJung-uk Kim     switch (value & 0xff) {
854*6f9291ceSJung-uk Kim     case SSL3_AD_CLOSE_NOTIFY:
855*6f9291ceSJung-uk Kim         str = "CN";
856*6f9291ceSJung-uk Kim         break;
857*6f9291ceSJung-uk Kim     case SSL3_AD_UNEXPECTED_MESSAGE:
858*6f9291ceSJung-uk Kim         str = "UM";
859*6f9291ceSJung-uk Kim         break;
860*6f9291ceSJung-uk Kim     case SSL3_AD_BAD_RECORD_MAC:
861*6f9291ceSJung-uk Kim         str = "BM";
862*6f9291ceSJung-uk Kim         break;
863*6f9291ceSJung-uk Kim     case SSL3_AD_DECOMPRESSION_FAILURE:
864*6f9291ceSJung-uk Kim         str = "DF";
865*6f9291ceSJung-uk Kim         break;
866*6f9291ceSJung-uk Kim     case SSL3_AD_HANDSHAKE_FAILURE:
867*6f9291ceSJung-uk Kim         str = "HF";
868*6f9291ceSJung-uk Kim         break;
869*6f9291ceSJung-uk Kim     case SSL3_AD_NO_CERTIFICATE:
870*6f9291ceSJung-uk Kim         str = "NC";
871*6f9291ceSJung-uk Kim         break;
872*6f9291ceSJung-uk Kim     case SSL3_AD_BAD_CERTIFICATE:
873*6f9291ceSJung-uk Kim         str = "BC";
874*6f9291ceSJung-uk Kim         break;
875*6f9291ceSJung-uk Kim     case SSL3_AD_UNSUPPORTED_CERTIFICATE:
876*6f9291ceSJung-uk Kim         str = "UC";
877*6f9291ceSJung-uk Kim         break;
878*6f9291ceSJung-uk Kim     case SSL3_AD_CERTIFICATE_REVOKED:
879*6f9291ceSJung-uk Kim         str = "CR";
880*6f9291ceSJung-uk Kim         break;
881*6f9291ceSJung-uk Kim     case SSL3_AD_CERTIFICATE_EXPIRED:
882*6f9291ceSJung-uk Kim         str = "CE";
883*6f9291ceSJung-uk Kim         break;
884*6f9291ceSJung-uk Kim     case SSL3_AD_CERTIFICATE_UNKNOWN:
885*6f9291ceSJung-uk Kim         str = "CU";
886*6f9291ceSJung-uk Kim         break;
887*6f9291ceSJung-uk Kim     case SSL3_AD_ILLEGAL_PARAMETER:
888*6f9291ceSJung-uk Kim         str = "IP";
889*6f9291ceSJung-uk Kim         break;
890*6f9291ceSJung-uk Kim     case TLS1_AD_DECRYPTION_FAILED:
891*6f9291ceSJung-uk Kim         str = "DC";
892*6f9291ceSJung-uk Kim         break;
893*6f9291ceSJung-uk Kim     case TLS1_AD_RECORD_OVERFLOW:
894*6f9291ceSJung-uk Kim         str = "RO";
895*6f9291ceSJung-uk Kim         break;
896*6f9291ceSJung-uk Kim     case TLS1_AD_UNKNOWN_CA:
897*6f9291ceSJung-uk Kim         str = "CA";
898*6f9291ceSJung-uk Kim         break;
899*6f9291ceSJung-uk Kim     case TLS1_AD_ACCESS_DENIED:
900*6f9291ceSJung-uk Kim         str = "AD";
901*6f9291ceSJung-uk Kim         break;
902*6f9291ceSJung-uk Kim     case TLS1_AD_DECODE_ERROR:
903*6f9291ceSJung-uk Kim         str = "DE";
904*6f9291ceSJung-uk Kim         break;
905*6f9291ceSJung-uk Kim     case TLS1_AD_DECRYPT_ERROR:
906*6f9291ceSJung-uk Kim         str = "CY";
907*6f9291ceSJung-uk Kim         break;
908*6f9291ceSJung-uk Kim     case TLS1_AD_EXPORT_RESTRICTION:
909*6f9291ceSJung-uk Kim         str = "ER";
910*6f9291ceSJung-uk Kim         break;
911*6f9291ceSJung-uk Kim     case TLS1_AD_PROTOCOL_VERSION:
912*6f9291ceSJung-uk Kim         str = "PV";
913*6f9291ceSJung-uk Kim         break;
914*6f9291ceSJung-uk Kim     case TLS1_AD_INSUFFICIENT_SECURITY:
915*6f9291ceSJung-uk Kim         str = "IS";
916*6f9291ceSJung-uk Kim         break;
917*6f9291ceSJung-uk Kim     case TLS1_AD_INTERNAL_ERROR:
918*6f9291ceSJung-uk Kim         str = "IE";
919*6f9291ceSJung-uk Kim         break;
920*6f9291ceSJung-uk Kim     case TLS1_AD_USER_CANCELLED:
921*6f9291ceSJung-uk Kim         str = "US";
922*6f9291ceSJung-uk Kim         break;
923*6f9291ceSJung-uk Kim     case TLS1_AD_NO_RENEGOTIATION:
924*6f9291ceSJung-uk Kim         str = "NR";
925*6f9291ceSJung-uk Kim         break;
926*6f9291ceSJung-uk Kim     case TLS1_AD_UNSUPPORTED_EXTENSION:
927*6f9291ceSJung-uk Kim         str = "UE";
928*6f9291ceSJung-uk Kim         break;
929*6f9291ceSJung-uk Kim     case TLS1_AD_CERTIFICATE_UNOBTAINABLE:
930*6f9291ceSJung-uk Kim         str = "CO";
931*6f9291ceSJung-uk Kim         break;
932*6f9291ceSJung-uk Kim     case TLS1_AD_UNRECOGNIZED_NAME:
933*6f9291ceSJung-uk Kim         str = "UN";
934*6f9291ceSJung-uk Kim         break;
935*6f9291ceSJung-uk Kim     case TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE:
936*6f9291ceSJung-uk Kim         str = "BR";
937*6f9291ceSJung-uk Kim         break;
938*6f9291ceSJung-uk Kim     case TLS1_AD_BAD_CERTIFICATE_HASH_VALUE:
939*6f9291ceSJung-uk Kim         str = "BH";
940*6f9291ceSJung-uk Kim         break;
941*6f9291ceSJung-uk Kim     case TLS1_AD_UNKNOWN_PSK_IDENTITY:
942*6f9291ceSJung-uk Kim         str = "UP";
943*6f9291ceSJung-uk Kim         break;
944*6f9291ceSJung-uk Kim     default:
945*6f9291ceSJung-uk Kim         str = "UK";
946*6f9291ceSJung-uk Kim         break;
94774664626SKris Kennaway     }
94874664626SKris Kennaway     return (str);
94974664626SKris Kennaway }
95074664626SKris Kennaway 
9515c87c606SMark Murray const char *SSL_alert_desc_string_long(int value)
95274664626SKris Kennaway {
9535c87c606SMark Murray     const char *str;
95474664626SKris Kennaway 
955*6f9291ceSJung-uk Kim     switch (value & 0xff) {
95674664626SKris Kennaway     case SSL3_AD_CLOSE_NOTIFY:
95774664626SKris Kennaway         str = "close notify";
95874664626SKris Kennaway         break;
95974664626SKris Kennaway     case SSL3_AD_UNEXPECTED_MESSAGE:
960f579bf8eSKris Kennaway         str = "unexpected_message";
96174664626SKris Kennaway         break;
96274664626SKris Kennaway     case SSL3_AD_BAD_RECORD_MAC:
96374664626SKris Kennaway         str = "bad record mac";
96474664626SKris Kennaway         break;
96574664626SKris Kennaway     case SSL3_AD_DECOMPRESSION_FAILURE:
96674664626SKris Kennaway         str = "decompression failure";
96774664626SKris Kennaway         break;
96874664626SKris Kennaway     case SSL3_AD_HANDSHAKE_FAILURE:
96974664626SKris Kennaway         str = "handshake failure";
97074664626SKris Kennaway         break;
97174664626SKris Kennaway     case SSL3_AD_NO_CERTIFICATE:
97274664626SKris Kennaway         str = "no certificate";
97374664626SKris Kennaway         break;
97474664626SKris Kennaway     case SSL3_AD_BAD_CERTIFICATE:
97574664626SKris Kennaway         str = "bad certificate";
97674664626SKris Kennaway         break;
97774664626SKris Kennaway     case SSL3_AD_UNSUPPORTED_CERTIFICATE:
97874664626SKris Kennaway         str = "unsupported certificate";
97974664626SKris Kennaway         break;
98074664626SKris Kennaway     case SSL3_AD_CERTIFICATE_REVOKED:
98174664626SKris Kennaway         str = "certificate revoked";
98274664626SKris Kennaway         break;
98374664626SKris Kennaway     case SSL3_AD_CERTIFICATE_EXPIRED:
98474664626SKris Kennaway         str = "certificate expired";
98574664626SKris Kennaway         break;
98674664626SKris Kennaway     case SSL3_AD_CERTIFICATE_UNKNOWN:
987f579bf8eSKris Kennaway         str = "certificate unknown";
98874664626SKris Kennaway         break;
98974664626SKris Kennaway     case SSL3_AD_ILLEGAL_PARAMETER:
99074664626SKris Kennaway         str = "illegal parameter";
99174664626SKris Kennaway         break;
992a21b1b38SKris Kennaway     case TLS1_AD_DECRYPTION_FAILED:
993a21b1b38SKris Kennaway         str = "decryption failed";
994a21b1b38SKris Kennaway         break;
995a21b1b38SKris Kennaway     case TLS1_AD_RECORD_OVERFLOW:
996a21b1b38SKris Kennaway         str = "record overflow";
997a21b1b38SKris Kennaway         break;
998a21b1b38SKris Kennaway     case TLS1_AD_UNKNOWN_CA:
999a21b1b38SKris Kennaway         str = "unknown CA";
1000a21b1b38SKris Kennaway         break;
1001a21b1b38SKris Kennaway     case TLS1_AD_ACCESS_DENIED:
1002a21b1b38SKris Kennaway         str = "access denied";
1003a21b1b38SKris Kennaway         break;
1004a21b1b38SKris Kennaway     case TLS1_AD_DECODE_ERROR:
1005a21b1b38SKris Kennaway         str = "decode error";
1006a21b1b38SKris Kennaway         break;
1007a21b1b38SKris Kennaway     case TLS1_AD_DECRYPT_ERROR:
1008a21b1b38SKris Kennaway         str = "decrypt error";
1009a21b1b38SKris Kennaway         break;
1010a21b1b38SKris Kennaway     case TLS1_AD_EXPORT_RESTRICTION:
1011a21b1b38SKris Kennaway         str = "export restriction";
1012a21b1b38SKris Kennaway         break;
1013a21b1b38SKris Kennaway     case TLS1_AD_PROTOCOL_VERSION:
1014a21b1b38SKris Kennaway         str = "protocol version";
1015a21b1b38SKris Kennaway         break;
1016a21b1b38SKris Kennaway     case TLS1_AD_INSUFFICIENT_SECURITY:
1017a21b1b38SKris Kennaway         str = "insufficient security";
1018a21b1b38SKris Kennaway         break;
1019a21b1b38SKris Kennaway     case TLS1_AD_INTERNAL_ERROR:
1020a21b1b38SKris Kennaway         str = "internal error";
1021a21b1b38SKris Kennaway         break;
1022a21b1b38SKris Kennaway     case TLS1_AD_USER_CANCELLED:
1023a21b1b38SKris Kennaway         str = "user canceled";
1024a21b1b38SKris Kennaway         break;
1025a21b1b38SKris Kennaway     case TLS1_AD_NO_RENEGOTIATION:
1026a21b1b38SKris Kennaway         str = "no renegotiation";
1027a21b1b38SKris Kennaway         break;
10281f13597dSJung-uk Kim     case TLS1_AD_UNSUPPORTED_EXTENSION:
10291f13597dSJung-uk Kim         str = "unsupported extension";
10301f13597dSJung-uk Kim         break;
10311f13597dSJung-uk Kim     case TLS1_AD_CERTIFICATE_UNOBTAINABLE:
10321f13597dSJung-uk Kim         str = "certificate unobtainable";
10331f13597dSJung-uk Kim         break;
10341f13597dSJung-uk Kim     case TLS1_AD_UNRECOGNIZED_NAME:
10351f13597dSJung-uk Kim         str = "unrecognized name";
10361f13597dSJung-uk Kim         break;
10371f13597dSJung-uk Kim     case TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE:
10381f13597dSJung-uk Kim         str = "bad certificate status response";
10391f13597dSJung-uk Kim         break;
10401f13597dSJung-uk Kim     case TLS1_AD_BAD_CERTIFICATE_HASH_VALUE:
10411f13597dSJung-uk Kim         str = "bad certificate hash value";
10421f13597dSJung-uk Kim         break;
10431f13597dSJung-uk Kim     case TLS1_AD_UNKNOWN_PSK_IDENTITY:
10441f13597dSJung-uk Kim         str = "unknown PSK identity";
10451f13597dSJung-uk Kim         break;
1046*6f9291ceSJung-uk Kim     default:
1047*6f9291ceSJung-uk Kim         str = "unknown";
1048*6f9291ceSJung-uk Kim         break;
104974664626SKris Kennaway     }
105074664626SKris Kennaway     return (str);
105174664626SKris Kennaway }
105274664626SKris Kennaway 
10535c87c606SMark Murray const char *SSL_rstate_string(const SSL *s)
105474664626SKris Kennaway {
10555c87c606SMark Murray     const char *str;
105674664626SKris Kennaway 
1057*6f9291ceSJung-uk Kim     switch (s->rstate) {
1058*6f9291ceSJung-uk Kim     case SSL_ST_READ_HEADER:
1059*6f9291ceSJung-uk Kim         str = "RH";
1060*6f9291ceSJung-uk Kim         break;
1061*6f9291ceSJung-uk Kim     case SSL_ST_READ_BODY:
1062*6f9291ceSJung-uk Kim         str = "RB";
1063*6f9291ceSJung-uk Kim         break;
1064*6f9291ceSJung-uk Kim     case SSL_ST_READ_DONE:
1065*6f9291ceSJung-uk Kim         str = "RD";
1066*6f9291ceSJung-uk Kim         break;
1067*6f9291ceSJung-uk Kim     default:
1068*6f9291ceSJung-uk Kim         str = "unknown";
1069*6f9291ceSJung-uk Kim         break;
107074664626SKris Kennaway     }
107174664626SKris Kennaway     return (str);
107274664626SKris Kennaway }
1073