]> git.ipfire.org Git - thirdparty/openssl.git/blob - ssl/ssl_stat.c
Run util/openssl-format-source -v -c .
[thirdparty/openssl.git] / ssl / ssl_stat.c
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 #include <stdio.h>
60 #include "ssl_locl.h"
61
62 const char *SSL_state_string_long(const SSL *s)
63 {
64 const char *str;
65
66 switch (s->state) {
67 case SSL_ST_BEFORE:
68 str = "before SSL initialization";
69 break;
70 case SSL_ST_ACCEPT:
71 str = "before accept initialization";
72 break;
73 case SSL_ST_CONNECT:
74 str = "before connect initialization";
75 break;
76 case SSL_ST_OK:
77 str = "SSL negotiation finished successfully";
78 break;
79 case SSL_ST_RENEGOTIATE:
80 str = "SSL renegotiate ciphers";
81 break;
82 case SSL_ST_BEFORE | SSL_ST_CONNECT:
83 str = "before/connect initialization";
84 break;
85 case SSL_ST_OK | SSL_ST_CONNECT:
86 str = "ok/connect SSL initialization";
87 break;
88 case SSL_ST_BEFORE | SSL_ST_ACCEPT:
89 str = "before/accept initialization";
90 break;
91 case SSL_ST_OK | SSL_ST_ACCEPT:
92 str = "ok/accept SSL initialization";
93 break;
94 #ifndef OPENSSL_NO_SSL2
95 case SSL2_ST_CLIENT_START_ENCRYPTION:
96 str = "SSLv2 client start encryption";
97 break;
98 case SSL2_ST_SERVER_START_ENCRYPTION:
99 str = "SSLv2 server start encryption";
100 break;
101 case SSL2_ST_SEND_CLIENT_HELLO_A:
102 str = "SSLv2 write client hello A";
103 break;
104 case SSL2_ST_SEND_CLIENT_HELLO_B:
105 str = "SSLv2 write client hello B";
106 break;
107 case SSL2_ST_GET_SERVER_HELLO_A:
108 str = "SSLv2 read server hello A";
109 break;
110 case SSL2_ST_GET_SERVER_HELLO_B:
111 str = "SSLv2 read server hello B";
112 break;
113 case SSL2_ST_SEND_CLIENT_MASTER_KEY_A:
114 str = "SSLv2 write client master key A";
115 break;
116 case SSL2_ST_SEND_CLIENT_MASTER_KEY_B:
117 str = "SSLv2 write client master key B";
118 break;
119 case SSL2_ST_SEND_CLIENT_FINISHED_A:
120 str = "SSLv2 write client finished A";
121 break;
122 case SSL2_ST_SEND_CLIENT_FINISHED_B:
123 str = "SSLv2 write client finished B";
124 break;
125 case SSL2_ST_SEND_CLIENT_CERTIFICATE_A:
126 str = "SSLv2 write client certificate A";
127 break;
128 case SSL2_ST_SEND_CLIENT_CERTIFICATE_B:
129 str = "SSLv2 write client certificate B";
130 break;
131 case SSL2_ST_SEND_CLIENT_CERTIFICATE_C:
132 str = "SSLv2 write client certificate C";
133 break;
134 case SSL2_ST_SEND_CLIENT_CERTIFICATE_D:
135 str = "SSLv2 write client certificate D";
136 break;
137 case SSL2_ST_GET_SERVER_VERIFY_A:
138 str = "SSLv2 read server verify A";
139 break;
140 case SSL2_ST_GET_SERVER_VERIFY_B:
141 str = "SSLv2 read server verify B";
142 break;
143 case SSL2_ST_GET_SERVER_FINISHED_A:
144 str = "SSLv2 read server finished A";
145 break;
146 case SSL2_ST_GET_SERVER_FINISHED_B:
147 str = "SSLv2 read server finished B";
148 break;
149 case SSL2_ST_GET_CLIENT_HELLO_A:
150 str = "SSLv2 read client hello A";
151 break;
152 case SSL2_ST_GET_CLIENT_HELLO_B:
153 str = "SSLv2 read client hello B";
154 break;
155 case SSL2_ST_GET_CLIENT_HELLO_C:
156 str = "SSLv2 read client hello C";
157 break;
158 case SSL2_ST_SEND_SERVER_HELLO_A:
159 str = "SSLv2 write server hello A";
160 break;
161 case SSL2_ST_SEND_SERVER_HELLO_B:
162 str = "SSLv2 write server hello B";
163 break;
164 case SSL2_ST_GET_CLIENT_MASTER_KEY_A:
165 str = "SSLv2 read client master key A";
166 break;
167 case SSL2_ST_GET_CLIENT_MASTER_KEY_B:
168 str = "SSLv2 read client master key B";
169 break;
170 case SSL2_ST_SEND_SERVER_VERIFY_A:
171 str = "SSLv2 write server verify A";
172 break;
173 case SSL2_ST_SEND_SERVER_VERIFY_B:
174 str = "SSLv2 write server verify B";
175 break;
176 case SSL2_ST_SEND_SERVER_VERIFY_C:
177 str = "SSLv2 write server verify C";
178 break;
179 case SSL2_ST_GET_CLIENT_FINISHED_A:
180 str = "SSLv2 read client finished A";
181 break;
182 case SSL2_ST_GET_CLIENT_FINISHED_B:
183 str = "SSLv2 read client finished B";
184 break;
185 case SSL2_ST_SEND_SERVER_FINISHED_A:
186 str = "SSLv2 write server finished A";
187 break;
188 case SSL2_ST_SEND_SERVER_FINISHED_B:
189 str = "SSLv2 write server finished B";
190 break;
191 case SSL2_ST_SEND_REQUEST_CERTIFICATE_A:
192 str = "SSLv2 write request certificate A";
193 break;
194 case SSL2_ST_SEND_REQUEST_CERTIFICATE_B:
195 str = "SSLv2 write request certificate B";
196 break;
197 case SSL2_ST_SEND_REQUEST_CERTIFICATE_C:
198 str = "SSLv2 write request certificate C";
199 break;
200 case SSL2_ST_SEND_REQUEST_CERTIFICATE_D:
201 str = "SSLv2 write request certificate D";
202 break;
203 case SSL2_ST_X509_GET_SERVER_CERTIFICATE:
204 str = "SSLv2 X509 read server certificate";
205 break;
206 case SSL2_ST_X509_GET_CLIENT_CERTIFICATE:
207 str = "SSLv2 X509 read client certificate";
208 break;
209 #endif
210
211 #ifndef OPENSSL_NO_SSL3
212 /* SSLv3 additions */
213 case SSL3_ST_CW_CLNT_HELLO_A:
214 str = "SSLv3 write client hello A";
215 break;
216 case SSL3_ST_CW_CLNT_HELLO_B:
217 str = "SSLv3 write client hello B";
218 break;
219 case SSL3_ST_CR_SRVR_HELLO_A:
220 str = "SSLv3 read server hello A";
221 break;
222 case SSL3_ST_CR_SRVR_HELLO_B:
223 str = "SSLv3 read server hello B";
224 break;
225 case SSL3_ST_CR_CERT_A:
226 str = "SSLv3 read server certificate A";
227 break;
228 case SSL3_ST_CR_CERT_B:
229 str = "SSLv3 read server certificate B";
230 break;
231 case SSL3_ST_CR_KEY_EXCH_A:
232 str = "SSLv3 read server key exchange A";
233 break;
234 case SSL3_ST_CR_KEY_EXCH_B:
235 str = "SSLv3 read server key exchange B";
236 break;
237 case SSL3_ST_CR_CERT_REQ_A:
238 str = "SSLv3 read server certificate request A";
239 break;
240 case SSL3_ST_CR_CERT_REQ_B:
241 str = "SSLv3 read server certificate request B";
242 break;
243 case SSL3_ST_CR_SESSION_TICKET_A:
244 str = "SSLv3 read server session ticket A";
245 break;
246 case SSL3_ST_CR_SESSION_TICKET_B:
247 str = "SSLv3 read server session ticket B";
248 break;
249 case SSL3_ST_CR_SRVR_DONE_A:
250 str = "SSLv3 read server done A";
251 break;
252 case SSL3_ST_CR_SRVR_DONE_B:
253 str = "SSLv3 read server done B";
254 break;
255 case SSL3_ST_CW_CERT_A:
256 str = "SSLv3 write client certificate A";
257 break;
258 case SSL3_ST_CW_CERT_B:
259 str = "SSLv3 write client certificate B";
260 break;
261 case SSL3_ST_CW_CERT_C:
262 str = "SSLv3 write client certificate C";
263 break;
264 case SSL3_ST_CW_CERT_D:
265 str = "SSLv3 write client certificate D";
266 break;
267 case SSL3_ST_CW_KEY_EXCH_A:
268 str = "SSLv3 write client key exchange A";
269 break;
270 case SSL3_ST_CW_KEY_EXCH_B:
271 str = "SSLv3 write client key exchange B";
272 break;
273 case SSL3_ST_CW_CERT_VRFY_A:
274 str = "SSLv3 write certificate verify A";
275 break;
276 case SSL3_ST_CW_CERT_VRFY_B:
277 str = "SSLv3 write certificate verify B";
278 break;
279
280 case SSL3_ST_CW_CHANGE_A:
281 case SSL3_ST_SW_CHANGE_A:
282 str = "SSLv3 write change cipher spec A";
283 break;
284 case SSL3_ST_CW_CHANGE_B:
285 case SSL3_ST_SW_CHANGE_B:
286 str = "SSLv3 write change cipher spec B";
287 break;
288 case SSL3_ST_CW_FINISHED_A:
289 case SSL3_ST_SW_FINISHED_A:
290 str = "SSLv3 write finished A";
291 break;
292 case SSL3_ST_CW_FINISHED_B:
293 case SSL3_ST_SW_FINISHED_B:
294 str = "SSLv3 write finished B";
295 break;
296 case SSL3_ST_CR_CHANGE_A:
297 case SSL3_ST_SR_CHANGE_A:
298 str = "SSLv3 read change cipher spec A";
299 break;
300 case SSL3_ST_CR_CHANGE_B:
301 case SSL3_ST_SR_CHANGE_B:
302 str = "SSLv3 read change cipher spec B";
303 break;
304 case SSL3_ST_CR_FINISHED_A:
305 case SSL3_ST_SR_FINISHED_A:
306 str = "SSLv3 read finished A";
307 break;
308 case SSL3_ST_CR_FINISHED_B:
309 case SSL3_ST_SR_FINISHED_B:
310 str = "SSLv3 read finished B";
311 break;
312
313 case SSL3_ST_CW_FLUSH:
314 case SSL3_ST_SW_FLUSH:
315 str = "SSLv3 flush data";
316 break;
317
318 case SSL3_ST_SR_CLNT_HELLO_A:
319 str = "SSLv3 read client hello A";
320 break;
321 case SSL3_ST_SR_CLNT_HELLO_B:
322 str = "SSLv3 read client hello B";
323 break;
324 case SSL3_ST_SR_CLNT_HELLO_C:
325 str = "SSLv3 read client hello C";
326 break;
327 case SSL3_ST_SW_HELLO_REQ_A:
328 str = "SSLv3 write hello request A";
329 break;
330 case SSL3_ST_SW_HELLO_REQ_B:
331 str = "SSLv3 write hello request B";
332 break;
333 case SSL3_ST_SW_HELLO_REQ_C:
334 str = "SSLv3 write hello request C";
335 break;
336 case SSL3_ST_SW_SRVR_HELLO_A:
337 str = "SSLv3 write server hello A";
338 break;
339 case SSL3_ST_SW_SRVR_HELLO_B:
340 str = "SSLv3 write server hello B";
341 break;
342 case SSL3_ST_SW_CERT_A:
343 str = "SSLv3 write certificate A";
344 break;
345 case SSL3_ST_SW_CERT_B:
346 str = "SSLv3 write certificate B";
347 break;
348 case SSL3_ST_SW_KEY_EXCH_A:
349 str = "SSLv3 write key exchange A";
350 break;
351 case SSL3_ST_SW_KEY_EXCH_B:
352 str = "SSLv3 write key exchange B";
353 break;
354 case SSL3_ST_SW_CERT_REQ_A:
355 str = "SSLv3 write certificate request A";
356 break;
357 case SSL3_ST_SW_CERT_REQ_B:
358 str = "SSLv3 write certificate request B";
359 break;
360 case SSL3_ST_SW_SESSION_TICKET_A:
361 str = "SSLv3 write session ticket A";
362 break;
363 case SSL3_ST_SW_SESSION_TICKET_B:
364 str = "SSLv3 write session ticket B";
365 break;
366 case SSL3_ST_SW_SRVR_DONE_A:
367 str = "SSLv3 write server done A";
368 break;
369 case SSL3_ST_SW_SRVR_DONE_B:
370 str = "SSLv3 write server done B";
371 break;
372 case SSL3_ST_SR_CERT_A:
373 str = "SSLv3 read client certificate A";
374 break;
375 case SSL3_ST_SR_CERT_B:
376 str = "SSLv3 read client certificate B";
377 break;
378 case SSL3_ST_SR_KEY_EXCH_A:
379 str = "SSLv3 read client key exchange A";
380 break;
381 case SSL3_ST_SR_KEY_EXCH_B:
382 str = "SSLv3 read client key exchange B";
383 break;
384 case SSL3_ST_SR_CERT_VRFY_A:
385 str = "SSLv3 read certificate verify A";
386 break;
387 case SSL3_ST_SR_CERT_VRFY_B:
388 str = "SSLv3 read certificate verify B";
389 break;
390 #endif
391
392 /* SSLv2/v3 compatibility states */
393 /* client */
394 case SSL23_ST_CW_CLNT_HELLO_A:
395 str = "SSLv2/v3 write client hello A";
396 break;
397 case SSL23_ST_CW_CLNT_HELLO_B:
398 str = "SSLv2/v3 write client hello B";
399 break;
400 case SSL23_ST_CR_SRVR_HELLO_A:
401 str = "SSLv2/v3 read server hello A";
402 break;
403 case SSL23_ST_CR_SRVR_HELLO_B:
404 str = "SSLv2/v3 read server hello B";
405 break;
406 /* server */
407 case SSL23_ST_SR_CLNT_HELLO_A:
408 str = "SSLv2/v3 read client hello A";
409 break;
410 case SSL23_ST_SR_CLNT_HELLO_B:
411 str = "SSLv2/v3 read client hello B";
412 break;
413
414 /* DTLS */
415 case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A:
416 str = "DTLS1 read hello verify request A";
417 break;
418 case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B:
419 str = "DTLS1 read hello verify request B";
420 break;
421 case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A:
422 str = "DTLS1 write hello verify request A";
423 break;
424 case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B:
425 str = "DTLS1 write hello verify request B";
426 break;
427
428 default:
429 str = "unknown state";
430 break;
431 }
432 return (str);
433 }
434
435 const char *SSL_rstate_string_long(const SSL *s)
436 {
437 const char *str;
438
439 switch (s->rstate) {
440 case SSL_ST_READ_HEADER:
441 str = "read header";
442 break;
443 case SSL_ST_READ_BODY:
444 str = "read body";
445 break;
446 case SSL_ST_READ_DONE:
447 str = "read done";
448 break;
449 default:
450 str = "unknown";
451 break;
452 }
453 return (str);
454 }
455
456 const char *SSL_state_string(const SSL *s)
457 {
458 const char *str;
459
460 switch (s->state) {
461 case SSL_ST_BEFORE:
462 str = "PINIT ";
463 break;
464 case SSL_ST_ACCEPT:
465 str = "AINIT ";
466 break;
467 case SSL_ST_CONNECT:
468 str = "CINIT ";
469 break;
470 case SSL_ST_OK:
471 str = "SSLOK ";
472 break;
473 #ifndef OPENSSL_NO_SSL2
474 case SSL2_ST_CLIENT_START_ENCRYPTION:
475 str = "2CSENC";
476 break;
477 case SSL2_ST_SERVER_START_ENCRYPTION:
478 str = "2SSENC";
479 break;
480 case SSL2_ST_SEND_CLIENT_HELLO_A:
481 str = "2SCH_A";
482 break;
483 case SSL2_ST_SEND_CLIENT_HELLO_B:
484 str = "2SCH_B";
485 break;
486 case SSL2_ST_GET_SERVER_HELLO_A:
487 str = "2GSH_A";
488 break;
489 case SSL2_ST_GET_SERVER_HELLO_B:
490 str = "2GSH_B";
491 break;
492 case SSL2_ST_SEND_CLIENT_MASTER_KEY_A:
493 str = "2SCMKA";
494 break;
495 case SSL2_ST_SEND_CLIENT_MASTER_KEY_B:
496 str = "2SCMKB";
497 break;
498 case SSL2_ST_SEND_CLIENT_FINISHED_A:
499 str = "2SCF_A";
500 break;
501 case SSL2_ST_SEND_CLIENT_FINISHED_B:
502 str = "2SCF_B";
503 break;
504 case SSL2_ST_SEND_CLIENT_CERTIFICATE_A:
505 str = "2SCC_A";
506 break;
507 case SSL2_ST_SEND_CLIENT_CERTIFICATE_B:
508 str = "2SCC_B";
509 break;
510 case SSL2_ST_SEND_CLIENT_CERTIFICATE_C:
511 str = "2SCC_C";
512 break;
513 case SSL2_ST_SEND_CLIENT_CERTIFICATE_D:
514 str = "2SCC_D";
515 break;
516 case SSL2_ST_GET_SERVER_VERIFY_A:
517 str = "2GSV_A";
518 break;
519 case SSL2_ST_GET_SERVER_VERIFY_B:
520 str = "2GSV_B";
521 break;
522 case SSL2_ST_GET_SERVER_FINISHED_A:
523 str = "2GSF_A";
524 break;
525 case SSL2_ST_GET_SERVER_FINISHED_B:
526 str = "2GSF_B";
527 break;
528 case SSL2_ST_GET_CLIENT_HELLO_A:
529 str = "2GCH_A";
530 break;
531 case SSL2_ST_GET_CLIENT_HELLO_B:
532 str = "2GCH_B";
533 break;
534 case SSL2_ST_GET_CLIENT_HELLO_C:
535 str = "2GCH_C";
536 break;
537 case SSL2_ST_SEND_SERVER_HELLO_A:
538 str = "2SSH_A";
539 break;
540 case SSL2_ST_SEND_SERVER_HELLO_B:
541 str = "2SSH_B";
542 break;
543 case SSL2_ST_GET_CLIENT_MASTER_KEY_A:
544 str = "2GCMKA";
545 break;
546 case SSL2_ST_GET_CLIENT_MASTER_KEY_B:
547 str = "2GCMKA";
548 break;
549 case SSL2_ST_SEND_SERVER_VERIFY_A:
550 str = "2SSV_A";
551 break;
552 case SSL2_ST_SEND_SERVER_VERIFY_B:
553 str = "2SSV_B";
554 break;
555 case SSL2_ST_SEND_SERVER_VERIFY_C:
556 str = "2SSV_C";
557 break;
558 case SSL2_ST_GET_CLIENT_FINISHED_A:
559 str = "2GCF_A";
560 break;
561 case SSL2_ST_GET_CLIENT_FINISHED_B:
562 str = "2GCF_B";
563 break;
564 case SSL2_ST_SEND_SERVER_FINISHED_A:
565 str = "2SSF_A";
566 break;
567 case SSL2_ST_SEND_SERVER_FINISHED_B:
568 str = "2SSF_B";
569 break;
570 case SSL2_ST_SEND_REQUEST_CERTIFICATE_A:
571 str = "2SRC_A";
572 break;
573 case SSL2_ST_SEND_REQUEST_CERTIFICATE_B:
574 str = "2SRC_B";
575 break;
576 case SSL2_ST_SEND_REQUEST_CERTIFICATE_C:
577 str = "2SRC_C";
578 break;
579 case SSL2_ST_SEND_REQUEST_CERTIFICATE_D:
580 str = "2SRC_D";
581 break;
582 case SSL2_ST_X509_GET_SERVER_CERTIFICATE:
583 str = "2X9GSC";
584 break;
585 case SSL2_ST_X509_GET_CLIENT_CERTIFICATE:
586 str = "2X9GCC";
587 break;
588 #endif
589
590 #ifndef OPENSSL_NO_SSL3
591 /* SSLv3 additions */
592 case SSL3_ST_SW_FLUSH:
593 case SSL3_ST_CW_FLUSH:
594 str = "3FLUSH";
595 break;
596 case SSL3_ST_CW_CLNT_HELLO_A:
597 str = "3WCH_A";
598 break;
599 case SSL3_ST_CW_CLNT_HELLO_B:
600 str = "3WCH_B";
601 break;
602 case SSL3_ST_CR_SRVR_HELLO_A:
603 str = "3RSH_A";
604 break;
605 case SSL3_ST_CR_SRVR_HELLO_B:
606 str = "3RSH_B";
607 break;
608 case SSL3_ST_CR_CERT_A:
609 str = "3RSC_A";
610 break;
611 case SSL3_ST_CR_CERT_B:
612 str = "3RSC_B";
613 break;
614 case SSL3_ST_CR_KEY_EXCH_A:
615 str = "3RSKEA";
616 break;
617 case SSL3_ST_CR_KEY_EXCH_B:
618 str = "3RSKEB";
619 break;
620 case SSL3_ST_CR_CERT_REQ_A:
621 str = "3RCR_A";
622 break;
623 case SSL3_ST_CR_CERT_REQ_B:
624 str = "3RCR_B";
625 break;
626 case SSL3_ST_CR_SRVR_DONE_A:
627 str = "3RSD_A";
628 break;
629 case SSL3_ST_CR_SRVR_DONE_B:
630 str = "3RSD_B";
631 break;
632 case SSL3_ST_CW_CERT_A:
633 str = "3WCC_A";
634 break;
635 case SSL3_ST_CW_CERT_B:
636 str = "3WCC_B";
637 break;
638 case SSL3_ST_CW_CERT_C:
639 str = "3WCC_C";
640 break;
641 case SSL3_ST_CW_CERT_D:
642 str = "3WCC_D";
643 break;
644 case SSL3_ST_CW_KEY_EXCH_A:
645 str = "3WCKEA";
646 break;
647 case SSL3_ST_CW_KEY_EXCH_B:
648 str = "3WCKEB";
649 break;
650 case SSL3_ST_CW_CERT_VRFY_A:
651 str = "3WCV_A";
652 break;
653 case SSL3_ST_CW_CERT_VRFY_B:
654 str = "3WCV_B";
655 break;
656
657 case SSL3_ST_SW_CHANGE_A:
658 case SSL3_ST_CW_CHANGE_A:
659 str = "3WCCSA";
660 break;
661 case SSL3_ST_SW_CHANGE_B:
662 case SSL3_ST_CW_CHANGE_B:
663 str = "3WCCSB";
664 break;
665 case SSL3_ST_SW_FINISHED_A:
666 case SSL3_ST_CW_FINISHED_A:
667 str = "3WFINA";
668 break;
669 case SSL3_ST_SW_FINISHED_B:
670 case SSL3_ST_CW_FINISHED_B:
671 str = "3WFINB";
672 break;
673 case SSL3_ST_SR_CHANGE_A:
674 case SSL3_ST_CR_CHANGE_A:
675 str = "3RCCSA";
676 break;
677 case SSL3_ST_SR_CHANGE_B:
678 case SSL3_ST_CR_CHANGE_B:
679 str = "3RCCSB";
680 break;
681 case SSL3_ST_SR_FINISHED_A:
682 case SSL3_ST_CR_FINISHED_A:
683 str = "3RFINA";
684 break;
685 case SSL3_ST_SR_FINISHED_B:
686 case SSL3_ST_CR_FINISHED_B:
687 str = "3RFINB";
688 break;
689
690 case SSL3_ST_SW_HELLO_REQ_A:
691 str = "3WHR_A";
692 break;
693 case SSL3_ST_SW_HELLO_REQ_B:
694 str = "3WHR_B";
695 break;
696 case SSL3_ST_SW_HELLO_REQ_C:
697 str = "3WHR_C";
698 break;
699 case SSL3_ST_SR_CLNT_HELLO_A:
700 str = "3RCH_A";
701 break;
702 case SSL3_ST_SR_CLNT_HELLO_B:
703 str = "3RCH_B";
704 break;
705 case SSL3_ST_SR_CLNT_HELLO_C:
706 str = "3RCH_C";
707 break;
708 case SSL3_ST_SW_SRVR_HELLO_A:
709 str = "3WSH_A";
710 break;
711 case SSL3_ST_SW_SRVR_HELLO_B:
712 str = "3WSH_B";
713 break;
714 case SSL3_ST_SW_CERT_A:
715 str = "3WSC_A";
716 break;
717 case SSL3_ST_SW_CERT_B:
718 str = "3WSC_B";
719 break;
720 case SSL3_ST_SW_KEY_EXCH_A:
721 str = "3WSKEA";
722 break;
723 case SSL3_ST_SW_KEY_EXCH_B:
724 str = "3WSKEB";
725 break;
726 case SSL3_ST_SW_CERT_REQ_A:
727 str = "3WCR_A";
728 break;
729 case SSL3_ST_SW_CERT_REQ_B:
730 str = "3WCR_B";
731 break;
732 case SSL3_ST_SW_SRVR_DONE_A:
733 str = "3WSD_A";
734 break;
735 case SSL3_ST_SW_SRVR_DONE_B:
736 str = "3WSD_B";
737 break;
738 case SSL3_ST_SR_CERT_A:
739 str = "3RCC_A";
740 break;
741 case SSL3_ST_SR_CERT_B:
742 str = "3RCC_B";
743 break;
744 case SSL3_ST_SR_KEY_EXCH_A:
745 str = "3RCKEA";
746 break;
747 case SSL3_ST_SR_KEY_EXCH_B:
748 str = "3RCKEB";
749 break;
750 case SSL3_ST_SR_CERT_VRFY_A:
751 str = "3RCV_A";
752 break;
753 case SSL3_ST_SR_CERT_VRFY_B:
754 str = "3RCV_B";
755 break;
756 #endif
757
758 /* SSLv2/v3 compatibility states */
759 /* client */
760 case SSL23_ST_CW_CLNT_HELLO_A:
761 str = "23WCHA";
762 break;
763 case SSL23_ST_CW_CLNT_HELLO_B:
764 str = "23WCHB";
765 break;
766 case SSL23_ST_CR_SRVR_HELLO_A:
767 str = "23RSHA";
768 break;
769 case SSL23_ST_CR_SRVR_HELLO_B:
770 str = "23RSHA";
771 break;
772 /* server */
773 case SSL23_ST_SR_CLNT_HELLO_A:
774 str = "23RCHA";
775 break;
776 case SSL23_ST_SR_CLNT_HELLO_B:
777 str = "23RCHB";
778 break;
779
780 /* DTLS */
781 case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A:
782 str = "DRCHVA";
783 break;
784 case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B:
785 str = "DRCHVB";
786 break;
787 case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A:
788 str = "DWCHVA";
789 break;
790 case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B:
791 str = "DWCHVB";
792 break;
793
794 default:
795 str = "UNKWN ";
796 break;
797 }
798 return (str);
799 }
800
801 const char *SSL_alert_type_string_long(int value)
802 {
803 value >>= 8;
804 if (value == SSL3_AL_WARNING)
805 return ("warning");
806 else if (value == SSL3_AL_FATAL)
807 return ("fatal");
808 else
809 return ("unknown");
810 }
811
812 const char *SSL_alert_type_string(int value)
813 {
814 value >>= 8;
815 if (value == SSL3_AL_WARNING)
816 return ("W");
817 else if (value == SSL3_AL_FATAL)
818 return ("F");
819 else
820 return ("U");
821 }
822
823 const char *SSL_alert_desc_string(int value)
824 {
825 const char *str;
826
827 switch (value & 0xff) {
828 case SSL3_AD_CLOSE_NOTIFY:
829 str = "CN";
830 break;
831 case SSL3_AD_UNEXPECTED_MESSAGE:
832 str = "UM";
833 break;
834 case SSL3_AD_BAD_RECORD_MAC:
835 str = "BM";
836 break;
837 case SSL3_AD_DECOMPRESSION_FAILURE:
838 str = "DF";
839 break;
840 case SSL3_AD_HANDSHAKE_FAILURE:
841 str = "HF";
842 break;
843 case SSL3_AD_NO_CERTIFICATE:
844 str = "NC";
845 break;
846 case SSL3_AD_BAD_CERTIFICATE:
847 str = "BC";
848 break;
849 case SSL3_AD_UNSUPPORTED_CERTIFICATE:
850 str = "UC";
851 break;
852 case SSL3_AD_CERTIFICATE_REVOKED:
853 str = "CR";
854 break;
855 case SSL3_AD_CERTIFICATE_EXPIRED:
856 str = "CE";
857 break;
858 case SSL3_AD_CERTIFICATE_UNKNOWN:
859 str = "CU";
860 break;
861 case SSL3_AD_ILLEGAL_PARAMETER:
862 str = "IP";
863 break;
864 case TLS1_AD_DECRYPTION_FAILED:
865 str = "DC";
866 break;
867 case TLS1_AD_RECORD_OVERFLOW:
868 str = "RO";
869 break;
870 case TLS1_AD_UNKNOWN_CA:
871 str = "CA";
872 break;
873 case TLS1_AD_ACCESS_DENIED:
874 str = "AD";
875 break;
876 case TLS1_AD_DECODE_ERROR:
877 str = "DE";
878 break;
879 case TLS1_AD_DECRYPT_ERROR:
880 str = "CY";
881 break;
882 case TLS1_AD_EXPORT_RESTRICTION:
883 str = "ER";
884 break;
885 case TLS1_AD_PROTOCOL_VERSION:
886 str = "PV";
887 break;
888 case TLS1_AD_INSUFFICIENT_SECURITY:
889 str = "IS";
890 break;
891 case TLS1_AD_INTERNAL_ERROR:
892 str = "IE";
893 break;
894 case TLS1_AD_USER_CANCELLED:
895 str = "US";
896 break;
897 case TLS1_AD_NO_RENEGOTIATION:
898 str = "NR";
899 break;
900 case TLS1_AD_UNSUPPORTED_EXTENSION:
901 str = "UE";
902 break;
903 case TLS1_AD_CERTIFICATE_UNOBTAINABLE:
904 str = "CO";
905 break;
906 case TLS1_AD_UNRECOGNIZED_NAME:
907 str = "UN";
908 break;
909 case TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE:
910 str = "BR";
911 break;
912 case TLS1_AD_BAD_CERTIFICATE_HASH_VALUE:
913 str = "BH";
914 break;
915 case TLS1_AD_UNKNOWN_PSK_IDENTITY:
916 str = "UP";
917 break;
918 default:
919 str = "UK";
920 break;
921 }
922 return (str);
923 }
924
925 const char *SSL_alert_desc_string_long(int value)
926 {
927 const char *str;
928
929 switch (value & 0xff) {
930 case SSL3_AD_CLOSE_NOTIFY:
931 str = "close notify";
932 break;
933 case SSL3_AD_UNEXPECTED_MESSAGE:
934 str = "unexpected_message";
935 break;
936 case SSL3_AD_BAD_RECORD_MAC:
937 str = "bad record mac";
938 break;
939 case SSL3_AD_DECOMPRESSION_FAILURE:
940 str = "decompression failure";
941 break;
942 case SSL3_AD_HANDSHAKE_FAILURE:
943 str = "handshake failure";
944 break;
945 case SSL3_AD_NO_CERTIFICATE:
946 str = "no certificate";
947 break;
948 case SSL3_AD_BAD_CERTIFICATE:
949 str = "bad certificate";
950 break;
951 case SSL3_AD_UNSUPPORTED_CERTIFICATE:
952 str = "unsupported certificate";
953 break;
954 case SSL3_AD_CERTIFICATE_REVOKED:
955 str = "certificate revoked";
956 break;
957 case SSL3_AD_CERTIFICATE_EXPIRED:
958 str = "certificate expired";
959 break;
960 case SSL3_AD_CERTIFICATE_UNKNOWN:
961 str = "certificate unknown";
962 break;
963 case SSL3_AD_ILLEGAL_PARAMETER:
964 str = "illegal parameter";
965 break;
966 case TLS1_AD_DECRYPTION_FAILED:
967 str = "decryption failed";
968 break;
969 case TLS1_AD_RECORD_OVERFLOW:
970 str = "record overflow";
971 break;
972 case TLS1_AD_UNKNOWN_CA:
973 str = "unknown CA";
974 break;
975 case TLS1_AD_ACCESS_DENIED:
976 str = "access denied";
977 break;
978 case TLS1_AD_DECODE_ERROR:
979 str = "decode error";
980 break;
981 case TLS1_AD_DECRYPT_ERROR:
982 str = "decrypt error";
983 break;
984 case TLS1_AD_EXPORT_RESTRICTION:
985 str = "export restriction";
986 break;
987 case TLS1_AD_PROTOCOL_VERSION:
988 str = "protocol version";
989 break;
990 case TLS1_AD_INSUFFICIENT_SECURITY:
991 str = "insufficient security";
992 break;
993 case TLS1_AD_INTERNAL_ERROR:
994 str = "internal error";
995 break;
996 case TLS1_AD_USER_CANCELLED:
997 str = "user canceled";
998 break;
999 case TLS1_AD_NO_RENEGOTIATION:
1000 str = "no renegotiation";
1001 break;
1002 case TLS1_AD_UNSUPPORTED_EXTENSION:
1003 str = "unsupported extension";
1004 break;
1005 case TLS1_AD_CERTIFICATE_UNOBTAINABLE:
1006 str = "certificate unobtainable";
1007 break;
1008 case TLS1_AD_UNRECOGNIZED_NAME:
1009 str = "unrecognized name";
1010 break;
1011 case TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE:
1012 str = "bad certificate status response";
1013 break;
1014 case TLS1_AD_BAD_CERTIFICATE_HASH_VALUE:
1015 str = "bad certificate hash value";
1016 break;
1017 case TLS1_AD_UNKNOWN_PSK_IDENTITY:
1018 str = "unknown PSK identity";
1019 break;
1020 default:
1021 str = "unknown";
1022 break;
1023 }
1024 return (str);
1025 }
1026
1027 const char *SSL_rstate_string(const SSL *s)
1028 {
1029 const char *str;
1030
1031 switch (s->rstate) {
1032 case SSL_ST_READ_HEADER:
1033 str = "RH";
1034 break;
1035 case SSL_ST_READ_BODY:
1036 str = "RB";
1037 break;
1038 case SSL_ST_READ_DONE:
1039 str = "RD";
1040 break;
1041 default:
1042 str = "unknown";
1043 break;
1044 }
1045 return (str);
1046 }