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