diff --git a/include/openssl/tls1.h b/include/openssl/tls1.h index d8dc34a8..894801bb 100644 --- a/include/openssl/tls1.h +++ b/include/openssl/tls1.h @@ -32,8 +32,12 @@ extern "C" { /* TODO(TLS1.3) REMOVE ME: Version indicators for draft version */ # define TLS1_3_VERSION_DRAFT_23 0x7f17 +# define TLS1_3_VERSION_DRAFT_26 0x7f1a +# define TLS1_3_VERSION_DRAFT_27 0x7f1b # define TLS1_3_VERSION_DRAFT 0x7f1c # define TLS1_3_VERSION_DRAFT_TXT_23 "TLS 1.3 (draft 23)" +# define TLS1_3_VERSION_DRAFT_TXT_26 "TLS 1.3 (draft 26)" +# define TLS1_3_VERSION_DRAFT_TXT_27 "TLS 1.3 (draft 27)" # define TLS1_3_VERSION_DRAFT_TXT "TLS 1.3 (draft 28)" /* Special value for method supporting multiple versions */ diff --git a/ssl/statem/extensions_clnt.c b/ssl/statem/extensions_clnt.c index 05681cd3..4fb02935 100644 --- a/ssl/statem/extensions_clnt.c +++ b/ssl/statem/extensions_clnt.c @@ -539,6 +539,8 @@ EXT_RETURN tls_construct_ctos_supported_versions(SSL *s, WPACKET *pkt, /* TODO(TLS1.3): Remove this first if clause prior to release!! */ if (currv == TLS1_3_VERSION) { if (!WPACKET_put_bytes_u16(pkt, TLS1_3_VERSION_DRAFT) + || !WPACKET_put_bytes_u16(pkt, TLS1_3_VERSION_DRAFT_27) + || !WPACKET_put_bytes_u16(pkt, TLS1_3_VERSION_DRAFT_26) || !WPACKET_put_bytes_u16(pkt, TLS1_3_VERSION_DRAFT_23)) { SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_VERSIONS, @@ -1791,6 +1793,8 @@ int tls_parse_stoc_supported_versions(SSL *s, PACKET *pkt, unsigned int context, /* TODO(TLS1.3): Remove this before release */ if (version == TLS1_3_VERSION_DRAFT + || version == TLS1_3_VERSION_DRAFT_27 + || version == TLS1_3_VERSION_DRAFT_26 || version == TLS1_3_VERSION_DRAFT_23) { s->version_draft = version; version = TLS1_3_VERSION; diff --git a/ssl/t1_trce.c b/ssl/t1_trce.c index a07db9a8..15f7f76e 100644 --- a/ssl/t1_trce.c +++ b/ssl/t1_trce.c @@ -67,6 +67,8 @@ static const ssl_trace_tbl ssl_version_tbl[] = { {TLS1_3_VERSION, "TLS 1.3"}, /* TODO(TLS1.3): Remove these lines before release */ {TLS1_3_VERSION_DRAFT_23, TLS1_3_VERSION_DRAFT_TXT_23}, + {TLS1_3_VERSION_DRAFT_26, TLS1_3_VERSION_DRAFT_TXT_26}, + {TLS1_3_VERSION_DRAFT_27, TLS1_3_VERSION_DRAFT_TXT_27}, {TLS1_3_VERSION_DRAFT, TLS1_3_VERSION_DRAFT_TXT}, {DTLS1_VERSION, "DTLS 1.0"}, {DTLS1_2_VERSION, "DTLS 1.2"}, @@ -645,6 +647,8 @@ static int ssl_print_version(BIO *bio, int indent, const char *name, /* TODO(TLS1.3): Remove the draft conditional here before release */ switch(vers) { case TLS1_3_VERSION_DRAFT_23: + case TLS1_3_VERSION_DRAFT_26: + case TLS1_3_VERSION_DRAFT_27: case TLS1_3_VERSION_DRAFT: *version = TLS1_3_VERSION; break;