diff options
author | tb <> | 2020-05-09 20:38:19 +0000 |
---|---|---|
committer | tb <> | 2020-05-09 20:38:19 +0000 |
commit | 2a4fe9ed015f84f0020469e2ffae41ce8272e589 (patch) | |
tree | 1c2a03fa66763a699d83162b42558515f1d27581 /src/lib/libssl/tls13_server.c | |
parent | a7d1d6888203cb7211c1423e27096fbea68be440 (diff) | |
download | openbsd-2a4fe9ed015f84f0020469e2ffae41ce8272e589.tar.gz openbsd-2a4fe9ed015f84f0020469e2ffae41ce8272e589.tar.bz2 openbsd-2a4fe9ed015f84f0020469e2ffae41ce8272e589.zip |
Back out server side CCS sending. It breaks TLSv1.3 client communication
with TLSv1.2 servers, since it makes clients send their dummy CCS too
early... There's an obvious but dirty bandaid which I can't bring myself
to applying - this business is already disgusting enough.
Issue found the hard way by sthen
Diffstat (limited to '')
-rw-r--r-- | src/lib/libssl/tls13_server.c | 25 |
1 files changed, 1 insertions, 24 deletions
diff --git a/src/lib/libssl/tls13_server.c b/src/lib/libssl/tls13_server.c index 5e2711d4d4..0b040fb51d 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.39 2020/05/09 16:43:05 tb Exp $ */ | 1 | /* $OpenBSD: tls13_server.c,v 1.40 2020/05/09 20:38:19 tb 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> |
@@ -335,20 +335,6 @@ tls13_server_hello_retry_request_send(struct tls13_ctx *ctx, CBB *cbb) | |||
335 | } | 335 | } |
336 | 336 | ||
337 | int | 337 | int |
338 | tls13_server_hello_retry_request_sent(struct tls13_ctx *ctx) | ||
339 | { | ||
340 | /* | ||
341 | * If the client has requested middlebox compatibility mode, | ||
342 | * we MUST send a dummy CCS following our first handshake message. | ||
343 | * See RFC 8446 Appendix D.4. | ||
344 | */ | ||
345 | if (ctx->hs->legacy_session_id_len > 0) | ||
346 | ctx->send_dummy_ccs = 1; | ||
347 | |||
348 | return 1; | ||
349 | } | ||
350 | |||
351 | int | ||
352 | tls13_client_hello_retry_recv(struct tls13_ctx *ctx, CBS *cbs) | 338 | tls13_client_hello_retry_recv(struct tls13_ctx *ctx, CBS *cbs) |
353 | { | 339 | { |
354 | SSL *s = ctx->ssl; | 340 | SSL *s = ctx->ssl; |
@@ -382,15 +368,6 @@ tls13_server_hello_send(struct tls13_ctx *ctx, CBB *cbb) | |||
382 | int | 368 | int |
383 | tls13_server_hello_sent(struct tls13_ctx *ctx) | 369 | tls13_server_hello_sent(struct tls13_ctx *ctx) |
384 | { | 370 | { |
385 | /* | ||
386 | * If the client has requested middlebox compatibility mode, | ||
387 | * we MUST send a dummy CCS following our first handshake message. | ||
388 | * See RFC 8446 Appendix D.4. | ||
389 | */ | ||
390 | if ((ctx->handshake_stage.hs_type & WITHOUT_HRR) && | ||
391 | ctx->hs->legacy_session_id_len > 0) | ||
392 | ctx->send_dummy_ccs = 1; | ||
393 | |||
394 | return tls13_server_engage_record_protection(ctx); | 371 | return tls13_server_engage_record_protection(ctx); |
395 | } | 372 | } |
396 | 373 | ||