diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/libssl/tls13_client.c | 110 | ||||
-rw-r--r-- | src/lib/libssl/tls13_handshake.c | 34 | ||||
-rw-r--r-- | src/lib/libssl/tls13_handshake.h | 8 | ||||
-rw-r--r-- | src/lib/libssl/tls13_internal.h | 6 | ||||
-rw-r--r-- | src/lib/libssl/tls13_server.c | 12 |
5 files changed, 104 insertions, 66 deletions
diff --git a/src/lib/libssl/tls13_client.c b/src/lib/libssl/tls13_client.c index 0da08f62c3..dffabf1753 100644 --- a/src/lib/libssl/tls13_client.c +++ b/src/lib/libssl/tls13_client.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls13_client.c,v 1.50 2020/04/21 16:55:17 jsing Exp $ */ | 1 | /* $OpenBSD: tls13_client.c,v 1.51 2020/04/22 17:05:07 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -281,6 +281,24 @@ tls13_server_hello_is_legacy(CBS *cbs) | |||
281 | } | 281 | } |
282 | 282 | ||
283 | static int | 283 | static int |
284 | tls13_server_hello_is_retry(CBS *cbs) | ||
285 | { | ||
286 | CBS server_hello, server_random; | ||
287 | uint16_t legacy_version; | ||
288 | |||
289 | CBS_dup(cbs, &server_hello); | ||
290 | |||
291 | if (!CBS_get_u16(&server_hello, &legacy_version)) | ||
292 | return 0; | ||
293 | if (!CBS_get_bytes(&server_hello, &server_random, SSL3_RANDOM_SIZE)) | ||
294 | return 0; | ||
295 | |||
296 | /* See if this is a HelloRetryRequest. */ | ||
297 | return CBS_mem_equal(&server_random, tls13_hello_retry_request_hash, | ||
298 | sizeof(tls13_hello_retry_request_hash)); | ||
299 | } | ||
300 | |||
301 | static int | ||
284 | tls13_server_hello_process(struct tls13_ctx *ctx, CBS *cbs) | 302 | tls13_server_hello_process(struct tls13_ctx *ctx, CBS *cbs) |
285 | { | 303 | { |
286 | CBS server_random, session_id; | 304 | CBS server_random, session_id; |
@@ -331,7 +349,8 @@ tls13_server_hello_process(struct tls13_ctx *ctx, CBS *cbs) | |||
331 | /* From here on in we know we are doing TLSv1.3. */ | 349 | /* From here on in we know we are doing TLSv1.3. */ |
332 | tls13_record_layer_allow_legacy_alerts(ctx->rl, 0); | 350 | tls13_record_layer_allow_legacy_alerts(ctx->rl, 0); |
333 | 351 | ||
334 | /* See if this is a Hello Retry Request. */ | 352 | /* See if this is a HelloRetryRequest. */ |
353 | /* XXX - see if we can avoid doing this twice. */ | ||
335 | if (CBS_mem_equal(&server_random, tls13_hello_retry_request_hash, | 354 | if (CBS_mem_equal(&server_random, tls13_hello_retry_request_hash, |
336 | sizeof(tls13_hello_retry_request_hash))) { | 355 | sizeof(tls13_hello_retry_request_hash))) { |
337 | tlsext_msg_type = SSL_TLSEXT_MSG_HRR; | 356 | tlsext_msg_type = SSL_TLSEXT_MSG_HRR; |
@@ -515,40 +534,75 @@ tls13_client_engage_record_protection(struct tls13_ctx *ctx) | |||
515 | } | 534 | } |
516 | 535 | ||
517 | int | 536 | int |
537 | tls13_server_hello_retry_request_recv(struct tls13_ctx *ctx, CBS *cbs) | ||
538 | { | ||
539 | /* | ||
540 | * The state machine has no way of knowing if we're going to receive a | ||
541 | * HelloRetryRequest or a ServerHello. As such, we have to handle | ||
542 | * this case here and hand off to the appropriate function. | ||
543 | */ | ||
544 | if (!tls13_server_hello_is_retry(cbs)) { | ||
545 | ctx->handshake_stage.hs_type |= WITHOUT_HRR; | ||
546 | return tls13_server_hello_recv(ctx, cbs); | ||
547 | } | ||
548 | |||
549 | if (!tls13_server_hello_process(ctx, cbs)) | ||
550 | return 0; | ||
551 | |||
552 | /* | ||
553 | * This may have been a TLSv1.2 or earlier ServerHello that just happened | ||
554 | * to have matching server random... | ||
555 | */ | ||
556 | if (ctx->hs->use_legacy) | ||
557 | return tls13_use_legacy_client(ctx); | ||
558 | |||
559 | if (!ctx->hs->hrr) | ||
560 | return 0; | ||
561 | |||
562 | if (!tls13_client_synthetic_handshake_message(ctx)) | ||
563 | return 0; | ||
564 | if (!tls13_handshake_msg_record(ctx)) | ||
565 | return 0; | ||
566 | |||
567 | ctx->hs->hrr = 0; | ||
568 | |||
569 | return 1; | ||
570 | } | ||
571 | |||
572 | int | ||
518 | tls13_server_hello_recv(struct tls13_ctx *ctx, CBS *cbs) | 573 | tls13_server_hello_recv(struct tls13_ctx *ctx, CBS *cbs) |
519 | { | 574 | { |
520 | SSL *s = ctx->ssl; | 575 | SSL *s = ctx->ssl; |
521 | 576 | ||
522 | /* | 577 | /* |
523 | * We may have received a legacy (pre-TLSv1.3) server hello, | 578 | * We may have received a legacy (pre-TLSv1.3) ServerHello or a TLSv1.3 |
524 | * a TLSv1.3 server hello or a TLSv1.3 hello retry request. | 579 | * ServerHello. HelloRetryRequests have already been handled. |
525 | */ | 580 | */ |
526 | if (!tls13_server_hello_process(ctx, cbs)) | 581 | if (!tls13_server_hello_process(ctx, cbs)) |
527 | return 0; | 582 | return 0; |
528 | 583 | ||
529 | tls1_transcript_unfreeze(s); | 584 | if (ctx->handshake_stage.hs_type & WITHOUT_HRR) { |
530 | 585 | tls1_transcript_unfreeze(s); | |
531 | if (ctx->hs->hrr) { | 586 | if (!tls13_handshake_msg_record(ctx)) |
532 | if (!tls13_client_synthetic_handshake_message(ctx)) | ||
533 | return 0; | 587 | return 0; |
534 | } | 588 | } |
535 | 589 | ||
536 | if (!tls13_handshake_msg_record(ctx)) | 590 | if (ctx->hs->use_legacy) { |
537 | return 0; | 591 | if (!(ctx->handshake_stage.hs_type & WITHOUT_HRR)) |
538 | 592 | return 0; | |
539 | if (ctx->hs->use_legacy) | ||
540 | return tls13_use_legacy_client(ctx); | 593 | return tls13_use_legacy_client(ctx); |
594 | } | ||
541 | 595 | ||
542 | if (!ctx->hs->hrr) { | 596 | if (ctx->hs->hrr) { |
543 | if (!tls13_client_engage_record_protection(ctx)) | 597 | /* The server has sent two HelloRetryRequests. */ |
544 | return 0; | 598 | ctx->alert = SSL_AD_ILLEGAL_PARAMETER; |
599 | return 0; | ||
545 | } | 600 | } |
546 | 601 | ||
547 | ctx->handshake_stage.hs_type |= NEGOTIATED; | 602 | if (!tls13_client_engage_record_protection(ctx)) |
548 | if (ctx->hs->hrr) | 603 | return 0; |
549 | ctx->handshake_stage.hs_type |= WITH_HRR; | ||
550 | 604 | ||
551 | ctx->hs->hrr = 0; | 605 | ctx->handshake_stage.hs_type |= NEGOTIATED; |
552 | 606 | ||
553 | return 1; | 607 | return 1; |
554 | } | 608 | } |
@@ -581,24 +635,6 @@ tls13_client_hello_retry_send(struct tls13_ctx *ctx, CBB *cbb) | |||
581 | } | 635 | } |
582 | 636 | ||
583 | int | 637 | int |
584 | tls13_server_hello_retry_recv(struct tls13_ctx *ctx, CBS *cbs) | ||
585 | { | ||
586 | if (!tls13_server_hello_process(ctx, cbs)) | ||
587 | return 0; | ||
588 | |||
589 | if (ctx->hs->use_legacy) | ||
590 | return 0; /* XXX alert */ | ||
591 | |||
592 | if (ctx->hs->hrr) | ||
593 | return 0; /* XXX alert */ | ||
594 | |||
595 | if (!tls13_client_engage_record_protection(ctx)) | ||
596 | return 0; | ||
597 | |||
598 | return 1; | ||
599 | } | ||
600 | |||
601 | int | ||
602 | tls13_server_encrypted_extensions_recv(struct tls13_ctx *ctx, CBS *cbs) | 638 | tls13_server_encrypted_extensions_recv(struct tls13_ctx *ctx, CBS *cbs) |
603 | { | 639 | { |
604 | int alert_desc; | 640 | int alert_desc; |
diff --git a/src/lib/libssl/tls13_handshake.c b/src/lib/libssl/tls13_handshake.c index 51585d31ba..86046144de 100644 --- a/src/lib/libssl/tls13_handshake.c +++ b/src/lib/libssl/tls13_handshake.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls13_handshake.c,v 1.52 2020/03/10 17:15:02 jsing Exp $ */ | 1 | /* $OpenBSD: tls13_handshake.c,v 1.53 2020/04/22 17:05:07 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2018-2019 Theo Buehler <tb@openbsd.org> | 3 | * Copyright (c) 2018-2019 Theo Buehler <tb@openbsd.org> |
4 | * Copyright (c) 2019 Joel Sing <jsing@openbsd.org> | 4 | * Copyright (c) 2019 Joel Sing <jsing@openbsd.org> |
@@ -96,11 +96,11 @@ struct tls13_handshake_action state_machine[] = { | |||
96 | .sent = tls13_server_hello_sent, | 96 | .sent = tls13_server_hello_sent, |
97 | .recv = tls13_server_hello_recv, | 97 | .recv = tls13_server_hello_recv, |
98 | }, | 98 | }, |
99 | [SERVER_HELLO_RETRY] = { | 99 | [SERVER_HELLO_RETRY_REQUEST] = { |
100 | .handshake_type = TLS13_MT_SERVER_HELLO, | 100 | .handshake_type = TLS13_MT_SERVER_HELLO, |
101 | .sender = TLS13_HS_SERVER, | 101 | .sender = TLS13_HS_SERVER, |
102 | .send = tls13_server_hello_retry_send, | 102 | .send = tls13_server_hello_retry_request_send, |
103 | .recv = tls13_server_hello_retry_recv, | 103 | .recv = tls13_server_hello_retry_request_recv, |
104 | }, | 104 | }, |
105 | [SERVER_ENCRYPTED_EXTENSIONS] = { | 105 | [SERVER_ENCRYPTED_EXTENSIONS] = { |
106 | .handshake_type = TLS13_MT_ENCRYPTED_EXTENSIONS, | 106 | .handshake_type = TLS13_MT_ENCRYPTED_EXTENSIONS, |
@@ -145,10 +145,14 @@ struct tls13_handshake_action state_machine[] = { | |||
145 | enum tls13_message_type handshakes[][TLS13_NUM_MESSAGE_TYPES] = { | 145 | enum tls13_message_type handshakes[][TLS13_NUM_MESSAGE_TYPES] = { |
146 | [INITIAL] = { | 146 | [INITIAL] = { |
147 | CLIENT_HELLO, | 147 | CLIENT_HELLO, |
148 | SERVER_HELLO_RETRY_REQUEST, | ||
149 | CLIENT_HELLO_RETRY, | ||
148 | SERVER_HELLO, | 150 | SERVER_HELLO, |
149 | }, | 151 | }, |
150 | [NEGOTIATED] = { | 152 | [NEGOTIATED] = { |
151 | CLIENT_HELLO, | 153 | CLIENT_HELLO, |
154 | SERVER_HELLO_RETRY_REQUEST, | ||
155 | CLIENT_HELLO_RETRY, | ||
152 | SERVER_HELLO, | 156 | SERVER_HELLO, |
153 | SERVER_ENCRYPTED_EXTENSIONS, | 157 | SERVER_ENCRYPTED_EXTENSIONS, |
154 | SERVER_CERTIFICATE_REQUEST, | 158 | SERVER_CERTIFICATE_REQUEST, |
@@ -159,11 +163,9 @@ enum tls13_message_type handshakes[][TLS13_NUM_MESSAGE_TYPES] = { | |||
159 | CLIENT_FINISHED, | 163 | CLIENT_FINISHED, |
160 | APPLICATION_DATA, | 164 | APPLICATION_DATA, |
161 | }, | 165 | }, |
162 | [NEGOTIATED | WITH_HRR] = { | 166 | [NEGOTIATED | WITHOUT_HRR] = { |
163 | CLIENT_HELLO, | 167 | CLIENT_HELLO, |
164 | SERVER_HELLO, | 168 | SERVER_HELLO, |
165 | CLIENT_HELLO_RETRY, | ||
166 | SERVER_HELLO_RETRY, | ||
167 | SERVER_ENCRYPTED_EXTENSIONS, | 169 | SERVER_ENCRYPTED_EXTENSIONS, |
168 | SERVER_CERTIFICATE_REQUEST, | 170 | SERVER_CERTIFICATE_REQUEST, |
169 | SERVER_CERTIFICATE, | 171 | SERVER_CERTIFICATE, |
@@ -175,6 +177,8 @@ enum tls13_message_type handshakes[][TLS13_NUM_MESSAGE_TYPES] = { | |||
175 | }, | 177 | }, |
176 | [NEGOTIATED | WITHOUT_CR] = { | 178 | [NEGOTIATED | WITHOUT_CR] = { |
177 | CLIENT_HELLO, | 179 | CLIENT_HELLO, |
180 | SERVER_HELLO_RETRY_REQUEST, | ||
181 | CLIENT_HELLO_RETRY, | ||
178 | SERVER_HELLO, | 182 | SERVER_HELLO, |
179 | SERVER_ENCRYPTED_EXTENSIONS, | 183 | SERVER_ENCRYPTED_EXTENSIONS, |
180 | SERVER_CERTIFICATE, | 184 | SERVER_CERTIFICATE, |
@@ -183,11 +187,9 @@ enum tls13_message_type handshakes[][TLS13_NUM_MESSAGE_TYPES] = { | |||
183 | CLIENT_FINISHED, | 187 | CLIENT_FINISHED, |
184 | APPLICATION_DATA, | 188 | APPLICATION_DATA, |
185 | }, | 189 | }, |
186 | [NEGOTIATED | WITH_HRR | WITHOUT_CR] = { | 190 | [NEGOTIATED | WITHOUT_HRR | WITHOUT_CR] = { |
187 | CLIENT_HELLO, | 191 | CLIENT_HELLO, |
188 | SERVER_HELLO, | 192 | SERVER_HELLO, |
189 | CLIENT_HELLO_RETRY, | ||
190 | SERVER_HELLO_RETRY, | ||
191 | SERVER_ENCRYPTED_EXTENSIONS, | 193 | SERVER_ENCRYPTED_EXTENSIONS, |
192 | SERVER_CERTIFICATE, | 194 | SERVER_CERTIFICATE, |
193 | SERVER_CERTIFICATE_VERIFY, | 195 | SERVER_CERTIFICATE_VERIFY, |
@@ -197,17 +199,17 @@ enum tls13_message_type handshakes[][TLS13_NUM_MESSAGE_TYPES] = { | |||
197 | }, | 199 | }, |
198 | [NEGOTIATED | WITH_PSK] = { | 200 | [NEGOTIATED | WITH_PSK] = { |
199 | CLIENT_HELLO, | 201 | CLIENT_HELLO, |
202 | SERVER_HELLO_RETRY_REQUEST, | ||
203 | CLIENT_HELLO_RETRY, | ||
200 | SERVER_HELLO, | 204 | SERVER_HELLO, |
201 | SERVER_ENCRYPTED_EXTENSIONS, | 205 | SERVER_ENCRYPTED_EXTENSIONS, |
202 | SERVER_FINISHED, | 206 | SERVER_FINISHED, |
203 | CLIENT_FINISHED, | 207 | CLIENT_FINISHED, |
204 | APPLICATION_DATA, | 208 | APPLICATION_DATA, |
205 | }, | 209 | }, |
206 | [NEGOTIATED | WITH_HRR | WITH_PSK] = { | 210 | [NEGOTIATED | WITHOUT_HRR | WITH_PSK] = { |
207 | CLIENT_HELLO, | 211 | CLIENT_HELLO, |
208 | SERVER_HELLO, | 212 | SERVER_HELLO, |
209 | CLIENT_HELLO_RETRY, | ||
210 | SERVER_HELLO_RETRY, | ||
211 | SERVER_ENCRYPTED_EXTENSIONS, | 213 | SERVER_ENCRYPTED_EXTENSIONS, |
212 | SERVER_FINISHED, | 214 | SERVER_FINISHED, |
213 | CLIENT_FINISHED, | 215 | CLIENT_FINISHED, |
@@ -215,6 +217,8 @@ enum tls13_message_type handshakes[][TLS13_NUM_MESSAGE_TYPES] = { | |||
215 | }, | 217 | }, |
216 | [NEGOTIATED | WITH_CCV] = { | 218 | [NEGOTIATED | WITH_CCV] = { |
217 | CLIENT_HELLO, | 219 | CLIENT_HELLO, |
220 | SERVER_HELLO_RETRY_REQUEST, | ||
221 | CLIENT_HELLO_RETRY, | ||
218 | SERVER_HELLO, | 222 | SERVER_HELLO, |
219 | SERVER_ENCRYPTED_EXTENSIONS, | 223 | SERVER_ENCRYPTED_EXTENSIONS, |
220 | SERVER_CERTIFICATE_REQUEST, | 224 | SERVER_CERTIFICATE_REQUEST, |
@@ -226,11 +230,9 @@ enum tls13_message_type handshakes[][TLS13_NUM_MESSAGE_TYPES] = { | |||
226 | CLIENT_FINISHED, | 230 | CLIENT_FINISHED, |
227 | APPLICATION_DATA, | 231 | APPLICATION_DATA, |
228 | }, | 232 | }, |
229 | [NEGOTIATED | WITH_HRR | WITH_CCV] = { | 233 | [NEGOTIATED | WITHOUT_HRR | WITH_CCV] = { |
230 | CLIENT_HELLO, | 234 | CLIENT_HELLO, |
231 | SERVER_HELLO, | 235 | SERVER_HELLO, |
232 | CLIENT_HELLO_RETRY, | ||
233 | SERVER_HELLO_RETRY, | ||
234 | SERVER_ENCRYPTED_EXTENSIONS, | 236 | SERVER_ENCRYPTED_EXTENSIONS, |
235 | SERVER_CERTIFICATE_REQUEST, | 237 | SERVER_CERTIFICATE_REQUEST, |
236 | SERVER_CERTIFICATE, | 238 | SERVER_CERTIFICATE, |
diff --git a/src/lib/libssl/tls13_handshake.h b/src/lib/libssl/tls13_handshake.h index 956d27c61a..8a08b9fd5b 100644 --- a/src/lib/libssl/tls13_handshake.h +++ b/src/lib/libssl/tls13_handshake.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls13_handshake.h,v 1.4 2020/03/10 17:15:02 jsing Exp $ */ | 1 | /* $OpenBSD: tls13_handshake.h,v 1.5 2020/04/22 17:05:07 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2019 Theo Buehler <tb@openbsd.org> | 3 | * Copyright (c) 2019 Theo Buehler <tb@openbsd.org> |
4 | * | 4 | * |
@@ -24,7 +24,7 @@ __BEGIN_HIDDEN_DECLS | |||
24 | 24 | ||
25 | #define INITIAL 0x00 | 25 | #define INITIAL 0x00 |
26 | #define NEGOTIATED 0x01 | 26 | #define NEGOTIATED 0x01 |
27 | #define WITH_HRR 0x02 | 27 | #define WITHOUT_HRR 0x02 |
28 | #define WITHOUT_CR 0x04 | 28 | #define WITHOUT_CR 0x04 |
29 | #define WITH_PSK 0x08 | 29 | #define WITH_PSK 0x08 |
30 | #define WITH_CCV 0x10 | 30 | #define WITH_CCV 0x10 |
@@ -33,9 +33,9 @@ __BEGIN_HIDDEN_DECLS | |||
33 | enum tls13_message_type { | 33 | enum tls13_message_type { |
34 | INVALID, | 34 | INVALID, |
35 | CLIENT_HELLO, | 35 | CLIENT_HELLO, |
36 | SERVER_HELLO, | 36 | SERVER_HELLO_RETRY_REQUEST, |
37 | CLIENT_HELLO_RETRY, | 37 | CLIENT_HELLO_RETRY, |
38 | SERVER_HELLO_RETRY, | 38 | SERVER_HELLO, |
39 | SERVER_ENCRYPTED_EXTENSIONS, | 39 | SERVER_ENCRYPTED_EXTENSIONS, |
40 | SERVER_CERTIFICATE_REQUEST, | 40 | SERVER_CERTIFICATE_REQUEST, |
41 | SERVER_CERTIFICATE, | 41 | SERVER_CERTIFICATE, |
diff --git a/src/lib/libssl/tls13_internal.h b/src/lib/libssl/tls13_internal.h index c5b893bc16..ee82a44693 100644 --- a/src/lib/libssl/tls13_internal.h +++ b/src/lib/libssl/tls13_internal.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls13_internal.h,v 1.64 2020/04/21 16:55:17 jsing Exp $ */ | 1 | /* $OpenBSD: tls13_internal.h,v 1.65 2020/04/22 17:05:07 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2018 Bob Beck <beck@openbsd.org> | 3 | * Copyright (c) 2018 Bob Beck <beck@openbsd.org> |
4 | * Copyright (c) 2018 Theo Buehler <tb@openbsd.org> | 4 | * Copyright (c) 2018 Theo Buehler <tb@openbsd.org> |
@@ -309,8 +309,8 @@ int tls13_client_finished_sent(struct tls13_ctx *ctx); | |||
309 | int tls13_server_hello_recv(struct tls13_ctx *ctx, CBS *cbs); | 309 | int tls13_server_hello_recv(struct tls13_ctx *ctx, CBS *cbs); |
310 | int tls13_server_hello_send(struct tls13_ctx *ctx, CBB *cbb); | 310 | int tls13_server_hello_send(struct tls13_ctx *ctx, CBB *cbb); |
311 | int tls13_server_hello_sent(struct tls13_ctx *ctx); | 311 | int tls13_server_hello_sent(struct tls13_ctx *ctx); |
312 | int tls13_server_hello_retry_recv(struct tls13_ctx *ctx, CBS *cbs); | 312 | int tls13_server_hello_retry_request_recv(struct tls13_ctx *ctx, CBS *cbs); |
313 | int tls13_server_hello_retry_send(struct tls13_ctx *ctx, CBB *cbb); | 313 | int tls13_server_hello_retry_request_send(struct tls13_ctx *ctx, CBB *cbb); |
314 | int tls13_server_encrypted_extensions_recv(struct tls13_ctx *ctx, CBS *cbs); | 314 | int tls13_server_encrypted_extensions_recv(struct tls13_ctx *ctx, CBS *cbs); |
315 | int tls13_server_encrypted_extensions_send(struct tls13_ctx *ctx, CBB *cbb); | 315 | int tls13_server_encrypted_extensions_send(struct tls13_ctx *ctx, CBB *cbb); |
316 | int tls13_server_certificate_recv(struct tls13_ctx *ctx, CBS *cbs); | 316 | int tls13_server_certificate_recv(struct tls13_ctx *ctx, CBS *cbs); |
diff --git a/src/lib/libssl/tls13_server.c b/src/lib/libssl/tls13_server.c index f3d21a7477..9bc4cb6170 100644 --- a/src/lib/libssl/tls13_server.c +++ b/src/lib/libssl/tls13_server.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls13_server.c,v 1.30 2020/04/21 17:06:16 jsing Exp $ */ | 1 | /* $OpenBSD: tls13_server.c,v 1.31 2020/04/22 17:05:07 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2019, 2020 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2019, 2020 Joel Sing <jsing@openbsd.org> |
4 | * Copyright (c) 2020 Bob Beck <beck@openbsd.org> | 4 | * Copyright (c) 2020 Bob Beck <beck@openbsd.org> |
@@ -280,11 +280,11 @@ tls13_client_hello_recv(struct tls13_ctx *ctx, CBS *cbs) | |||
280 | return 1; | 280 | return 1; |
281 | 281 | ||
282 | /* | 282 | /* |
283 | * If no matching key share was provided, we need to send a | 283 | * If a matching key share was provided, we do not need to |
284 | * HelloRetryRequest, if matching security parameters exist. | 284 | * send a HelloRetryRequest. |
285 | */ | 285 | */ |
286 | if (ctx->hs->key_share == NULL) | 286 | if (ctx->hs->key_share != NULL) |
287 | ctx->handshake_stage.hs_type |= WITH_HRR; | 287 | ctx->handshake_stage.hs_type |= WITHOUT_HRR; |
288 | 288 | ||
289 | /* XXX - check this is the correct point */ | 289 | /* XXX - check this is the correct point */ |
290 | tls13_record_layer_allow_ccs(ctx->rl, 1); | 290 | tls13_record_layer_allow_ccs(ctx->rl, 1); |
@@ -608,7 +608,7 @@ tls13_server_hello_sent(struct tls13_ctx *ctx) | |||
608 | } | 608 | } |
609 | 609 | ||
610 | int | 610 | int |
611 | tls13_server_hello_retry_send(struct tls13_ctx *ctx, CBB *cbb) | 611 | tls13_server_hello_retry_request_send(struct tls13_ctx *ctx, CBB *cbb) |
612 | { | 612 | { |
613 | return 0; | 613 | return 0; |
614 | } | 614 | } |