Branch data Line data Source code
1 : : /* ssl/ssl_stat.c */
2 : : /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 : : * All rights reserved.
4 : : *
5 : : * This package is an SSL implementation written
6 : : * by Eric Young (eay@cryptsoft.com).
7 : : * The implementation was written so as to conform with Netscapes SSL.
8 : : *
9 : : * This library is free for commercial and non-commercial use as long as
10 : : * the following conditions are aheared to. The following conditions
11 : : * apply to all code found in this distribution, be it the RC4, RSA,
12 : : * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 : : * included with this distribution is covered by the same copyright terms
14 : : * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 : : *
16 : : * Copyright remains Eric Young's, and as such any Copyright notices in
17 : : * the code are not to be removed.
18 : : * If this package is used in a product, Eric Young should be given attribution
19 : : * as the author of the parts of the library used.
20 : : * This can be in the form of a textual message at program startup or
21 : : * in documentation (online or textual) provided with the package.
22 : : *
23 : : * Redistribution and use in source and binary forms, with or without
24 : : * modification, are permitted provided that the following conditions
25 : : * are met:
26 : : * 1. Redistributions of source code must retain the copyright
27 : : * notice, this list of conditions and the following disclaimer.
28 : : * 2. Redistributions in binary form must reproduce the above copyright
29 : : * notice, this list of conditions and the following disclaimer in the
30 : : * documentation and/or other materials provided with the distribution.
31 : : * 3. All advertising materials mentioning features or use of this software
32 : : * must display the following acknowledgement:
33 : : * "This product includes cryptographic software written by
34 : : * Eric Young (eay@cryptsoft.com)"
35 : : * The word 'cryptographic' can be left out if the rouines from the library
36 : : * being used are not cryptographic related :-).
37 : : * 4. If you include any Windows specific code (or a derivative thereof) from
38 : : * the apps directory (application code) you must include an acknowledgement:
39 : : * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 : : *
41 : : * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 : : * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 : : * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 : : * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 : : * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 : : * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 : : * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 : : * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 : : * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 : : * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 : : * SUCH DAMAGE.
52 : : *
53 : : * The licence and distribution terms for any publically available version or
54 : : * derivative of this code cannot be changed. i.e. this code cannot simply be
55 : : * copied and put under another distribution licence
56 : : * [including the GNU Public Licence.]
57 : : */
58 : : /* ====================================================================
59 : : * Copyright 2005 Nokia. All rights reserved.
60 : : *
61 : : * The portions of the attached software ("Contribution") is developed by
62 : : * Nokia Corporation and is licensed pursuant to the OpenSSL open source
63 : : * license.
64 : : *
65 : : * The Contribution, originally written by Mika Kousa and Pasi Eronen of
66 : : * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
67 : : * support (see RFC 4279) to OpenSSL.
68 : : *
69 : : * No patent licenses or other rights except those expressly stated in
70 : : * the OpenSSL open source license shall be deemed granted or received
71 : : * expressly, by implication, estoppel, or otherwise.
72 : : *
73 : : * No assurances are provided by Nokia that the Contribution does not
74 : : * infringe the patent or other intellectual property rights of any third
75 : : * party or that the license provides you with all the necessary rights
76 : : * to make use of the Contribution.
77 : : *
78 : : * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
79 : : * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
80 : : * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
81 : : * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
82 : : * OTHERWISE.
83 : : */
84 : :
85 : : #include <stdio.h>
86 : : #include "ssl_locl.h"
87 : :
88 : 0 : const char *SSL_state_string_long(const SSL *s)
89 : : {
90 : : const char *str;
91 : :
92 [ # # # # : 0 : switch (s->state)
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # ]
93 : : {
94 : : case SSL_ST_BEFORE: str="before SSL initialization"; break;
95 : 0 : case SSL_ST_ACCEPT: str="before accept initialization"; break;
96 : 0 : case SSL_ST_CONNECT: str="before connect initialization"; break;
97 : 0 : case SSL_ST_OK: str="SSL negotiation finished successfully"; break;
98 : 0 : case SSL_ST_RENEGOTIATE: str="SSL renegotiate ciphers"; break;
99 : 0 : case SSL_ST_BEFORE|SSL_ST_CONNECT: str="before/connect initialization"; break;
100 : 0 : case SSL_ST_OK|SSL_ST_CONNECT: str="ok/connect SSL initialization"; break;
101 : 0 : case SSL_ST_BEFORE|SSL_ST_ACCEPT: str="before/accept initialization"; break;
102 : 0 : case SSL_ST_OK|SSL_ST_ACCEPT: str="ok/accept SSL initialization"; break;
103 : : #ifndef OPENSSL_NO_SSL2
104 : 0 : case SSL2_ST_CLIENT_START_ENCRYPTION: str="SSLv2 client start encryption"; break;
105 : 0 : case SSL2_ST_SERVER_START_ENCRYPTION: str="SSLv2 server start encryption"; break;
106 : 0 : case SSL2_ST_SEND_CLIENT_HELLO_A: str="SSLv2 write client hello A"; break;
107 : 0 : case SSL2_ST_SEND_CLIENT_HELLO_B: str="SSLv2 write client hello B"; break;
108 : 0 : case SSL2_ST_GET_SERVER_HELLO_A: str="SSLv2 read server hello A"; break;
109 : 0 : case SSL2_ST_GET_SERVER_HELLO_B: str="SSLv2 read server hello B"; break;
110 : 0 : case SSL2_ST_SEND_CLIENT_MASTER_KEY_A: str="SSLv2 write client master key A"; break;
111 : 0 : case SSL2_ST_SEND_CLIENT_MASTER_KEY_B: str="SSLv2 write client master key B"; break;
112 : 0 : case SSL2_ST_SEND_CLIENT_FINISHED_A: str="SSLv2 write client finished A"; break;
113 : 0 : case SSL2_ST_SEND_CLIENT_FINISHED_B: str="SSLv2 write client finished B"; break;
114 : 0 : case SSL2_ST_SEND_CLIENT_CERTIFICATE_A: str="SSLv2 write client certificate A"; break;
115 : 0 : case SSL2_ST_SEND_CLIENT_CERTIFICATE_B: str="SSLv2 write client certificate B"; break;
116 : 0 : case SSL2_ST_SEND_CLIENT_CERTIFICATE_C: str="SSLv2 write client certificate C"; break;
117 : 0 : case SSL2_ST_SEND_CLIENT_CERTIFICATE_D: str="SSLv2 write client certificate D"; break;
118 : 0 : case SSL2_ST_GET_SERVER_VERIFY_A: str="SSLv2 read server verify A"; break;
119 : 0 : case SSL2_ST_GET_SERVER_VERIFY_B: str="SSLv2 read server verify B"; break;
120 : 0 : case SSL2_ST_GET_SERVER_FINISHED_A: str="SSLv2 read server finished A"; break;
121 : 0 : case SSL2_ST_GET_SERVER_FINISHED_B: str="SSLv2 read server finished B"; break;
122 : 0 : case SSL2_ST_GET_CLIENT_HELLO_A: str="SSLv2 read client hello A"; break;
123 : 0 : case SSL2_ST_GET_CLIENT_HELLO_B: str="SSLv2 read client hello B"; break;
124 : 0 : case SSL2_ST_GET_CLIENT_HELLO_C: str="SSLv2 read client hello C"; break;
125 : 0 : case SSL2_ST_SEND_SERVER_HELLO_A: str="SSLv2 write server hello A"; break;
126 : 0 : case SSL2_ST_SEND_SERVER_HELLO_B: str="SSLv2 write server hello B"; break;
127 : 0 : case SSL2_ST_GET_CLIENT_MASTER_KEY_A: str="SSLv2 read client master key A"; break;
128 : 0 : case SSL2_ST_GET_CLIENT_MASTER_KEY_B: str="SSLv2 read client master key B"; break;
129 : 0 : case SSL2_ST_SEND_SERVER_VERIFY_A: str="SSLv2 write server verify A"; break;
130 : 0 : case SSL2_ST_SEND_SERVER_VERIFY_B: str="SSLv2 write server verify B"; break;
131 : 0 : case SSL2_ST_SEND_SERVER_VERIFY_C: str="SSLv2 write server verify C"; break;
132 : 0 : case SSL2_ST_GET_CLIENT_FINISHED_A: str="SSLv2 read client finished A"; break;
133 : 0 : case SSL2_ST_GET_CLIENT_FINISHED_B: str="SSLv2 read client finished B"; break;
134 : 0 : case SSL2_ST_SEND_SERVER_FINISHED_A: str="SSLv2 write server finished A"; break;
135 : 0 : case SSL2_ST_SEND_SERVER_FINISHED_B: str="SSLv2 write server finished B"; break;
136 : 0 : case SSL2_ST_SEND_REQUEST_CERTIFICATE_A: str="SSLv2 write request certificate A"; break;
137 : 0 : case SSL2_ST_SEND_REQUEST_CERTIFICATE_B: str="SSLv2 write request certificate B"; break;
138 : 0 : case SSL2_ST_SEND_REQUEST_CERTIFICATE_C: str="SSLv2 write request certificate C"; break;
139 : 0 : case SSL2_ST_SEND_REQUEST_CERTIFICATE_D: str="SSLv2 write request certificate D"; break;
140 : 0 : case SSL2_ST_X509_GET_SERVER_CERTIFICATE: str="SSLv2 X509 read server certificate"; break;
141 : 0 : case SSL2_ST_X509_GET_CLIENT_CERTIFICATE: str="SSLv2 X509 read client certificate"; break;
142 : : #endif
143 : :
144 : : #ifndef OPENSSL_NO_SSL3
145 : : /* SSLv3 additions */
146 : 0 : case SSL3_ST_CW_CLNT_HELLO_A: str="SSLv3 write client hello A"; break;
147 : 0 : case SSL3_ST_CW_CLNT_HELLO_B: str="SSLv3 write client hello B"; break;
148 : 0 : case SSL3_ST_CR_SRVR_HELLO_A: str="SSLv3 read server hello A"; break;
149 : 0 : case SSL3_ST_CR_SRVR_HELLO_B: str="SSLv3 read server hello B"; break;
150 : 0 : case SSL3_ST_CR_CERT_A: str="SSLv3 read server certificate A"; break;
151 : 0 : case SSL3_ST_CR_CERT_B: str="SSLv3 read server certificate B"; break;
152 : 0 : case SSL3_ST_CR_KEY_EXCH_A: str="SSLv3 read server key exchange A"; break;
153 : 0 : case SSL3_ST_CR_KEY_EXCH_B: str="SSLv3 read server key exchange B"; break;
154 : 0 : case SSL3_ST_CR_CERT_REQ_A: str="SSLv3 read server certificate request A"; break;
155 : 0 : case SSL3_ST_CR_CERT_REQ_B: str="SSLv3 read server certificate request B"; break;
156 : 0 : case SSL3_ST_CR_SESSION_TICKET_A: str="SSLv3 read server session ticket A";break;
157 : 0 : case SSL3_ST_CR_SESSION_TICKET_B: str="SSLv3 read server session ticket B";break;
158 : 0 : case SSL3_ST_CR_SRVR_DONE_A: str="SSLv3 read server done A"; break;
159 : 0 : case SSL3_ST_CR_SRVR_DONE_B: str="SSLv3 read server done B"; break;
160 : 0 : case SSL3_ST_CW_CERT_A: str="SSLv3 write client certificate A"; break;
161 : 0 : case SSL3_ST_CW_CERT_B: str="SSLv3 write client certificate B"; break;
162 : 0 : case SSL3_ST_CW_CERT_C: str="SSLv3 write client certificate C"; break;
163 : 0 : case SSL3_ST_CW_CERT_D: str="SSLv3 write client certificate D"; break;
164 : 0 : case SSL3_ST_CW_KEY_EXCH_A: str="SSLv3 write client key exchange A"; break;
165 : 0 : case SSL3_ST_CW_KEY_EXCH_B: str="SSLv3 write client key exchange B"; break;
166 : 0 : case SSL3_ST_CW_CERT_VRFY_A: str="SSLv3 write certificate verify A"; break;
167 : 0 : case SSL3_ST_CW_CERT_VRFY_B: str="SSLv3 write certificate verify B"; break;
168 : :
169 : : case SSL3_ST_CW_CHANGE_A:
170 : 0 : case SSL3_ST_SW_CHANGE_A: str="SSLv3 write change cipher spec A"; break;
171 : : case SSL3_ST_CW_CHANGE_B:
172 : 0 : case SSL3_ST_SW_CHANGE_B: str="SSLv3 write change cipher spec B"; break;
173 : : case SSL3_ST_CW_FINISHED_A:
174 : 0 : case SSL3_ST_SW_FINISHED_A: str="SSLv3 write finished A"; break;
175 : : case SSL3_ST_CW_FINISHED_B:
176 : 0 : case SSL3_ST_SW_FINISHED_B: str="SSLv3 write finished B"; break;
177 : : case SSL3_ST_CR_CHANGE_A:
178 : 0 : case SSL3_ST_SR_CHANGE_A: str="SSLv3 read change cipher spec A"; break;
179 : : case SSL3_ST_CR_CHANGE_B:
180 : 0 : case SSL3_ST_SR_CHANGE_B: str="SSLv3 read change cipher spec B"; break;
181 : : case SSL3_ST_CR_FINISHED_A:
182 : 0 : case SSL3_ST_SR_FINISHED_A: str="SSLv3 read finished A"; break;
183 : : case SSL3_ST_CR_FINISHED_B:
184 : 0 : case SSL3_ST_SR_FINISHED_B: str="SSLv3 read finished B"; break;
185 : :
186 : : case SSL3_ST_CW_FLUSH:
187 : 0 : case SSL3_ST_SW_FLUSH: str="SSLv3 flush data"; break;
188 : :
189 : 0 : case SSL3_ST_SR_CLNT_HELLO_A: str="SSLv3 read client hello A"; break;
190 : 0 : case SSL3_ST_SR_CLNT_HELLO_B: str="SSLv3 read client hello B"; break;
191 : 0 : case SSL3_ST_SR_CLNT_HELLO_C: str="SSLv3 read client hello C"; break;
192 : 0 : case SSL3_ST_SW_HELLO_REQ_A: str="SSLv3 write hello request A"; break;
193 : 0 : case SSL3_ST_SW_HELLO_REQ_B: str="SSLv3 write hello request B"; break;
194 : 0 : case SSL3_ST_SW_HELLO_REQ_C: str="SSLv3 write hello request C"; break;
195 : 0 : case SSL3_ST_SW_SRVR_HELLO_A: str="SSLv3 write server hello A"; break;
196 : 0 : case SSL3_ST_SW_SRVR_HELLO_B: str="SSLv3 write server hello B"; break;
197 : 0 : case SSL3_ST_SW_CERT_A: str="SSLv3 write certificate A"; break;
198 : 0 : case SSL3_ST_SW_CERT_B: str="SSLv3 write certificate B"; break;
199 : 0 : case SSL3_ST_SW_KEY_EXCH_A: str="SSLv3 write key exchange A"; break;
200 : 0 : case SSL3_ST_SW_KEY_EXCH_B: str="SSLv3 write key exchange B"; break;
201 : 0 : case SSL3_ST_SW_CERT_REQ_A: str="SSLv3 write certificate request A"; break;
202 : 0 : case SSL3_ST_SW_CERT_REQ_B: str="SSLv3 write certificate request B"; break;
203 : 0 : case SSL3_ST_SW_SESSION_TICKET_A: str="SSLv3 write session ticket A"; break;
204 : 0 : case SSL3_ST_SW_SESSION_TICKET_B: str="SSLv3 write session ticket B"; break;
205 : 0 : case SSL3_ST_SW_SRVR_DONE_A: str="SSLv3 write server done A"; break;
206 : 0 : case SSL3_ST_SW_SRVR_DONE_B: str="SSLv3 write server done B"; break;
207 : 0 : case SSL3_ST_SR_CERT_A: str="SSLv3 read client certificate A"; break;
208 : 0 : case SSL3_ST_SR_CERT_B: str="SSLv3 read client certificate B"; break;
209 : 0 : case SSL3_ST_SR_KEY_EXCH_A: str="SSLv3 read client key exchange A"; break;
210 : 0 : case SSL3_ST_SR_KEY_EXCH_B: str="SSLv3 read client key exchange B"; break;
211 : 0 : case SSL3_ST_SR_CERT_VRFY_A: str="SSLv3 read certificate verify A"; break;
212 : 0 : case SSL3_ST_SR_CERT_VRFY_B: str="SSLv3 read certificate verify B"; break;
213 : : #endif
214 : :
215 : : /* SSLv2/v3 compatibility states */
216 : : /* client */
217 : 0 : case SSL23_ST_CW_CLNT_HELLO_A: str="SSLv2/v3 write client hello A"; break;
218 : 0 : case SSL23_ST_CW_CLNT_HELLO_B: str="SSLv2/v3 write client hello B"; break;
219 : 0 : case SSL23_ST_CR_SRVR_HELLO_A: str="SSLv2/v3 read server hello A"; break;
220 : 0 : case SSL23_ST_CR_SRVR_HELLO_B: str="SSLv2/v3 read server hello B"; break;
221 : : /* server */
222 : 0 : case SSL23_ST_SR_CLNT_HELLO_A: str="SSLv2/v3 read client hello A"; break;
223 : 0 : case SSL23_ST_SR_CLNT_HELLO_B: str="SSLv2/v3 read client hello B"; break;
224 : :
225 : : /* DTLS */
226 : 0 : case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A: str="DTLS1 read hello verify request A"; break;
227 : 0 : case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B: str="DTLS1 read hello verify request B"; break;
228 : 0 : case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A: str="DTLS1 write hello verify request A"; break;
229 : 0 : case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B: str="DTLS1 write hello verify request B"; break;
230 : :
231 : 0 : default: str="unknown state"; break;
232 : : }
233 : 0 : return(str);
234 : : }
235 : :
236 : 0 : const char *SSL_rstate_string_long(const SSL *s)
237 : : {
238 : : const char *str;
239 : :
240 [ # # ]: 0 : switch (s->rstate)
241 : : {
242 : : case SSL_ST_READ_HEADER: str="read header"; break;
243 : : case SSL_ST_READ_BODY: str="read body"; break;
244 : : case SSL_ST_READ_DONE: str="read done"; break;
245 : : default: str="unknown"; break;
246 : : }
247 : 0 : return(str);
248 : : }
249 : :
250 : 0 : const char *SSL_state_string(const SSL *s)
251 : : {
252 : : const char *str;
253 : :
254 [ # # # # : 0 : switch (s->state)
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
# # # #
# ]
255 : : {
256 : : case SSL_ST_BEFORE: str="PINIT "; break;
257 : 0 : case SSL_ST_ACCEPT: str="AINIT "; break;
258 : 0 : case SSL_ST_CONNECT: str="CINIT "; break;
259 : 0 : case SSL_ST_OK: str="SSLOK "; break;
260 : : #ifndef OPENSSL_NO_SSL2
261 : 0 : case SSL2_ST_CLIENT_START_ENCRYPTION: str="2CSENC"; break;
262 : 0 : case SSL2_ST_SERVER_START_ENCRYPTION: str="2SSENC"; break;
263 : 0 : case SSL2_ST_SEND_CLIENT_HELLO_A: str="2SCH_A"; break;
264 : 0 : case SSL2_ST_SEND_CLIENT_HELLO_B: str="2SCH_B"; break;
265 : 0 : case SSL2_ST_GET_SERVER_HELLO_A: str="2GSH_A"; break;
266 : 0 : case SSL2_ST_GET_SERVER_HELLO_B: str="2GSH_B"; break;
267 : 0 : case SSL2_ST_SEND_CLIENT_MASTER_KEY_A: str="2SCMKA"; break;
268 : 0 : case SSL2_ST_SEND_CLIENT_MASTER_KEY_B: str="2SCMKB"; break;
269 : 0 : case SSL2_ST_SEND_CLIENT_FINISHED_A: str="2SCF_A"; break;
270 : 0 : case SSL2_ST_SEND_CLIENT_FINISHED_B: str="2SCF_B"; break;
271 : 0 : case SSL2_ST_SEND_CLIENT_CERTIFICATE_A: str="2SCC_A"; break;
272 : 0 : case SSL2_ST_SEND_CLIENT_CERTIFICATE_B: str="2SCC_B"; break;
273 : 0 : case SSL2_ST_SEND_CLIENT_CERTIFICATE_C: str="2SCC_C"; break;
274 : 0 : case SSL2_ST_SEND_CLIENT_CERTIFICATE_D: str="2SCC_D"; break;
275 : 0 : case SSL2_ST_GET_SERVER_VERIFY_A: str="2GSV_A"; break;
276 : 0 : case SSL2_ST_GET_SERVER_VERIFY_B: str="2GSV_B"; break;
277 : 0 : case SSL2_ST_GET_SERVER_FINISHED_A: str="2GSF_A"; break;
278 : 0 : case SSL2_ST_GET_SERVER_FINISHED_B: str="2GSF_B"; break;
279 : 0 : case SSL2_ST_GET_CLIENT_HELLO_A: str="2GCH_A"; break;
280 : 0 : case SSL2_ST_GET_CLIENT_HELLO_B: str="2GCH_B"; break;
281 : 0 : case SSL2_ST_GET_CLIENT_HELLO_C: str="2GCH_C"; break;
282 : 0 : case SSL2_ST_SEND_SERVER_HELLO_A: str="2SSH_A"; break;
283 : 0 : case SSL2_ST_SEND_SERVER_HELLO_B: str="2SSH_B"; break;
284 : 0 : case SSL2_ST_GET_CLIENT_MASTER_KEY_A: str="2GCMKA"; break;
285 : 0 : case SSL2_ST_GET_CLIENT_MASTER_KEY_B: str="2GCMKA"; break;
286 : 0 : case SSL2_ST_SEND_SERVER_VERIFY_A: str="2SSV_A"; break;
287 : 0 : case SSL2_ST_SEND_SERVER_VERIFY_B: str="2SSV_B"; break;
288 : 0 : case SSL2_ST_SEND_SERVER_VERIFY_C: str="2SSV_C"; break;
289 : 0 : case SSL2_ST_GET_CLIENT_FINISHED_A: str="2GCF_A"; break;
290 : 0 : case SSL2_ST_GET_CLIENT_FINISHED_B: str="2GCF_B"; break;
291 : 0 : case SSL2_ST_SEND_SERVER_FINISHED_A: str="2SSF_A"; break;
292 : 0 : case SSL2_ST_SEND_SERVER_FINISHED_B: str="2SSF_B"; break;
293 : 0 : case SSL2_ST_SEND_REQUEST_CERTIFICATE_A: str="2SRC_A"; break;
294 : 0 : case SSL2_ST_SEND_REQUEST_CERTIFICATE_B: str="2SRC_B"; break;
295 : 0 : case SSL2_ST_SEND_REQUEST_CERTIFICATE_C: str="2SRC_C"; break;
296 : 0 : case SSL2_ST_SEND_REQUEST_CERTIFICATE_D: str="2SRC_D"; break;
297 : 0 : case SSL2_ST_X509_GET_SERVER_CERTIFICATE: str="2X9GSC"; break;
298 : 0 : case SSL2_ST_X509_GET_CLIENT_CERTIFICATE: str="2X9GCC"; break;
299 : : #endif
300 : :
301 : : #ifndef OPENSSL_NO_SSL3
302 : : /* SSLv3 additions */
303 : : case SSL3_ST_SW_FLUSH:
304 : 0 : case SSL3_ST_CW_FLUSH: str="3FLUSH"; break;
305 : 0 : case SSL3_ST_CW_CLNT_HELLO_A: str="3WCH_A"; break;
306 : 0 : case SSL3_ST_CW_CLNT_HELLO_B: str="3WCH_B"; break;
307 : 0 : case SSL3_ST_CR_SRVR_HELLO_A: str="3RSH_A"; break;
308 : 0 : case SSL3_ST_CR_SRVR_HELLO_B: str="3RSH_B"; break;
309 : 0 : case SSL3_ST_CR_CERT_A: str="3RSC_A"; break;
310 : 0 : case SSL3_ST_CR_CERT_B: str="3RSC_B"; break;
311 : 0 : case SSL3_ST_CR_KEY_EXCH_A: str="3RSKEA"; break;
312 : 0 : case SSL3_ST_CR_KEY_EXCH_B: str="3RSKEB"; break;
313 : 0 : case SSL3_ST_CR_CERT_REQ_A: str="3RCR_A"; break;
314 : 0 : case SSL3_ST_CR_CERT_REQ_B: str="3RCR_B"; break;
315 : 0 : case SSL3_ST_CR_SRVR_DONE_A: str="3RSD_A"; break;
316 : 0 : case SSL3_ST_CR_SRVR_DONE_B: str="3RSD_B"; break;
317 : 0 : case SSL3_ST_CW_CERT_A: str="3WCC_A"; break;
318 : 0 : case SSL3_ST_CW_CERT_B: str="3WCC_B"; break;
319 : 0 : case SSL3_ST_CW_CERT_C: str="3WCC_C"; break;
320 : 0 : case SSL3_ST_CW_CERT_D: str="3WCC_D"; break;
321 : 0 : case SSL3_ST_CW_KEY_EXCH_A: str="3WCKEA"; break;
322 : 0 : case SSL3_ST_CW_KEY_EXCH_B: str="3WCKEB"; break;
323 : 0 : case SSL3_ST_CW_CERT_VRFY_A: str="3WCV_A"; break;
324 : 0 : case SSL3_ST_CW_CERT_VRFY_B: str="3WCV_B"; break;
325 : :
326 : : case SSL3_ST_SW_CHANGE_A:
327 : 0 : case SSL3_ST_CW_CHANGE_A: str="3WCCSA"; break;
328 : : case SSL3_ST_SW_CHANGE_B:
329 : 0 : case SSL3_ST_CW_CHANGE_B: str="3WCCSB"; break;
330 : : case SSL3_ST_SW_FINISHED_A:
331 : 0 : case SSL3_ST_CW_FINISHED_A: str="3WFINA"; break;
332 : : case SSL3_ST_SW_FINISHED_B:
333 : 0 : case SSL3_ST_CW_FINISHED_B: str="3WFINB"; break;
334 : : case SSL3_ST_SR_CHANGE_A:
335 : 0 : case SSL3_ST_CR_CHANGE_A: str="3RCCSA"; break;
336 : : case SSL3_ST_SR_CHANGE_B:
337 : 0 : case SSL3_ST_CR_CHANGE_B: str="3RCCSB"; break;
338 : : case SSL3_ST_SR_FINISHED_A:
339 : 0 : case SSL3_ST_CR_FINISHED_A: str="3RFINA"; break;
340 : : case SSL3_ST_SR_FINISHED_B:
341 : 0 : case SSL3_ST_CR_FINISHED_B: str="3RFINB"; break;
342 : :
343 : 0 : case SSL3_ST_SW_HELLO_REQ_A: str="3WHR_A"; break;
344 : 0 : case SSL3_ST_SW_HELLO_REQ_B: str="3WHR_B"; break;
345 : 0 : case SSL3_ST_SW_HELLO_REQ_C: str="3WHR_C"; break;
346 : 0 : case SSL3_ST_SR_CLNT_HELLO_A: str="3RCH_A"; break;
347 : 0 : case SSL3_ST_SR_CLNT_HELLO_B: str="3RCH_B"; break;
348 : 0 : case SSL3_ST_SR_CLNT_HELLO_C: str="3RCH_C"; break;
349 : 0 : case SSL3_ST_SW_SRVR_HELLO_A: str="3WSH_A"; break;
350 : 0 : case SSL3_ST_SW_SRVR_HELLO_B: str="3WSH_B"; break;
351 : 0 : case SSL3_ST_SW_CERT_A: str="3WSC_A"; break;
352 : 0 : case SSL3_ST_SW_CERT_B: str="3WSC_B"; break;
353 : 0 : case SSL3_ST_SW_KEY_EXCH_A: str="3WSKEA"; break;
354 : 0 : case SSL3_ST_SW_KEY_EXCH_B: str="3WSKEB"; break;
355 : 0 : case SSL3_ST_SW_CERT_REQ_A: str="3WCR_A"; break;
356 : 0 : case SSL3_ST_SW_CERT_REQ_B: str="3WCR_B"; break;
357 : 0 : case SSL3_ST_SW_SRVR_DONE_A: str="3WSD_A"; break;
358 : 0 : case SSL3_ST_SW_SRVR_DONE_B: str="3WSD_B"; break;
359 : 0 : case SSL3_ST_SR_CERT_A: str="3RCC_A"; break;
360 : 0 : case SSL3_ST_SR_CERT_B: str="3RCC_B"; break;
361 : 0 : case SSL3_ST_SR_KEY_EXCH_A: str="3RCKEA"; break;
362 : 0 : case SSL3_ST_SR_KEY_EXCH_B: str="3RCKEB"; break;
363 : 0 : case SSL3_ST_SR_CERT_VRFY_A: str="3RCV_A"; break;
364 : 0 : case SSL3_ST_SR_CERT_VRFY_B: str="3RCV_B"; break;
365 : : #endif
366 : :
367 : : /* SSLv2/v3 compatibility states */
368 : : /* client */
369 : 0 : case SSL23_ST_CW_CLNT_HELLO_A: str="23WCHA"; break;
370 : 0 : case SSL23_ST_CW_CLNT_HELLO_B: str="23WCHB"; break;
371 : 0 : case SSL23_ST_CR_SRVR_HELLO_A: str="23RSHA"; break;
372 : 0 : case SSL23_ST_CR_SRVR_HELLO_B: str="23RSHA"; break;
373 : : /* server */
374 : 0 : case SSL23_ST_SR_CLNT_HELLO_A: str="23RCHA"; break;
375 : 0 : case SSL23_ST_SR_CLNT_HELLO_B: str="23RCHB"; break;
376 : :
377 : : /* DTLS */
378 : 0 : case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A: str="DRCHVA"; break;
379 : 0 : case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B: str="DRCHVB"; break;
380 : 0 : case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A: str="DWCHVA"; break;
381 : 0 : case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B: str="DWCHVB"; break;
382 : :
383 : 0 : default: str="UNKWN "; break;
384 : : }
385 : 0 : return(str);
386 : : }
387 : :
388 : 0 : const char *SSL_alert_type_string_long(int value)
389 : : {
390 : 0 : value>>=8;
391 [ # # ]: 0 : if (value == SSL3_AL_WARNING)
392 : : return("warning");
393 [ # # ]: 0 : else if (value == SSL3_AL_FATAL)
394 : : return("fatal");
395 : : else
396 : 0 : return("unknown");
397 : : }
398 : :
399 : 0 : const char *SSL_alert_type_string(int value)
400 : : {
401 : 0 : value>>=8;
402 [ # # ]: 0 : if (value == SSL3_AL_WARNING)
403 : : return("W");
404 [ # # ]: 0 : else if (value == SSL3_AL_FATAL)
405 : : return("F");
406 : : else
407 : 0 : return("U");
408 : : }
409 : :
410 : 0 : const char *SSL_alert_desc_string(int value)
411 : : {
412 : : const char *str;
413 : :
414 [ # # ]: 0 : switch (value & 0xff)
415 : : {
416 : : case SSL3_AD_CLOSE_NOTIFY: str="CN"; break;
417 : : case SSL3_AD_UNEXPECTED_MESSAGE: str="UM"; break;
418 : : case SSL3_AD_BAD_RECORD_MAC: str="BM"; break;
419 : : case SSL3_AD_DECOMPRESSION_FAILURE: str="DF"; break;
420 : : case SSL3_AD_HANDSHAKE_FAILURE: str="HF"; break;
421 : : case SSL3_AD_NO_CERTIFICATE: str="NC"; break;
422 : : case SSL3_AD_BAD_CERTIFICATE: str="BC"; break;
423 : : case SSL3_AD_UNSUPPORTED_CERTIFICATE: str="UC"; break;
424 : : case SSL3_AD_CERTIFICATE_REVOKED: str="CR"; break;
425 : : case SSL3_AD_CERTIFICATE_EXPIRED: str="CE"; break;
426 : : case SSL3_AD_CERTIFICATE_UNKNOWN: str="CU"; break;
427 : : case SSL3_AD_ILLEGAL_PARAMETER: str="IP"; break;
428 : : case TLS1_AD_DECRYPTION_FAILED: str="DC"; break;
429 : : case TLS1_AD_RECORD_OVERFLOW: str="RO"; break;
430 : : case TLS1_AD_UNKNOWN_CA: str="CA"; break;
431 : : case TLS1_AD_ACCESS_DENIED: str="AD"; break;
432 : : case TLS1_AD_DECODE_ERROR: str="DE"; break;
433 : : case TLS1_AD_DECRYPT_ERROR: str="CY"; break;
434 : : case TLS1_AD_EXPORT_RESTRICTION: str="ER"; break;
435 : : case TLS1_AD_PROTOCOL_VERSION: str="PV"; break;
436 : : case TLS1_AD_INSUFFICIENT_SECURITY: str="IS"; break;
437 : : case TLS1_AD_INTERNAL_ERROR: str="IE"; break;
438 : : case TLS1_AD_USER_CANCELLED: str="US"; break;
439 : : case TLS1_AD_NO_RENEGOTIATION: str="NR"; break;
440 : : case TLS1_AD_UNSUPPORTED_EXTENSION: str="UE"; break;
441 : : case TLS1_AD_CERTIFICATE_UNOBTAINABLE: str="CO"; break;
442 : : case TLS1_AD_UNRECOGNIZED_NAME: str="UN"; break;
443 : : case TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE: str="BR"; break;
444 : : case TLS1_AD_BAD_CERTIFICATE_HASH_VALUE: str="BH"; break;
445 : : case TLS1_AD_UNKNOWN_PSK_IDENTITY: str="UP"; break;
446 : : default: str="UK"; break;
447 : : }
448 : 0 : return(str);
449 : : }
450 : :
451 : 0 : const char *SSL_alert_desc_string_long(int value)
452 : : {
453 : : const char *str;
454 : :
455 [ # # ]: 0 : switch (value & 0xff)
456 : : {
457 : : case SSL3_AD_CLOSE_NOTIFY:
458 : : str="close notify";
459 : : break;
460 : : case SSL3_AD_UNEXPECTED_MESSAGE:
461 : : str="unexpected_message";
462 : : break;
463 : : case SSL3_AD_BAD_RECORD_MAC:
464 : : str="bad record mac";
465 : : break;
466 : : case SSL3_AD_DECOMPRESSION_FAILURE:
467 : : str="decompression failure";
468 : : break;
469 : : case SSL3_AD_HANDSHAKE_FAILURE:
470 : : str="handshake failure";
471 : : break;
472 : : case SSL3_AD_NO_CERTIFICATE:
473 : : str="no certificate";
474 : : break;
475 : : case SSL3_AD_BAD_CERTIFICATE:
476 : : str="bad certificate";
477 : : break;
478 : : case SSL3_AD_UNSUPPORTED_CERTIFICATE:
479 : : str="unsupported certificate";
480 : : break;
481 : : case SSL3_AD_CERTIFICATE_REVOKED:
482 : : str="certificate revoked";
483 : : break;
484 : : case SSL3_AD_CERTIFICATE_EXPIRED:
485 : : str="certificate expired";
486 : : break;
487 : : case SSL3_AD_CERTIFICATE_UNKNOWN:
488 : : str="certificate unknown";
489 : : break;
490 : : case SSL3_AD_ILLEGAL_PARAMETER:
491 : : str="illegal parameter";
492 : : break;
493 : : case TLS1_AD_DECRYPTION_FAILED:
494 : : str="decryption failed";
495 : : break;
496 : : case TLS1_AD_RECORD_OVERFLOW:
497 : : str="record overflow";
498 : : break;
499 : : case TLS1_AD_UNKNOWN_CA:
500 : : str="unknown CA";
501 : : break;
502 : : case TLS1_AD_ACCESS_DENIED:
503 : : str="access denied";
504 : : break;
505 : : case TLS1_AD_DECODE_ERROR:
506 : : str="decode error";
507 : : break;
508 : : case TLS1_AD_DECRYPT_ERROR:
509 : : str="decrypt error";
510 : : break;
511 : : case TLS1_AD_EXPORT_RESTRICTION:
512 : : str="export restriction";
513 : : break;
514 : : case TLS1_AD_PROTOCOL_VERSION:
515 : : str="protocol version";
516 : : break;
517 : : case TLS1_AD_INSUFFICIENT_SECURITY:
518 : : str="insufficient security";
519 : : break;
520 : : case TLS1_AD_INTERNAL_ERROR:
521 : : str="internal error";
522 : : break;
523 : : case TLS1_AD_USER_CANCELLED:
524 : : str="user canceled";
525 : : break;
526 : : case TLS1_AD_NO_RENEGOTIATION:
527 : : str="no renegotiation";
528 : : break;
529 : : case TLS1_AD_UNSUPPORTED_EXTENSION:
530 : : str="unsupported extension";
531 : : break;
532 : : case TLS1_AD_CERTIFICATE_UNOBTAINABLE:
533 : : str="certificate unobtainable";
534 : : break;
535 : : case TLS1_AD_UNRECOGNIZED_NAME:
536 : : str="unrecognized name";
537 : : break;
538 : : case TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE:
539 : : str="bad certificate status response";
540 : : break;
541 : : case TLS1_AD_BAD_CERTIFICATE_HASH_VALUE:
542 : : str="bad certificate hash value";
543 : : break;
544 : : case TLS1_AD_UNKNOWN_PSK_IDENTITY:
545 : : str="unknown PSK identity";
546 : : break;
547 : : default: str="unknown"; break;
548 : : }
549 : 0 : return(str);
550 : : }
551 : :
552 : 0 : const char *SSL_rstate_string(const SSL *s)
553 : : {
554 : : const char *str;
555 : :
556 [ # # ]: 0 : switch (s->rstate)
557 : : {
558 : : case SSL_ST_READ_HEADER:str="RH"; break;
559 : : case SSL_ST_READ_BODY: str="RB"; break;
560 : : case SSL_ST_READ_DONE: str="RD"; break;
561 : : default: str="unknown"; break;
562 : : }
563 : 0 : return(str);
564 : : }
|