1 /* Copyright (C) 1995-1998 Eric Young (eay (at) cryptsoft.com) 2 * All rights reserved. 3 * 4 * This package is an SSL implementation written 5 * by Eric Young (eay (at) cryptsoft.com). 6 * The implementation was written so as to conform with Netscapes SSL. 7 * 8 * This library is free for commercial and non-commercial use as long as 9 * the following conditions are aheared to. The following conditions 10 * apply to all code found in this distribution, be it the RC4, RSA, 11 * lhash, DES, etc., code; not just the SSL code. The SSL documentation 12 * included with this distribution is covered by the same copyright terms 13 * except that the holder is Tim Hudson (tjh (at) cryptsoft.com). 14 * 15 * Copyright remains Eric Young's, and as such any Copyright notices in 16 * the code are not to be removed. 17 * If this package is used in a product, Eric Young should be given attribution 18 * as the author of the parts of the library used. 19 * This can be in the form of a textual message at program startup or 20 * in documentation (online or textual) provided with the package. 21 * 22 * Redistribution and use in source and binary forms, with or without 23 * modification, are permitted provided that the following conditions 24 * are met: 25 * 1. Redistributions of source code must retain the copyright 26 * notice, this list of conditions and the following disclaimer. 27 * 2. Redistributions in binary form must reproduce the above copyright 28 * notice, this list of conditions and the following disclaimer in the 29 * documentation and/or other materials provided with the distribution. 30 * 3. All advertising materials mentioning features or use of this software 31 * must display the following acknowledgement: 32 * "This product includes cryptographic software written by 33 * Eric Young (eay (at) cryptsoft.com)" 34 * The word 'cryptographic' can be left out if the rouines from the library 35 * being used are not cryptographic related :-). 36 * 4. If you include any Windows specific code (or a derivative thereof) from 37 * the apps directory (application code) you must include an acknowledgement: 38 * "This product includes software written by Tim Hudson (tjh (at) cryptsoft.com)" 39 * 40 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 41 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 42 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 43 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 44 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 45 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 46 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 47 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 48 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 49 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 50 * SUCH DAMAGE. 51 * 52 * The licence and distribution terms for any publically available version or 53 * derivative of this code cannot be changed. i.e. this code cannot simply be 54 * copied and put under another distribution licence 55 * [including the GNU Public Licence.] 56 */ 57 /* ==================================================================== 58 * Copyright 2005 Nokia. All rights reserved. 59 * 60 * The portions of the attached software ("Contribution") is developed by 61 * Nokia Corporation and is licensed pursuant to the OpenSSL open source 62 * license. 63 * 64 * The Contribution, originally written by Mika Kousa and Pasi Eronen of 65 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites 66 * support (see RFC 4279) to OpenSSL. 67 * 68 * No patent licenses or other rights except those expressly stated in 69 * the OpenSSL open source license shall be deemed granted or received 70 * expressly, by implication, estoppel, or otherwise. 71 * 72 * No assurances are provided by Nokia that the Contribution does not 73 * infringe the patent or other intellectual property rights of any third 74 * party or that the license provides you with all the necessary rights 75 * to make use of the Contribution. 76 * 77 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN 78 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA 79 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY 80 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR 81 * OTHERWISE. 82 */ 83 84 #include <openssl/ssl.h> 85 86 #include <assert.h> 87 88 #include "internal.h" 89 90 91 const char *SSL_state_string_long(const SSL *ssl) { 92 if (ssl->s3->hs == nullptr) { 93 return "SSL negotiation finished successfully"; 94 } 95 96 return ssl->server ? ssl_server_handshake_state(ssl->s3->hs.get()) 97 : ssl_client_handshake_state(ssl->s3->hs.get()); 98 } 99 100 const char *SSL_state_string(const SSL *ssl) { 101 return "!!!!!!"; 102 } 103 104 const char *SSL_alert_type_string_long(int value) { 105 value >>= 8; 106 if (value == SSL3_AL_WARNING) { 107 return "warning"; 108 } else if (value == SSL3_AL_FATAL) { 109 return "fatal"; 110 } 111 112 return "unknown"; 113 } 114 115 const char *SSL_alert_type_string(int value) { 116 return "!"; 117 } 118 119 const char *SSL_alert_desc_string(int value) { 120 return "!!"; 121 } 122 123 const char *SSL_alert_desc_string_long(int value) { 124 switch (value & 0xff) { 125 case SSL3_AD_CLOSE_NOTIFY: 126 return "close notify"; 127 128 case SSL3_AD_UNEXPECTED_MESSAGE: 129 return "unexpected_message"; 130 131 case SSL3_AD_BAD_RECORD_MAC: 132 return "bad record mac"; 133 134 case SSL3_AD_DECOMPRESSION_FAILURE: 135 return "decompression failure"; 136 137 case SSL3_AD_HANDSHAKE_FAILURE: 138 return "handshake failure"; 139 140 case SSL3_AD_NO_CERTIFICATE: 141 return "no certificate"; 142 143 case SSL3_AD_BAD_CERTIFICATE: 144 return "bad certificate"; 145 146 case SSL3_AD_UNSUPPORTED_CERTIFICATE: 147 return "unsupported certificate"; 148 149 case SSL3_AD_CERTIFICATE_REVOKED: 150 return "certificate revoked"; 151 152 case SSL3_AD_CERTIFICATE_EXPIRED: 153 return "certificate expired"; 154 155 case SSL3_AD_CERTIFICATE_UNKNOWN: 156 return "certificate unknown"; 157 158 case SSL3_AD_ILLEGAL_PARAMETER: 159 return "illegal parameter"; 160 161 case TLS1_AD_DECRYPTION_FAILED: 162 return "decryption failed"; 163 164 case TLS1_AD_RECORD_OVERFLOW: 165 return "record overflow"; 166 167 case TLS1_AD_UNKNOWN_CA: 168 return "unknown CA"; 169 170 case TLS1_AD_ACCESS_DENIED: 171 return "access denied"; 172 173 case TLS1_AD_DECODE_ERROR: 174 return "decode error"; 175 176 case TLS1_AD_DECRYPT_ERROR: 177 return "decrypt error"; 178 179 case TLS1_AD_EXPORT_RESTRICTION: 180 return "export restriction"; 181 182 case TLS1_AD_PROTOCOL_VERSION: 183 return "protocol version"; 184 185 case TLS1_AD_INSUFFICIENT_SECURITY: 186 return "insufficient security"; 187 188 case TLS1_AD_INTERNAL_ERROR: 189 return "internal error"; 190 191 case SSL3_AD_INAPPROPRIATE_FALLBACK: 192 return "inappropriate fallback"; 193 194 case TLS1_AD_USER_CANCELLED: 195 return "user canceled"; 196 197 case TLS1_AD_NO_RENEGOTIATION: 198 return "no renegotiation"; 199 200 case TLS1_AD_UNSUPPORTED_EXTENSION: 201 return "unsupported extension"; 202 203 case TLS1_AD_CERTIFICATE_UNOBTAINABLE: 204 return "certificate unobtainable"; 205 206 case TLS1_AD_UNRECOGNIZED_NAME: 207 return "unrecognized name"; 208 209 case TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE: 210 return "bad certificate status response"; 211 212 case TLS1_AD_BAD_CERTIFICATE_HASH_VALUE: 213 return "bad certificate hash value"; 214 215 case TLS1_AD_UNKNOWN_PSK_IDENTITY: 216 return "unknown PSK identity"; 217 218 case TLS1_AD_CERTIFICATE_REQUIRED: 219 return "certificate required"; 220 221 default: 222 return "unknown"; 223 } 224 } 225