diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libssl/ssl_tlsext.c | 132 |
1 files changed, 66 insertions, 66 deletions
diff --git a/src/lib/libssl/ssl_tlsext.c b/src/lib/libssl/ssl_tlsext.c index a42856264b..647a95e485 100644 --- a/src/lib/libssl/ssl_tlsext.c +++ b/src/lib/libssl/ssl_tlsext.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_tlsext.c,v 1.129 2022/08/15 10:46:53 tb Exp $ */ | 1 | /* $OpenBSD: ssl_tlsext.c,v 1.130 2022/10/02 16:36:41 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2016, 2017, 2019 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2016, 2017, 2019 Joel Sing <jsing@openbsd.org> |
| 4 | * Copyright (c) 2017 Doug Hogan <doug@openbsd.org> | 4 | * Copyright (c) 2017 Doug Hogan <doug@openbsd.org> |
| @@ -40,7 +40,7 @@ static int | |||
| 40 | tlsext_alpn_client_needs(SSL *s, uint16_t msg_type) | 40 | tlsext_alpn_client_needs(SSL *s, uint16_t msg_type) |
| 41 | { | 41 | { |
| 42 | /* ALPN protos have been specified and this is the initial handshake */ | 42 | /* ALPN protos have been specified and this is the initial handshake */ |
| 43 | return s->internal->alpn_client_proto_list != NULL && | 43 | return s->alpn_client_proto_list != NULL && |
| 44 | s->s3->hs.finished_len == 0; | 44 | s->s3->hs.finished_len == 0; |
| 45 | } | 45 | } |
| 46 | 46 | ||
| @@ -52,8 +52,8 @@ tlsext_alpn_client_build(SSL *s, uint16_t msg_type, CBB *cbb) | |||
| 52 | if (!CBB_add_u16_length_prefixed(cbb, &protolist)) | 52 | if (!CBB_add_u16_length_prefixed(cbb, &protolist)) |
| 53 | return 0; | 53 | return 0; |
| 54 | 54 | ||
| 55 | if (!CBB_add_bytes(&protolist, s->internal->alpn_client_proto_list, | 55 | if (!CBB_add_bytes(&protolist, s->alpn_client_proto_list, |
| 56 | s->internal->alpn_client_proto_list_len)) | 56 | s->alpn_client_proto_list_len)) |
| 57 | return 0; | 57 | return 0; |
| 58 | 58 | ||
| 59 | if (!CBB_flush(cbb)) | 59 | if (!CBB_flush(cbb)) |
| @@ -97,7 +97,7 @@ tlsext_alpn_server_parse(SSL *s, uint16_t msg_types, CBS *cbs, int *alert) | |||
| 97 | if (!tlsext_alpn_check_format(&alpn)) | 97 | if (!tlsext_alpn_check_format(&alpn)) |
| 98 | return 0; | 98 | return 0; |
| 99 | 99 | ||
| 100 | if (s->ctx->internal->alpn_select_cb == NULL) | 100 | if (s->ctx->alpn_select_cb == NULL) |
| 101 | return 1; | 101 | return 1; |
| 102 | 102 | ||
| 103 | /* | 103 | /* |
| @@ -106,9 +106,9 @@ tlsext_alpn_server_parse(SSL *s, uint16_t msg_types, CBS *cbs, int *alert) | |||
| 106 | * 2. Should the callback be called even if no ALPN extension was sent? | 106 | * 2. Should the callback be called even if no ALPN extension was sent? |
| 107 | * 3. TLSv1.2 and earlier: ensure that SNI has already been processed. | 107 | * 3. TLSv1.2 and earlier: ensure that SNI has already been processed. |
| 108 | */ | 108 | */ |
| 109 | r = s->ctx->internal->alpn_select_cb(s, &selected, &selected_len, | 109 | r = s->ctx->alpn_select_cb(s, &selected, &selected_len, |
| 110 | CBS_data(&alpn), CBS_len(&alpn), | 110 | CBS_data(&alpn), CBS_len(&alpn), |
| 111 | s->ctx->internal->alpn_select_cb_arg); | 111 | s->ctx->alpn_select_cb_arg); |
| 112 | 112 | ||
| 113 | if (r == SSL_TLSEXT_ERR_OK) { | 113 | if (r == SSL_TLSEXT_ERR_OK) { |
| 114 | CBS_init(&selected_cbs, selected, selected_len); | 114 | CBS_init(&selected_cbs, selected, selected_len); |
| @@ -164,7 +164,7 @@ tlsext_alpn_client_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) | |||
| 164 | { | 164 | { |
| 165 | CBS list, proto; | 165 | CBS list, proto; |
| 166 | 166 | ||
| 167 | if (s->internal->alpn_client_proto_list == NULL) { | 167 | if (s->alpn_client_proto_list == NULL) { |
| 168 | *alert = SSL_AD_UNSUPPORTED_EXTENSION; | 168 | *alert = SSL_AD_UNSUPPORTED_EXTENSION; |
| 169 | return 0; | 169 | return 0; |
| 170 | } | 170 | } |
| @@ -243,7 +243,7 @@ tlsext_supportedgroups_server_parse(SSL *s, uint16_t msg_type, CBS *cbs, | |||
| 243 | return 0; | 243 | return 0; |
| 244 | groups_len /= 2; | 244 | groups_len /= 2; |
| 245 | 245 | ||
| 246 | if (s->internal->hit) | 246 | if (s->hit) |
| 247 | return 1; | 247 | return 1; |
| 248 | 248 | ||
| 249 | if (s->s3->hs.tls13.hrr) { | 249 | if (s->s3->hs.tls13.hrr) { |
| @@ -365,7 +365,7 @@ tlsext_ecpf_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) | |||
| 365 | return 0; | 365 | return 0; |
| 366 | } | 366 | } |
| 367 | 367 | ||
| 368 | if (!s->internal->hit) { | 368 | if (!s->hit) { |
| 369 | if (!CBS_stow(&ecpf, &(s->session->tlsext_ecpointformatlist), | 369 | if (!CBS_stow(&ecpf, &(s->session->tlsext_ecpointformatlist), |
| 370 | &(s->session->tlsext_ecpointformatlist_length))) { | 370 | &(s->session->tlsext_ecpointformatlist_length))) { |
| 371 | *alert = SSL_AD_INTERNAL_ERROR; | 371 | *alert = SSL_AD_INTERNAL_ERROR; |
| @@ -418,7 +418,7 @@ tlsext_ecpf_client_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) | |||
| 418 | static int | 418 | static int |
| 419 | tlsext_ri_client_needs(SSL *s, uint16_t msg_type) | 419 | tlsext_ri_client_needs(SSL *s, uint16_t msg_type) |
| 420 | { | 420 | { |
| 421 | return (s->internal->renegotiate); | 421 | return (s->renegotiate); |
| 422 | } | 422 | } |
| 423 | 423 | ||
| 424 | static int | 424 | static int |
| @@ -779,7 +779,7 @@ tlsext_sni_server_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) | |||
| 779 | goto err; | 779 | goto err; |
| 780 | } | 780 | } |
| 781 | 781 | ||
| 782 | if (s->internal->hit || s->s3->hs.tls13.hrr) { | 782 | if (s->hit || s->s3->hs.tls13.hrr) { |
| 783 | if (s->session->tlsext_hostname == NULL) { | 783 | if (s->session->tlsext_hostname == NULL) { |
| 784 | *alert = SSL_AD_UNRECOGNIZED_NAME; | 784 | *alert = SSL_AD_UNRECOGNIZED_NAME; |
| 785 | goto err; | 785 | goto err; |
| @@ -817,7 +817,7 @@ tlsext_sni_server_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) | |||
| 817 | static int | 817 | static int |
| 818 | tlsext_sni_server_needs(SSL *s, uint16_t msg_type) | 818 | tlsext_sni_server_needs(SSL *s, uint16_t msg_type) |
| 819 | { | 819 | { |
| 820 | if (s->internal->hit) | 820 | if (s->hit) |
| 821 | return 0; | 821 | return 0; |
| 822 | 822 | ||
| 823 | return (s->session->tlsext_hostname != NULL); | 823 | return (s->session->tlsext_hostname != NULL); |
| @@ -837,7 +837,7 @@ tlsext_sni_client_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) | |||
| 837 | return 0; | 837 | return 0; |
| 838 | } | 838 | } |
| 839 | 839 | ||
| 840 | if (s->internal->hit) { | 840 | if (s->hit) { |
| 841 | if (s->session->tlsext_hostname == NULL) { | 841 | if (s->session->tlsext_hostname == NULL) { |
| 842 | *alert = SSL_AD_UNRECOGNIZED_NAME; | 842 | *alert = SSL_AD_UNRECOGNIZED_NAME; |
| 843 | return 0; | 843 | return 0; |
| @@ -885,12 +885,12 @@ tlsext_ocsp_client_build(SSL *s, uint16_t msg_type, CBB *cbb) | |||
| 885 | return 0; | 885 | return 0; |
| 886 | if (!CBB_add_u16_length_prefixed(cbb, &respid_list)) | 886 | if (!CBB_add_u16_length_prefixed(cbb, &respid_list)) |
| 887 | return 0; | 887 | return 0; |
| 888 | for (i = 0; i < sk_OCSP_RESPID_num(s->internal->tlsext_ocsp_ids); i++) { | 888 | for (i = 0; i < sk_OCSP_RESPID_num(s->tlsext_ocsp_ids); i++) { |
| 889 | unsigned char *respid_data; | 889 | unsigned char *respid_data; |
| 890 | OCSP_RESPID *id; | 890 | OCSP_RESPID *id; |
| 891 | size_t id_len; | 891 | size_t id_len; |
| 892 | 892 | ||
| 893 | if ((id = sk_OCSP_RESPID_value(s->internal->tlsext_ocsp_ids, | 893 | if ((id = sk_OCSP_RESPID_value(s->tlsext_ocsp_ids, |
| 894 | i)) == NULL) | 894 | i)) == NULL) |
| 895 | return 0; | 895 | return 0; |
| 896 | if ((id_len = i2d_OCSP_RESPID(id, NULL)) == -1) | 896 | if ((id_len = i2d_OCSP_RESPID(id, NULL)) == -1) |
| @@ -904,12 +904,12 @@ tlsext_ocsp_client_build(SSL *s, uint16_t msg_type, CBB *cbb) | |||
| 904 | } | 904 | } |
| 905 | if (!CBB_add_u16_length_prefixed(cbb, &exts)) | 905 | if (!CBB_add_u16_length_prefixed(cbb, &exts)) |
| 906 | return 0; | 906 | return 0; |
| 907 | if ((ext_len = i2d_X509_EXTENSIONS(s->internal->tlsext_ocsp_exts, | 907 | if ((ext_len = i2d_X509_EXTENSIONS(s->tlsext_ocsp_exts, |
| 908 | NULL)) == -1) | 908 | NULL)) == -1) |
| 909 | return 0; | 909 | return 0; |
| 910 | if (!CBB_add_space(&exts, &ext_data, ext_len)) | 910 | if (!CBB_add_space(&exts, &ext_data, ext_len)) |
| 911 | return 0; | 911 | return 0; |
| 912 | if ((i2d_X509_EXTENSIONS(s->internal->tlsext_ocsp_exts, &ext_data) != | 912 | if ((i2d_X509_EXTENSIONS(s->tlsext_ocsp_exts, &ext_data) != |
| 913 | ext_len)) | 913 | ext_len)) |
| 914 | return 0; | 914 | return 0; |
| 915 | if (!CBB_flush(cbb)) | 915 | if (!CBB_flush(cbb)) |
| @@ -946,11 +946,11 @@ tlsext_ocsp_server_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) | |||
| 946 | goto err; | 946 | goto err; |
| 947 | 947 | ||
| 948 | /* XXX */ | 948 | /* XXX */ |
| 949 | sk_OCSP_RESPID_pop_free(s->internal->tlsext_ocsp_ids, OCSP_RESPID_free); | 949 | sk_OCSP_RESPID_pop_free(s->tlsext_ocsp_ids, OCSP_RESPID_free); |
| 950 | s->internal->tlsext_ocsp_ids = NULL; | 950 | s->tlsext_ocsp_ids = NULL; |
| 951 | if (CBS_len(&respid_list) > 0) { | 951 | if (CBS_len(&respid_list) > 0) { |
| 952 | s->internal->tlsext_ocsp_ids = sk_OCSP_RESPID_new_null(); | 952 | s->tlsext_ocsp_ids = sk_OCSP_RESPID_new_null(); |
| 953 | if (s->internal->tlsext_ocsp_ids == NULL) { | 953 | if (s->tlsext_ocsp_ids == NULL) { |
| 954 | alert_desc = SSL_AD_INTERNAL_ERROR; | 954 | alert_desc = SSL_AD_INTERNAL_ERROR; |
| 955 | goto err; | 955 | goto err; |
| 956 | } | 956 | } |
| @@ -964,7 +964,7 @@ tlsext_ocsp_server_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) | |||
| 964 | p = CBS_data(&respid); | 964 | p = CBS_data(&respid); |
| 965 | if ((id = d2i_OCSP_RESPID(NULL, &p, CBS_len(&respid))) == NULL) | 965 | if ((id = d2i_OCSP_RESPID(NULL, &p, CBS_len(&respid))) == NULL) |
| 966 | goto err; | 966 | goto err; |
| 967 | if (!sk_OCSP_RESPID_push(s->internal->tlsext_ocsp_ids, id)) { | 967 | if (!sk_OCSP_RESPID_push(s->tlsext_ocsp_ids, id)) { |
| 968 | alert_desc = SSL_AD_INTERNAL_ERROR; | 968 | alert_desc = SSL_AD_INTERNAL_ERROR; |
| 969 | OCSP_RESPID_free(id); | 969 | OCSP_RESPID_free(id); |
| 970 | goto err; | 970 | goto err; |
| @@ -975,10 +975,10 @@ tlsext_ocsp_server_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) | |||
| 975 | if (!CBS_get_u16_length_prefixed(cbs, &exts)) | 975 | if (!CBS_get_u16_length_prefixed(cbs, &exts)) |
| 976 | goto err; | 976 | goto err; |
| 977 | if (CBS_len(&exts) > 0) { | 977 | if (CBS_len(&exts) > 0) { |
| 978 | sk_X509_EXTENSION_pop_free(s->internal->tlsext_ocsp_exts, | 978 | sk_X509_EXTENSION_pop_free(s->tlsext_ocsp_exts, |
| 979 | X509_EXTENSION_free); | 979 | X509_EXTENSION_free); |
| 980 | p = CBS_data(&exts); | 980 | p = CBS_data(&exts); |
| 981 | if ((s->internal->tlsext_ocsp_exts = d2i_X509_EXTENSIONS(NULL, | 981 | if ((s->tlsext_ocsp_exts = d2i_X509_EXTENSIONS(NULL, |
| 982 | &p, CBS_len(&exts))) == NULL) | 982 | &p, CBS_len(&exts))) == NULL) |
| 983 | goto err; | 983 | goto err; |
| 984 | } | 984 | } |
| @@ -995,14 +995,14 @@ tlsext_ocsp_server_needs(SSL *s, uint16_t msg_type) | |||
| 995 | { | 995 | { |
| 996 | if (s->s3->hs.negotiated_tls_version >= TLS1_3_VERSION && | 996 | if (s->s3->hs.negotiated_tls_version >= TLS1_3_VERSION && |
| 997 | s->tlsext_status_type == TLSEXT_STATUSTYPE_ocsp && | 997 | s->tlsext_status_type == TLSEXT_STATUSTYPE_ocsp && |
| 998 | s->ctx->internal->tlsext_status_cb != NULL) { | 998 | s->ctx->tlsext_status_cb != NULL) { |
| 999 | s->internal->tlsext_status_expected = 0; | 999 | s->tlsext_status_expected = 0; |
| 1000 | if (s->ctx->internal->tlsext_status_cb(s, | 1000 | if (s->ctx->tlsext_status_cb(s, |
| 1001 | s->ctx->internal->tlsext_status_arg) == SSL_TLSEXT_ERR_OK && | 1001 | s->ctx->tlsext_status_arg) == SSL_TLSEXT_ERR_OK && |
| 1002 | s->internal->tlsext_ocsp_resp_len > 0) | 1002 | s->tlsext_ocsp_resp_len > 0) |
| 1003 | s->internal->tlsext_status_expected = 1; | 1003 | s->tlsext_status_expected = 1; |
| 1004 | } | 1004 | } |
| 1005 | return s->internal->tlsext_status_expected; | 1005 | return s->tlsext_status_expected; |
| 1006 | } | 1006 | } |
| 1007 | 1007 | ||
| 1008 | static int | 1008 | static int |
| @@ -1016,8 +1016,8 @@ tlsext_ocsp_server_build(SSL *s, uint16_t msg_type, CBB *cbb) | |||
| 1016 | if (!CBB_add_u24_length_prefixed(cbb, &ocsp_response)) | 1016 | if (!CBB_add_u24_length_prefixed(cbb, &ocsp_response)) |
| 1017 | return 0; | 1017 | return 0; |
| 1018 | if (!CBB_add_bytes(&ocsp_response, | 1018 | if (!CBB_add_bytes(&ocsp_response, |
| 1019 | s->internal->tlsext_ocsp_resp, | 1019 | s->tlsext_ocsp_resp, |
| 1020 | s->internal->tlsext_ocsp_resp_len)) | 1020 | s->tlsext_ocsp_resp_len)) |
| 1021 | return 0; | 1021 | return 0; |
| 1022 | if (!CBB_flush(cbb)) | 1022 | if (!CBB_flush(cbb)) |
| 1023 | return 0; | 1023 | return 0; |
| @@ -1059,8 +1059,8 @@ tlsext_ocsp_client_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) | |||
| 1059 | SSLerror(s, SSL_R_DATA_LENGTH_TOO_LONG); | 1059 | SSLerror(s, SSL_R_DATA_LENGTH_TOO_LONG); |
| 1060 | return 0; | 1060 | return 0; |
| 1061 | } | 1061 | } |
| 1062 | if (!CBS_stow(&response, &s->internal->tlsext_ocsp_resp, | 1062 | if (!CBS_stow(&response, &s->tlsext_ocsp_resp, |
| 1063 | &s->internal->tlsext_ocsp_resp_len)) { | 1063 | &s->tlsext_ocsp_resp_len)) { |
| 1064 | *alert = SSL_AD_INTERNAL_ERROR; | 1064 | *alert = SSL_AD_INTERNAL_ERROR; |
| 1065 | return 0; | 1065 | return 0; |
| 1066 | } | 1066 | } |
| @@ -1070,7 +1070,7 @@ tlsext_ocsp_client_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) | |||
| 1070 | return 0; | 1070 | return 0; |
| 1071 | } | 1071 | } |
| 1072 | /* Set flag to expect CertificateStatus message */ | 1072 | /* Set flag to expect CertificateStatus message */ |
| 1073 | s->internal->tlsext_status_expected = 1; | 1073 | s->tlsext_status_expected = 1; |
| 1074 | } | 1074 | } |
| 1075 | return 1; | 1075 | return 1; |
| 1076 | } | 1076 | } |
| @@ -1092,11 +1092,11 @@ tlsext_sessionticket_client_needs(SSL *s, uint16_t msg_type) | |||
| 1092 | if (!ssl_security_tickets(s)) | 1092 | if (!ssl_security_tickets(s)) |
| 1093 | return 0; | 1093 | return 0; |
| 1094 | 1094 | ||
| 1095 | if (s->internal->new_session) | 1095 | if (s->new_session) |
| 1096 | return 1; | 1096 | return 1; |
| 1097 | 1097 | ||
| 1098 | if (s->internal->tlsext_session_ticket != NULL && | 1098 | if (s->tlsext_session_ticket != NULL && |
| 1099 | s->internal->tlsext_session_ticket->data == NULL) | 1099 | s->tlsext_session_ticket->data == NULL) |
| 1100 | return 0; | 1100 | return 0; |
| 1101 | 1101 | ||
| 1102 | return 1; | 1102 | return 1; |
| @@ -1109,7 +1109,7 @@ tlsext_sessionticket_client_build(SSL *s, uint16_t msg_type, CBB *cbb) | |||
| 1109 | * Signal that we support session tickets by sending an empty | 1109 | * Signal that we support session tickets by sending an empty |
| 1110 | * extension when renegotiating or no session found. | 1110 | * extension when renegotiating or no session found. |
| 1111 | */ | 1111 | */ |
| 1112 | if (s->internal->new_session || s->session == NULL) | 1112 | if (s->new_session || s->session == NULL) |
| 1113 | return 1; | 1113 | return 1; |
| 1114 | 1114 | ||
| 1115 | if (s->session->tlsext_tick != NULL) { | 1115 | if (s->session->tlsext_tick != NULL) { |
| @@ -1118,18 +1118,18 @@ tlsext_sessionticket_client_build(SSL *s, uint16_t msg_type, CBB *cbb) | |||
| 1118 | s->session->tlsext_ticklen)) | 1118 | s->session->tlsext_ticklen)) |
| 1119 | return 0; | 1119 | return 0; |
| 1120 | 1120 | ||
| 1121 | } else if (s->internal->tlsext_session_ticket != NULL) { | 1121 | } else if (s->tlsext_session_ticket != NULL) { |
| 1122 | /* | 1122 | /* |
| 1123 | * Attempt to resume with a custom provided session ticket set | 1123 | * Attempt to resume with a custom provided session ticket set |
| 1124 | * by SSL_set_session_ticket_ext(). | 1124 | * by SSL_set_session_ticket_ext(). |
| 1125 | */ | 1125 | */ |
| 1126 | if (s->internal->tlsext_session_ticket->length > 0) { | 1126 | if (s->tlsext_session_ticket->length > 0) { |
| 1127 | size_t ticklen = s->internal->tlsext_session_ticket->length; | 1127 | size_t ticklen = s->tlsext_session_ticket->length; |
| 1128 | 1128 | ||
| 1129 | if ((s->session->tlsext_tick = malloc(ticklen)) == NULL) | 1129 | if ((s->session->tlsext_tick = malloc(ticklen)) == NULL) |
| 1130 | return 0; | 1130 | return 0; |
| 1131 | memcpy(s->session->tlsext_tick, | 1131 | memcpy(s->session->tlsext_tick, |
| 1132 | s->internal->tlsext_session_ticket->data, | 1132 | s->tlsext_session_ticket->data, |
| 1133 | ticklen); | 1133 | ticklen); |
| 1134 | s->session->tlsext_ticklen = ticklen; | 1134 | s->session->tlsext_ticklen = ticklen; |
| 1135 | 1135 | ||
| @@ -1149,10 +1149,10 @@ static int | |||
| 1149 | tlsext_sessionticket_server_parse(SSL *s, uint16_t msg_type, CBS *cbs, | 1149 | tlsext_sessionticket_server_parse(SSL *s, uint16_t msg_type, CBS *cbs, |
| 1150 | int *alert) | 1150 | int *alert) |
| 1151 | { | 1151 | { |
| 1152 | if (s->internal->tls_session_ticket_ext_cb) { | 1152 | if (s->tls_session_ticket_ext_cb) { |
| 1153 | if (!s->internal->tls_session_ticket_ext_cb(s, CBS_data(cbs), | 1153 | if (!s->tls_session_ticket_ext_cb(s, CBS_data(cbs), |
| 1154 | (int)CBS_len(cbs), | 1154 | (int)CBS_len(cbs), |
| 1155 | s->internal->tls_session_ticket_ext_cb_arg)) { | 1155 | s->tls_session_ticket_ext_cb_arg)) { |
| 1156 | *alert = SSL_AD_INTERNAL_ERROR; | 1156 | *alert = SSL_AD_INTERNAL_ERROR; |
| 1157 | return 0; | 1157 | return 0; |
| 1158 | } | 1158 | } |
| @@ -1170,7 +1170,7 @@ tlsext_sessionticket_server_parse(SSL *s, uint16_t msg_type, CBS *cbs, | |||
| 1170 | static int | 1170 | static int |
| 1171 | tlsext_sessionticket_server_needs(SSL *s, uint16_t msg_type) | 1171 | tlsext_sessionticket_server_needs(SSL *s, uint16_t msg_type) |
| 1172 | { | 1172 | { |
| 1173 | return (s->internal->tlsext_ticket_expected && | 1173 | return (s->tlsext_ticket_expected && |
| 1174 | !(SSL_get_options(s) & SSL_OP_NO_TICKET) && | 1174 | !(SSL_get_options(s) & SSL_OP_NO_TICKET) && |
| 1175 | ssl_security_tickets(s)); | 1175 | ssl_security_tickets(s)); |
| 1176 | } | 1176 | } |
| @@ -1186,10 +1186,10 @@ static int | |||
| 1186 | tlsext_sessionticket_client_parse(SSL *s, uint16_t msg_type, CBS *cbs, | 1186 | tlsext_sessionticket_client_parse(SSL *s, uint16_t msg_type, CBS *cbs, |
| 1187 | int *alert) | 1187 | int *alert) |
| 1188 | { | 1188 | { |
| 1189 | if (s->internal->tls_session_ticket_ext_cb) { | 1189 | if (s->tls_session_ticket_ext_cb) { |
| 1190 | if (!s->internal->tls_session_ticket_ext_cb(s, CBS_data(cbs), | 1190 | if (!s->tls_session_ticket_ext_cb(s, CBS_data(cbs), |
| 1191 | (int)CBS_len(cbs), | 1191 | (int)CBS_len(cbs), |
| 1192 | s->internal->tls_session_ticket_ext_cb_arg)) { | 1192 | s->tls_session_ticket_ext_cb_arg)) { |
| 1193 | *alert = SSL_AD_INTERNAL_ERROR; | 1193 | *alert = SSL_AD_INTERNAL_ERROR; |
| 1194 | return 0; | 1194 | return 0; |
| 1195 | } | 1195 | } |
| @@ -1200,7 +1200,7 @@ tlsext_sessionticket_client_parse(SSL *s, uint16_t msg_type, CBS *cbs, | |||
| 1200 | return 0; | 1200 | return 0; |
| 1201 | } | 1201 | } |
| 1202 | 1202 | ||
| 1203 | s->internal->tlsext_ticket_expected = 1; | 1203 | s->tlsext_ticket_expected = 1; |
| 1204 | 1204 | ||
| 1205 | return 1; | 1205 | return 1; |
| 1206 | } | 1206 | } |
| @@ -1310,7 +1310,7 @@ tlsext_srtp_server_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) | |||
| 1310 | goto err; | 1310 | goto err; |
| 1311 | 1311 | ||
| 1312 | if (cprof->id == sprof->id) { | 1312 | if (cprof->id == sprof->id) { |
| 1313 | s->internal->srtp_profile = sprof; | 1313 | s->srtp_profile = sprof; |
| 1314 | ret = 1; | 1314 | ret = 1; |
| 1315 | goto done; | 1315 | goto done; |
| 1316 | } | 1316 | } |
| @@ -1397,7 +1397,7 @@ tlsext_srtp_client_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) | |||
| 1397 | } | 1397 | } |
| 1398 | 1398 | ||
| 1399 | if (prof->id == id) { | 1399 | if (prof->id == id) { |
| 1400 | s->internal->srtp_profile = prof; | 1400 | s->srtp_profile = prof; |
| 1401 | return 1; | 1401 | return 1; |
| 1402 | } | 1402 | } |
| 1403 | } | 1403 | } |
| @@ -1899,15 +1899,15 @@ tlsext_psk_server_parse(SSL *s, uint16_t msg_type, CBS *cbs, int *alert) | |||
| 1899 | static int | 1899 | static int |
| 1900 | tlsext_quic_transport_parameters_client_needs(SSL *s, uint16_t msg_type) | 1900 | tlsext_quic_transport_parameters_client_needs(SSL *s, uint16_t msg_type) |
| 1901 | { | 1901 | { |
| 1902 | return SSL_is_quic(s) && s->internal->quic_transport_params_len > 0; | 1902 | return SSL_is_quic(s) && s->quic_transport_params_len > 0; |
| 1903 | } | 1903 | } |
| 1904 | 1904 | ||
| 1905 | static int | 1905 | static int |
| 1906 | tlsext_quic_transport_parameters_client_build(SSL *s, uint16_t msg_type, | 1906 | tlsext_quic_transport_parameters_client_build(SSL *s, uint16_t msg_type, |
| 1907 | CBB *cbb) | 1907 | CBB *cbb) |
| 1908 | { | 1908 | { |
| 1909 | if (!CBB_add_bytes(cbb, s->internal->quic_transport_params, | 1909 | if (!CBB_add_bytes(cbb, s->quic_transport_params, |
| 1910 | s->internal->quic_transport_params_len)) | 1910 | s->quic_transport_params_len)) |
| 1911 | return 0; | 1911 | return 0; |
| 1912 | 1912 | ||
| 1913 | return 1; | 1913 | return 1; |
| @@ -1934,15 +1934,15 @@ tlsext_quic_transport_parameters_client_parse(SSL *s, uint16_t msg_type, | |||
| 1934 | static int | 1934 | static int |
| 1935 | tlsext_quic_transport_parameters_server_needs(SSL *s, uint16_t msg_type) | 1935 | tlsext_quic_transport_parameters_server_needs(SSL *s, uint16_t msg_type) |
| 1936 | { | 1936 | { |
| 1937 | return SSL_is_quic(s) && s->internal->quic_transport_params_len > 0; | 1937 | return SSL_is_quic(s) && s->quic_transport_params_len > 0; |
| 1938 | } | 1938 | } |
| 1939 | 1939 | ||
| 1940 | static int | 1940 | static int |
| 1941 | tlsext_quic_transport_parameters_server_build(SSL *s, uint16_t msg_type, | 1941 | tlsext_quic_transport_parameters_server_build(SSL *s, uint16_t msg_type, |
| 1942 | CBB *cbb) | 1942 | CBB *cbb) |
| 1943 | { | 1943 | { |
| 1944 | if (!CBB_add_bytes(cbb, s->internal->quic_transport_params, | 1944 | if (!CBB_add_bytes(cbb, s->quic_transport_params, |
| 1945 | s->internal->quic_transport_params_len)) | 1945 | s->quic_transport_params_len)) |
| 1946 | return 0; | 1946 | return 0; |
| 1947 | 1947 | ||
| 1948 | return 1; | 1948 | return 1; |
| @@ -2294,7 +2294,7 @@ tlsext_clienthello_hash_extension(SSL *s, uint16_t type, CBS *cbs) | |||
| 2294 | * RFC 8446 4.1.2. For subsequent CH, early data will be removed, | 2294 | * RFC 8446 4.1.2. For subsequent CH, early data will be removed, |
| 2295 | * cookie may be added, padding may be removed. | 2295 | * cookie may be added, padding may be removed. |
| 2296 | */ | 2296 | */ |
| 2297 | struct tls13_ctx *ctx = s->internal->tls13; | 2297 | struct tls13_ctx *ctx = s->tls13; |
| 2298 | 2298 | ||
| 2299 | if (type == TLSEXT_TYPE_early_data || type == TLSEXT_TYPE_cookie || | 2299 | if (type == TLSEXT_TYPE_early_data || type == TLSEXT_TYPE_cookie || |
| 2300 | type == TLSEXT_TYPE_padding) | 2300 | type == TLSEXT_TYPE_padding) |
| @@ -2344,11 +2344,11 @@ tlsext_parse(SSL *s, int is_server, uint16_t msg_type, CBS *cbs, int *alert) | |||
| 2344 | if (!CBS_get_u16_length_prefixed(&extensions, &extension_data)) | 2344 | if (!CBS_get_u16_length_prefixed(&extensions, &extension_data)) |
| 2345 | goto err; | 2345 | goto err; |
| 2346 | 2346 | ||
| 2347 | if (s->internal->tlsext_debug_cb != NULL) | 2347 | if (s->tlsext_debug_cb != NULL) |
| 2348 | s->internal->tlsext_debug_cb(s, !is_server, type, | 2348 | s->tlsext_debug_cb(s, !is_server, type, |
| 2349 | (unsigned char *)CBS_data(&extension_data), | 2349 | (unsigned char *)CBS_data(&extension_data), |
| 2350 | CBS_len(&extension_data), | 2350 | CBS_len(&extension_data), |
| 2351 | s->internal->tlsext_debug_arg); | 2351 | s->tlsext_debug_arg); |
| 2352 | 2352 | ||
| 2353 | /* Unknown extensions are ignored. */ | 2353 | /* Unknown extensions are ignored. */ |
| 2354 | if ((tlsext = tls_extension_find(type, &idx)) == NULL) | 2354 | if ((tlsext = tls_extension_find(type, &idx)) == NULL) |
| @@ -2397,7 +2397,7 @@ tlsext_server_reset_state(SSL *s) | |||
| 2397 | free(s->s3->alpn_selected); | 2397 | free(s->s3->alpn_selected); |
| 2398 | s->s3->alpn_selected = NULL; | 2398 | s->s3->alpn_selected = NULL; |
| 2399 | s->s3->alpn_selected_len = 0; | 2399 | s->s3->alpn_selected_len = 0; |
| 2400 | s->internal->srtp_profile = NULL; | 2400 | s->srtp_profile = NULL; |
| 2401 | } | 2401 | } |
| 2402 | 2402 | ||
| 2403 | int | 2403 | int |
