summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbeck <>2020-01-23 08:04:50 +0000
committerbeck <>2020-01-23 08:04:50 +0000
commit2e68d19baa1dd9f1c5e5f544dc3004683c5f618e (patch)
tree55e8702668822f1be79903aafff9d5d337551226
parentd0a2a4304e8bc55b8e532933c8af4982563b033b (diff)
downloadopenbsd-2e68d19baa1dd9f1c5e5f544dc3004683c5f618e.tar.gz
openbsd-2e68d19baa1dd9f1c5e5f544dc3004683c5f618e.tar.bz2
openbsd-2e68d19baa1dd9f1c5e5f544dc3004683c5f618e.zip
If we are building a legacy server hello, check to see if we are
downgrading from TLS 1.3. If we are, set the last 8 bytes of the server_random value to the required values as per RFC 8446 section 4.1.3 indicating that we deliberately meant to downgrade. ok jsing@
-rw-r--r--src/lib/libssl/ssl_srvr.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/lib/libssl/ssl_srvr.c b/src/lib/libssl/ssl_srvr.c
index 809f589653..26b24f4f22 100644
--- a/src/lib/libssl/ssl_srvr.c
+++ b/src/lib/libssl/ssl_srvr.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_srvr.c,v 1.68 2019/04/22 15:12:20 jsing Exp $ */ 1/* $OpenBSD: ssl_srvr.c,v 1.69 2020/01/23 08:04:50 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 *
@@ -1042,6 +1042,25 @@ ssl3_get_client_hello(SSL *s)
1042 */ 1042 */
1043 arc4random_buf(s->s3->server_random, SSL3_RANDOM_SIZE); 1043 arc4random_buf(s->s3->server_random, SSL3_RANDOM_SIZE);
1044 1044
1045 if (s->internal->tls13 != NULL) {
1046 /*
1047 * RFC 8446 section 4.1.3. If we are downgrading from TLS 1.3
1048 * we must set the last 8 bytes of the server random to magical
1049 * values to indicate we meant to downgrade.
1050 */
1051 size_t index = SSL3_RANDOM_SIZE - sizeof(tls13_downgrade_12);
1052 uint8_t *magic = &s->s3->server_random[index];
1053 if (s->version == TLS1_2_VERSION) {
1054 /* Indicate we chose to downgrade to 1.2. */
1055 memcpy(magic, tls13_downgrade_12,
1056 sizeof(tls13_downgrade_12));
1057 } else {
1058 /* Indicate we chose to downgrade to 1.1 or lower */
1059 memcpy(magic, tls13_downgrade_11,
1060 sizeof(tls13_downgrade_11));
1061 }
1062 }
1063
1045 if (!s->internal->hit && s->internal->tls_session_secret_cb) { 1064 if (!s->internal->hit && s->internal->tls_session_secret_cb) {
1046 SSL_CIPHER *pref_cipher = NULL; 1065 SSL_CIPHER *pref_cipher = NULL;
1047 1066