summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl_err.c
diff options
context:
space:
mode:
authorbeck <>2017-02-07 02:08:38 +0000
committerbeck <>2017-02-07 02:08:38 +0000
commit91c389f89015a024212e73f5ec6e24166955ab6e (patch)
treea4e6a6d2d23329b576b63c8698e62a87e7388b69 /src/lib/libssl/ssl_err.c
parent8a1ec4c748b269fba0669ee71234ec9a0f128613 (diff)
downloadopenbsd-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.c269
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 */
72static ERR_STRING_DATA SSL_str_functs[]= { 73static 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
492int
493SSL_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}