summaryrefslogtreecommitdiff
path: root/src/lib/libssl/t1_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/t1_lib.c')
-rw-r--r--src/lib/libssl/t1_lib.c63
1 files changed, 5 insertions, 58 deletions
diff --git a/src/lib/libssl/t1_lib.c b/src/lib/libssl/t1_lib.c
index 8d56e74759..bf5e2de80b 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.120 2017/07/23 16:27:44 jsing Exp $ */ 1/* $OpenBSD: t1_lib.c,v 1.121 2017/07/24 17:10:31 jsing 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 *
@@ -720,29 +720,6 @@ ssl_add_clienthello_tlsext(SSL *s, unsigned char *p, unsigned char *limit)
720 return NULL; 720 return NULL;
721 ret += len; 721 ret += len;
722 722
723 /* Add RI if renegotiating */
724 if (s->internal->renegotiate) {
725 int el;
726
727 if (!ssl_add_clienthello_renegotiate_ext(s, 0, &el, 0)) {
728 SSLerror(s, ERR_R_INTERNAL_ERROR);
729 return NULL;
730 }
731
732 if ((size_t)(limit - ret) < 4 + el)
733 return NULL;
734
735 s2n(TLSEXT_TYPE_renegotiate, ret);
736 s2n(el, ret);
737
738 if (!ssl_add_clienthello_renegotiate_ext(s, ret, &el, el)) {
739 SSLerror(s, ERR_R_INTERNAL_ERROR);
740 return NULL;
741 }
742
743 ret += el;
744 }
745
746 if (using_ecc) { 723 if (using_ecc) {
747 size_t curveslen, formatslen, lenmax; 724 size_t curveslen, formatslen, lenmax;
748 const uint16_t *curves; 725 const uint16_t *curves;
@@ -1006,28 +983,6 @@ ssl_add_serverhello_tlsext(SSL *s, unsigned char *p, unsigned char *limit)
1006 return NULL; 983 return NULL;
1007 ret += len; 984 ret += len;
1008 985
1009 if (S3I(s)->send_connection_binding) {
1010 int el;
1011
1012 if (!ssl_add_serverhello_renegotiate_ext(s, 0, &el, 0)) {
1013 SSLerror(s, ERR_R_INTERNAL_ERROR);
1014 return NULL;
1015 }
1016
1017 if ((size_t)(limit - ret) < 4 + el)
1018 return NULL;
1019
1020 s2n(TLSEXT_TYPE_renegotiate, ret);
1021 s2n(el, ret);
1022
1023 if (!ssl_add_serverhello_renegotiate_ext(s, ret, &el, el)) {
1024 SSLerror(s, ERR_R_INTERNAL_ERROR);
1025 return NULL;
1026 }
1027
1028 ret += el;
1029 }
1030
1031 if (using_ecc && s->version != DTLS1_VERSION) { 986 if (using_ecc && s->version != DTLS1_VERSION) {
1032 const unsigned char *formats; 987 const unsigned char *formats;
1033 size_t formatslen, lenmax; 988 size_t formatslen, lenmax;
@@ -1229,12 +1184,12 @@ ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d,
1229 unsigned short len; 1184 unsigned short len;
1230 unsigned char *data = *p; 1185 unsigned char *data = *p;
1231 unsigned char *end = d + n; 1186 unsigned char *end = d + n;
1232 int renegotiate_seen = 0;
1233 int sigalg_seen = 0; 1187 int sigalg_seen = 0;
1234 CBS cbs; 1188 CBS cbs;
1235 1189
1236 s->internal->servername_done = 0; 1190 s->internal->servername_done = 0;
1237 s->tlsext_status_type = -1; 1191 s->tlsext_status_type = -1;
1192 S3I(s)->renegotiate_seen = 0;
1238 S3I(s)->next_proto_neg_seen = 0; 1193 S3I(s)->next_proto_neg_seen = 0;
1239 free(S3I(s)->alpn_selected); 1194 free(S3I(s)->alpn_selected);
1240 S3I(s)->alpn_selected = NULL; 1195 S3I(s)->alpn_selected = NULL;
@@ -1335,10 +1290,6 @@ ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d,
1335 *al = TLS1_AD_INTERNAL_ERROR; 1290 *al = TLS1_AD_INTERNAL_ERROR;
1336 return 0; 1291 return 0;
1337 } 1292 }
1338 } else if (type == TLSEXT_TYPE_renegotiate) {
1339 if (!ssl_parse_clienthello_renegotiate_ext(s, data, size, al))
1340 return 0;
1341 renegotiate_seen = 1;
1342 } else if (type == TLSEXT_TYPE_signature_algorithms) { 1293 } else if (type == TLSEXT_TYPE_signature_algorithms) {
1343 int dsize; 1294 int dsize;
1344 if (sigalg_seen || size < 2) { 1295 if (sigalg_seen || size < 2) {
@@ -1513,7 +1464,7 @@ ri_check:
1513 1464
1514 /* Need RI if renegotiating */ 1465 /* Need RI if renegotiating */
1515 1466
1516 if (!renegotiate_seen && s->internal->renegotiate) { 1467 if (!S3I(s)->renegotiate_seen && s->internal->renegotiate) {
1517 *al = SSL_AD_HANDSHAKE_FAILURE; 1468 *al = SSL_AD_HANDSHAKE_FAILURE;
1518 SSLerror(s, SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED); 1469 SSLerror(s, SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED);
1519 return 0; 1470 return 0;
@@ -1554,9 +1505,9 @@ ssl_parse_serverhello_tlsext(SSL *s, unsigned char **p, size_t n, int *al)
1554 unsigned char *data = *p; 1505 unsigned char *data = *p;
1555 unsigned char *end = *p + n; 1506 unsigned char *end = *p + n;
1556 int tlsext_servername = 0; 1507 int tlsext_servername = 0;
1557 int renegotiate_seen = 0;
1558 CBS cbs; 1508 CBS cbs;
1559 1509
1510 S3I(s)->renegotiate_seen = 0;
1560 S3I(s)->next_proto_neg_seen = 0; 1511 S3I(s)->next_proto_neg_seen = 0;
1561 free(S3I(s)->alpn_selected); 1512 free(S3I(s)->alpn_selected);
1562 S3I(s)->alpn_selected = NULL; 1513 S3I(s)->alpn_selected = NULL;
@@ -1719,10 +1670,6 @@ ssl_parse_serverhello_tlsext(SSL *s, unsigned char **p, size_t n, int *al)
1719 memcpy(S3I(s)->alpn_selected, data + 3, len); 1670 memcpy(S3I(s)->alpn_selected, data + 3, len);
1720 S3I(s)->alpn_selected_len = len; 1671 S3I(s)->alpn_selected_len = len;
1721 1672
1722 } else if (type == TLSEXT_TYPE_renegotiate) {
1723 if (!ssl_parse_serverhello_renegotiate_ext(s, data, size, al))
1724 return 0;
1725 renegotiate_seen = 1;
1726 } 1673 }
1727#ifndef OPENSSL_NO_SRTP 1674#ifndef OPENSSL_NO_SRTP
1728 else if (SSL_IS_DTLS(s) && type == TLSEXT_TYPE_use_srtp) { 1675 else if (SSL_IS_DTLS(s) && type == TLSEXT_TYPE_use_srtp) {
@@ -1769,7 +1716,7 @@ ri_check:
1769 * which doesn't support RI so for the immediate future tolerate RI 1716 * which doesn't support RI so for the immediate future tolerate RI
1770 * absence on initial connect only. 1717 * absence on initial connect only.
1771 */ 1718 */
1772 if (!renegotiate_seen && 1719 if (!S3I(s)->renegotiate_seen &&
1773 !(s->internal->options & SSL_OP_LEGACY_SERVER_CONNECT)) { 1720 !(s->internal->options & SSL_OP_LEGACY_SERVER_CONNECT)) {
1774 *al = SSL_AD_HANDSHAKE_FAILURE; 1721 *al = SSL_AD_HANDSHAKE_FAILURE;
1775 SSLerror(s, SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED); 1722 SSLerror(s, SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED);