155714Skris/* ssl/ssl_stat.c */ 255714Skris/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 355714Skris * All rights reserved. 455714Skris * 555714Skris * This package is an SSL implementation written 655714Skris * by Eric Young (eay@cryptsoft.com). 755714Skris * The implementation was written so as to conform with Netscapes SSL. 8296465Sdelphij * 955714Skris * This library is free for commercial and non-commercial use as long as 1055714Skris * the following conditions are aheared to. The following conditions 1155714Skris * apply to all code found in this distribution, be it the RC4, RSA, 1255714Skris * lhash, DES, etc., code; not just the SSL code. The SSL documentation 1355714Skris * included with this distribution is covered by the same copyright terms 1455714Skris * except that the holder is Tim Hudson (tjh@cryptsoft.com). 15296465Sdelphij * 1655714Skris * Copyright remains Eric Young's, and as such any Copyright notices in 1755714Skris * the code are not to be removed. 1855714Skris * If this package is used in a product, Eric Young should be given attribution 1955714Skris * as the author of the parts of the library used. 2055714Skris * This can be in the form of a textual message at program startup or 2155714Skris * in documentation (online or textual) provided with the package. 22296465Sdelphij * 2355714Skris * Redistribution and use in source and binary forms, with or without 2455714Skris * modification, are permitted provided that the following conditions 2555714Skris * are met: 2655714Skris * 1. Redistributions of source code must retain the copyright 2755714Skris * notice, this list of conditions and the following disclaimer. 2855714Skris * 2. Redistributions in binary form must reproduce the above copyright 2955714Skris * notice, this list of conditions and the following disclaimer in the 3055714Skris * documentation and/or other materials provided with the distribution. 3155714Skris * 3. All advertising materials mentioning features or use of this software 3255714Skris * must display the following acknowledgement: 3355714Skris * "This product includes cryptographic software written by 3455714Skris * Eric Young (eay@cryptsoft.com)" 3555714Skris * The word 'cryptographic' can be left out if the rouines from the library 3655714Skris * being used are not cryptographic related :-). 37296465Sdelphij * 4. If you include any Windows specific code (or a derivative thereof) from 3855714Skris * the apps directory (application code) you must include an acknowledgement: 3955714Skris * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 40296465Sdelphij * 4155714Skris * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 4255714Skris * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 4355714Skris * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 4455714Skris * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 4555714Skris * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 4655714Skris * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 4755714Skris * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 4855714Skris * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 4955714Skris * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 5055714Skris * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 5155714Skris * SUCH DAMAGE. 52296465Sdelphij * 5355714Skris * The licence and distribution terms for any publically available version or 5455714Skris * derivative of this code cannot be changed. i.e. this code cannot simply be 5555714Skris * copied and put under another distribution licence 5655714Skris * [including the GNU Public Licence.] 5755714Skris */ 5855714Skris 5955714Skris#include <stdio.h> 6055714Skris#include "ssl_locl.h" 6155714Skris 62109998Smarkmconst char *SSL_state_string_long(const SSL *s) 63296465Sdelphij{ 64296465Sdelphij const char *str; 6555714Skris 66296465Sdelphij switch (s->state) { 67296465Sdelphij case SSL_ST_BEFORE: 68296465Sdelphij str = "before SSL initialization"; 69296465Sdelphij break; 70296465Sdelphij case SSL_ST_ACCEPT: 71296465Sdelphij str = "before accept initialization"; 72296465Sdelphij break; 73296465Sdelphij case SSL_ST_CONNECT: 74296465Sdelphij str = "before connect initialization"; 75296465Sdelphij break; 76296465Sdelphij case SSL_ST_OK: 77296465Sdelphij str = "SSL negotiation finished successfully"; 78296465Sdelphij break; 79296465Sdelphij case SSL_ST_RENEGOTIATE: 80296465Sdelphij str = "SSL renegotiate ciphers"; 81296465Sdelphij break; 82296465Sdelphij case SSL_ST_BEFORE | SSL_ST_CONNECT: 83296465Sdelphij str = "before/connect initialization"; 84296465Sdelphij break; 85296465Sdelphij case SSL_ST_OK | SSL_ST_CONNECT: 86296465Sdelphij str = "ok/connect SSL initialization"; 87296465Sdelphij break; 88296465Sdelphij case SSL_ST_BEFORE | SSL_ST_ACCEPT: 89296465Sdelphij str = "before/accept initialization"; 90296465Sdelphij break; 91296465Sdelphij case SSL_ST_OK | SSL_ST_ACCEPT: 92296465Sdelphij str = "ok/accept SSL initialization"; 93296465Sdelphij break; 94109998Smarkm#ifndef OPENSSL_NO_SSL2 95296465Sdelphij case SSL2_ST_CLIENT_START_ENCRYPTION: 96296465Sdelphij str = "SSLv2 client start encryption"; 97296465Sdelphij break; 98296465Sdelphij case SSL2_ST_SERVER_START_ENCRYPTION: 99296465Sdelphij str = "SSLv2 server start encryption"; 100296465Sdelphij break; 101296465Sdelphij case SSL2_ST_SEND_CLIENT_HELLO_A: 102296465Sdelphij str = "SSLv2 write client hello A"; 103296465Sdelphij break; 104296465Sdelphij case SSL2_ST_SEND_CLIENT_HELLO_B: 105296465Sdelphij str = "SSLv2 write client hello B"; 106296465Sdelphij break; 107296465Sdelphij case SSL2_ST_GET_SERVER_HELLO_A: 108296465Sdelphij str = "SSLv2 read server hello A"; 109296465Sdelphij break; 110296465Sdelphij case SSL2_ST_GET_SERVER_HELLO_B: 111296465Sdelphij str = "SSLv2 read server hello B"; 112296465Sdelphij break; 113296465Sdelphij case SSL2_ST_SEND_CLIENT_MASTER_KEY_A: 114296465Sdelphij str = "SSLv2 write client master key A"; 115296465Sdelphij break; 116296465Sdelphij case SSL2_ST_SEND_CLIENT_MASTER_KEY_B: 117296465Sdelphij str = "SSLv2 write client master key B"; 118296465Sdelphij break; 119296465Sdelphij case SSL2_ST_SEND_CLIENT_FINISHED_A: 120296465Sdelphij str = "SSLv2 write client finished A"; 121296465Sdelphij break; 122296465Sdelphij case SSL2_ST_SEND_CLIENT_FINISHED_B: 123296465Sdelphij str = "SSLv2 write client finished B"; 124296465Sdelphij break; 125296465Sdelphij case SSL2_ST_SEND_CLIENT_CERTIFICATE_A: 126296465Sdelphij str = "SSLv2 write client certificate A"; 127296465Sdelphij break; 128296465Sdelphij case SSL2_ST_SEND_CLIENT_CERTIFICATE_B: 129296465Sdelphij str = "SSLv2 write client certificate B"; 130296465Sdelphij break; 131296465Sdelphij case SSL2_ST_SEND_CLIENT_CERTIFICATE_C: 132296465Sdelphij str = "SSLv2 write client certificate C"; 133296465Sdelphij break; 134296465Sdelphij case SSL2_ST_SEND_CLIENT_CERTIFICATE_D: 135296465Sdelphij str = "SSLv2 write client certificate D"; 136296465Sdelphij break; 137296465Sdelphij case SSL2_ST_GET_SERVER_VERIFY_A: 138296465Sdelphij str = "SSLv2 read server verify A"; 139296465Sdelphij break; 140296465Sdelphij case SSL2_ST_GET_SERVER_VERIFY_B: 141296465Sdelphij str = "SSLv2 read server verify B"; 142296465Sdelphij break; 143296465Sdelphij case SSL2_ST_GET_SERVER_FINISHED_A: 144296465Sdelphij str = "SSLv2 read server finished A"; 145296465Sdelphij break; 146296465Sdelphij case SSL2_ST_GET_SERVER_FINISHED_B: 147296465Sdelphij str = "SSLv2 read server finished B"; 148296465Sdelphij break; 149296465Sdelphij case SSL2_ST_GET_CLIENT_HELLO_A: 150296465Sdelphij str = "SSLv2 read client hello A"; 151296465Sdelphij break; 152296465Sdelphij case SSL2_ST_GET_CLIENT_HELLO_B: 153296465Sdelphij str = "SSLv2 read client hello B"; 154296465Sdelphij break; 155296465Sdelphij case SSL2_ST_GET_CLIENT_HELLO_C: 156296465Sdelphij str = "SSLv2 read client hello C"; 157296465Sdelphij break; 158296465Sdelphij case SSL2_ST_SEND_SERVER_HELLO_A: 159296465Sdelphij str = "SSLv2 write server hello A"; 160296465Sdelphij break; 161296465Sdelphij case SSL2_ST_SEND_SERVER_HELLO_B: 162296465Sdelphij str = "SSLv2 write server hello B"; 163296465Sdelphij break; 164296465Sdelphij case SSL2_ST_GET_CLIENT_MASTER_KEY_A: 165296465Sdelphij str = "SSLv2 read client master key A"; 166296465Sdelphij break; 167296465Sdelphij case SSL2_ST_GET_CLIENT_MASTER_KEY_B: 168296465Sdelphij str = "SSLv2 read client master key B"; 169296465Sdelphij break; 170296465Sdelphij case SSL2_ST_SEND_SERVER_VERIFY_A: 171296465Sdelphij str = "SSLv2 write server verify A"; 172296465Sdelphij break; 173296465Sdelphij case SSL2_ST_SEND_SERVER_VERIFY_B: 174296465Sdelphij str = "SSLv2 write server verify B"; 175296465Sdelphij break; 176296465Sdelphij case SSL2_ST_SEND_SERVER_VERIFY_C: 177296465Sdelphij str = "SSLv2 write server verify C"; 178296465Sdelphij break; 179296465Sdelphij case SSL2_ST_GET_CLIENT_FINISHED_A: 180296465Sdelphij str = "SSLv2 read client finished A"; 181296465Sdelphij break; 182296465Sdelphij case SSL2_ST_GET_CLIENT_FINISHED_B: 183296465Sdelphij str = "SSLv2 read client finished B"; 184296465Sdelphij break; 185296465Sdelphij case SSL2_ST_SEND_SERVER_FINISHED_A: 186296465Sdelphij str = "SSLv2 write server finished A"; 187296465Sdelphij break; 188296465Sdelphij case SSL2_ST_SEND_SERVER_FINISHED_B: 189296465Sdelphij str = "SSLv2 write server finished B"; 190296465Sdelphij break; 191296465Sdelphij case SSL2_ST_SEND_REQUEST_CERTIFICATE_A: 192296465Sdelphij str = "SSLv2 write request certificate A"; 193296465Sdelphij break; 194296465Sdelphij case SSL2_ST_SEND_REQUEST_CERTIFICATE_B: 195296465Sdelphij str = "SSLv2 write request certificate B"; 196296465Sdelphij break; 197296465Sdelphij case SSL2_ST_SEND_REQUEST_CERTIFICATE_C: 198296465Sdelphij str = "SSLv2 write request certificate C"; 199296465Sdelphij break; 200296465Sdelphij case SSL2_ST_SEND_REQUEST_CERTIFICATE_D: 201296465Sdelphij str = "SSLv2 write request certificate D"; 202296465Sdelphij break; 203296465Sdelphij case SSL2_ST_X509_GET_SERVER_CERTIFICATE: 204296465Sdelphij str = "SSLv2 X509 read server certificate"; 205296465Sdelphij break; 206296465Sdelphij case SSL2_ST_X509_GET_CLIENT_CERTIFICATE: 207296465Sdelphij str = "SSLv2 X509 read client certificate"; 208296465Sdelphij break; 20955714Skris#endif 21055714Skris 211109998Smarkm#ifndef OPENSSL_NO_SSL3 21255714Skris/* SSLv3 additions */ 213296465Sdelphij case SSL3_ST_CW_CLNT_HELLO_A: 214296465Sdelphij str = "SSLv3 write client hello A"; 215296465Sdelphij break; 216296465Sdelphij case SSL3_ST_CW_CLNT_HELLO_B: 217296465Sdelphij str = "SSLv3 write client hello B"; 218296465Sdelphij break; 219296465Sdelphij case SSL3_ST_CR_SRVR_HELLO_A: 220296465Sdelphij str = "SSLv3 read server hello A"; 221296465Sdelphij break; 222296465Sdelphij case SSL3_ST_CR_SRVR_HELLO_B: 223296465Sdelphij str = "SSLv3 read server hello B"; 224296465Sdelphij break; 225296465Sdelphij case SSL3_ST_CR_CERT_A: 226296465Sdelphij str = "SSLv3 read server certificate A"; 227296465Sdelphij break; 228296465Sdelphij case SSL3_ST_CR_CERT_B: 229296465Sdelphij str = "SSLv3 read server certificate B"; 230296465Sdelphij break; 231296465Sdelphij case SSL3_ST_CR_KEY_EXCH_A: 232296465Sdelphij str = "SSLv3 read server key exchange A"; 233296465Sdelphij break; 234296465Sdelphij case SSL3_ST_CR_KEY_EXCH_B: 235296465Sdelphij str = "SSLv3 read server key exchange B"; 236296465Sdelphij break; 237296465Sdelphij case SSL3_ST_CR_CERT_REQ_A: 238296465Sdelphij str = "SSLv3 read server certificate request A"; 239296465Sdelphij break; 240296465Sdelphij case SSL3_ST_CR_CERT_REQ_B: 241296465Sdelphij str = "SSLv3 read server certificate request B"; 242296465Sdelphij break; 243296465Sdelphij case SSL3_ST_CR_SESSION_TICKET_A: 244296465Sdelphij str = "SSLv3 read server session ticket A"; 245296465Sdelphij break; 246296465Sdelphij case SSL3_ST_CR_SESSION_TICKET_B: 247296465Sdelphij str = "SSLv3 read server session ticket B"; 248296465Sdelphij break; 249296465Sdelphij case SSL3_ST_CR_SRVR_DONE_A: 250296465Sdelphij str = "SSLv3 read server done A"; 251296465Sdelphij break; 252296465Sdelphij case SSL3_ST_CR_SRVR_DONE_B: 253296465Sdelphij str = "SSLv3 read server done B"; 254296465Sdelphij break; 255296465Sdelphij case SSL3_ST_CW_CERT_A: 256296465Sdelphij str = "SSLv3 write client certificate A"; 257296465Sdelphij break; 258296465Sdelphij case SSL3_ST_CW_CERT_B: 259296465Sdelphij str = "SSLv3 write client certificate B"; 260296465Sdelphij break; 261296465Sdelphij case SSL3_ST_CW_CERT_C: 262296465Sdelphij str = "SSLv3 write client certificate C"; 263296465Sdelphij break; 264296465Sdelphij case SSL3_ST_CW_CERT_D: 265296465Sdelphij str = "SSLv3 write client certificate D"; 266296465Sdelphij break; 267296465Sdelphij case SSL3_ST_CW_KEY_EXCH_A: 268296465Sdelphij str = "SSLv3 write client key exchange A"; 269296465Sdelphij break; 270296465Sdelphij case SSL3_ST_CW_KEY_EXCH_B: 271296465Sdelphij str = "SSLv3 write client key exchange B"; 272296465Sdelphij break; 273296465Sdelphij case SSL3_ST_CW_CERT_VRFY_A: 274296465Sdelphij str = "SSLv3 write certificate verify A"; 275296465Sdelphij break; 276296465Sdelphij case SSL3_ST_CW_CERT_VRFY_B: 277296465Sdelphij str = "SSLv3 write certificate verify B"; 278296465Sdelphij break; 27955714Skris 280296465Sdelphij case SSL3_ST_CW_CHANGE_A: 281296465Sdelphij case SSL3_ST_SW_CHANGE_A: 282296465Sdelphij str = "SSLv3 write change cipher spec A"; 283296465Sdelphij break; 284296465Sdelphij case SSL3_ST_CW_CHANGE_B: 285296465Sdelphij case SSL3_ST_SW_CHANGE_B: 286296465Sdelphij str = "SSLv3 write change cipher spec B"; 287296465Sdelphij break; 288296465Sdelphij case SSL3_ST_CW_FINISHED_A: 289296465Sdelphij case SSL3_ST_SW_FINISHED_A: 290296465Sdelphij str = "SSLv3 write finished A"; 291296465Sdelphij break; 292296465Sdelphij case SSL3_ST_CW_FINISHED_B: 293296465Sdelphij case SSL3_ST_SW_FINISHED_B: 294296465Sdelphij str = "SSLv3 write finished B"; 295296465Sdelphij break; 296296465Sdelphij case SSL3_ST_CR_CHANGE_A: 297296465Sdelphij case SSL3_ST_SR_CHANGE_A: 298296465Sdelphij str = "SSLv3 read change cipher spec A"; 299296465Sdelphij break; 300296465Sdelphij case SSL3_ST_CR_CHANGE_B: 301296465Sdelphij case SSL3_ST_SR_CHANGE_B: 302296465Sdelphij str = "SSLv3 read change cipher spec B"; 303296465Sdelphij break; 304296465Sdelphij case SSL3_ST_CR_FINISHED_A: 305296465Sdelphij case SSL3_ST_SR_FINISHED_A: 306296465Sdelphij str = "SSLv3 read finished A"; 307296465Sdelphij break; 308296465Sdelphij case SSL3_ST_CR_FINISHED_B: 309296465Sdelphij case SSL3_ST_SR_FINISHED_B: 310296465Sdelphij str = "SSLv3 read finished B"; 311296465Sdelphij break; 31255714Skris 313296465Sdelphij case SSL3_ST_CW_FLUSH: 314296465Sdelphij case SSL3_ST_SW_FLUSH: 315296465Sdelphij str = "SSLv3 flush data"; 316296465Sdelphij break; 31755714Skris 318296465Sdelphij case SSL3_ST_SR_CLNT_HELLO_A: 319296465Sdelphij str = "SSLv3 read client hello A"; 320296465Sdelphij break; 321296465Sdelphij case SSL3_ST_SR_CLNT_HELLO_B: 322296465Sdelphij str = "SSLv3 read client hello B"; 323296465Sdelphij break; 324296465Sdelphij case SSL3_ST_SR_CLNT_HELLO_C: 325296465Sdelphij str = "SSLv3 read client hello C"; 326296465Sdelphij break; 327296465Sdelphij case SSL3_ST_SW_HELLO_REQ_A: 328296465Sdelphij str = "SSLv3 write hello request A"; 329296465Sdelphij break; 330296465Sdelphij case SSL3_ST_SW_HELLO_REQ_B: 331296465Sdelphij str = "SSLv3 write hello request B"; 332296465Sdelphij break; 333296465Sdelphij case SSL3_ST_SW_HELLO_REQ_C: 334296465Sdelphij str = "SSLv3 write hello request C"; 335296465Sdelphij break; 336296465Sdelphij case SSL3_ST_SW_SRVR_HELLO_A: 337296465Sdelphij str = "SSLv3 write server hello A"; 338296465Sdelphij break; 339296465Sdelphij case SSL3_ST_SW_SRVR_HELLO_B: 340296465Sdelphij str = "SSLv3 write server hello B"; 341296465Sdelphij break; 342296465Sdelphij case SSL3_ST_SW_CERT_A: 343296465Sdelphij str = "SSLv3 write certificate A"; 344296465Sdelphij break; 345296465Sdelphij case SSL3_ST_SW_CERT_B: 346296465Sdelphij str = "SSLv3 write certificate B"; 347296465Sdelphij break; 348296465Sdelphij case SSL3_ST_SW_KEY_EXCH_A: 349296465Sdelphij str = "SSLv3 write key exchange A"; 350296465Sdelphij break; 351296465Sdelphij case SSL3_ST_SW_KEY_EXCH_B: 352296465Sdelphij str = "SSLv3 write key exchange B"; 353296465Sdelphij break; 354296465Sdelphij case SSL3_ST_SW_CERT_REQ_A: 355296465Sdelphij str = "SSLv3 write certificate request A"; 356296465Sdelphij break; 357296465Sdelphij case SSL3_ST_SW_CERT_REQ_B: 358296465Sdelphij str = "SSLv3 write certificate request B"; 359296465Sdelphij break; 360296465Sdelphij case SSL3_ST_SW_SESSION_TICKET_A: 361296465Sdelphij str = "SSLv3 write session ticket A"; 362296465Sdelphij break; 363296465Sdelphij case SSL3_ST_SW_SESSION_TICKET_B: 364296465Sdelphij str = "SSLv3 write session ticket B"; 365296465Sdelphij break; 366296465Sdelphij case SSL3_ST_SW_SRVR_DONE_A: 367296465Sdelphij str = "SSLv3 write server done A"; 368296465Sdelphij break; 369296465Sdelphij case SSL3_ST_SW_SRVR_DONE_B: 370296465Sdelphij str = "SSLv3 write server done B"; 371296465Sdelphij break; 372296465Sdelphij case SSL3_ST_SR_CERT_A: 373296465Sdelphij str = "SSLv3 read client certificate A"; 374296465Sdelphij break; 375296465Sdelphij case SSL3_ST_SR_CERT_B: 376296465Sdelphij str = "SSLv3 read client certificate B"; 377296465Sdelphij break; 378296465Sdelphij case SSL3_ST_SR_KEY_EXCH_A: 379296465Sdelphij str = "SSLv3 read client key exchange A"; 380296465Sdelphij break; 381296465Sdelphij case SSL3_ST_SR_KEY_EXCH_B: 382296465Sdelphij str = "SSLv3 read client key exchange B"; 383296465Sdelphij break; 384296465Sdelphij case SSL3_ST_SR_CERT_VRFY_A: 385296465Sdelphij str = "SSLv3 read certificate verify A"; 386296465Sdelphij break; 387296465Sdelphij case SSL3_ST_SR_CERT_VRFY_B: 388296465Sdelphij str = "SSLv3 read certificate verify B"; 389296465Sdelphij break; 39055714Skris#endif 39155714Skris 39259191Skris/* SSLv2/v3 compatibility states */ 39355714Skris/* client */ 394296465Sdelphij case SSL23_ST_CW_CLNT_HELLO_A: 395296465Sdelphij str = "SSLv2/v3 write client hello A"; 396296465Sdelphij break; 397296465Sdelphij case SSL23_ST_CW_CLNT_HELLO_B: 398296465Sdelphij str = "SSLv2/v3 write client hello B"; 399296465Sdelphij break; 400296465Sdelphij case SSL23_ST_CR_SRVR_HELLO_A: 401296465Sdelphij str = "SSLv2/v3 read server hello A"; 402296465Sdelphij break; 403296465Sdelphij case SSL23_ST_CR_SRVR_HELLO_B: 404296465Sdelphij str = "SSLv2/v3 read server hello B"; 405296465Sdelphij break; 40655714Skris/* server */ 407296465Sdelphij case SSL23_ST_SR_CLNT_HELLO_A: 408296465Sdelphij str = "SSLv2/v3 read client hello A"; 409296465Sdelphij break; 410296465Sdelphij case SSL23_ST_SR_CLNT_HELLO_B: 411296465Sdelphij str = "SSLv2/v3 read client hello B"; 412296465Sdelphij break; 41355714Skris 414205128Ssimon/* DTLS */ 415296465Sdelphij case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A: 416296465Sdelphij str = "DTLS1 read hello verify request A"; 417296465Sdelphij break; 418296465Sdelphij case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B: 419296465Sdelphij str = "DTLS1 read hello verify request B"; 420296465Sdelphij break; 421296465Sdelphij case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A: 422296465Sdelphij str = "DTLS1 write hello verify request A"; 423296465Sdelphij break; 424296465Sdelphij case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B: 425296465Sdelphij str = "DTLS1 write hello verify request B"; 426296465Sdelphij break; 427205128Ssimon 428296465Sdelphij default: 429296465Sdelphij str = "unknown state"; 430296465Sdelphij break; 431296465Sdelphij } 432296465Sdelphij return (str); 433296465Sdelphij} 43455714Skris 435109998Smarkmconst char *SSL_rstate_string_long(const SSL *s) 436296465Sdelphij{ 437296465Sdelphij const char *str; 43855714Skris 439296465Sdelphij switch (s->rstate) { 440296465Sdelphij case SSL_ST_READ_HEADER: 441296465Sdelphij str = "read header"; 442296465Sdelphij break; 443296465Sdelphij case SSL_ST_READ_BODY: 444296465Sdelphij str = "read body"; 445296465Sdelphij break; 446296465Sdelphij case SSL_ST_READ_DONE: 447296465Sdelphij str = "read done"; 448296465Sdelphij break; 449296465Sdelphij default: 450296465Sdelphij str = "unknown"; 451296465Sdelphij break; 452296465Sdelphij } 453296465Sdelphij return (str); 454296465Sdelphij} 45555714Skris 456109998Smarkmconst char *SSL_state_string(const SSL *s) 457296465Sdelphij{ 458296465Sdelphij const char *str; 45955714Skris 460296465Sdelphij switch (s->state) { 461296465Sdelphij case SSL_ST_BEFORE: 462296465Sdelphij str = "PINIT "; 463296465Sdelphij break; 464296465Sdelphij case SSL_ST_ACCEPT: 465296465Sdelphij str = "AINIT "; 466296465Sdelphij break; 467296465Sdelphij case SSL_ST_CONNECT: 468296465Sdelphij str = "CINIT "; 469296465Sdelphij break; 470296465Sdelphij case SSL_ST_OK: 471296465Sdelphij str = "SSLOK "; 472296465Sdelphij break; 473109998Smarkm#ifndef OPENSSL_NO_SSL2 474296465Sdelphij case SSL2_ST_CLIENT_START_ENCRYPTION: 475296465Sdelphij str = "2CSENC"; 476296465Sdelphij break; 477296465Sdelphij case SSL2_ST_SERVER_START_ENCRYPTION: 478296465Sdelphij str = "2SSENC"; 479296465Sdelphij break; 480296465Sdelphij case SSL2_ST_SEND_CLIENT_HELLO_A: 481296465Sdelphij str = "2SCH_A"; 482296465Sdelphij break; 483296465Sdelphij case SSL2_ST_SEND_CLIENT_HELLO_B: 484296465Sdelphij str = "2SCH_B"; 485296465Sdelphij break; 486296465Sdelphij case SSL2_ST_GET_SERVER_HELLO_A: 487296465Sdelphij str = "2GSH_A"; 488296465Sdelphij break; 489296465Sdelphij case SSL2_ST_GET_SERVER_HELLO_B: 490296465Sdelphij str = "2GSH_B"; 491296465Sdelphij break; 492296465Sdelphij case SSL2_ST_SEND_CLIENT_MASTER_KEY_A: 493296465Sdelphij str = "2SCMKA"; 494296465Sdelphij break; 495296465Sdelphij case SSL2_ST_SEND_CLIENT_MASTER_KEY_B: 496296465Sdelphij str = "2SCMKB"; 497296465Sdelphij break; 498296465Sdelphij case SSL2_ST_SEND_CLIENT_FINISHED_A: 499296465Sdelphij str = "2SCF_A"; 500296465Sdelphij break; 501296465Sdelphij case SSL2_ST_SEND_CLIENT_FINISHED_B: 502296465Sdelphij str = "2SCF_B"; 503296465Sdelphij break; 504296465Sdelphij case SSL2_ST_SEND_CLIENT_CERTIFICATE_A: 505296465Sdelphij str = "2SCC_A"; 506296465Sdelphij break; 507296465Sdelphij case SSL2_ST_SEND_CLIENT_CERTIFICATE_B: 508296465Sdelphij str = "2SCC_B"; 509296465Sdelphij break; 510296465Sdelphij case SSL2_ST_SEND_CLIENT_CERTIFICATE_C: 511296465Sdelphij str = "2SCC_C"; 512296465Sdelphij break; 513296465Sdelphij case SSL2_ST_SEND_CLIENT_CERTIFICATE_D: 514296465Sdelphij str = "2SCC_D"; 515296465Sdelphij break; 516296465Sdelphij case SSL2_ST_GET_SERVER_VERIFY_A: 517296465Sdelphij str = "2GSV_A"; 518296465Sdelphij break; 519296465Sdelphij case SSL2_ST_GET_SERVER_VERIFY_B: 520296465Sdelphij str = "2GSV_B"; 521296465Sdelphij break; 522296465Sdelphij case SSL2_ST_GET_SERVER_FINISHED_A: 523296465Sdelphij str = "2GSF_A"; 524296465Sdelphij break; 525296465Sdelphij case SSL2_ST_GET_SERVER_FINISHED_B: 526296465Sdelphij str = "2GSF_B"; 527296465Sdelphij break; 528296465Sdelphij case SSL2_ST_GET_CLIENT_HELLO_A: 529296465Sdelphij str = "2GCH_A"; 530296465Sdelphij break; 531296465Sdelphij case SSL2_ST_GET_CLIENT_HELLO_B: 532296465Sdelphij str = "2GCH_B"; 533296465Sdelphij break; 534296465Sdelphij case SSL2_ST_GET_CLIENT_HELLO_C: 535296465Sdelphij str = "2GCH_C"; 536296465Sdelphij break; 537296465Sdelphij case SSL2_ST_SEND_SERVER_HELLO_A: 538296465Sdelphij str = "2SSH_A"; 539296465Sdelphij break; 540296465Sdelphij case SSL2_ST_SEND_SERVER_HELLO_B: 541296465Sdelphij str = "2SSH_B"; 542296465Sdelphij break; 543296465Sdelphij case SSL2_ST_GET_CLIENT_MASTER_KEY_A: 544296465Sdelphij str = "2GCMKA"; 545296465Sdelphij break; 546296465Sdelphij case SSL2_ST_GET_CLIENT_MASTER_KEY_B: 547296465Sdelphij str = "2GCMKA"; 548296465Sdelphij break; 549296465Sdelphij case SSL2_ST_SEND_SERVER_VERIFY_A: 550296465Sdelphij str = "2SSV_A"; 551296465Sdelphij break; 552296465Sdelphij case SSL2_ST_SEND_SERVER_VERIFY_B: 553296465Sdelphij str = "2SSV_B"; 554296465Sdelphij break; 555296465Sdelphij case SSL2_ST_SEND_SERVER_VERIFY_C: 556296465Sdelphij str = "2SSV_C"; 557296465Sdelphij break; 558296465Sdelphij case SSL2_ST_GET_CLIENT_FINISHED_A: 559296465Sdelphij str = "2GCF_A"; 560296465Sdelphij break; 561296465Sdelphij case SSL2_ST_GET_CLIENT_FINISHED_B: 562296465Sdelphij str = "2GCF_B"; 563296465Sdelphij break; 564296465Sdelphij case SSL2_ST_SEND_SERVER_FINISHED_A: 565296465Sdelphij str = "2SSF_A"; 566296465Sdelphij break; 567296465Sdelphij case SSL2_ST_SEND_SERVER_FINISHED_B: 568296465Sdelphij str = "2SSF_B"; 569296465Sdelphij break; 570296465Sdelphij case SSL2_ST_SEND_REQUEST_CERTIFICATE_A: 571296465Sdelphij str = "2SRC_A"; 572296465Sdelphij break; 573296465Sdelphij case SSL2_ST_SEND_REQUEST_CERTIFICATE_B: 574296465Sdelphij str = "2SRC_B"; 575296465Sdelphij break; 576296465Sdelphij case SSL2_ST_SEND_REQUEST_CERTIFICATE_C: 577296465Sdelphij str = "2SRC_C"; 578296465Sdelphij break; 579296465Sdelphij case SSL2_ST_SEND_REQUEST_CERTIFICATE_D: 580296465Sdelphij str = "2SRC_D"; 581296465Sdelphij break; 582296465Sdelphij case SSL2_ST_X509_GET_SERVER_CERTIFICATE: 583296465Sdelphij str = "2X9GSC"; 584296465Sdelphij break; 585296465Sdelphij case SSL2_ST_X509_GET_CLIENT_CERTIFICATE: 586296465Sdelphij str = "2X9GCC"; 587296465Sdelphij break; 58855714Skris#endif 58955714Skris 590109998Smarkm#ifndef OPENSSL_NO_SSL3 59155714Skris/* SSLv3 additions */ 592296465Sdelphij case SSL3_ST_SW_FLUSH: 593296465Sdelphij case SSL3_ST_CW_FLUSH: 594296465Sdelphij str = "3FLUSH"; 595296465Sdelphij break; 596296465Sdelphij case SSL3_ST_CW_CLNT_HELLO_A: 597296465Sdelphij str = "3WCH_A"; 598296465Sdelphij break; 599296465Sdelphij case SSL3_ST_CW_CLNT_HELLO_B: 600296465Sdelphij str = "3WCH_B"; 601296465Sdelphij break; 602296465Sdelphij case SSL3_ST_CR_SRVR_HELLO_A: 603296465Sdelphij str = "3RSH_A"; 604296465Sdelphij break; 605296465Sdelphij case SSL3_ST_CR_SRVR_HELLO_B: 606296465Sdelphij str = "3RSH_B"; 607296465Sdelphij break; 608296465Sdelphij case SSL3_ST_CR_CERT_A: 609296465Sdelphij str = "3RSC_A"; 610296465Sdelphij break; 611296465Sdelphij case SSL3_ST_CR_CERT_B: 612296465Sdelphij str = "3RSC_B"; 613296465Sdelphij break; 614296465Sdelphij case SSL3_ST_CR_KEY_EXCH_A: 615296465Sdelphij str = "3RSKEA"; 616296465Sdelphij break; 617296465Sdelphij case SSL3_ST_CR_KEY_EXCH_B: 618296465Sdelphij str = "3RSKEB"; 619296465Sdelphij break; 620296465Sdelphij case SSL3_ST_CR_CERT_REQ_A: 621296465Sdelphij str = "3RCR_A"; 622296465Sdelphij break; 623296465Sdelphij case SSL3_ST_CR_CERT_REQ_B: 624296465Sdelphij str = "3RCR_B"; 625296465Sdelphij break; 626296465Sdelphij case SSL3_ST_CR_SRVR_DONE_A: 627296465Sdelphij str = "3RSD_A"; 628296465Sdelphij break; 629296465Sdelphij case SSL3_ST_CR_SRVR_DONE_B: 630296465Sdelphij str = "3RSD_B"; 631296465Sdelphij break; 632296465Sdelphij case SSL3_ST_CW_CERT_A: 633296465Sdelphij str = "3WCC_A"; 634296465Sdelphij break; 635296465Sdelphij case SSL3_ST_CW_CERT_B: 636296465Sdelphij str = "3WCC_B"; 637296465Sdelphij break; 638296465Sdelphij case SSL3_ST_CW_CERT_C: 639296465Sdelphij str = "3WCC_C"; 640296465Sdelphij break; 641296465Sdelphij case SSL3_ST_CW_CERT_D: 642296465Sdelphij str = "3WCC_D"; 643296465Sdelphij break; 644296465Sdelphij case SSL3_ST_CW_KEY_EXCH_A: 645296465Sdelphij str = "3WCKEA"; 646296465Sdelphij break; 647296465Sdelphij case SSL3_ST_CW_KEY_EXCH_B: 648296465Sdelphij str = "3WCKEB"; 649296465Sdelphij break; 650296465Sdelphij case SSL3_ST_CW_CERT_VRFY_A: 651296465Sdelphij str = "3WCV_A"; 652296465Sdelphij break; 653296465Sdelphij case SSL3_ST_CW_CERT_VRFY_B: 654296465Sdelphij str = "3WCV_B"; 655296465Sdelphij break; 65655714Skris 657296465Sdelphij case SSL3_ST_SW_CHANGE_A: 658296465Sdelphij case SSL3_ST_CW_CHANGE_A: 659296465Sdelphij str = "3WCCSA"; 660296465Sdelphij break; 661296465Sdelphij case SSL3_ST_SW_CHANGE_B: 662296465Sdelphij case SSL3_ST_CW_CHANGE_B: 663296465Sdelphij str = "3WCCSB"; 664296465Sdelphij break; 665296465Sdelphij case SSL3_ST_SW_FINISHED_A: 666296465Sdelphij case SSL3_ST_CW_FINISHED_A: 667296465Sdelphij str = "3WFINA"; 668296465Sdelphij break; 669296465Sdelphij case SSL3_ST_SW_FINISHED_B: 670296465Sdelphij case SSL3_ST_CW_FINISHED_B: 671296465Sdelphij str = "3WFINB"; 672296465Sdelphij break; 673296465Sdelphij case SSL3_ST_SR_CHANGE_A: 674296465Sdelphij case SSL3_ST_CR_CHANGE_A: 675296465Sdelphij str = "3RCCSA"; 676296465Sdelphij break; 677296465Sdelphij case SSL3_ST_SR_CHANGE_B: 678296465Sdelphij case SSL3_ST_CR_CHANGE_B: 679296465Sdelphij str = "3RCCSB"; 680296465Sdelphij break; 681296465Sdelphij case SSL3_ST_SR_FINISHED_A: 682296465Sdelphij case SSL3_ST_CR_FINISHED_A: 683296465Sdelphij str = "3RFINA"; 684296465Sdelphij break; 685296465Sdelphij case SSL3_ST_SR_FINISHED_B: 686296465Sdelphij case SSL3_ST_CR_FINISHED_B: 687296465Sdelphij str = "3RFINB"; 688296465Sdelphij break; 68955714Skris 690296465Sdelphij case SSL3_ST_SW_HELLO_REQ_A: 691296465Sdelphij str = "3WHR_A"; 692296465Sdelphij break; 693296465Sdelphij case SSL3_ST_SW_HELLO_REQ_B: 694296465Sdelphij str = "3WHR_B"; 695296465Sdelphij break; 696296465Sdelphij case SSL3_ST_SW_HELLO_REQ_C: 697296465Sdelphij str = "3WHR_C"; 698296465Sdelphij break; 699296465Sdelphij case SSL3_ST_SR_CLNT_HELLO_A: 700296465Sdelphij str = "3RCH_A"; 701296465Sdelphij break; 702296465Sdelphij case SSL3_ST_SR_CLNT_HELLO_B: 703296465Sdelphij str = "3RCH_B"; 704296465Sdelphij break; 705296465Sdelphij case SSL3_ST_SR_CLNT_HELLO_C: 706296465Sdelphij str = "3RCH_C"; 707296465Sdelphij break; 708296465Sdelphij case SSL3_ST_SW_SRVR_HELLO_A: 709296465Sdelphij str = "3WSH_A"; 710296465Sdelphij break; 711296465Sdelphij case SSL3_ST_SW_SRVR_HELLO_B: 712296465Sdelphij str = "3WSH_B"; 713296465Sdelphij break; 714296465Sdelphij case SSL3_ST_SW_CERT_A: 715296465Sdelphij str = "3WSC_A"; 716296465Sdelphij break; 717296465Sdelphij case SSL3_ST_SW_CERT_B: 718296465Sdelphij str = "3WSC_B"; 719296465Sdelphij break; 720296465Sdelphij case SSL3_ST_SW_KEY_EXCH_A: 721296465Sdelphij str = "3WSKEA"; 722296465Sdelphij break; 723296465Sdelphij case SSL3_ST_SW_KEY_EXCH_B: 724296465Sdelphij str = "3WSKEB"; 725296465Sdelphij break; 726296465Sdelphij case SSL3_ST_SW_CERT_REQ_A: 727296465Sdelphij str = "3WCR_A"; 728296465Sdelphij break; 729296465Sdelphij case SSL3_ST_SW_CERT_REQ_B: 730296465Sdelphij str = "3WCR_B"; 731296465Sdelphij break; 732296465Sdelphij case SSL3_ST_SW_SRVR_DONE_A: 733296465Sdelphij str = "3WSD_A"; 734296465Sdelphij break; 735296465Sdelphij case SSL3_ST_SW_SRVR_DONE_B: 736296465Sdelphij str = "3WSD_B"; 737296465Sdelphij break; 738296465Sdelphij case SSL3_ST_SR_CERT_A: 739296465Sdelphij str = "3RCC_A"; 740296465Sdelphij break; 741296465Sdelphij case SSL3_ST_SR_CERT_B: 742296465Sdelphij str = "3RCC_B"; 743296465Sdelphij break; 744296465Sdelphij case SSL3_ST_SR_KEY_EXCH_A: 745296465Sdelphij str = "3RCKEA"; 746296465Sdelphij break; 747296465Sdelphij case SSL3_ST_SR_KEY_EXCH_B: 748296465Sdelphij str = "3RCKEB"; 749296465Sdelphij break; 750296465Sdelphij case SSL3_ST_SR_CERT_VRFY_A: 751296465Sdelphij str = "3RCV_A"; 752296465Sdelphij break; 753296465Sdelphij case SSL3_ST_SR_CERT_VRFY_B: 754296465Sdelphij str = "3RCV_B"; 755296465Sdelphij break; 75655714Skris#endif 75755714Skris 75859191Skris/* SSLv2/v3 compatibility states */ 75955714Skris/* client */ 760296465Sdelphij case SSL23_ST_CW_CLNT_HELLO_A: 761296465Sdelphij str = "23WCHA"; 762296465Sdelphij break; 763296465Sdelphij case SSL23_ST_CW_CLNT_HELLO_B: 764296465Sdelphij str = "23WCHB"; 765296465Sdelphij break; 766296465Sdelphij case SSL23_ST_CR_SRVR_HELLO_A: 767296465Sdelphij str = "23RSHA"; 768296465Sdelphij break; 769296465Sdelphij case SSL23_ST_CR_SRVR_HELLO_B: 770296465Sdelphij str = "23RSHA"; 771296465Sdelphij break; 77255714Skris/* server */ 773296465Sdelphij case SSL23_ST_SR_CLNT_HELLO_A: 774296465Sdelphij str = "23RCHA"; 775296465Sdelphij break; 776296465Sdelphij case SSL23_ST_SR_CLNT_HELLO_B: 777296465Sdelphij str = "23RCHB"; 778296465Sdelphij break; 779279265Sdelphij 780205128Ssimon/* DTLS */ 781296465Sdelphij case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A: 782296465Sdelphij str = "DRCHVA"; 783296465Sdelphij break; 784296465Sdelphij case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B: 785296465Sdelphij str = "DRCHVB"; 786296465Sdelphij break; 787296465Sdelphij case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A: 788296465Sdelphij str = "DWCHVA"; 789296465Sdelphij break; 790296465Sdelphij case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B: 791296465Sdelphij str = "DWCHVB"; 792296465Sdelphij break; 79355714Skris 794296465Sdelphij default: 795296465Sdelphij str = "UNKWN "; 796296465Sdelphij break; 797296465Sdelphij } 798296465Sdelphij return (str); 799296465Sdelphij} 80055714Skris 801109998Smarkmconst char *SSL_alert_type_string_long(int value) 802296465Sdelphij{ 803296465Sdelphij value >>= 8; 804296465Sdelphij if (value == SSL3_AL_WARNING) 805296465Sdelphij return ("warning"); 806296465Sdelphij else if (value == SSL3_AL_FATAL) 807296465Sdelphij return ("fatal"); 808296465Sdelphij else 809296465Sdelphij return ("unknown"); 810296465Sdelphij} 81155714Skris 812109998Smarkmconst char *SSL_alert_type_string(int value) 813296465Sdelphij{ 814296465Sdelphij value >>= 8; 815296465Sdelphij if (value == SSL3_AL_WARNING) 816296465Sdelphij return ("W"); 817296465Sdelphij else if (value == SSL3_AL_FATAL) 818296465Sdelphij return ("F"); 819296465Sdelphij else 820296465Sdelphij return ("U"); 821296465Sdelphij} 82255714Skris 823109998Smarkmconst char *SSL_alert_desc_string(int value) 824296465Sdelphij{ 825296465Sdelphij const char *str; 82655714Skris 827296465Sdelphij switch (value & 0xff) { 828296465Sdelphij case SSL3_AD_CLOSE_NOTIFY: 829296465Sdelphij str = "CN"; 830296465Sdelphij break; 831296465Sdelphij case SSL3_AD_UNEXPECTED_MESSAGE: 832296465Sdelphij str = "UM"; 833296465Sdelphij break; 834296465Sdelphij case SSL3_AD_BAD_RECORD_MAC: 835296465Sdelphij str = "BM"; 836296465Sdelphij break; 837296465Sdelphij case SSL3_AD_DECOMPRESSION_FAILURE: 838296465Sdelphij str = "DF"; 839296465Sdelphij break; 840296465Sdelphij case SSL3_AD_HANDSHAKE_FAILURE: 841296465Sdelphij str = "HF"; 842296465Sdelphij break; 843296465Sdelphij case SSL3_AD_NO_CERTIFICATE: 844296465Sdelphij str = "NC"; 845296465Sdelphij break; 846296465Sdelphij case SSL3_AD_BAD_CERTIFICATE: 847296465Sdelphij str = "BC"; 848296465Sdelphij break; 849296465Sdelphij case SSL3_AD_UNSUPPORTED_CERTIFICATE: 850296465Sdelphij str = "UC"; 851296465Sdelphij break; 852296465Sdelphij case SSL3_AD_CERTIFICATE_REVOKED: 853296465Sdelphij str = "CR"; 854296465Sdelphij break; 855296465Sdelphij case SSL3_AD_CERTIFICATE_EXPIRED: 856296465Sdelphij str = "CE"; 857296465Sdelphij break; 858296465Sdelphij case SSL3_AD_CERTIFICATE_UNKNOWN: 859296465Sdelphij str = "CU"; 860296465Sdelphij break; 861296465Sdelphij case SSL3_AD_ILLEGAL_PARAMETER: 862296465Sdelphij str = "IP"; 863296465Sdelphij break; 864296465Sdelphij case TLS1_AD_DECRYPTION_FAILED: 865296465Sdelphij str = "DC"; 866296465Sdelphij break; 867296465Sdelphij case TLS1_AD_RECORD_OVERFLOW: 868296465Sdelphij str = "RO"; 869296465Sdelphij break; 870296465Sdelphij case TLS1_AD_UNKNOWN_CA: 871296465Sdelphij str = "CA"; 872296465Sdelphij break; 873296465Sdelphij case TLS1_AD_ACCESS_DENIED: 874296465Sdelphij str = "AD"; 875296465Sdelphij break; 876296465Sdelphij case TLS1_AD_DECODE_ERROR: 877296465Sdelphij str = "DE"; 878296465Sdelphij break; 879296465Sdelphij case TLS1_AD_DECRYPT_ERROR: 880296465Sdelphij str = "CY"; 881296465Sdelphij break; 882296465Sdelphij case TLS1_AD_EXPORT_RESTRICTION: 883296465Sdelphij str = "ER"; 884296465Sdelphij break; 885296465Sdelphij case TLS1_AD_PROTOCOL_VERSION: 886296465Sdelphij str = "PV"; 887296465Sdelphij break; 888296465Sdelphij case TLS1_AD_INSUFFICIENT_SECURITY: 889296465Sdelphij str = "IS"; 890296465Sdelphij break; 891296465Sdelphij case TLS1_AD_INTERNAL_ERROR: 892296465Sdelphij str = "IE"; 893296465Sdelphij break; 894296465Sdelphij case TLS1_AD_USER_CANCELLED: 895296465Sdelphij str = "US"; 896296465Sdelphij break; 897296465Sdelphij case TLS1_AD_NO_RENEGOTIATION: 898296465Sdelphij str = "NR"; 899296465Sdelphij break; 900296465Sdelphij case TLS1_AD_UNSUPPORTED_EXTENSION: 901296465Sdelphij str = "UE"; 902296465Sdelphij break; 903296465Sdelphij case TLS1_AD_CERTIFICATE_UNOBTAINABLE: 904296465Sdelphij str = "CO"; 905296465Sdelphij break; 906296465Sdelphij case TLS1_AD_UNRECOGNIZED_NAME: 907296465Sdelphij str = "UN"; 908296465Sdelphij break; 909296465Sdelphij case TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE: 910296465Sdelphij str = "BR"; 911296465Sdelphij break; 912296465Sdelphij case TLS1_AD_BAD_CERTIFICATE_HASH_VALUE: 913296465Sdelphij str = "BH"; 914296465Sdelphij break; 915296465Sdelphij case TLS1_AD_UNKNOWN_PSK_IDENTITY: 916296465Sdelphij str = "UP"; 917296465Sdelphij break; 918296465Sdelphij default: 919296465Sdelphij str = "UK"; 920296465Sdelphij break; 921296465Sdelphij } 922296465Sdelphij return (str); 923296465Sdelphij} 92455714Skris 925109998Smarkmconst char *SSL_alert_desc_string_long(int value) 926296465Sdelphij{ 927296465Sdelphij const char *str; 92855714Skris 929296465Sdelphij switch (value & 0xff) { 930296465Sdelphij case SSL3_AD_CLOSE_NOTIFY: 931296465Sdelphij str = "close notify"; 932296465Sdelphij break; 933296465Sdelphij case SSL3_AD_UNEXPECTED_MESSAGE: 934296465Sdelphij str = "unexpected_message"; 935296465Sdelphij break; 936296465Sdelphij case SSL3_AD_BAD_RECORD_MAC: 937296465Sdelphij str = "bad record mac"; 938296465Sdelphij break; 939296465Sdelphij case SSL3_AD_DECOMPRESSION_FAILURE: 940296465Sdelphij str = "decompression failure"; 941296465Sdelphij break; 942296465Sdelphij case SSL3_AD_HANDSHAKE_FAILURE: 943296465Sdelphij str = "handshake failure"; 944296465Sdelphij break; 945296465Sdelphij case SSL3_AD_NO_CERTIFICATE: 946296465Sdelphij str = "no certificate"; 947296465Sdelphij break; 948296465Sdelphij case SSL3_AD_BAD_CERTIFICATE: 949296465Sdelphij str = "bad certificate"; 950296465Sdelphij break; 951296465Sdelphij case SSL3_AD_UNSUPPORTED_CERTIFICATE: 952296465Sdelphij str = "unsupported certificate"; 953296465Sdelphij break; 954296465Sdelphij case SSL3_AD_CERTIFICATE_REVOKED: 955296465Sdelphij str = "certificate revoked"; 956296465Sdelphij break; 957296465Sdelphij case SSL3_AD_CERTIFICATE_EXPIRED: 958296465Sdelphij str = "certificate expired"; 959296465Sdelphij break; 960296465Sdelphij case SSL3_AD_CERTIFICATE_UNKNOWN: 961296465Sdelphij str = "certificate unknown"; 962296465Sdelphij break; 963296465Sdelphij case SSL3_AD_ILLEGAL_PARAMETER: 964296465Sdelphij str = "illegal parameter"; 965296465Sdelphij break; 966296465Sdelphij case TLS1_AD_DECRYPTION_FAILED: 967296465Sdelphij str = "decryption failed"; 968296465Sdelphij break; 969296465Sdelphij case TLS1_AD_RECORD_OVERFLOW: 970296465Sdelphij str = "record overflow"; 971296465Sdelphij break; 972296465Sdelphij case TLS1_AD_UNKNOWN_CA: 973296465Sdelphij str = "unknown CA"; 974296465Sdelphij break; 975296465Sdelphij case TLS1_AD_ACCESS_DENIED: 976296465Sdelphij str = "access denied"; 977296465Sdelphij break; 978296465Sdelphij case TLS1_AD_DECODE_ERROR: 979296465Sdelphij str = "decode error"; 980296465Sdelphij break; 981296465Sdelphij case TLS1_AD_DECRYPT_ERROR: 982296465Sdelphij str = "decrypt error"; 983296465Sdelphij break; 984296465Sdelphij case TLS1_AD_EXPORT_RESTRICTION: 985296465Sdelphij str = "export restriction"; 986296465Sdelphij break; 987296465Sdelphij case TLS1_AD_PROTOCOL_VERSION: 988296465Sdelphij str = "protocol version"; 989296465Sdelphij break; 990296465Sdelphij case TLS1_AD_INSUFFICIENT_SECURITY: 991296465Sdelphij str = "insufficient security"; 992296465Sdelphij break; 993296465Sdelphij case TLS1_AD_INTERNAL_ERROR: 994296465Sdelphij str = "internal error"; 995296465Sdelphij break; 996296465Sdelphij case TLS1_AD_USER_CANCELLED: 997296465Sdelphij str = "user canceled"; 998296465Sdelphij break; 999296465Sdelphij case TLS1_AD_NO_RENEGOTIATION: 1000296465Sdelphij str = "no renegotiation"; 1001296465Sdelphij break; 1002296465Sdelphij case TLS1_AD_UNSUPPORTED_EXTENSION: 1003296465Sdelphij str = "unsupported extension"; 1004296465Sdelphij break; 1005296465Sdelphij case TLS1_AD_CERTIFICATE_UNOBTAINABLE: 1006296465Sdelphij str = "certificate unobtainable"; 1007296465Sdelphij break; 1008296465Sdelphij case TLS1_AD_UNRECOGNIZED_NAME: 1009296465Sdelphij str = "unrecognized name"; 1010296465Sdelphij break; 1011296465Sdelphij case TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE: 1012296465Sdelphij str = "bad certificate status response"; 1013296465Sdelphij break; 1014296465Sdelphij case TLS1_AD_BAD_CERTIFICATE_HASH_VALUE: 1015296465Sdelphij str = "bad certificate hash value"; 1016296465Sdelphij break; 1017296465Sdelphij case TLS1_AD_UNKNOWN_PSK_IDENTITY: 1018296465Sdelphij str = "unknown PSK identity"; 1019296465Sdelphij break; 1020296465Sdelphij default: 1021296465Sdelphij str = "unknown"; 1022296465Sdelphij break; 1023296465Sdelphij } 1024296465Sdelphij return (str); 1025296465Sdelphij} 102655714Skris 1027109998Smarkmconst char *SSL_rstate_string(const SSL *s) 1028296465Sdelphij{ 1029296465Sdelphij const char *str; 103055714Skris 1031296465Sdelphij switch (s->rstate) { 1032296465Sdelphij case SSL_ST_READ_HEADER: 1033296465Sdelphij str = "RH"; 1034296465Sdelphij break; 1035296465Sdelphij case SSL_ST_READ_BODY: 1036296465Sdelphij str = "RB"; 1037296465Sdelphij break; 1038296465Sdelphij case SSL_ST_READ_DONE: 1039296465Sdelphij str = "RD"; 1040296465Sdelphij break; 1041296465Sdelphij default: 1042296465Sdelphij str = "unknown"; 1043296465Sdelphij break; 1044296465Sdelphij } 1045296465Sdelphij return (str); 1046296465Sdelphij} 1047