diff options
author | beck <> | 2017-01-23 04:55:27 +0000 |
---|---|---|
committer | beck <> | 2017-01-23 04:55:27 +0000 |
commit | c35f51566045be89c49b0a47e153fdb27ec20f8e (patch) | |
tree | 7b3e30aaa4ce396a0dcc28cc981628a669ff50d2 | |
parent | 0f157a9ac8d269cb234cff4f5cd07800027490ff (diff) | |
download | openbsd-c35f51566045be89c49b0a47e153fdb27ec20f8e.tar.gz openbsd-c35f51566045be89c49b0a47e153fdb27ec20f8e.tar.bz2 openbsd-c35f51566045be89c49b0a47e153fdb27ec20f8e.zip |
move the callbacks from ssl_st to internal
ok jsing@
-rw-r--r-- | src/lib/libssl/bio_ssl.c | 8 | ||||
-rw-r--r-- | src/lib/libssl/d1_both.c | 20 | ||||
-rw-r--r-- | src/lib/libssl/d1_clnt.c | 12 | ||||
-rw-r--r-- | src/lib/libssl/d1_pkt.c | 52 | ||||
-rw-r--r-- | src/lib/libssl/d1_srvr.c | 12 | ||||
-rw-r--r-- | src/lib/libssl/s23_clnt.c | 28 | ||||
-rw-r--r-- | src/lib/libssl/s23_lib.c | 14 | ||||
-rw-r--r-- | src/lib/libssl/s23_srvr.c | 18 | ||||
-rw-r--r-- | src/lib/libssl/s3_both.c | 20 | ||||
-rw-r--r-- | src/lib/libssl/s3_clnt.c | 18 | ||||
-rw-r--r-- | src/lib/libssl/s3_lib.c | 14 | ||||
-rw-r--r-- | src/lib/libssl/s3_pkt.c | 50 | ||||
-rw-r--r-- | src/lib/libssl/s3_srvr.c | 18 | ||||
-rw-r--r-- | src/lib/libssl/ssl.h | 32 | ||||
-rw-r--r-- | src/lib/libssl/ssl_cert.c | 6 | ||||
-rw-r--r-- | src/lib/libssl/ssl_lib.c | 68 | ||||
-rw-r--r-- | src/lib/libssl/ssl_locl.h | 33 | ||||
-rw-r--r-- | src/lib/libssl/ssl_sess.c | 14 | ||||
-rw-r--r-- | src/lib/libssl/t1_lib.c | 30 |
19 files changed, 237 insertions, 230 deletions
diff --git a/src/lib/libssl/bio_ssl.c b/src/lib/libssl/bio_ssl.c index 6ddbb008e6..42f637a78f 100644 --- a/src/lib/libssl/bio_ssl.c +++ b/src/lib/libssl/bio_ssl.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bio_ssl.c,v 1.22 2015/09/29 18:08:57 deraadt Exp $ */ | 1 | /* $OpenBSD: bio_ssl.c,v 1.23 2017/01/23 04:55:26 beck Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -66,6 +66,8 @@ | |||
66 | #include <openssl/err.h> | 66 | #include <openssl/err.h> |
67 | #include <openssl/ssl.h> | 67 | #include <openssl/ssl.h> |
68 | 68 | ||
69 | #include "ssl_locl.h" | ||
70 | |||
69 | static int ssl_write(BIO *h, const char *buf, int num); | 71 | static int ssl_write(BIO *h, const char *buf, int num); |
70 | static int ssl_read(BIO *h, char *buf, int size); | 72 | static int ssl_read(BIO *h, char *buf, int size); |
71 | static int ssl_puts(BIO *h, const char *str); | 73 | static int ssl_puts(BIO *h, const char *str); |
@@ -291,9 +293,9 @@ ssl_ctrl(BIO *b, int cmd, long num, void *ptr) | |||
291 | case BIO_CTRL_RESET: | 293 | case BIO_CTRL_RESET: |
292 | SSL_shutdown(ssl); | 294 | SSL_shutdown(ssl); |
293 | 295 | ||
294 | if (ssl->handshake_func == ssl->method->ssl_connect) | 296 | if (ssl->internal->handshake_func == ssl->method->ssl_connect) |
295 | SSL_set_connect_state(ssl); | 297 | SSL_set_connect_state(ssl); |
296 | else if (ssl->handshake_func == ssl->method->ssl_accept) | 298 | else if (ssl->internal->handshake_func == ssl->method->ssl_accept) |
297 | SSL_set_accept_state(ssl); | 299 | SSL_set_accept_state(ssl); |
298 | 300 | ||
299 | SSL_clear(ssl); | 301 | SSL_clear(ssl); |
diff --git a/src/lib/libssl/d1_both.c b/src/lib/libssl/d1_both.c index 2ee4a7ffcf..962b73ed6c 100644 --- a/src/lib/libssl/d1_both.c +++ b/src/lib/libssl/d1_both.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: d1_both.c,v 1.42 2017/01/22 09:02:07 jsing Exp $ */ | 1 | /* $OpenBSD: d1_both.c,v 1.43 2017/01/23 04:55:26 beck Exp $ */ |
2 | /* | 2 | /* |
3 | * DTLS implementation written by Nagendra Modadugu | 3 | * DTLS implementation written by Nagendra Modadugu |
4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. | 4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. |
@@ -367,11 +367,11 @@ dtls1_do_write(SSL *s, int type) | |||
367 | } | 367 | } |
368 | 368 | ||
369 | if (ret == s->init_num) { | 369 | if (ret == s->init_num) { |
370 | if (s->msg_callback) | 370 | if (s->internal->msg_callback) |
371 | s->msg_callback(1, s->version, type, | 371 | s->internal->msg_callback(1, s->version, type, |
372 | s->init_buf->data, | 372 | s->init_buf->data, |
373 | (size_t)(s->init_off + s->init_num), | 373 | (size_t)(s->init_off + s->init_num), |
374 | s, s->msg_callback_arg); | 374 | s, s->internal->msg_callback_arg); |
375 | 375 | ||
376 | s->init_off = 0; | 376 | s->init_off = 0; |
377 | /* done writing this message */ | 377 | /* done writing this message */ |
@@ -445,9 +445,9 @@ again: | |||
445 | msg_len += DTLS1_HM_HEADER_LENGTH; | 445 | msg_len += DTLS1_HM_HEADER_LENGTH; |
446 | 446 | ||
447 | tls1_finish_mac(s, p, msg_len); | 447 | tls1_finish_mac(s, p, msg_len); |
448 | if (s->msg_callback) | 448 | if (s->internal->msg_callback) |
449 | s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, p, msg_len, | 449 | s->internal->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, p, msg_len, |
450 | s, s->msg_callback_arg); | 450 | s, s->internal->msg_callback_arg); |
451 | 451 | ||
452 | memset(msg_hdr, 0x00, sizeof(struct hm_header_st)); | 452 | memset(msg_hdr, 0x00, sizeof(struct hm_header_st)); |
453 | 453 | ||
@@ -834,11 +834,11 @@ again: | |||
834 | * 'Finished' MAC. | 834 | * 'Finished' MAC. |
835 | */ | 835 | */ |
836 | if (wire[1] == 0 && wire[2] == 0 && wire[3] == 0) { | 836 | if (wire[1] == 0 && wire[2] == 0 && wire[3] == 0) { |
837 | if (s->msg_callback) | 837 | if (s->internal->msg_callback) |
838 | s->msg_callback(0, s->version, | 838 | s->internal->msg_callback(0, s->version, |
839 | SSL3_RT_HANDSHAKE, wire, | 839 | SSL3_RT_HANDSHAKE, wire, |
840 | DTLS1_HM_HEADER_LENGTH, s, | 840 | DTLS1_HM_HEADER_LENGTH, s, |
841 | s->msg_callback_arg); | 841 | s->internal->msg_callback_arg); |
842 | 842 | ||
843 | s->init_num = 0; | 843 | s->init_num = 0; |
844 | goto again; | 844 | goto again; |
diff --git a/src/lib/libssl/d1_clnt.c b/src/lib/libssl/d1_clnt.c index 127cda155c..67b874ef6b 100644 --- a/src/lib/libssl/d1_clnt.c +++ b/src/lib/libssl/d1_clnt.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: d1_clnt.c,v 1.64 2017/01/23 04:15:28 jsing Exp $ */ | 1 | /* $OpenBSD: d1_clnt.c,v 1.65 2017/01/23 04:55:26 beck Exp $ */ |
2 | /* | 2 | /* |
3 | * DTLS implementation written by Nagendra Modadugu | 3 | * DTLS implementation written by Nagendra Modadugu |
4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. | 4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. |
@@ -188,12 +188,12 @@ dtls1_connect(SSL *s) | |||
188 | ERR_clear_error(); | 188 | ERR_clear_error(); |
189 | errno = 0; | 189 | errno = 0; |
190 | 190 | ||
191 | if (s->info_callback != NULL) | 191 | if (s->internal->info_callback != NULL) |
192 | cb = s->info_callback; | 192 | cb = s->internal->info_callback; |
193 | else if (s->ctx->internal->info_callback != NULL) | 193 | else if (s->ctx->internal->info_callback != NULL) |
194 | cb = s->ctx->internal->info_callback; | 194 | cb = s->ctx->internal->info_callback; |
195 | 195 | ||
196 | s->in_handshake++; | 196 | s->internal->in_handshake++; |
197 | if (!SSL_in_init(s) || SSL_in_before(s)) | 197 | if (!SSL_in_init(s) || SSL_in_before(s)) |
198 | SSL_clear(s); | 198 | SSL_clear(s); |
199 | 199 | ||
@@ -559,7 +559,7 @@ dtls1_connect(SSL *s) | |||
559 | 559 | ||
560 | ret = 1; | 560 | ret = 1; |
561 | /* s->server=0; */ | 561 | /* s->server=0; */ |
562 | s->handshake_func = dtls1_connect; | 562 | s->internal->handshake_func = dtls1_connect; |
563 | s->ctx->internal->stats.sess_connect_good++; | 563 | s->ctx->internal->stats.sess_connect_good++; |
564 | 564 | ||
565 | if (cb != NULL) | 565 | if (cb != NULL) |
@@ -596,7 +596,7 @@ dtls1_connect(SSL *s) | |||
596 | } | 596 | } |
597 | 597 | ||
598 | end: | 598 | end: |
599 | s->in_handshake--; | 599 | s->internal->in_handshake--; |
600 | if (cb != NULL) | 600 | if (cb != NULL) |
601 | cb(s, SSL_CB_CONNECT_EXIT, ret); | 601 | cb(s, SSL_CB_CONNECT_EXIT, ret); |
602 | 602 | ||
diff --git a/src/lib/libssl/d1_pkt.c b/src/lib/libssl/d1_pkt.c index ef9bcaa786..88c2fa9adf 100644 --- a/src/lib/libssl/d1_pkt.c +++ b/src/lib/libssl/d1_pkt.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: d1_pkt.c,v 1.52 2017/01/23 04:15:28 jsing Exp $ */ | 1 | /* $OpenBSD: d1_pkt.c,v 1.53 2017/01/23 04:55:26 beck Exp $ */ |
2 | /* | 2 | /* |
3 | * DTLS implementation written by Nagendra Modadugu | 3 | * DTLS implementation written by Nagendra Modadugu |
4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. | 4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. |
@@ -596,7 +596,7 @@ again: | |||
596 | * anything while listening. | 596 | * anything while listening. |
597 | */ | 597 | */ |
598 | if (is_next_epoch) { | 598 | if (is_next_epoch) { |
599 | if ((SSL_in_init(s) || s->in_handshake) && !D1I(s)->listen) { | 599 | if ((SSL_in_init(s) || s->internal->in_handshake) && !D1I(s)->listen) { |
600 | if (dtls1_buffer_record(s, &(D1I(s)->unprocessed_rcds), | 600 | if (dtls1_buffer_record(s, &(D1I(s)->unprocessed_rcds), |
601 | rr->seq_num) < 0) | 601 | rr->seq_num) < 0) |
602 | return (-1); | 602 | return (-1); |
@@ -667,10 +667,10 @@ dtls1_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek) | |||
667 | 667 | ||
668 | /* Now D1I(s)->handshake_fragment_len == 0 if type == SSL3_RT_HANDSHAKE. */ | 668 | /* Now D1I(s)->handshake_fragment_len == 0 if type == SSL3_RT_HANDSHAKE. */ |
669 | 669 | ||
670 | if (!s->in_handshake && SSL_in_init(s)) | 670 | if (!s->internal->in_handshake && SSL_in_init(s)) |
671 | { | 671 | { |
672 | /* type == SSL3_RT_APPLICATION_DATA */ | 672 | /* type == SSL3_RT_APPLICATION_DATA */ |
673 | i = s->handshake_func(s); | 673 | i = s->internal->handshake_func(s); |
674 | if (i < 0) | 674 | if (i < 0) |
675 | return (i); | 675 | return (i); |
676 | if (i == 0) { | 676 | if (i == 0) { |
@@ -875,9 +875,9 @@ start: | |||
875 | 875 | ||
876 | /* no need to check sequence number on HELLO REQUEST messages */ | 876 | /* no need to check sequence number on HELLO REQUEST messages */ |
877 | 877 | ||
878 | if (s->msg_callback) | 878 | if (s->internal->msg_callback) |
879 | s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, | 879 | s->internal->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, |
880 | D1I(s)->handshake_fragment, 4, s, s->msg_callback_arg); | 880 | D1I(s)->handshake_fragment, 4, s, s->internal->msg_callback_arg); |
881 | 881 | ||
882 | if (SSL_is_init_finished(s) && | 882 | if (SSL_is_init_finished(s) && |
883 | !(s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS) && | 883 | !(s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS) && |
@@ -886,7 +886,7 @@ start: | |||
886 | s->new_session = 1; | 886 | s->new_session = 1; |
887 | ssl3_renegotiate(s); | 887 | ssl3_renegotiate(s); |
888 | if (ssl3_renegotiate_check(s)) { | 888 | if (ssl3_renegotiate_check(s)) { |
889 | i = s->handshake_func(s); | 889 | i = s->internal->handshake_func(s); |
890 | if (i < 0) | 890 | if (i < 0) |
891 | return (i); | 891 | return (i); |
892 | if (i == 0) { | 892 | if (i == 0) { |
@@ -922,12 +922,12 @@ start: | |||
922 | 922 | ||
923 | D1I(s)->alert_fragment_len = 0; | 923 | D1I(s)->alert_fragment_len = 0; |
924 | 924 | ||
925 | if (s->msg_callback) | 925 | if (s->internal->msg_callback) |
926 | s->msg_callback(0, s->version, SSL3_RT_ALERT, | 926 | s->internal->msg_callback(0, s->version, SSL3_RT_ALERT, |
927 | D1I(s)->alert_fragment, 2, s, s->msg_callback_arg); | 927 | D1I(s)->alert_fragment, 2, s, s->internal->msg_callback_arg); |
928 | 928 | ||
929 | if (s->info_callback != NULL) | 929 | if (s->internal->info_callback != NULL) |
930 | cb = s->info_callback; | 930 | cb = s->internal->info_callback; |
931 | else if (s->ctx->internal->info_callback != NULL) | 931 | else if (s->ctx->internal->info_callback != NULL) |
932 | cb = s->ctx->internal->info_callback; | 932 | cb = s->ctx->internal->info_callback; |
933 | 933 | ||
@@ -987,9 +987,9 @@ start: | |||
987 | 987 | ||
988 | rr->length = 0; | 988 | rr->length = 0; |
989 | 989 | ||
990 | if (s->msg_callback) | 990 | if (s->internal->msg_callback) |
991 | s->msg_callback(0, s->version, SSL3_RT_CHANGE_CIPHER_SPEC, | 991 | s->internal->msg_callback(0, s->version, SSL3_RT_CHANGE_CIPHER_SPEC, |
992 | rr->data, 1, s, s->msg_callback_arg); | 992 | rr->data, 1, s, s->internal->msg_callback_arg); |
993 | 993 | ||
994 | /* We can't process a CCS now, because previous handshake | 994 | /* We can't process a CCS now, because previous handshake |
995 | * messages are still missing, so just drop it. | 995 | * messages are still missing, so just drop it. |
@@ -1012,7 +1012,7 @@ start: | |||
1012 | 1012 | ||
1013 | /* Unexpected handshake message (Client Hello, or protocol violation) */ | 1013 | /* Unexpected handshake message (Client Hello, or protocol violation) */ |
1014 | if ((D1I(s)->handshake_fragment_len >= DTLS1_HM_HEADER_LENGTH) && | 1014 | if ((D1I(s)->handshake_fragment_len >= DTLS1_HM_HEADER_LENGTH) && |
1015 | !s->in_handshake) { | 1015 | !s->internal->in_handshake) { |
1016 | struct hm_header_st msg_hdr; | 1016 | struct hm_header_st msg_hdr; |
1017 | 1017 | ||
1018 | /* this may just be a stale retransmit */ | 1018 | /* this may just be a stale retransmit */ |
@@ -1041,7 +1041,7 @@ start: | |||
1041 | s->renegotiate = 1; | 1041 | s->renegotiate = 1; |
1042 | s->new_session = 1; | 1042 | s->new_session = 1; |
1043 | } | 1043 | } |
1044 | i = s->handshake_func(s); | 1044 | i = s->internal->handshake_func(s); |
1045 | if (i < 0) | 1045 | if (i < 0) |
1046 | return (i); | 1046 | return (i); |
1047 | if (i == 0) { | 1047 | if (i == 0) { |
@@ -1081,7 +1081,7 @@ start: | |||
1081 | case SSL3_RT_ALERT: | 1081 | case SSL3_RT_ALERT: |
1082 | case SSL3_RT_HANDSHAKE: | 1082 | case SSL3_RT_HANDSHAKE: |
1083 | /* we already handled all of these, with the possible exception | 1083 | /* we already handled all of these, with the possible exception |
1084 | * of SSL3_RT_HANDSHAKE when s->in_handshake is set, but that | 1084 | * of SSL3_RT_HANDSHAKE when s->internal->in_handshake is set, but that |
1085 | * should not happen when type != rr->type */ | 1085 | * should not happen when type != rr->type */ |
1086 | al = SSL_AD_UNEXPECTED_MESSAGE; | 1086 | al = SSL_AD_UNEXPECTED_MESSAGE; |
1087 | SSLerr(SSL_F_DTLS1_READ_BYTES, ERR_R_INTERNAL_ERROR); | 1087 | SSLerr(SSL_F_DTLS1_READ_BYTES, ERR_R_INTERNAL_ERROR); |
@@ -1123,9 +1123,9 @@ dtls1_write_app_data_bytes(SSL *s, int type, const void *buf_, int len) | |||
1123 | { | 1123 | { |
1124 | int i; | 1124 | int i; |
1125 | 1125 | ||
1126 | if (SSL_in_init(s) && !s->in_handshake) | 1126 | if (SSL_in_init(s) && !s->internal->in_handshake) |
1127 | { | 1127 | { |
1128 | i = s->handshake_func(s); | 1128 | i = s->internal->handshake_func(s); |
1129 | if (i < 0) | 1129 | if (i < 0) |
1130 | return (i); | 1130 | return (i); |
1131 | if (i == 0) { | 1131 | if (i == 0) { |
@@ -1422,12 +1422,12 @@ dtls1_dispatch_alert(SSL *s) | |||
1422 | ) | 1422 | ) |
1423 | (void)BIO_flush(s->wbio); | 1423 | (void)BIO_flush(s->wbio); |
1424 | 1424 | ||
1425 | if (s->msg_callback) | 1425 | if (s->internal->msg_callback) |
1426 | s->msg_callback(1, s->version, SSL3_RT_ALERT, | 1426 | s->internal->msg_callback(1, s->version, SSL3_RT_ALERT, |
1427 | s->s3->send_alert, 2, s, s->msg_callback_arg); | 1427 | s->s3->send_alert, 2, s, s->internal->msg_callback_arg); |
1428 | 1428 | ||
1429 | if (s->info_callback != NULL) | 1429 | if (s->internal->info_callback != NULL) |
1430 | cb = s->info_callback; | 1430 | cb = s->internal->info_callback; |
1431 | else if (s->ctx->internal->info_callback != NULL) | 1431 | else if (s->ctx->internal->info_callback != NULL) |
1432 | cb = s->ctx->internal->info_callback; | 1432 | cb = s->ctx->internal->info_callback; |
1433 | 1433 | ||
diff --git a/src/lib/libssl/d1_srvr.c b/src/lib/libssl/d1_srvr.c index 28a4442445..80af8eb930 100644 --- a/src/lib/libssl/d1_srvr.c +++ b/src/lib/libssl/d1_srvr.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: d1_srvr.c,v 1.74 2017/01/23 04:15:28 jsing Exp $ */ | 1 | /* $OpenBSD: d1_srvr.c,v 1.75 2017/01/23 04:55:26 beck Exp $ */ |
2 | /* | 2 | /* |
3 | * DTLS implementation written by Nagendra Modadugu | 3 | * DTLS implementation written by Nagendra Modadugu |
4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. | 4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. |
@@ -188,15 +188,15 @@ dtls1_accept(SSL *s) | |||
188 | ERR_clear_error(); | 188 | ERR_clear_error(); |
189 | errno = 0; | 189 | errno = 0; |
190 | 190 | ||
191 | if (s->info_callback != NULL) | 191 | if (s->internal->info_callback != NULL) |
192 | cb = s->info_callback; | 192 | cb = s->internal->info_callback; |
193 | else if (s->ctx->internal->info_callback != NULL) | 193 | else if (s->ctx->internal->info_callback != NULL) |
194 | cb = s->ctx->internal->info_callback; | 194 | cb = s->ctx->internal->info_callback; |
195 | 195 | ||
196 | listen = D1I(s)->listen; | 196 | listen = D1I(s)->listen; |
197 | 197 | ||
198 | /* init things to blank */ | 198 | /* init things to blank */ |
199 | s->in_handshake++; | 199 | s->internal->in_handshake++; |
200 | if (!SSL_in_init(s) || SSL_in_before(s)) | 200 | if (!SSL_in_init(s) || SSL_in_before(s)) |
201 | SSL_clear(s); | 201 | SSL_clear(s); |
202 | 202 | ||
@@ -643,7 +643,7 @@ dtls1_accept(SSL *s) | |||
643 | 643 | ||
644 | s->ctx->internal->stats.sess_accept_good++; | 644 | s->ctx->internal->stats.sess_accept_good++; |
645 | /* s->server=1; */ | 645 | /* s->server=1; */ |
646 | s->handshake_func = dtls1_accept; | 646 | s->internal->handshake_func = dtls1_accept; |
647 | 647 | ||
648 | if (cb != NULL) | 648 | if (cb != NULL) |
649 | cb(s, SSL_CB_HANDSHAKE_DONE, 1); | 649 | cb(s, SSL_CB_HANDSHAKE_DONE, 1); |
@@ -684,7 +684,7 @@ dtls1_accept(SSL *s) | |||
684 | end: | 684 | end: |
685 | /* BIO_flush(s->wbio); */ | 685 | /* BIO_flush(s->wbio); */ |
686 | 686 | ||
687 | s->in_handshake--; | 687 | s->internal->in_handshake--; |
688 | 688 | ||
689 | if (cb != NULL) | 689 | if (cb != NULL) |
690 | cb(s, SSL_CB_ACCEPT_EXIT, ret); | 690 | cb(s, SSL_CB_ACCEPT_EXIT, ret); |
diff --git a/src/lib/libssl/s23_clnt.c b/src/lib/libssl/s23_clnt.c index 56c1d53707..aec215d29a 100644 --- a/src/lib/libssl/s23_clnt.c +++ b/src/lib/libssl/s23_clnt.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s23_clnt.c,v 1.51 2017/01/23 04:15:28 jsing Exp $ */ | 1 | /* $OpenBSD: s23_clnt.c,v 1.52 2017/01/23 04:55:26 beck Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -130,12 +130,12 @@ ssl23_connect(SSL *s) | |||
130 | ERR_clear_error(); | 130 | ERR_clear_error(); |
131 | errno = 0; | 131 | errno = 0; |
132 | 132 | ||
133 | if (s->info_callback != NULL) | 133 | if (s->internal->info_callback != NULL) |
134 | cb = s->info_callback; | 134 | cb = s->internal->info_callback; |
135 | else if (s->ctx->internal->info_callback != NULL) | 135 | else if (s->ctx->internal->info_callback != NULL) |
136 | cb = s->ctx->internal->info_callback; | 136 | cb = s->ctx->internal->info_callback; |
137 | 137 | ||
138 | s->in_handshake++; | 138 | s->internal->in_handshake++; |
139 | if (!SSL_in_init(s) || SSL_in_before(s)) | 139 | if (!SSL_in_init(s) || SSL_in_before(s)) |
140 | SSL_clear(s); | 140 | SSL_clear(s); |
141 | 141 | ||
@@ -218,7 +218,7 @@ ssl23_connect(SSL *s) | |||
218 | } | 218 | } |
219 | 219 | ||
220 | end: | 220 | end: |
221 | s->in_handshake--; | 221 | s->internal->in_handshake--; |
222 | if (cb != NULL) | 222 | if (cb != NULL) |
223 | cb(s, SSL_CB_CONNECT_EXIT, ret); | 223 | cb(s, SSL_CB_CONNECT_EXIT, ret); |
224 | 224 | ||
@@ -332,10 +332,10 @@ ssl23_client_hello(SSL *s) | |||
332 | /* SSL3_ST_CW_CLNT_HELLO_B */ | 332 | /* SSL3_ST_CW_CLNT_HELLO_B */ |
333 | ret = ssl23_write_bytes(s); | 333 | ret = ssl23_write_bytes(s); |
334 | 334 | ||
335 | if ((ret >= 2) && s->msg_callback) { | 335 | if ((ret >= 2) && s->internal->msg_callback) { |
336 | /* Client Hello has been sent; tell msg_callback */ | 336 | /* Client Hello has been sent; tell msg_callback */ |
337 | s->msg_callback(1, s->client_version, SSL3_RT_HANDSHAKE, | 337 | s->internal->msg_callback(1, s->client_version, SSL3_RT_HANDSHAKE, |
338 | s->init_buf->data + 5, ret - 5, s, s->msg_callback_arg); | 338 | s->init_buf->data + 5, ret - 5, s, s->internal->msg_callback_arg); |
339 | } | 339 | } |
340 | 340 | ||
341 | return ret; | 341 | return ret; |
@@ -394,8 +394,8 @@ ssl23_get_server_hello(SSL *s) | |||
394 | void (*cb)(const SSL *ssl, int type, int val) = NULL; | 394 | void (*cb)(const SSL *ssl, int type, int val) = NULL; |
395 | int j; | 395 | int j; |
396 | 396 | ||
397 | if (s->info_callback != NULL) | 397 | if (s->internal->info_callback != NULL) |
398 | cb = s->info_callback; | 398 | cb = s->internal->info_callback; |
399 | else if (s->ctx->internal->info_callback != NULL) | 399 | else if (s->ctx->internal->info_callback != NULL) |
400 | cb = s->ctx->internal->info_callback; | 400 | cb = s->ctx->internal->info_callback; |
401 | 401 | ||
@@ -405,9 +405,9 @@ ssl23_get_server_hello(SSL *s) | |||
405 | cb(s, SSL_CB_READ_ALERT, j); | 405 | cb(s, SSL_CB_READ_ALERT, j); |
406 | } | 406 | } |
407 | 407 | ||
408 | if (s->msg_callback) | 408 | if (s->internal->msg_callback) |
409 | s->msg_callback(0, s->version, SSL3_RT_ALERT, | 409 | s->internal->msg_callback(0, s->version, SSL3_RT_ALERT, |
410 | p + 5, 2, s, s->msg_callback_arg); | 410 | p + 5, 2, s, s->internal->msg_callback_arg); |
411 | 411 | ||
412 | s->rwstate = SSL_NOTHING; | 412 | s->rwstate = SSL_NOTHING; |
413 | SSLerr(SSL_F_SSL23_GET_SERVER_HELLO, | 413 | SSLerr(SSL_F_SSL23_GET_SERVER_HELLO, |
@@ -433,7 +433,7 @@ ssl23_get_server_hello(SSL *s) | |||
433 | s->s3->rbuf.left = n; | 433 | s->s3->rbuf.left = n; |
434 | s->s3->rbuf.offset = 0; | 434 | s->s3->rbuf.offset = 0; |
435 | 435 | ||
436 | s->handshake_func = s->method->ssl_connect; | 436 | s->internal->handshake_func = s->method->ssl_connect; |
437 | } else { | 437 | } else { |
438 | SSLerr(SSL_F_SSL23_GET_SERVER_HELLO, SSL_R_UNKNOWN_PROTOCOL); | 438 | SSLerr(SSL_F_SSL23_GET_SERVER_HELLO, SSL_R_UNKNOWN_PROTOCOL); |
439 | goto err; | 439 | goto err; |
diff --git a/src/lib/libssl/s23_lib.c b/src/lib/libssl/s23_lib.c index cd594aa3c9..5de30c69e6 100644 --- a/src/lib/libssl/s23_lib.c +++ b/src/lib/libssl/s23_lib.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s23_lib.c,v 1.18 2014/11/16 14:12:47 jsing Exp $ */ | 1 | /* $OpenBSD: s23_lib.c,v 1.19 2017/01/23 04:55:26 beck Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -74,8 +74,8 @@ ssl23_read(SSL *s, void *buf, int len) | |||
74 | int n; | 74 | int n; |
75 | 75 | ||
76 | errno = 0; | 76 | errno = 0; |
77 | if (SSL_in_init(s) && (!s->in_handshake)) { | 77 | if (SSL_in_init(s) && (!s->internal->in_handshake)) { |
78 | n = s->handshake_func(s); | 78 | n = s->internal->handshake_func(s); |
79 | if (n < 0) | 79 | if (n < 0) |
80 | return (n); | 80 | return (n); |
81 | if (n == 0) { | 81 | if (n == 0) { |
@@ -95,8 +95,8 @@ ssl23_peek(SSL *s, void *buf, int len) | |||
95 | int n; | 95 | int n; |
96 | 96 | ||
97 | errno = 0; | 97 | errno = 0; |
98 | if (SSL_in_init(s) && (!s->in_handshake)) { | 98 | if (SSL_in_init(s) && (!s->internal->in_handshake)) { |
99 | n = s->handshake_func(s); | 99 | n = s->internal->handshake_func(s); |
100 | if (n < 0) | 100 | if (n < 0) |
101 | return (n); | 101 | return (n); |
102 | if (n == 0) { | 102 | if (n == 0) { |
@@ -116,8 +116,8 @@ ssl23_write(SSL *s, const void *buf, int len) | |||
116 | int n; | 116 | int n; |
117 | 117 | ||
118 | errno = 0; | 118 | errno = 0; |
119 | if (SSL_in_init(s) && (!s->in_handshake)) { | 119 | if (SSL_in_init(s) && (!s->internal->in_handshake)) { |
120 | n = s->handshake_func(s); | 120 | n = s->internal->handshake_func(s); |
121 | if (n < 0) | 121 | if (n < 0) |
122 | return (n); | 122 | return (n); |
123 | if (n == 0) { | 123 | if (n == 0) { |
diff --git a/src/lib/libssl/s23_srvr.c b/src/lib/libssl/s23_srvr.c index 88ff9bb9a8..79c2eee521 100644 --- a/src/lib/libssl/s23_srvr.c +++ b/src/lib/libssl/s23_srvr.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s23_srvr.c,v 1.52 2017/01/23 04:15:28 jsing Exp $ */ | 1 | /* $OpenBSD: s23_srvr.c,v 1.53 2017/01/23 04:55:26 beck Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -129,12 +129,12 @@ ssl23_accept(SSL *s) | |||
129 | ERR_clear_error(); | 129 | ERR_clear_error(); |
130 | errno = 0; | 130 | errno = 0; |
131 | 131 | ||
132 | if (s->info_callback != NULL) | 132 | if (s->internal->info_callback != NULL) |
133 | cb = s->info_callback; | 133 | cb = s->internal->info_callback; |
134 | else if (s->ctx->internal->info_callback != NULL) | 134 | else if (s->ctx->internal->info_callback != NULL) |
135 | cb = s->ctx->internal->info_callback; | 135 | cb = s->ctx->internal->info_callback; |
136 | 136 | ||
137 | s->in_handshake++; | 137 | s->internal->in_handshake++; |
138 | if (!SSL_in_init(s) || SSL_in_before(s)) | 138 | if (!SSL_in_init(s) || SSL_in_before(s)) |
139 | SSL_clear(s); | 139 | SSL_clear(s); |
140 | 140 | ||
@@ -194,7 +194,7 @@ ssl23_accept(SSL *s) | |||
194 | } | 194 | } |
195 | 195 | ||
196 | end: | 196 | end: |
197 | s->in_handshake--; | 197 | s->internal->in_handshake--; |
198 | if (cb != NULL) | 198 | if (cb != NULL) |
199 | cb(s, SSL_CB_ACCEPT_EXIT, ret); | 199 | cb(s, SSL_CB_ACCEPT_EXIT, ret); |
200 | 200 | ||
@@ -345,9 +345,9 @@ ssl23_get_client_hello(SSL *s) | |||
345 | return -1; | 345 | return -1; |
346 | 346 | ||
347 | tls1_finish_mac(s, s->packet + 2, s->packet_length - 2); | 347 | tls1_finish_mac(s, s->packet + 2, s->packet_length - 2); |
348 | if (s->msg_callback) | 348 | if (s->internal->msg_callback) |
349 | s->msg_callback(0, SSL2_VERSION, 0, s->packet + 2, | 349 | s->internal->msg_callback(0, SSL2_VERSION, 0, s->packet + 2, |
350 | s->packet_length - 2, s, s->msg_callback_arg); | 350 | s->packet_length - 2, s, s->internal->msg_callback_arg); |
351 | 351 | ||
352 | p = s->packet; | 352 | p = s->packet; |
353 | p += 5; | 353 | p += 5; |
@@ -450,7 +450,7 @@ ssl23_get_client_hello(SSL *s) | |||
450 | s->method = TLSv1_server_method(); | 450 | s->method = TLSv1_server_method(); |
451 | else | 451 | else |
452 | goto unsupported; | 452 | goto unsupported; |
453 | s->handshake_func = s->method->ssl_accept; | 453 | s->internal->handshake_func = s->method->ssl_accept; |
454 | } else { | 454 | } else { |
455 | /* bad, very bad */ | 455 | /* bad, very bad */ |
456 | SSLerr(SSL_F_SSL23_GET_CLIENT_HELLO, SSL_R_UNKNOWN_PROTOCOL); | 456 | SSLerr(SSL_F_SSL23_GET_CLIENT_HELLO, SSL_R_UNKNOWN_PROTOCOL); |
diff --git a/src/lib/libssl/s3_both.c b/src/lib/libssl/s3_both.c index 7381286326..4dddcd232a 100644 --- a/src/lib/libssl/s3_both.c +++ b/src/lib/libssl/s3_both.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s3_both.c,v 1.51 2017/01/22 09:02:07 jsing Exp $ */ | 1 | /* $OpenBSD: s3_both.c,v 1.52 2017/01/23 04:55:26 beck Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -150,10 +150,10 @@ ssl3_do_write(SSL *s, int type) | |||
150 | (unsigned char *)&s->init_buf->data[s->init_off], ret); | 150 | (unsigned char *)&s->init_buf->data[s->init_off], ret); |
151 | 151 | ||
152 | if (ret == s->init_num) { | 152 | if (ret == s->init_num) { |
153 | if (s->msg_callback) | 153 | if (s->internal->msg_callback) |
154 | s->msg_callback(1, s->version, type, s->init_buf->data, | 154 | s->internal->msg_callback(1, s->version, type, s->init_buf->data, |
155 | (size_t)(s->init_off + s->init_num), s, | 155 | (size_t)(s->init_off + s->init_num), s, |
156 | s->msg_callback_arg); | 156 | s->internal->msg_callback_arg); |
157 | return (1); | 157 | return (1); |
158 | } | 158 | } |
159 | 159 | ||
@@ -461,10 +461,10 @@ ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok) | |||
461 | s->init_num = 0; | 461 | s->init_num = 0; |
462 | skip_message = 1; | 462 | skip_message = 1; |
463 | 463 | ||
464 | if (s->msg_callback) | 464 | if (s->internal->msg_callback) |
465 | s->msg_callback(0, s->version, | 465 | s->internal->msg_callback(0, s->version, |
466 | SSL3_RT_HANDSHAKE, p, 4, s, | 466 | SSL3_RT_HANDSHAKE, p, 4, s, |
467 | s->msg_callback_arg); | 467 | s->internal->msg_callback_arg); |
468 | } | 468 | } |
469 | } | 469 | } |
470 | } while (skip_message); | 470 | } while (skip_message); |
@@ -525,10 +525,10 @@ ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok) | |||
525 | 525 | ||
526 | /* Feed this message into MAC computation. */ | 526 | /* Feed this message into MAC computation. */ |
527 | tls1_finish_mac(s, (unsigned char *)s->init_buf->data, s->init_num + 4); | 527 | tls1_finish_mac(s, (unsigned char *)s->init_buf->data, s->init_num + 4); |
528 | if (s->msg_callback) | 528 | if (s->internal->msg_callback) |
529 | s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, | 529 | s->internal->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, |
530 | s->init_buf->data, (size_t)s->init_num + 4, s, | 530 | s->init_buf->data, (size_t)s->init_num + 4, s, |
531 | s->msg_callback_arg); | 531 | s->internal->msg_callback_arg); |
532 | 532 | ||
533 | *ok = 1; | 533 | *ok = 1; |
534 | return (s->init_num); | 534 | return (s->init_num); |
diff --git a/src/lib/libssl/s3_clnt.c b/src/lib/libssl/s3_clnt.c index 54833ded27..c606091e10 100644 --- a/src/lib/libssl/s3_clnt.c +++ b/src/lib/libssl/s3_clnt.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s3_clnt.c,v 1.165 2017/01/23 04:15:28 jsing Exp $ */ | 1 | /* $OpenBSD: s3_clnt.c,v 1.166 2017/01/23 04:55:26 beck Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -183,12 +183,12 @@ ssl3_connect(SSL *s) | |||
183 | ERR_clear_error(); | 183 | ERR_clear_error(); |
184 | errno = 0; | 184 | errno = 0; |
185 | 185 | ||
186 | if (s->info_callback != NULL) | 186 | if (s->internal->info_callback != NULL) |
187 | cb = s->info_callback; | 187 | cb = s->internal->info_callback; |
188 | else if (s->ctx->internal->info_callback != NULL) | 188 | else if (s->ctx->internal->info_callback != NULL) |
189 | cb = s->ctx->internal->info_callback; | 189 | cb = s->ctx->internal->info_callback; |
190 | 190 | ||
191 | s->in_handshake++; | 191 | s->internal->in_handshake++; |
192 | if (!SSL_in_init(s) || SSL_in_before(s)) | 192 | if (!SSL_in_init(s) || SSL_in_before(s)) |
193 | SSL_clear(s); | 193 | SSL_clear(s); |
194 | 194 | ||
@@ -543,7 +543,7 @@ ssl3_connect(SSL *s) | |||
543 | 543 | ||
544 | ret = 1; | 544 | ret = 1; |
545 | /* s->server=0; */ | 545 | /* s->server=0; */ |
546 | s->handshake_func = ssl3_connect; | 546 | s->internal->handshake_func = ssl3_connect; |
547 | s->ctx->internal->stats.sess_connect_good++; | 547 | s->ctx->internal->stats.sess_connect_good++; |
548 | 548 | ||
549 | if (cb != NULL) | 549 | if (cb != NULL) |
@@ -578,7 +578,7 @@ ssl3_connect(SSL *s) | |||
578 | } | 578 | } |
579 | 579 | ||
580 | end: | 580 | end: |
581 | s->in_handshake--; | 581 | s->internal->in_handshake--; |
582 | if (cb != NULL) | 582 | if (cb != NULL) |
583 | cb(s, SSL_CB_CONNECT_EXIT, ret); | 583 | cb(s, SSL_CB_CONNECT_EXIT, ret); |
584 | 584 | ||
@@ -800,12 +800,12 @@ ssl3_get_server_hello(SSL *s) | |||
800 | * Check if we want to resume the session based on external | 800 | * Check if we want to resume the session based on external |
801 | * pre-shared secret. | 801 | * pre-shared secret. |
802 | */ | 802 | */ |
803 | if (s->tls_session_secret_cb) { | 803 | if (s->internal->tls_session_secret_cb) { |
804 | SSL_CIPHER *pref_cipher = NULL; | 804 | SSL_CIPHER *pref_cipher = NULL; |
805 | s->session->master_key_length = sizeof(s->session->master_key); | 805 | s->session->master_key_length = sizeof(s->session->master_key); |
806 | if (s->tls_session_secret_cb(s, s->session->master_key, | 806 | if (s->internal->tls_session_secret_cb(s, s->session->master_key, |
807 | &s->session->master_key_length, NULL, &pref_cipher, | 807 | &s->session->master_key_length, NULL, &pref_cipher, |
808 | s->tls_session_secret_cb_arg)) { | 808 | s->internal->tls_session_secret_cb_arg)) { |
809 | s->session->cipher = pref_cipher ? pref_cipher : | 809 | s->session->cipher = pref_cipher ? pref_cipher : |
810 | ssl3_get_cipher_by_value(cipher_suite); | 810 | ssl3_get_cipher_by_value(cipher_suite); |
811 | s->s3->flags |= SSL3_FLAGS_CCS_OK; | 811 | s->s3->flags |= SSL3_FLAGS_CCS_OK; |
diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c index 92f4c49aa8..8e52c8bb4a 100644 --- a/src/lib/libssl/s3_lib.c +++ b/src/lib/libssl/s3_lib.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s3_lib.c,v 1.122 2017/01/23 04:15:28 jsing Exp $ */ | 1 | /* $OpenBSD: s3_lib.c,v 1.123 2017/01/23 04:55:26 beck Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -2102,7 +2102,7 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg) | |||
2102 | } | 2102 | } |
2103 | break; | 2103 | break; |
2104 | case SSL_CTRL_SET_TLSEXT_DEBUG_ARG: | 2104 | case SSL_CTRL_SET_TLSEXT_DEBUG_ARG: |
2105 | s->tlsext_debug_arg = parg; | 2105 | s->internal->tlsext_debug_arg = parg; |
2106 | ret = 1; | 2106 | ret = 1; |
2107 | break; | 2107 | break; |
2108 | 2108 | ||
@@ -2181,7 +2181,7 @@ ssl3_callback_ctrl(SSL *s, int cmd, void (*fp)(void)) | |||
2181 | s->cert->ecdh_tmp_cb = (EC_KEY *(*)(SSL *, int, int))fp; | 2181 | s->cert->ecdh_tmp_cb = (EC_KEY *(*)(SSL *, int, int))fp; |
2182 | break; | 2182 | break; |
2183 | case SSL_CTRL_SET_TLSEXT_DEBUG_CB: | 2183 | case SSL_CTRL_SET_TLSEXT_DEBUG_CB: |
2184 | s->tlsext_debug_cb = (void (*)(SSL *, int , int, | 2184 | s->internal->tlsext_debug_cb = (void (*)(SSL *, int , int, |
2185 | unsigned char *, int, void *))fp; | 2185 | unsigned char *, int, void *))fp; |
2186 | break; | 2186 | break; |
2187 | default: | 2187 | default: |
@@ -2614,16 +2614,16 @@ ssl3_read_internal(SSL *s, void *buf, int len, int peek) | |||
2614 | SSL3_RT_APPLICATION_DATA, buf, len, peek); | 2614 | SSL3_RT_APPLICATION_DATA, buf, len, peek); |
2615 | if ((ret == -1) && (S3I(s)->in_read_app_data == 2)) { | 2615 | if ((ret == -1) && (S3I(s)->in_read_app_data == 2)) { |
2616 | /* | 2616 | /* |
2617 | * ssl3_read_bytes decided to call s->handshake_func, which | 2617 | * ssl3_read_bytes decided to call s->internal->handshake_func, which |
2618 | * called ssl3_read_bytes to read handshake data. | 2618 | * called ssl3_read_bytes to read handshake data. |
2619 | * However, ssl3_read_bytes actually found application data | 2619 | * However, ssl3_read_bytes actually found application data |
2620 | * and thinks that application data makes sense here; so disable | 2620 | * and thinks that application data makes sense here; so disable |
2621 | * handshake processing and try to read application data again. | 2621 | * handshake processing and try to read application data again. |
2622 | */ | 2622 | */ |
2623 | s->in_handshake++; | 2623 | s->internal->in_handshake++; |
2624 | ret = s->method->ssl_read_bytes(s, | 2624 | ret = s->method->ssl_read_bytes(s, |
2625 | SSL3_RT_APPLICATION_DATA, buf, len, peek); | 2625 | SSL3_RT_APPLICATION_DATA, buf, len, peek); |
2626 | s->in_handshake--; | 2626 | s->internal->in_handshake--; |
2627 | } else | 2627 | } else |
2628 | S3I(s)->in_read_app_data = 0; | 2628 | S3I(s)->in_read_app_data = 0; |
2629 | 2629 | ||
@@ -2645,7 +2645,7 @@ ssl3_peek(SSL *s, void *buf, int len) | |||
2645 | int | 2645 | int |
2646 | ssl3_renegotiate(SSL *s) | 2646 | ssl3_renegotiate(SSL *s) |
2647 | { | 2647 | { |
2648 | if (s->handshake_func == NULL) | 2648 | if (s->internal->handshake_func == NULL) |
2649 | return (1); | 2649 | return (1); |
2650 | 2650 | ||
2651 | if (s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS) | 2651 | if (s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS) |
diff --git a/src/lib/libssl/s3_pkt.c b/src/lib/libssl/s3_pkt.c index a1d0ef9299..004ede2ef0 100644 --- a/src/lib/libssl/s3_pkt.c +++ b/src/lib/libssl/s3_pkt.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s3_pkt.c,v 1.62 2017/01/23 04:15:28 jsing Exp $ */ | 1 | /* $OpenBSD: s3_pkt.c,v 1.63 2017/01/23 04:55:26 beck Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -513,8 +513,8 @@ ssl3_write_bytes(SSL *s, int type, const void *buf_, int len) | |||
513 | tot = S3I(s)->wnum; | 513 | tot = S3I(s)->wnum; |
514 | S3I(s)->wnum = 0; | 514 | S3I(s)->wnum = 0; |
515 | 515 | ||
516 | if (SSL_in_init(s) && !s->in_handshake) { | 516 | if (SSL_in_init(s) && !s->internal->in_handshake) { |
517 | i = s->handshake_func(s); | 517 | i = s->internal->handshake_func(s); |
518 | if (i < 0) | 518 | if (i < 0) |
519 | return (i); | 519 | return (i); |
520 | if (i == 0) { | 520 | if (i == 0) { |
@@ -886,9 +886,9 @@ ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek) | |||
886 | * Now S3I(s)->handshake_fragment_len == 0 if | 886 | * Now S3I(s)->handshake_fragment_len == 0 if |
887 | * type == SSL3_RT_HANDSHAKE. | 887 | * type == SSL3_RT_HANDSHAKE. |
888 | */ | 888 | */ |
889 | if (!s->in_handshake && SSL_in_init(s)) { | 889 | if (!s->internal->in_handshake && SSL_in_init(s)) { |
890 | /* type == SSL3_RT_APPLICATION_DATA */ | 890 | /* type == SSL3_RT_APPLICATION_DATA */ |
891 | i = s->handshake_func(s); | 891 | i = s->internal->handshake_func(s); |
892 | if (i < 0) | 892 | if (i < 0) |
893 | return (i); | 893 | return (i); |
894 | if (i == 0) { | 894 | if (i == 0) { |
@@ -1049,17 +1049,17 @@ start: | |||
1049 | goto f_err; | 1049 | goto f_err; |
1050 | } | 1050 | } |
1051 | 1051 | ||
1052 | if (s->msg_callback) | 1052 | if (s->internal->msg_callback) |
1053 | s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, | 1053 | s->internal->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, |
1054 | S3I(s)->handshake_fragment, 4, s, | 1054 | S3I(s)->handshake_fragment, 4, s, |
1055 | s->msg_callback_arg); | 1055 | s->internal->msg_callback_arg); |
1056 | 1056 | ||
1057 | if (SSL_is_init_finished(s) && | 1057 | if (SSL_is_init_finished(s) && |
1058 | !(s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS) && | 1058 | !(s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS) && |
1059 | !S3I(s)->renegotiate) { | 1059 | !S3I(s)->renegotiate) { |
1060 | ssl3_renegotiate(s); | 1060 | ssl3_renegotiate(s); |
1061 | if (ssl3_renegotiate_check(s)) { | 1061 | if (ssl3_renegotiate_check(s)) { |
1062 | i = s->handshake_func(s); | 1062 | i = s->internal->handshake_func(s); |
1063 | if (i < 0) | 1063 | if (i < 0) |
1064 | return (i); | 1064 | return (i); |
1065 | if (i == 0) { | 1065 | if (i == 0) { |
@@ -1109,12 +1109,12 @@ start: | |||
1109 | 1109 | ||
1110 | S3I(s)->alert_fragment_len = 0; | 1110 | S3I(s)->alert_fragment_len = 0; |
1111 | 1111 | ||
1112 | if (s->msg_callback) | 1112 | if (s->internal->msg_callback) |
1113 | s->msg_callback(0, s->version, SSL3_RT_ALERT, | 1113 | s->internal->msg_callback(0, s->version, SSL3_RT_ALERT, |
1114 | S3I(s)->alert_fragment, 2, s, s->msg_callback_arg); | 1114 | S3I(s)->alert_fragment, 2, s, s->internal->msg_callback_arg); |
1115 | 1115 | ||
1116 | if (s->info_callback != NULL) | 1116 | if (s->internal->info_callback != NULL) |
1117 | cb = s->info_callback; | 1117 | cb = s->internal->info_callback; |
1118 | else if (s->ctx->internal->info_callback != NULL) | 1118 | else if (s->ctx->internal->info_callback != NULL) |
1119 | cb = s->ctx->internal->info_callback; | 1119 | cb = s->ctx->internal->info_callback; |
1120 | 1120 | ||
@@ -1200,10 +1200,10 @@ start: | |||
1200 | 1200 | ||
1201 | rr->length = 0; | 1201 | rr->length = 0; |
1202 | 1202 | ||
1203 | if (s->msg_callback) { | 1203 | if (s->internal->msg_callback) { |
1204 | s->msg_callback(0, s->version, | 1204 | s->internal->msg_callback(0, s->version, |
1205 | SSL3_RT_CHANGE_CIPHER_SPEC, rr->data, 1, s, | 1205 | SSL3_RT_CHANGE_CIPHER_SPEC, rr->data, 1, s, |
1206 | s->msg_callback_arg); | 1206 | s->internal->msg_callback_arg); |
1207 | } | 1207 | } |
1208 | 1208 | ||
1209 | S3I(s)->change_cipher_spec = 1; | 1209 | S3I(s)->change_cipher_spec = 1; |
@@ -1214,14 +1214,14 @@ start: | |||
1214 | } | 1214 | } |
1215 | 1215 | ||
1216 | /* Unexpected handshake message (Client Hello, or protocol violation) */ | 1216 | /* Unexpected handshake message (Client Hello, or protocol violation) */ |
1217 | if ((S3I(s)->handshake_fragment_len >= 4) && !s->in_handshake) { | 1217 | if ((S3I(s)->handshake_fragment_len >= 4) && !s->internal->in_handshake) { |
1218 | if (((s->state&SSL_ST_MASK) == SSL_ST_OK) && | 1218 | if (((s->state&SSL_ST_MASK) == SSL_ST_OK) && |
1219 | !(s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS)) { | 1219 | !(s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS)) { |
1220 | s->state = s->server ? SSL_ST_ACCEPT : SSL_ST_CONNECT; | 1220 | s->state = s->server ? SSL_ST_ACCEPT : SSL_ST_CONNECT; |
1221 | s->renegotiate = 1; | 1221 | s->renegotiate = 1; |
1222 | s->new_session = 1; | 1222 | s->new_session = 1; |
1223 | } | 1223 | } |
1224 | i = s->handshake_func(s); | 1224 | i = s->internal->handshake_func(s); |
1225 | if (i < 0) | 1225 | if (i < 0) |
1226 | return (i); | 1226 | return (i); |
1227 | if (i == 0) { | 1227 | if (i == 0) { |
@@ -1265,7 +1265,7 @@ start: | |||
1265 | case SSL3_RT_ALERT: | 1265 | case SSL3_RT_ALERT: |
1266 | case SSL3_RT_HANDSHAKE: | 1266 | case SSL3_RT_HANDSHAKE: |
1267 | /* we already handled all of these, with the possible exception | 1267 | /* we already handled all of these, with the possible exception |
1268 | * of SSL3_RT_HANDSHAKE when s->in_handshake is set, but that | 1268 | * of SSL3_RT_HANDSHAKE when s->internal->in_handshake is set, but that |
1269 | * should not happen when type != rr->type */ | 1269 | * should not happen when type != rr->type */ |
1270 | al = SSL_AD_UNEXPECTED_MESSAGE; | 1270 | al = SSL_AD_UNEXPECTED_MESSAGE; |
1271 | SSLerr(SSL_F_SSL3_READ_BYTES, ERR_R_INTERNAL_ERROR); | 1271 | SSLerr(SSL_F_SSL3_READ_BYTES, ERR_R_INTERNAL_ERROR); |
@@ -1391,12 +1391,12 @@ ssl3_dispatch_alert(SSL *s) | |||
1391 | if (s->s3->send_alert[0] == SSL3_AL_FATAL) | 1391 | if (s->s3->send_alert[0] == SSL3_AL_FATAL) |
1392 | (void)BIO_flush(s->wbio); | 1392 | (void)BIO_flush(s->wbio); |
1393 | 1393 | ||
1394 | if (s->msg_callback) | 1394 | if (s->internal->msg_callback) |
1395 | s->msg_callback(1, s->version, SSL3_RT_ALERT, | 1395 | s->internal->msg_callback(1, s->version, SSL3_RT_ALERT, |
1396 | s->s3->send_alert, 2, s, s->msg_callback_arg); | 1396 | s->s3->send_alert, 2, s, s->internal->msg_callback_arg); |
1397 | 1397 | ||
1398 | if (s->info_callback != NULL) | 1398 | if (s->internal->info_callback != NULL) |
1399 | cb = s->info_callback; | 1399 | cb = s->internal->info_callback; |
1400 | else if (s->ctx->internal->info_callback != NULL) | 1400 | else if (s->ctx->internal->info_callback != NULL) |
1401 | cb = s->ctx->internal->info_callback; | 1401 | cb = s->ctx->internal->info_callback; |
1402 | 1402 | ||
diff --git a/src/lib/libssl/s3_srvr.c b/src/lib/libssl/s3_srvr.c index 3f53f27924..21849487ea 100644 --- a/src/lib/libssl/s3_srvr.c +++ b/src/lib/libssl/s3_srvr.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s3_srvr.c,v 1.144 2017/01/23 04:15:28 jsing Exp $ */ | 1 | /* $OpenBSD: s3_srvr.c,v 1.145 2017/01/23 04:55:27 beck Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -178,13 +178,13 @@ ssl3_accept(SSL *s) | |||
178 | ERR_clear_error(); | 178 | ERR_clear_error(); |
179 | errno = 0; | 179 | errno = 0; |
180 | 180 | ||
181 | if (s->info_callback != NULL) | 181 | if (s->internal->info_callback != NULL) |
182 | cb = s->info_callback; | 182 | cb = s->internal->info_callback; |
183 | else if (s->ctx->internal->info_callback != NULL) | 183 | else if (s->ctx->internal->info_callback != NULL) |
184 | cb = s->ctx->internal->info_callback; | 184 | cb = s->ctx->internal->info_callback; |
185 | 185 | ||
186 | /* init things to blank */ | 186 | /* init things to blank */ |
187 | s->in_handshake++; | 187 | s->internal->in_handshake++; |
188 | if (!SSL_in_init(s) || SSL_in_before(s)) | 188 | if (!SSL_in_init(s) || SSL_in_before(s)) |
189 | SSL_clear(s); | 189 | SSL_clear(s); |
190 | 190 | ||
@@ -662,7 +662,7 @@ ssl3_accept(SSL *s) | |||
662 | 662 | ||
663 | s->ctx->internal->stats.sess_accept_good++; | 663 | s->ctx->internal->stats.sess_accept_good++; |
664 | /* s->server=1; */ | 664 | /* s->server=1; */ |
665 | s->handshake_func = ssl3_accept; | 665 | s->internal->handshake_func = ssl3_accept; |
666 | 666 | ||
667 | if (cb != NULL) | 667 | if (cb != NULL) |
668 | cb(s, SSL_CB_HANDSHAKE_DONE, 1); | 668 | cb(s, SSL_CB_HANDSHAKE_DONE, 1); |
@@ -699,7 +699,7 @@ ssl3_accept(SSL *s) | |||
699 | end: | 699 | end: |
700 | /* BIO_flush(s->wbio); */ | 700 | /* BIO_flush(s->wbio); */ |
701 | 701 | ||
702 | s->in_handshake--; | 702 | s->internal->in_handshake--; |
703 | if (cb != NULL) | 703 | if (cb != NULL) |
704 | cb(s, SSL_CB_ACCEPT_EXIT, ret); | 704 | cb(s, SSL_CB_ACCEPT_EXIT, ret); |
705 | return (ret); | 705 | return (ret); |
@@ -976,13 +976,13 @@ ssl3_get_client_hello(SSL *s) | |||
976 | */ | 976 | */ |
977 | arc4random_buf(s->s3->server_random, SSL3_RANDOM_SIZE); | 977 | arc4random_buf(s->s3->server_random, SSL3_RANDOM_SIZE); |
978 | 978 | ||
979 | if (!s->hit && s->tls_session_secret_cb) { | 979 | if (!s->hit && s->internal->tls_session_secret_cb) { |
980 | SSL_CIPHER *pref_cipher = NULL; | 980 | SSL_CIPHER *pref_cipher = NULL; |
981 | 981 | ||
982 | s->session->master_key_length = sizeof(s->session->master_key); | 982 | s->session->master_key_length = sizeof(s->session->master_key); |
983 | if (s->tls_session_secret_cb(s, s->session->master_key, | 983 | if (s->internal->tls_session_secret_cb(s, s->session->master_key, |
984 | &s->session->master_key_length, ciphers, &pref_cipher, | 984 | &s->session->master_key_length, ciphers, &pref_cipher, |
985 | s->tls_session_secret_cb_arg)) { | 985 | s->internal->tls_session_secret_cb_arg)) { |
986 | s->hit = 1; | 986 | s->hit = 1; |
987 | s->session->ciphers = ciphers; | 987 | s->session->ciphers = ciphers; |
988 | s->session->verify_result = X509_V_OK; | 988 | s->session->verify_result = X509_V_OK; |
diff --git a/src/lib/libssl/ssl.h b/src/lib/libssl/ssl.h index 2d6a0e757d..4080af8999 100644 --- a/src/lib/libssl/ssl.h +++ b/src/lib/libssl/ssl.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl.h,v 1.110 2017/01/23 04:15:28 jsing Exp $ */ | 1 | /* $OpenBSD: ssl.h,v 1.111 2017/01/23 04:55:27 beck Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -908,10 +908,6 @@ struct ssl_st { | |||
908 | * in SSL_accept or SSL_connect */ | 908 | * in SSL_accept or SSL_connect */ |
909 | int rwstate; | 909 | int rwstate; |
910 | 910 | ||
911 | /* true when we are actually in SSL_accept() or SSL_connect() */ | ||
912 | int in_handshake; | ||
913 | int (*handshake_func)(SSL *); | ||
914 | |||
915 | /* Imagine that here's a boolean member "init" that is | 911 | /* Imagine that here's a boolean member "init" that is |
916 | * switched as soon as SSL_set_{accept/connect}_state | 912 | * switched as soon as SSL_set_{accept/connect}_state |
917 | * is called for the first time, so that "state" and | 913 | * is called for the first time, so that "state" and |
@@ -947,11 +943,6 @@ struct ssl_st { | |||
947 | int read_ahead; /* Read as many input bytes as possible | 943 | int read_ahead; /* Read as many input bytes as possible |
948 | * (for non-blocking reads) */ | 944 | * (for non-blocking reads) */ |
949 | 945 | ||
950 | /* callback that allows applications to peek at protocol messages */ | ||
951 | void (*msg_callback)(int write_p, int version, int content_type, | ||
952 | const void *buf, size_t len, SSL *ssl, void *arg); | ||
953 | void *msg_callback_arg; | ||
954 | |||
955 | int hit; /* reusing a previous session */ | 946 | int hit; /* reusing a previous session */ |
956 | 947 | ||
957 | X509_VERIFY_PARAM *param; | 948 | X509_VERIFY_PARAM *param; |
@@ -992,16 +983,9 @@ struct ssl_st { | |||
992 | /* This can also be in the session once a session is established */ | 983 | /* This can also be in the session once a session is established */ |
993 | SSL_SESSION *session; | 984 | SSL_SESSION *session; |
994 | 985 | ||
995 | /* Default generate session ID callback. */ | ||
996 | GEN_SESSION_CB generate_session_id; | ||
997 | |||
998 | /* Used in SSL2 and SSL3 */ | 986 | /* Used in SSL2 and SSL3 */ |
999 | int verify_mode; /* 0 don't care about verify failure. | 987 | int verify_mode; /* 0 don't care about verify failure. |
1000 | * 1 fail if verify fails */ | 988 | * 1 fail if verify fails */ |
1001 | int (*verify_callback)(int ok,X509_STORE_CTX *ctx); /* fail if callback returns 0 */ | ||
1002 | |||
1003 | void (*info_callback)(const SSL *ssl,int type,int val); /* optional informational callback */ | ||
1004 | |||
1005 | int error; /* error bytes to be written */ | 989 | int error; /* error bytes to be written */ |
1006 | int error_code; /* actual code */ | 990 | int error_code; /* actual code */ |
1007 | 991 | ||
@@ -1028,11 +1012,9 @@ struct ssl_st { | |||
1028 | int client_version; /* what was passed, used for | 1012 | int client_version; /* what was passed, used for |
1029 | * SSLv3/TLS rollback check */ | 1013 | * SSLv3/TLS rollback check */ |
1030 | unsigned int max_send_fragment; | 1014 | unsigned int max_send_fragment; |
1031 | /* TLS extension debug callback */ | 1015 | |
1032 | void (*tlsext_debug_cb)(SSL *s, int client_server, int type, | ||
1033 | unsigned char *data, int len, void *arg); | ||
1034 | void *tlsext_debug_arg; | ||
1035 | char *tlsext_hostname; | 1016 | char *tlsext_hostname; |
1017 | |||
1036 | int servername_done; /* no further mod of servername | 1018 | int servername_done; /* no further mod of servername |
1037 | 0 : call the servername extension callback. | 1019 | 0 : call the servername extension callback. |
1038 | 1 : prepare 2, allow last ack just after in server callback. | 1020 | 1 : prepare 2, allow last ack just after in server callback. |
@@ -1060,14 +1042,6 @@ struct ssl_st { | |||
1060 | /* TLS Session Ticket extension override */ | 1042 | /* TLS Session Ticket extension override */ |
1061 | TLS_SESSION_TICKET_EXT *tlsext_session_ticket; | 1043 | TLS_SESSION_TICKET_EXT *tlsext_session_ticket; |
1062 | 1044 | ||
1063 | /* TLS Session Ticket extension callback */ | ||
1064 | tls_session_ticket_ext_cb_fn tls_session_ticket_ext_cb; | ||
1065 | void *tls_session_ticket_ext_cb_arg; | ||
1066 | |||
1067 | /* TLS pre-shared secret session resumption */ | ||
1068 | tls_session_secret_cb_fn tls_session_secret_cb; | ||
1069 | void *tls_session_secret_cb_arg; | ||
1070 | |||
1071 | SSL_CTX * initial_ctx; /* initial ctx, used to store sessions */ | 1045 | SSL_CTX * initial_ctx; /* initial ctx, used to store sessions */ |
1072 | #define session_ctx initial_ctx | 1046 | #define session_ctx initial_ctx |
1073 | 1047 | ||
diff --git a/src/lib/libssl/ssl_cert.c b/src/lib/libssl/ssl_cert.c index 603deb4218..13591aec9c 100644 --- a/src/lib/libssl/ssl_cert.c +++ b/src/lib/libssl/ssl_cert.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_cert.c,v 1.55 2017/01/23 04:15:28 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_cert.c,v 1.56 2017/01/23 04:55:27 beck Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -440,8 +440,8 @@ ssl_verify_cert_chain(SSL *s, STACK_OF(X509) *sk) | |||
440 | */ | 440 | */ |
441 | X509_VERIFY_PARAM_set1(X509_STORE_CTX_get0_param(&ctx), s->param); | 441 | X509_VERIFY_PARAM_set1(X509_STORE_CTX_get0_param(&ctx), s->param); |
442 | 442 | ||
443 | if (s->verify_callback) | 443 | if (s->internal->verify_callback) |
444 | X509_STORE_CTX_set_verify_cb(&ctx, s->verify_callback); | 444 | X509_STORE_CTX_set_verify_cb(&ctx, s->internal->verify_callback); |
445 | 445 | ||
446 | if (s->ctx->internal->app_verify_callback != NULL) | 446 | if (s->ctx->internal->app_verify_callback != NULL) |
447 | ret = s->ctx->internal->app_verify_callback(&ctx, | 447 | ret = s->ctx->internal->app_verify_callback(&ctx, |
diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c index 6e3e042fe6..c9af96e48e 100644 --- a/src/lib/libssl/ssl_lib.c +++ b/src/lib/libssl/ssl_lib.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_lib.c,v 1.132 2017/01/23 04:15:28 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_lib.c,v 1.133 2017/01/23 04:55:27 beck Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -230,7 +230,7 @@ SSL_clear(SSL *s) | |||
230 | * Check to see if we were changed into a different method, if | 230 | * Check to see if we were changed into a different method, if |
231 | * so, revert back if we are not doing session-id reuse. | 231 | * so, revert back if we are not doing session-id reuse. |
232 | */ | 232 | */ |
233 | if (!s->in_handshake && (s->session == NULL) && | 233 | if (!s->internal->in_handshake && (s->session == NULL) && |
234 | (s->method != s->ctx->method)) { | 234 | (s->method != s->ctx->method)) { |
235 | s->method->ssl_free(s); | 235 | s->method->ssl_free(s); |
236 | s->method = s->ctx->method; | 236 | s->method = s->ctx->method; |
@@ -307,14 +307,14 @@ SSL_new(SSL_CTX *ctx) | |||
307 | s->cert=NULL; /* Cannot really happen (see SSL_CTX_new) */ | 307 | s->cert=NULL; /* Cannot really happen (see SSL_CTX_new) */ |
308 | 308 | ||
309 | s->read_ahead = ctx->read_ahead; | 309 | s->read_ahead = ctx->read_ahead; |
310 | s->msg_callback = ctx->internal->msg_callback; | 310 | s->internal->msg_callback = ctx->internal->msg_callback; |
311 | s->msg_callback_arg = ctx->internal->msg_callback_arg; | 311 | s->internal->msg_callback_arg = ctx->internal->msg_callback_arg; |
312 | s->verify_mode = ctx->verify_mode; | 312 | s->verify_mode = ctx->verify_mode; |
313 | s->sid_ctx_length = ctx->sid_ctx_length; | 313 | s->sid_ctx_length = ctx->sid_ctx_length; |
314 | OPENSSL_assert(s->sid_ctx_length <= sizeof s->sid_ctx); | 314 | OPENSSL_assert(s->sid_ctx_length <= sizeof s->sid_ctx); |
315 | memcpy(&s->sid_ctx, &ctx->sid_ctx, sizeof(s->sid_ctx)); | 315 | memcpy(&s->sid_ctx, &ctx->sid_ctx, sizeof(s->sid_ctx)); |
316 | s->verify_callback = ctx->internal->default_verify_callback; | 316 | s->internal->verify_callback = ctx->internal->default_verify_callback; |
317 | s->generate_session_id = ctx->internal->generate_session_id; | 317 | s->internal->generate_session_id = ctx->internal->generate_session_id; |
318 | 318 | ||
319 | s->param = X509_VERIFY_PARAM_new(); | 319 | s->param = X509_VERIFY_PARAM_new(); |
320 | if (!s->param) | 320 | if (!s->param) |
@@ -325,8 +325,8 @@ SSL_new(SSL_CTX *ctx) | |||
325 | 325 | ||
326 | CRYPTO_add(&ctx->references, 1, CRYPTO_LOCK_SSL_CTX); | 326 | CRYPTO_add(&ctx->references, 1, CRYPTO_LOCK_SSL_CTX); |
327 | s->ctx = ctx; | 327 | s->ctx = ctx; |
328 | s->tlsext_debug_cb = 0; | 328 | s->internal->tlsext_debug_cb = 0; |
329 | s->tlsext_debug_arg = NULL; | 329 | s->internal->tlsext_debug_arg = NULL; |
330 | s->tlsext_ticket_expected = 0; | 330 | s->tlsext_ticket_expected = 0; |
331 | s->tlsext_status_type = -1; | 331 | s->tlsext_status_type = -1; |
332 | s->tlsext_status_expected = 0; | 332 | s->tlsext_status_expected = 0; |
@@ -415,7 +415,7 @@ int | |||
415 | SSL_set_generate_session_id(SSL *ssl, GEN_SESSION_CB cb) | 415 | SSL_set_generate_session_id(SSL *ssl, GEN_SESSION_CB cb) |
416 | { | 416 | { |
417 | CRYPTO_w_lock(CRYPTO_LOCK_SSL); | 417 | CRYPTO_w_lock(CRYPTO_LOCK_SSL); |
418 | ssl->generate_session_id = cb; | 418 | ssl->internal->generate_session_id = cb; |
419 | CRYPTO_w_unlock(CRYPTO_LOCK_SSL); | 419 | CRYPTO_w_unlock(CRYPTO_LOCK_SSL); |
420 | return (1); | 420 | return (1); |
421 | } | 421 | } |
@@ -741,7 +741,7 @@ SSL_get_verify_depth(const SSL *s) | |||
741 | int | 741 | int |
742 | (*SSL_get_verify_callback(const SSL *s))(int, X509_STORE_CTX *) | 742 | (*SSL_get_verify_callback(const SSL *s))(int, X509_STORE_CTX *) |
743 | { | 743 | { |
744 | return (s->verify_callback); | 744 | return (s->internal->verify_callback); |
745 | } | 745 | } |
746 | 746 | ||
747 | int | 747 | int |
@@ -767,7 +767,7 @@ SSL_set_verify(SSL *s, int mode, | |||
767 | { | 767 | { |
768 | s->verify_mode = mode; | 768 | s->verify_mode = mode; |
769 | if (callback != NULL) | 769 | if (callback != NULL) |
770 | s->verify_callback = callback; | 770 | s->internal->verify_callback = callback; |
771 | } | 771 | } |
772 | 772 | ||
773 | void | 773 | void |
@@ -922,7 +922,7 @@ SSL_check_private_key(const SSL *ssl) | |||
922 | int | 922 | int |
923 | SSL_accept(SSL *s) | 923 | SSL_accept(SSL *s) |
924 | { | 924 | { |
925 | if (s->handshake_func == NULL) | 925 | if (s->internal->handshake_func == NULL) |
926 | SSL_set_accept_state(s); /* Not properly initialized yet */ | 926 | SSL_set_accept_state(s); /* Not properly initialized yet */ |
927 | 927 | ||
928 | return (s->method->ssl_accept(s)); | 928 | return (s->method->ssl_accept(s)); |
@@ -931,7 +931,7 @@ SSL_accept(SSL *s) | |||
931 | int | 931 | int |
932 | SSL_connect(SSL *s) | 932 | SSL_connect(SSL *s) |
933 | { | 933 | { |
934 | if (s->handshake_func == NULL) | 934 | if (s->internal->handshake_func == NULL) |
935 | SSL_set_connect_state(s); /* Not properly initialized yet */ | 935 | SSL_set_connect_state(s); /* Not properly initialized yet */ |
936 | 936 | ||
937 | return (s->method->ssl_connect(s)); | 937 | return (s->method->ssl_connect(s)); |
@@ -946,7 +946,7 @@ SSL_get_default_timeout(const SSL *s) | |||
946 | int | 946 | int |
947 | SSL_read(SSL *s, void *buf, int num) | 947 | SSL_read(SSL *s, void *buf, int num) |
948 | { | 948 | { |
949 | if (s->handshake_func == NULL) { | 949 | if (s->internal->handshake_func == NULL) { |
950 | SSLerr(SSL_F_SSL_READ, SSL_R_UNINITIALIZED); | 950 | SSLerr(SSL_F_SSL_READ, SSL_R_UNINITIALIZED); |
951 | return (-1); | 951 | return (-1); |
952 | } | 952 | } |
@@ -961,7 +961,7 @@ SSL_read(SSL *s, void *buf, int num) | |||
961 | int | 961 | int |
962 | SSL_peek(SSL *s, void *buf, int num) | 962 | SSL_peek(SSL *s, void *buf, int num) |
963 | { | 963 | { |
964 | if (s->handshake_func == NULL) { | 964 | if (s->internal->handshake_func == NULL) { |
965 | SSLerr(SSL_F_SSL_PEEK, SSL_R_UNINITIALIZED); | 965 | SSLerr(SSL_F_SSL_PEEK, SSL_R_UNINITIALIZED); |
966 | return (-1); | 966 | return (-1); |
967 | } | 967 | } |
@@ -975,7 +975,7 @@ SSL_peek(SSL *s, void *buf, int num) | |||
975 | int | 975 | int |
976 | SSL_write(SSL *s, const void *buf, int num) | 976 | SSL_write(SSL *s, const void *buf, int num) |
977 | { | 977 | { |
978 | if (s->handshake_func == NULL) { | 978 | if (s->internal->handshake_func == NULL) { |
979 | SSLerr(SSL_F_SSL_WRITE, SSL_R_UNINITIALIZED); | 979 | SSLerr(SSL_F_SSL_WRITE, SSL_R_UNINITIALIZED); |
980 | return (-1); | 980 | return (-1); |
981 | } | 981 | } |
@@ -998,7 +998,7 @@ SSL_shutdown(SSL *s) | |||
998 | * even if blocking I/O is used (see ssl3_shutdown). | 998 | * even if blocking I/O is used (see ssl3_shutdown). |
999 | */ | 999 | */ |
1000 | 1000 | ||
1001 | if (s->handshake_func == NULL) { | 1001 | if (s->internal->handshake_func == NULL) { |
1002 | SSLerr(SSL_F_SSL_SHUTDOWN, SSL_R_UNINITIALIZED); | 1002 | SSLerr(SSL_F_SSL_SHUTDOWN, SSL_R_UNINITIALIZED); |
1003 | return (-1); | 1003 | return (-1); |
1004 | } | 1004 | } |
@@ -1055,7 +1055,7 @@ SSL_ctrl(SSL *s, int cmd, long larg, void *parg) | |||
1055 | return (l); | 1055 | return (l); |
1056 | 1056 | ||
1057 | case SSL_CTRL_SET_MSG_CALLBACK_ARG: | 1057 | case SSL_CTRL_SET_MSG_CALLBACK_ARG: |
1058 | s->msg_callback_arg = parg; | 1058 | s->internal->msg_callback_arg = parg; |
1059 | return (1); | 1059 | return (1); |
1060 | 1060 | ||
1061 | case SSL_CTRL_OPTIONS: | 1061 | case SSL_CTRL_OPTIONS: |
@@ -1101,7 +1101,7 @@ SSL_callback_ctrl(SSL *s, int cmd, void (*fp)(void)) | |||
1101 | { | 1101 | { |
1102 | switch (cmd) { | 1102 | switch (cmd) { |
1103 | case SSL_CTRL_SET_MSG_CALLBACK: | 1103 | case SSL_CTRL_SET_MSG_CALLBACK: |
1104 | s->msg_callback = (void (*)(int write_p, int version, | 1104 | s->internal->msg_callback = (void (*)(int write_p, int version, |
1105 | int content_type, const void *buf, size_t len, | 1105 | int content_type, const void *buf, size_t len, |
1106 | SSL *ssl, void *arg))(fp); | 1106 | SSL *ssl, void *arg))(fp); |
1107 | return (1); | 1107 | return (1); |
@@ -2305,8 +2305,8 @@ SSL_set_ssl_method(SSL *s, const SSL_METHOD *meth) | |||
2305 | int ret = 1; | 2305 | int ret = 1; |
2306 | 2306 | ||
2307 | if (s->method != meth) { | 2307 | if (s->method != meth) { |
2308 | if (s->handshake_func != NULL) | 2308 | if (s->internal->handshake_func != NULL) |
2309 | conn = (s->handshake_func == s->method->ssl_connect); | 2309 | conn = (s->internal->handshake_func == s->method->ssl_connect); |
2310 | 2310 | ||
2311 | if (s->method->version == meth->version) | 2311 | if (s->method->version == meth->version) |
2312 | s->method = meth; | 2312 | s->method = meth; |
@@ -2317,9 +2317,9 @@ SSL_set_ssl_method(SSL *s, const SSL_METHOD *meth) | |||
2317 | } | 2317 | } |
2318 | 2318 | ||
2319 | if (conn == 1) | 2319 | if (conn == 1) |
2320 | s->handshake_func = meth->ssl_connect; | 2320 | s->internal->handshake_func = meth->ssl_connect; |
2321 | else if (conn == 0) | 2321 | else if (conn == 0) |
2322 | s->handshake_func = meth->ssl_accept; | 2322 | s->internal->handshake_func = meth->ssl_accept; |
2323 | } | 2323 | } |
2324 | return (ret); | 2324 | return (ret); |
2325 | } | 2325 | } |
@@ -2407,7 +2407,7 @@ SSL_do_handshake(SSL *s) | |||
2407 | { | 2407 | { |
2408 | int ret = 1; | 2408 | int ret = 1; |
2409 | 2409 | ||
2410 | if (s->handshake_func == NULL) { | 2410 | if (s->internal->handshake_func == NULL) { |
2411 | SSLerr(SSL_F_SSL_DO_HANDSHAKE, SSL_R_CONNECTION_TYPE_NOT_SET); | 2411 | SSLerr(SSL_F_SSL_DO_HANDSHAKE, SSL_R_CONNECTION_TYPE_NOT_SET); |
2412 | return (-1); | 2412 | return (-1); |
2413 | } | 2413 | } |
@@ -2415,7 +2415,7 @@ SSL_do_handshake(SSL *s) | |||
2415 | s->method->ssl_renegotiate_check(s); | 2415 | s->method->ssl_renegotiate_check(s); |
2416 | 2416 | ||
2417 | if (SSL_in_init(s) || SSL_in_before(s)) { | 2417 | if (SSL_in_init(s) || SSL_in_before(s)) { |
2418 | ret = s->handshake_func(s); | 2418 | ret = s->internal->handshake_func(s); |
2419 | } | 2419 | } |
2420 | return (ret); | 2420 | return (ret); |
2421 | } | 2421 | } |
@@ -2430,7 +2430,7 @@ SSL_set_accept_state(SSL *s) | |||
2430 | s->server = 1; | 2430 | s->server = 1; |
2431 | s->shutdown = 0; | 2431 | s->shutdown = 0; |
2432 | s->state = SSL_ST_ACCEPT|SSL_ST_BEFORE; | 2432 | s->state = SSL_ST_ACCEPT|SSL_ST_BEFORE; |
2433 | s->handshake_func = s->method->ssl_accept; | 2433 | s->internal->handshake_func = s->method->ssl_accept; |
2434 | /* clear the current cipher */ | 2434 | /* clear the current cipher */ |
2435 | ssl_clear_cipher_ctx(s); | 2435 | ssl_clear_cipher_ctx(s); |
2436 | ssl_clear_hash_ctx(&s->read_hash); | 2436 | ssl_clear_hash_ctx(&s->read_hash); |
@@ -2443,7 +2443,7 @@ SSL_set_connect_state(SSL *s) | |||
2443 | s->server = 0; | 2443 | s->server = 0; |
2444 | s->shutdown = 0; | 2444 | s->shutdown = 0; |
2445 | s->state = SSL_ST_CONNECT|SSL_ST_BEFORE; | 2445 | s->state = SSL_ST_CONNECT|SSL_ST_BEFORE; |
2446 | s->handshake_func = s->method->ssl_connect; | 2446 | s->internal->handshake_func = s->method->ssl_connect; |
2447 | /* clear the current cipher */ | 2447 | /* clear the current cipher */ |
2448 | ssl_clear_cipher_ctx(s); | 2448 | ssl_clear_cipher_ctx(s); |
2449 | ssl_clear_hash_ctx(&s->read_hash); | 2449 | ssl_clear_hash_ctx(&s->read_hash); |
@@ -2643,12 +2643,12 @@ SSL_dup(SSL *s) | |||
2643 | ret->mode = s->mode; | 2643 | ret->mode = s->mode; |
2644 | SSL_set_max_cert_list(ret, SSL_get_max_cert_list(s)); | 2644 | SSL_set_max_cert_list(ret, SSL_get_max_cert_list(s)); |
2645 | SSL_set_read_ahead(ret, SSL_get_read_ahead(s)); | 2645 | SSL_set_read_ahead(ret, SSL_get_read_ahead(s)); |
2646 | ret->msg_callback = s->msg_callback; | 2646 | ret->internal->msg_callback = s->internal->msg_callback; |
2647 | ret->msg_callback_arg = s->msg_callback_arg; | 2647 | ret->internal->msg_callback_arg = s->internal->msg_callback_arg; |
2648 | SSL_set_verify(ret, SSL_get_verify_mode(s), | 2648 | SSL_set_verify(ret, SSL_get_verify_mode(s), |
2649 | SSL_get_verify_callback(s)); | 2649 | SSL_get_verify_callback(s)); |
2650 | SSL_set_verify_depth(ret, SSL_get_verify_depth(s)); | 2650 | SSL_set_verify_depth(ret, SSL_get_verify_depth(s)); |
2651 | ret->generate_session_id = s->generate_session_id; | 2651 | ret->internal->generate_session_id = s->internal->generate_session_id; |
2652 | 2652 | ||
2653 | SSL_set_info_callback(ret, SSL_get_info_callback(s)); | 2653 | SSL_set_info_callback(ret, SSL_get_info_callback(s)); |
2654 | 2654 | ||
@@ -2672,8 +2672,8 @@ SSL_dup(SSL *s) | |||
2672 | ret->wbio = ret->rbio; | 2672 | ret->wbio = ret->rbio; |
2673 | } | 2673 | } |
2674 | ret->rwstate = s->rwstate; | 2674 | ret->rwstate = s->rwstate; |
2675 | ret->in_handshake = s->in_handshake; | 2675 | ret->internal->in_handshake = s->internal->in_handshake; |
2676 | ret->handshake_func = s->handshake_func; | 2676 | ret->internal->handshake_func = s->internal->handshake_func; |
2677 | ret->server = s->server; | 2677 | ret->server = s->server; |
2678 | ret->renegotiate = s->renegotiate; | 2678 | ret->renegotiate = s->renegotiate; |
2679 | ret->new_session = s->new_session; | 2679 | ret->new_session = s->new_session; |
@@ -2929,12 +2929,12 @@ SSL_CTX_load_verify_mem(SSL_CTX *ctx, void *buf, int len) | |||
2929 | void | 2929 | void |
2930 | SSL_set_info_callback(SSL *ssl, void (*cb)(const SSL *ssl, int type, int val)) | 2930 | SSL_set_info_callback(SSL *ssl, void (*cb)(const SSL *ssl, int type, int val)) |
2931 | { | 2931 | { |
2932 | ssl->info_callback = cb; | 2932 | ssl->internal->info_callback = cb; |
2933 | } | 2933 | } |
2934 | 2934 | ||
2935 | void (*SSL_get_info_callback(const SSL *ssl))(const SSL *ssl, int type, int val) | 2935 | void (*SSL_get_info_callback(const SSL *ssl))(const SSL *ssl, int type, int val) |
2936 | { | 2936 | { |
2937 | return (ssl->info_callback); | 2937 | return (ssl->internal->info_callback); |
2938 | } | 2938 | } |
2939 | 2939 | ||
2940 | int | 2940 | int |
diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h index 4d8659a493..60bb5597e8 100644 --- a/src/lib/libssl/ssl_locl.h +++ b/src/lib/libssl/ssl_locl.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_locl.h,v 1.154 2017/01/23 04:15:28 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_locl.h,v 1.155 2017/01/23 04:55:27 beck Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -527,6 +527,37 @@ typedef struct ssl_internal_st { | |||
527 | /* Client list of supported protocols in wire format. */ | 527 | /* Client list of supported protocols in wire format. */ |
528 | unsigned char *alpn_client_proto_list; | 528 | unsigned char *alpn_client_proto_list; |
529 | unsigned int alpn_client_proto_list_len; | 529 | unsigned int alpn_client_proto_list_len; |
530 | |||
531 | /* XXX Callbacks */ | ||
532 | |||
533 | /* true when we are actually in SSL_accept() or SSL_connect() */ | ||
534 | int in_handshake; | ||
535 | int (*handshake_func)(SSL *); | ||
536 | /* callback that allows applications to peek at protocol messages */ | ||
537 | void (*msg_callback)(int write_p, int version, int content_type, | ||
538 | const void *buf, size_t len, SSL *ssl, void *arg); | ||
539 | void *msg_callback_arg; | ||
540 | |||
541 | /* Default generate session ID callback. */ | ||
542 | GEN_SESSION_CB generate_session_id; | ||
543 | |||
544 | int (*verify_callback)(int ok,X509_STORE_CTX *ctx); /* fail if callback returns 0 */ | ||
545 | |||
546 | void (*info_callback)(const SSL *ssl,int type,int val); /* optional informational callback */ | ||
547 | |||
548 | /* TLS extension debug callback */ | ||
549 | void (*tlsext_debug_cb)(SSL *s, int client_server, int type, | ||
550 | unsigned char *data, int len, void *arg); | ||
551 | void *tlsext_debug_arg; | ||
552 | |||
553 | /* TLS Session Ticket extension callback */ | ||
554 | tls_session_ticket_ext_cb_fn tls_session_ticket_ext_cb; | ||
555 | void *tls_session_ticket_ext_cb_arg; | ||
556 | |||
557 | /* TLS pre-shared secret session resumption */ | ||
558 | tls_session_secret_cb_fn tls_session_secret_cb; | ||
559 | void *tls_session_secret_cb_arg; | ||
560 | |||
530 | } SSL_INTERNAL; | 561 | } SSL_INTERNAL; |
531 | 562 | ||
532 | typedef struct ssl3_state_internal_st { | 563 | typedef struct ssl3_state_internal_st { |
diff --git a/src/lib/libssl/ssl_sess.c b/src/lib/libssl/ssl_sess.c index 8700e851c6..541b143384 100644 --- a/src/lib/libssl/ssl_sess.c +++ b/src/lib/libssl/ssl_sess.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_sess.c,v 1.58 2017/01/23 04:15:28 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_sess.c,v 1.59 2017/01/23 04:55:27 beck Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -326,8 +326,8 @@ ssl_get_new_session(SSL *s, int session) | |||
326 | 326 | ||
327 | /* Choose which callback will set the session ID. */ | 327 | /* Choose which callback will set the session ID. */ |
328 | CRYPTO_r_lock(CRYPTO_LOCK_SSL_CTX); | 328 | CRYPTO_r_lock(CRYPTO_LOCK_SSL_CTX); |
329 | if (s->generate_session_id) | 329 | if (s->internal->generate_session_id) |
330 | cb = s->generate_session_id; | 330 | cb = s->internal->generate_session_id; |
331 | else if (s->session_ctx->internal->generate_session_id) | 331 | else if (s->session_ctx->internal->generate_session_id) |
332 | cb = s->session_ctx->internal->generate_session_id; | 332 | cb = s->session_ctx->internal->generate_session_id; |
333 | CRYPTO_r_unlock(CRYPTO_LOCK_SSL_CTX); | 333 | CRYPTO_r_unlock(CRYPTO_LOCK_SSL_CTX); |
@@ -849,8 +849,8 @@ SSL_set_session_secret_cb(SSL *s, int (*tls_session_secret_cb)(SSL *s, | |||
849 | { | 849 | { |
850 | if (s == NULL) | 850 | if (s == NULL) |
851 | return (0); | 851 | return (0); |
852 | s->tls_session_secret_cb = tls_session_secret_cb; | 852 | s->internal->tls_session_secret_cb = tls_session_secret_cb; |
853 | s->tls_session_secret_cb_arg = arg; | 853 | s->internal->tls_session_secret_cb_arg = arg; |
854 | return (1); | 854 | return (1); |
855 | } | 855 | } |
856 | 856 | ||
@@ -860,8 +860,8 @@ SSL_set_session_ticket_ext_cb(SSL *s, tls_session_ticket_ext_cb_fn cb, | |||
860 | { | 860 | { |
861 | if (s == NULL) | 861 | if (s == NULL) |
862 | return (0); | 862 | return (0); |
863 | s->tls_session_ticket_ext_cb = cb; | 863 | s->internal->tls_session_ticket_ext_cb = cb; |
864 | s->tls_session_ticket_ext_cb_arg = arg; | 864 | s->internal->tls_session_ticket_ext_cb_arg = arg; |
865 | return (1); | 865 | return (1); |
866 | } | 866 | } |
867 | 867 | ||
diff --git a/src/lib/libssl/t1_lib.c b/src/lib/libssl/t1_lib.c index 08818f4870..b2d9883900 100644 --- a/src/lib/libssl/t1_lib.c +++ b/src/lib/libssl/t1_lib.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: t1_lib.c,v 1.100 2017/01/23 04:15:28 jsing Exp $ */ | 1 | /* $OpenBSD: t1_lib.c,v 1.101 2017/01/23 04:55:27 beck Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -1227,9 +1227,9 @@ ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d, | |||
1227 | if (end - data < size) | 1227 | if (end - data < size) |
1228 | goto err; | 1228 | goto err; |
1229 | 1229 | ||
1230 | if (s->tlsext_debug_cb) | 1230 | if (s->internal->tlsext_debug_cb) |
1231 | s->tlsext_debug_cb(s, 0, type, data, size, | 1231 | s->internal->tlsext_debug_cb(s, 0, type, data, size, |
1232 | s->tlsext_debug_arg); | 1232 | s->internal->tlsext_debug_arg); |
1233 | /* The servername extension is treated as follows: | 1233 | /* The servername extension is treated as follows: |
1234 | 1234 | ||
1235 | - Only the hostname type is supported with a maximum length of 255. | 1235 | - Only the hostname type is supported with a maximum length of 255. |
@@ -1395,8 +1395,8 @@ ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d, | |||
1395 | } | 1395 | } |
1396 | } | 1396 | } |
1397 | else if (type == TLSEXT_TYPE_session_ticket) { | 1397 | else if (type == TLSEXT_TYPE_session_ticket) { |
1398 | if (s->tls_session_ticket_ext_cb && | 1398 | if (s->internal->tls_session_ticket_ext_cb && |
1399 | !s->tls_session_ticket_ext_cb(s, data, size, s->tls_session_ticket_ext_cb_arg)) { | 1399 | !s->internal->tls_session_ticket_ext_cb(s, data, size, s->internal->tls_session_ticket_ext_cb_arg)) { |
1400 | *al = TLS1_AD_INTERNAL_ERROR; | 1400 | *al = TLS1_AD_INTERNAL_ERROR; |
1401 | return 0; | 1401 | return 0; |
1402 | } | 1402 | } |
@@ -1645,9 +1645,9 @@ ssl_parse_serverhello_tlsext(SSL *s, unsigned char **p, size_t n, int *al) | |||
1645 | if (end - data < size) | 1645 | if (end - data < size) |
1646 | goto err; | 1646 | goto err; |
1647 | 1647 | ||
1648 | if (s->tlsext_debug_cb) | 1648 | if (s->internal->tlsext_debug_cb) |
1649 | s->tlsext_debug_cb(s, 1, type, data, size, | 1649 | s->internal->tlsext_debug_cb(s, 1, type, data, size, |
1650 | s->tlsext_debug_arg); | 1650 | s->internal->tlsext_debug_arg); |
1651 | 1651 | ||
1652 | if (type == TLSEXT_TYPE_server_name) { | 1652 | if (type == TLSEXT_TYPE_server_name) { |
1653 | if (s->tlsext_hostname == NULL || size > 0) { | 1653 | if (s->tlsext_hostname == NULL || size > 0) { |
@@ -1690,8 +1690,8 @@ ssl_parse_serverhello_tlsext(SSL *s, unsigned char **p, size_t n, int *al) | |||
1690 | } | 1690 | } |
1691 | } | 1691 | } |
1692 | else if (type == TLSEXT_TYPE_session_ticket) { | 1692 | else if (type == TLSEXT_TYPE_session_ticket) { |
1693 | if (s->tls_session_ticket_ext_cb && | 1693 | if (s->internal->tls_session_ticket_ext_cb && |
1694 | !s->tls_session_ticket_ext_cb(s, data, size, s->tls_session_ticket_ext_cb_arg)) { | 1694 | !s->internal->tls_session_ticket_ext_cb(s, data, size, s->internal->tls_session_ticket_ext_cb_arg)) { |
1695 | *al = TLS1_AD_INTERNAL_ERROR; | 1695 | *al = TLS1_AD_INTERNAL_ERROR; |
1696 | return 0; | 1696 | return 0; |
1697 | } | 1697 | } |
@@ -2035,7 +2035,7 @@ ssl_check_serverhello_tlsext(SSL *s) | |||
2035 | * ret: (output) on return, if a ticket was decrypted, then this is set to | 2035 | * ret: (output) on return, if a ticket was decrypted, then this is set to |
2036 | * point to the resulting session. | 2036 | * point to the resulting session. |
2037 | * | 2037 | * |
2038 | * If s->tls_session_secret_cb is set then we are expecting a pre-shared key | 2038 | * If s->internal->tls_session_secret_cb is set then we are expecting a pre-shared key |
2039 | * ciphersuite, in which case we have no use for session tickets and one will | 2039 | * ciphersuite, in which case we have no use for session tickets and one will |
2040 | * never be decrypted, nor will s->tlsext_ticket_expected be set to 1. | 2040 | * never be decrypted, nor will s->tlsext_ticket_expected be set to 1. |
2041 | * | 2041 | * |
@@ -2044,14 +2044,14 @@ ssl_check_serverhello_tlsext(SSL *s) | |||
2044 | * 0: no ticket was found (or was ignored, based on settings). | 2044 | * 0: no ticket was found (or was ignored, based on settings). |
2045 | * 1: a zero length extension was found, indicating that the client supports | 2045 | * 1: a zero length extension was found, indicating that the client supports |
2046 | * session tickets but doesn't currently have one to offer. | 2046 | * session tickets but doesn't currently have one to offer. |
2047 | * 2: either s->tls_session_secret_cb was set, or a ticket was offered but | 2047 | * 2: either s->internal->tls_session_secret_cb was set, or a ticket was offered but |
2048 | * couldn't be decrypted because of a non-fatal error. | 2048 | * couldn't be decrypted because of a non-fatal error. |
2049 | * 3: a ticket was successfully decrypted and *ret was set. | 2049 | * 3: a ticket was successfully decrypted and *ret was set. |
2050 | * | 2050 | * |
2051 | * Side effects: | 2051 | * Side effects: |
2052 | * Sets s->tlsext_ticket_expected to 1 if the server will have to issue | 2052 | * Sets s->tlsext_ticket_expected to 1 if the server will have to issue |
2053 | * a new session ticket to the client because the client indicated support | 2053 | * a new session ticket to the client because the client indicated support |
2054 | * (and s->tls_session_secret_cb is NULL) but the client either doesn't have | 2054 | * (and s->internal->tls_session_secret_cb is NULL) but the client either doesn't have |
2055 | * a session ticket or we couldn't use the one it gave us, or if | 2055 | * a session ticket or we couldn't use the one it gave us, or if |
2056 | * s->ctx->tlsext_ticket_key_cb asked to renew the client's ticket. | 2056 | * s->ctx->tlsext_ticket_key_cb asked to renew the client's ticket. |
2057 | * Otherwise, s->tlsext_ticket_expected is set to 0. | 2057 | * Otherwise, s->tlsext_ticket_expected is set to 0. |
@@ -2119,7 +2119,7 @@ tls1_process_ticket(SSL *s, const unsigned char *session, int session_len, | |||
2119 | s->tlsext_ticket_expected = 1; | 2119 | s->tlsext_ticket_expected = 1; |
2120 | return 1; | 2120 | return 1; |
2121 | } | 2121 | } |
2122 | if (s->tls_session_secret_cb) { | 2122 | if (s->internal->tls_session_secret_cb) { |
2123 | /* Indicate that the ticket couldn't be | 2123 | /* Indicate that the ticket couldn't be |
2124 | * decrypted rather than generating the session | 2124 | * decrypted rather than generating the session |
2125 | * from ticket now, trigger abbreviated | 2125 | * from ticket now, trigger abbreviated |