diff options
author | beck <> | 2017-02-07 02:08:38 +0000 |
---|---|---|
committer | beck <> | 2017-02-07 02:08:38 +0000 |
commit | 91c389f89015a024212e73f5ec6e24166955ab6e (patch) | |
tree | a4e6a6d2d23329b576b63c8698e62a87e7388b69 /src/lib/libssl/ssl_err.c | |
parent | 8a1ec4c748b269fba0669ee71234ec9a0f128613 (diff) | |
download | openbsd-91c389f89015a024212e73f5ec6e24166955ab6e.tar.gz openbsd-91c389f89015a024212e73f5ec6e24166955ab6e.tar.bz2 openbsd-91c389f89015a024212e73f5ec6e24166955ab6e.zip |
Change SSLerror() back to taking two args, with the first one being an SSL *.
Make a table of "function codes" which maps the internal state of the SSL *
to something like a useful name so in a typical error in the connection you
know in what sort of place in the handshake things happened. (instead of
by arcane function name).
Add SSLerrorx() for when we don't have an SSL *
ok jsing@ after us both being prodded by bluhm@ to make it not terrible
Diffstat (limited to '')
-rw-r--r-- | src/lib/libssl/ssl_err.c | 269 |
1 files changed, 267 insertions, 2 deletions
diff --git a/src/lib/libssl/ssl_err.c b/src/lib/libssl/ssl_err.c index 525ba2146b..f9e450125b 100644 --- a/src/lib/libssl/ssl_err.c +++ b/src/lib/libssl/ssl_err.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_err.c,v 1.32 2017/01/26 10:40:21 beck Exp $ */ | 1 | /* $OpenBSD: ssl_err.c,v 1.33 2017/02/07 02:08:38 beck Exp $ */ |
2 | /* ==================================================================== | 2 | /* ==================================================================== |
3 | * Copyright (c) 1999-2011 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 1999-2011 The OpenSSL Project. All rights reserved. |
4 | * | 4 | * |
@@ -69,8 +69,94 @@ | |||
69 | #define ERR_FUNC(func) ERR_PACK(ERR_LIB_SSL,func,0) | 69 | #define ERR_FUNC(func) ERR_PACK(ERR_LIB_SSL,func,0) |
70 | #define ERR_REASON(reason) ERR_PACK(ERR_LIB_SSL,0,reason) | 70 | #define ERR_REASON(reason) ERR_PACK(ERR_LIB_SSL,0,reason) |
71 | 71 | ||
72 | /* See SSL_state_func_code below */ | ||
72 | static ERR_STRING_DATA SSL_str_functs[]= { | 73 | static ERR_STRING_DATA SSL_str_functs[]= { |
73 | {ERR_FUNC(0xfff), "SSL_internal"}, | 74 | {ERR_FUNC(1), "CONNECT_CW_FLUSH"}, |
75 | {ERR_FUNC(2), "CONNECT_CW_CLNT_HELLO"}, | ||
76 | {ERR_FUNC(3), "CONNECT_CW_CLNT_HELLO"}, | ||
77 | {ERR_FUNC(4), "CONNECT_CR_SRVR_HELLO"}, | ||
78 | {ERR_FUNC(5), "CONNECT_CR_SRVR_HELLO"}, | ||
79 | {ERR_FUNC(6), "CONNECT_CR_CERT"}, | ||
80 | {ERR_FUNC(7), "CONNECT_CR_CERT"}, | ||
81 | {ERR_FUNC(8), "CONNECT_CR_KEY_EXCH"}, | ||
82 | {ERR_FUNC(9), "CONNECT_CR_KEY_EXCH"}, | ||
83 | {ERR_FUNC(10), "CONNECT_CR_CERT_REQ"}, | ||
84 | {ERR_FUNC(11), "CONNECT_CR_CERT_REQ"}, | ||
85 | {ERR_FUNC(12), "CONNECT_CR_SRVR_DONE"}, | ||
86 | {ERR_FUNC(13), "CONNECT_CR_SRVR_DONE"}, | ||
87 | {ERR_FUNC(14), "CONNECT_CW_CERT"}, | ||
88 | {ERR_FUNC(15), "CONNECT_CW_CERT"}, | ||
89 | {ERR_FUNC(16), "CONNECT_CW_CERT_C"}, | ||
90 | {ERR_FUNC(17), "CONNECT_CW_CERT_D"}, | ||
91 | {ERR_FUNC(18), "CONNECT_CW_KEY_EXCH"}, | ||
92 | {ERR_FUNC(19), "CONNECT_CW_KEY_EXCH"}, | ||
93 | {ERR_FUNC(20), "CONNECT_CW_CERT_VRFY"}, | ||
94 | {ERR_FUNC(21), "CONNECT_CW_CERT_VRFY"}, | ||
95 | {ERR_FUNC(22), "CONNECT_CW_CHANGE"}, | ||
96 | {ERR_FUNC(23), "CONNECT_CW_CHANGE"}, | ||
97 | {ERR_FUNC(24), "CONNECT_CW_NEXT_PROTO"}, | ||
98 | {ERR_FUNC(25), "CONNECT_CW_NEXT_PROTO"}, | ||
99 | {ERR_FUNC(26), "CONNECT_CW_FINISHED"}, | ||
100 | {ERR_FUNC(27), "CONNECT_CW_FINISHED"}, | ||
101 | {ERR_FUNC(28), "CONNECT_CR_CHANGE"}, | ||
102 | {ERR_FUNC(29), "CONNECT_CR_CHANGE"}, | ||
103 | {ERR_FUNC(30), "CONNECT_CR_FINISHED"}, | ||
104 | {ERR_FUNC(31), "CONNECT_CR_FINISHED"}, | ||
105 | {ERR_FUNC(32), "CONNECT_CR_SESSION_TICKET"}, | ||
106 | {ERR_FUNC(33), "CONNECT_CR_SESSION_TICKET"}, | ||
107 | {ERR_FUNC(34), "CONNECT_CR_CERT_STATUS"}, | ||
108 | {ERR_FUNC(35), "CONNECT_CR_CERT_STATUS"}, | ||
109 | {ERR_FUNC(36), "ACCEPT_SW_FLUSH"}, | ||
110 | {ERR_FUNC(37), "ACCEPT_SR_CLNT_HELLO"}, | ||
111 | {ERR_FUNC(38), "ACCEPT_SR_CLNT_HELLO"}, | ||
112 | {ERR_FUNC(39), "ACCEPT_SR_CLNT_HELLO_C"}, | ||
113 | {ERR_FUNC(40), "ACCEPT_SW_HELLO_REQ"}, | ||
114 | {ERR_FUNC(41), "ACCEPT_SW_HELLO_REQ"}, | ||
115 | {ERR_FUNC(42), "ACCEPT_SW_HELLO_REQ_C"}, | ||
116 | {ERR_FUNC(43), "ACCEPT_SW_SRVR_HELLO"}, | ||
117 | {ERR_FUNC(44), "ACCEPT_SW_SRVR_HELLO"}, | ||
118 | {ERR_FUNC(45), "ACCEPT_SW_CERT"}, | ||
119 | {ERR_FUNC(46), "ACCEPT_SW_CERT"}, | ||
120 | {ERR_FUNC(47), "ACCEPT_SW_KEY_EXCH"}, | ||
121 | {ERR_FUNC(48), "ACCEPT_SW_KEY_EXCH"}, | ||
122 | {ERR_FUNC(49), "ACCEPT_SW_CERT_REQ"}, | ||
123 | {ERR_FUNC(50), "ACCEPT_SW_CERT_REQ"}, | ||
124 | {ERR_FUNC(51), "ACCEPT_SW_SRVR_DONE"}, | ||
125 | {ERR_FUNC(52), "ACCEPT_SW_SRVR_DONE"}, | ||
126 | {ERR_FUNC(53), "ACCEPT_SR_CERT"}, | ||
127 | {ERR_FUNC(54), "ACCEPT_SR_CERT"}, | ||
128 | {ERR_FUNC(55), "ACCEPT_SR_KEY_EXCH"}, | ||
129 | {ERR_FUNC(56), "ACCEPT_SR_KEY_EXCH"}, | ||
130 | {ERR_FUNC(57), "ACCEPT_SR_CERT_VRFY"}, | ||
131 | {ERR_FUNC(58), "ACCEPT_SR_CERT_VRFY"}, | ||
132 | {ERR_FUNC(59), "ACCEPT_SR_CHANGE"}, | ||
133 | {ERR_FUNC(60), "ACCEPT_SR_CHANGE"}, | ||
134 | {ERR_FUNC(61), "ACCEPT_SR_NEXT_PROTO"}, | ||
135 | {ERR_FUNC(62), "ACCEPT_SR_NEXT_PROTO"}, | ||
136 | {ERR_FUNC(63), "ACCEPT_SR_FINISHED"}, | ||
137 | {ERR_FUNC(64), "ACCEPT_SR_FINISHED"}, | ||
138 | {ERR_FUNC(65), "ACCEPT_SW_CHANGE"}, | ||
139 | {ERR_FUNC(66), "ACCEPT_SW_CHANGE"}, | ||
140 | {ERR_FUNC(67), "ACCEPT_SW_FINISHED"}, | ||
141 | {ERR_FUNC(68), "ACCEPT_SW_FINISHED"}, | ||
142 | {ERR_FUNC(69), "ACCEPT_SW_SESSION_TICKET"}, | ||
143 | {ERR_FUNC(70), "ACCEPT_SW_SESSION_TICKET"}, | ||
144 | {ERR_FUNC(71), "ACCEPT_SW_CERT_STATUS"}, | ||
145 | {ERR_FUNC(72), "ACCEPT_SW_CERT_STATUS"}, | ||
146 | {ERR_FUNC(73), "ST_BEFORE"}, | ||
147 | {ERR_FUNC(74), "ST_ACCEPT"}, | ||
148 | {ERR_FUNC(75), "ST_CONNECT"}, | ||
149 | {ERR_FUNC(76), "ST_OK"}, | ||
150 | {ERR_FUNC(77), "ST_RENEGOTIATE"}, | ||
151 | {ERR_FUNC(78), "ST_BEFORE_CONNECT"}, | ||
152 | {ERR_FUNC(79), "ST_OK_CONNECT"}, | ||
153 | {ERR_FUNC(80), "ST_BEFORE_ACCEPT"}, | ||
154 | {ERR_FUNC(81), "ST_OK_ACCEPT"}, | ||
155 | {ERR_FUNC(83), "DTLS1_ST_CR_HELLO_VERIFY_REQUEST"}, | ||
156 | {ERR_FUNC(84), "DTLS1_ST_CR_HELLO_VERIFY_REQUEST"}, | ||
157 | {ERR_FUNC(85), "DTLS1_ST_SW_HELLO_VERIFY_REQUEST"}, | ||
158 | {ERR_FUNC(86), "DTLS1_ST_SW_HELLO_VERIFY_REQUEST"}, | ||
159 | {ERR_FUNC(0xfff), "(UNKNOWN)SSL_internal"}, | ||
74 | {0, NULL} | 160 | {0, NULL} |
75 | }; | 161 | }; |
76 | 162 | ||
@@ -402,3 +488,182 @@ SSL_load_error_strings(void) | |||
402 | ERR_load_SSL_strings(); | 488 | ERR_load_SSL_strings(); |
403 | #endif | 489 | #endif |
404 | } | 490 | } |
491 | |||
492 | int | ||
493 | SSL_state_func_code(int state) { | ||
494 | switch (state) { | ||
495 | case SSL3_ST_CW_FLUSH: | ||
496 | return 1; | ||
497 | case SSL3_ST_CW_CLNT_HELLO_A: | ||
498 | return 2; | ||
499 | case SSL3_ST_CW_CLNT_HELLO_B: | ||
500 | return 3; | ||
501 | case SSL3_ST_CR_SRVR_HELLO_A: | ||
502 | return 4; | ||
503 | case SSL3_ST_CR_SRVR_HELLO_B: | ||
504 | return 5; | ||
505 | case SSL3_ST_CR_CERT_A: | ||
506 | return 6; | ||
507 | case SSL3_ST_CR_CERT_B: | ||
508 | return 7; | ||
509 | case SSL3_ST_CR_KEY_EXCH_A: | ||
510 | return 8; | ||
511 | case SSL3_ST_CR_KEY_EXCH_B: | ||
512 | return 9; | ||
513 | case SSL3_ST_CR_CERT_REQ_A: | ||
514 | return 10; | ||
515 | case SSL3_ST_CR_CERT_REQ_B: | ||
516 | return 11; | ||
517 | case SSL3_ST_CR_SRVR_DONE_A: | ||
518 | return 12; | ||
519 | case SSL3_ST_CR_SRVR_DONE_B: | ||
520 | return 13; | ||
521 | case SSL3_ST_CW_CERT_A: | ||
522 | return 14; | ||
523 | case SSL3_ST_CW_CERT_B: | ||
524 | return 15; | ||
525 | case SSL3_ST_CW_CERT_C: | ||
526 | return 16; | ||
527 | case SSL3_ST_CW_CERT_D: | ||
528 | return 17; | ||
529 | case SSL3_ST_CW_KEY_EXCH_A: | ||
530 | return 18; | ||
531 | case SSL3_ST_CW_KEY_EXCH_B: | ||
532 | return 19; | ||
533 | case SSL3_ST_CW_CERT_VRFY_A: | ||
534 | return 20; | ||
535 | case SSL3_ST_CW_CERT_VRFY_B: | ||
536 | return 21; | ||
537 | case SSL3_ST_CW_CHANGE_A: | ||
538 | return 22; | ||
539 | case SSL3_ST_CW_CHANGE_B: | ||
540 | return 23; | ||
541 | case SSL3_ST_CW_NEXT_PROTO_A: | ||
542 | return 24; | ||
543 | case SSL3_ST_CW_NEXT_PROTO_B: | ||
544 | return 25; | ||
545 | case SSL3_ST_CW_FINISHED_A: | ||
546 | return 26; | ||
547 | case SSL3_ST_CW_FINISHED_B: | ||
548 | return 27; | ||
549 | case SSL3_ST_CR_CHANGE_A: | ||
550 | return 28; | ||
551 | case SSL3_ST_CR_CHANGE_B: | ||
552 | return 29; | ||
553 | case SSL3_ST_CR_FINISHED_A: | ||
554 | return 30; | ||
555 | case SSL3_ST_CR_FINISHED_B: | ||
556 | return 31; | ||
557 | case SSL3_ST_CR_SESSION_TICKET_A: | ||
558 | return 32; | ||
559 | case SSL3_ST_CR_SESSION_TICKET_B: | ||
560 | return 33; | ||
561 | case SSL3_ST_CR_CERT_STATUS_A: | ||
562 | return 34; | ||
563 | case SSL3_ST_CR_CERT_STATUS_B: | ||
564 | return 35; | ||
565 | case SSL3_ST_SW_FLUSH: | ||
566 | return 36; | ||
567 | case SSL3_ST_SR_CLNT_HELLO_A: | ||
568 | return 37; | ||
569 | case SSL3_ST_SR_CLNT_HELLO_B: | ||
570 | return 38; | ||
571 | case SSL3_ST_SR_CLNT_HELLO_C: | ||
572 | return 39; | ||
573 | case SSL3_ST_SW_HELLO_REQ_A: | ||
574 | return 40; | ||
575 | case SSL3_ST_SW_HELLO_REQ_B: | ||
576 | return 41; | ||
577 | case SSL3_ST_SW_HELLO_REQ_C: | ||
578 | return 42; | ||
579 | case SSL3_ST_SW_SRVR_HELLO_A: | ||
580 | return 43; | ||
581 | case SSL3_ST_SW_SRVR_HELLO_B: | ||
582 | return 44; | ||
583 | case SSL3_ST_SW_CERT_A: | ||
584 | return 45; | ||
585 | case SSL3_ST_SW_CERT_B: | ||
586 | return 46; | ||
587 | case SSL3_ST_SW_KEY_EXCH_A: | ||
588 | return 47; | ||
589 | case SSL3_ST_SW_KEY_EXCH_B: | ||
590 | return 48; | ||
591 | case SSL3_ST_SW_CERT_REQ_A: | ||
592 | return 49; | ||
593 | case SSL3_ST_SW_CERT_REQ_B: | ||
594 | return 50; | ||
595 | case SSL3_ST_SW_SRVR_DONE_A: | ||
596 | return 51; | ||
597 | case SSL3_ST_SW_SRVR_DONE_B: | ||
598 | return 52; | ||
599 | case SSL3_ST_SR_CERT_A: | ||
600 | return 53; | ||
601 | case SSL3_ST_SR_CERT_B: | ||
602 | return 54; | ||
603 | case SSL3_ST_SR_KEY_EXCH_A: | ||
604 | return 55; | ||
605 | case SSL3_ST_SR_KEY_EXCH_B: | ||
606 | return 56; | ||
607 | case SSL3_ST_SR_CERT_VRFY_A: | ||
608 | return 57; | ||
609 | case SSL3_ST_SR_CERT_VRFY_B: | ||
610 | return 58; | ||
611 | case SSL3_ST_SR_CHANGE_A: | ||
612 | return 59; | ||
613 | case SSL3_ST_SR_CHANGE_B: | ||
614 | return 60; | ||
615 | case SSL3_ST_SR_NEXT_PROTO_A: | ||
616 | return 61; | ||
617 | case SSL3_ST_SR_NEXT_PROTO_B: | ||
618 | return 62; | ||
619 | case SSL3_ST_SR_FINISHED_A: | ||
620 | return 63; | ||
621 | case SSL3_ST_SR_FINISHED_B: | ||
622 | return 64; | ||
623 | case SSL3_ST_SW_CHANGE_A: | ||
624 | return 65; | ||
625 | case SSL3_ST_SW_CHANGE_B: | ||
626 | return 66; | ||
627 | case SSL3_ST_SW_FINISHED_A: | ||
628 | return 67; | ||
629 | case SSL3_ST_SW_FINISHED_B: | ||
630 | return 68; | ||
631 | case SSL3_ST_SW_SESSION_TICKET_A: | ||
632 | return 69; | ||
633 | case SSL3_ST_SW_SESSION_TICKET_B: | ||
634 | return 70; | ||
635 | case SSL3_ST_SW_CERT_STATUS_A: | ||
636 | return 71; | ||
637 | case SSL3_ST_SW_CERT_STATUS_B: | ||
638 | return 72; | ||
639 | case SSL_ST_BEFORE: | ||
640 | return 73; | ||
641 | case SSL_ST_ACCEPT: | ||
642 | return 74; | ||
643 | case SSL_ST_CONNECT: | ||
644 | return 75; | ||
645 | case SSL_ST_OK: | ||
646 | return 76; | ||
647 | case SSL_ST_RENEGOTIATE: | ||
648 | return 77; | ||
649 | case SSL_ST_BEFORE|SSL_ST_CONNECT: | ||
650 | return 78; | ||
651 | case SSL_ST_OK|SSL_ST_CONNECT: | ||
652 | return 79; | ||
653 | case SSL_ST_BEFORE|SSL_ST_ACCEPT: | ||
654 | return 80; | ||
655 | case SSL_ST_OK|SSL_ST_ACCEPT: | ||
656 | return 81; | ||
657 | case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A: | ||
658 | return 83; | ||
659 | case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B: | ||
660 | return 84; | ||
661 | case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A: | ||
662 | return 85; | ||
663 | case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B: | ||
664 | return 86; | ||
665 | default: | ||
666 | break; | ||
667 | } | ||
668 | return 0xfff; | ||
669 | } | ||