Remove old TLS 1.3 variants (NoSessionID and RecordType).
Change-Id: I2428321218d0b5dce242e3843d39ca269e1eb686
Reviewed-on: https://boringssl-review.googlesource.com/20984
Commit-Queue: Steven Valdez <svaldez@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
Reviewed-by: David Benjamin <davidben@google.com>
diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h
index a85fc9c..77c5b7c 100644
--- a/include/openssl/ssl.h
+++ b/include/openssl/ssl.h
@@ -591,7 +591,6 @@
#define TLS1_3_EXPERIMENT_VERSION 0x7e01
#define TLS1_3_EXPERIMENT2_VERSION 0x7e02
#define TLS1_3_EXPERIMENT3_VERSION 0x7e03
-#define TLS1_3_RECORD_TYPE_EXPERIMENT_VERSION 0x7a12
// SSL_CTX_set_min_proto_version sets the minimum protocol version for |ctx| to
// |version|. If |version| is zero, the default minimum version is used. It
@@ -3219,10 +3218,8 @@
enum tls13_variant_t {
tls13_default = 0,
tls13_experiment = 1,
- tls13_record_type_experiment = 2,
- tls13_no_session_id_experiment = 3,
- tls13_experiment2 = 4,
- tls13_experiment3 = 5,
+ tls13_experiment2 = 2,
+ tls13_experiment3 = 3,
};
// SSL_CTX_set_tls13_variant sets which variant of TLS 1.3 we negotiate. On the
diff --git a/include/openssl/ssl3.h b/include/openssl/ssl3.h
index 719a52d..6754cec 100644
--- a/include/openssl/ssl3.h
+++ b/include/openssl/ssl3.h
@@ -272,7 +272,6 @@
#define SSL3_RT_ALERT 21
#define SSL3_RT_HANDSHAKE 22
#define SSL3_RT_APPLICATION_DATA 23
-#define SSL3_RT_PLAINTEXT_HANDSHAKE 24
// Pseudo content type for SSL/TLS header info
#define SSL3_RT_HEADER 0x100
diff --git a/ssl/s3_both.cc b/ssl/s3_both.cc
index f48e5e7..65e2089 100644
--- a/ssl/s3_both.cc
+++ b/ssl/s3_both.cc
@@ -189,15 +189,7 @@
Span<const uint8_t> chunk = rest.subspan(0, ssl->max_send_fragment);
rest = rest.subspan(chunk.size());
- uint8_t type = SSL3_RT_HANDSHAKE;
- if (ssl->server &&
- ssl->s3->have_version &&
- ssl->version == TLS1_3_RECORD_TYPE_EXPERIMENT_VERSION &&
- ssl->s3->aead_write_ctx->is_null_cipher()) {
- type = SSL3_RT_PLAINTEXT_HANDSHAKE;
- }
-
- if (!add_record_to_flight(ssl, type, chunk)) {
+ if (!add_record_to_flight(ssl, SSL3_RT_HANDSHAKE, chunk)) {
return 0;
}
} while (!rest.empty());
diff --git a/ssl/s3_pkt.cc b/ssl/s3_pkt.cc
index b9eebf3..f7470ae 100644
--- a/ssl/s3_pkt.cc
+++ b/ssl/s3_pkt.cc
@@ -522,13 +522,7 @@
return -1;
}
- // Accept server_plaintext_handshake records when the content type TLS 1.3
- // variant is enabled.
- if (rr->type != SSL3_RT_HANDSHAKE &&
- !(!ssl->server &&
- ssl->tls13_variant == tls13_record_type_experiment &&
- ssl->s3->aead_read_ctx->is_null_cipher() &&
- rr->type == SSL3_RT_PLAINTEXT_HANDSHAKE)) {
+ if (rr->type != SSL3_RT_HANDSHAKE) {
OPENSSL_PUT_ERROR(SSL, SSL_R_UNEXPECTED_RECORD);
ssl3_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE);
return -1;
diff --git a/ssl/ssl_versions.cc b/ssl/ssl_versions.cc
index c06a90e..c06c5ab 100644
--- a/ssl/ssl_versions.cc
+++ b/ssl/ssl_versions.cc
@@ -38,7 +38,6 @@
case TLS1_3_EXPERIMENT_VERSION:
case TLS1_3_EXPERIMENT2_VERSION:
case TLS1_3_EXPERIMENT3_VERSION:
- case TLS1_3_RECORD_TYPE_EXPERIMENT_VERSION:
*out = TLS1_3_VERSION;
return true;
@@ -63,7 +62,6 @@
TLS1_3_EXPERIMENT3_VERSION,
TLS1_3_EXPERIMENT2_VERSION,
TLS1_3_EXPERIMENT_VERSION,
- TLS1_3_RECORD_TYPE_EXPERIMENT_VERSION,
TLS1_3_DRAFT_VERSION,
TLS1_2_VERSION,
TLS1_1_VERSION,
@@ -108,8 +106,7 @@
if (version == TLS1_3_DRAFT_VERSION ||
version == TLS1_3_EXPERIMENT_VERSION ||
version == TLS1_3_EXPERIMENT2_VERSION ||
- version == TLS1_3_EXPERIMENT3_VERSION ||
- version == TLS1_3_RECORD_TYPE_EXPERIMENT_VERSION) {
+ version == TLS1_3_EXPERIMENT3_VERSION) {
OPENSSL_PUT_ERROR(SSL, SSL_R_UNKNOWN_SSL_VERSION);
return false;
}
@@ -237,7 +234,6 @@
case TLS1_3_EXPERIMENT_VERSION:
case TLS1_3_EXPERIMENT2_VERSION:
case TLS1_3_EXPERIMENT3_VERSION:
- case TLS1_3_RECORD_TYPE_EXPERIMENT_VERSION:
return "TLSv1.3";
case TLS1_2_VERSION:
@@ -284,20 +280,16 @@
if (ssl->tls13_variant == tls13_default &&
(version == TLS1_3_EXPERIMENT_VERSION ||
version == TLS1_3_EXPERIMENT2_VERSION ||
- version == TLS1_3_EXPERIMENT3_VERSION ||
- version == TLS1_3_RECORD_TYPE_EXPERIMENT_VERSION)) {
+ version == TLS1_3_EXPERIMENT3_VERSION)) {
return false;
}
} else {
if ((ssl->tls13_variant != tls13_experiment &&
- ssl->tls13_variant != tls13_no_session_id_experiment &&
version == TLS1_3_EXPERIMENT_VERSION) ||
(ssl->tls13_variant != tls13_experiment2 &&
version == TLS1_3_EXPERIMENT2_VERSION) ||
(ssl->tls13_variant != tls13_experiment3 &&
version == TLS1_3_EXPERIMENT3_VERSION) ||
- (ssl->tls13_variant != tls13_record_type_experiment &&
- version == TLS1_3_RECORD_TYPE_EXPERIMENT_VERSION) ||
(ssl->tls13_variant != tls13_default &&
version == TLS1_3_DRAFT_VERSION)) {
return false;
@@ -402,8 +394,7 @@
if (ret == TLS1_3_DRAFT_VERSION ||
ret == TLS1_3_EXPERIMENT_VERSION ||
ret == TLS1_3_EXPERIMENT2_VERSION ||
- ret == TLS1_3_EXPERIMENT3_VERSION ||
- ret == TLS1_3_RECORD_TYPE_EXPERIMENT_VERSION) {
+ ret == TLS1_3_EXPERIMENT3_VERSION) {
return TLS1_3_VERSION;
}
return ret;
diff --git a/ssl/test/runner/common.go b/ssl/test/runner/common.go
index 8404d52..dc4055e 100644
--- a/ssl/test/runner/common.go
+++ b/ssl/test/runner/common.go
@@ -33,20 +33,17 @@
// A draft version of TLS 1.3 that is sent over the wire for the current draft.
const (
- tls13DraftVersion = 0x7f12
- tls13ExperimentVersion = 0x7e01
- tls13Experiment2Version = 0x7e02
- tls13Experiment3Version = 0x7e03
- tls13RecordTypeExperimentVersion = 0x7a12
+ tls13DraftVersion = 0x7f12
+ tls13ExperimentVersion = 0x7e01
+ tls13Experiment2Version = 0x7e02
+ tls13Experiment3Version = 0x7e03
)
const (
- TLS13Default = 0
- TLS13Experiment = 1
- TLS13RecordTypeExperiment = 2
- TLS13NoSessionIDExperiment = 3
- TLS13Experiment2 = 4
- TLS13Experiment3 = 5
+ TLS13Default = 0
+ TLS13Experiment = 1
+ TLS13Experiment2 = 2
+ TLS13Experiment3 = 3
)
var allTLSWireVersions = []uint16{
@@ -54,7 +51,6 @@
tls13Experiment3Version,
tls13Experiment2Version,
tls13ExperimentVersion,
- tls13RecordTypeExperimentVersion,
VersionTLS12,
VersionTLS11,
VersionTLS10,
@@ -743,10 +739,6 @@
// connection if there is not a SessionID in the ClientHello.
ExpectClientHelloSessionID bool
- // ExpectEmptyClientHelloSessionID, if true, causes the server to fail the
- // connection if there is a SessionID in the ClientHello.
- ExpectEmptyClientHelloSessionID bool
-
// ExpectNoTLS12Session, if true, causes the server to fail the
// connection if either a session ID or TLS 1.2 ticket is offered.
ExpectNoTLS12Session bool
@@ -1558,7 +1550,7 @@
switch vers {
case VersionSSL30, VersionTLS10, VersionTLS11, VersionTLS12:
return vers, true
- case tls13DraftVersion, tls13ExperimentVersion, tls13Experiment2Version, tls13Experiment3Version, tls13RecordTypeExperimentVersion:
+ case tls13DraftVersion, tls13ExperimentVersion, tls13Experiment2Version, tls13Experiment3Version:
return VersionTLS13, true
}
}
@@ -1582,10 +1574,9 @@
// it returns true and the corresponding protocol version. Otherwise, it returns
// false.
func (c *Config) isSupportedVersion(wireVers uint16, isDTLS bool) (uint16, bool) {
- if (c.TLS13Variant != TLS13Experiment && c.TLS13Variant != TLS13NoSessionIDExperiment && wireVers == tls13ExperimentVersion) ||
+ if (c.TLS13Variant != TLS13Experiment && wireVers == tls13ExperimentVersion) ||
(c.TLS13Variant != TLS13Experiment2 && wireVers == tls13Experiment2Version) ||
(c.TLS13Variant != TLS13Experiment3 && wireVers == tls13Experiment3Version) ||
- (c.TLS13Variant != TLS13RecordTypeExperiment && wireVers == tls13RecordTypeExperimentVersion) ||
(c.TLS13Variant != TLS13Default && wireVers == tls13DraftVersion) {
return 0, false
}
diff --git a/ssl/test/runner/conn.go b/ssl/test/runner/conn.go
index 25123b1..a80e3c8 100644
--- a/ssl/test/runner/conn.go
+++ b/ssl/test/runner/conn.go
@@ -774,11 +774,6 @@
return 0, nil, c.in.setErrorLocked(errors.New("tls: unsupported SSLv2 handshake received"))
}
- // Accept server_plaintext_handshake records when the content type TLS 1.3 variant is enabled.
- if c.isClient && c.in.cipher == nil && c.config.TLS13Variant == TLS13RecordTypeExperiment && want == recordTypeHandshake && typ == recordTypePlaintextHandshake {
- typ = recordTypeHandshake
- }
-
vers := uint16(b.data[1])<<8 | uint16(b.data[2])
n := int(b.data[3])<<8 | int(b.data[4])
diff --git a/ssl/test/runner/handshake_server.go b/ssl/test/runner/handshake_server.go
index 0a67a80..b1729cb 100644
--- a/ssl/test/runner/handshake_server.go
+++ b/ssl/test/runner/handshake_server.go
@@ -573,11 +573,7 @@
if sendHelloRetryRequest {
oldClientHelloBytes := hs.clientHello.marshal()
hs.writeServerHash(helloRetryRequest.marshal())
- if c.vers == tls13RecordTypeExperimentVersion {
- c.writeRecord(recordTypePlaintextHandshake, helloRetryRequest.marshal())
- } else {
- c.writeRecord(recordTypeHandshake, helloRetryRequest.marshal())
- }
+ c.writeRecord(recordTypeHandshake, helloRetryRequest.marshal())
c.flushHandshake()
if hs.clientHello.hasEarlyData {
@@ -755,11 +751,7 @@
toWrite = append(toWrite, typeEncryptedExtensions)
c.writeRecord(recordTypeHandshake, toWrite)
} else {
- if c.vers == tls13RecordTypeExperimentVersion {
- c.writeRecord(recordTypePlaintextHandshake, hs.hello.marshal())
- } else {
- c.writeRecord(recordTypeHandshake, hs.hello.marshal())
- }
+ c.writeRecord(recordTypeHandshake, hs.hello.marshal())
}
c.flushHandshake()
@@ -1089,9 +1081,6 @@
copy(hs.hello.random[len(hs.hello.random)-8:], downgradeTLS12)
}
- if len(hs.clientHello.sessionId) > 0 && c.config.Bugs.ExpectEmptyClientHelloSessionID {
- return false, errors.New("tls: expected empty session ID from client")
- }
if len(hs.clientHello.sessionId) == 0 && c.config.Bugs.ExpectClientHelloSessionID {
return false, errors.New("tls: expected non-empty session ID from client")
}
diff --git a/ssl/test/runner/runner.go b/ssl/test/runner/runner.go
index 5415aa5..bc0a9d0 100644
--- a/ssl/test/runner/runner.go
+++ b/ssl/test/runner/runner.go
@@ -1316,13 +1316,6 @@
versionWire: tls13Experiment3Version,
tls13Variant: TLS13Experiment3,
},
- {
- name: "TLS13RecordTypeExperiment",
- version: VersionTLS13,
- excludeFlag: "-no-tls13",
- versionWire: tls13RecordTypeExperimentVersion,
- tls13Variant: TLS13RecordTypeExperiment,
- },
}
func allVersions(protocol protocol) []tlsVersion {
@@ -10762,10 +10755,7 @@
})
hasSessionID := false
- hasEmptySessionID := false
- if variant == TLS13NoSessionIDExperiment {
- hasEmptySessionID = true
- } else if variant != TLS13Default && variant != TLS13RecordTypeExperiment {
+ if variant != TLS13Default {
hasSessionID = true
}
@@ -10776,8 +10766,7 @@
config: Config{
MaxVersion: VersionTLS13,
Bugs: ProtocolBugs{
- ExpectClientHelloSessionID: hasSessionID,
- ExpectEmptyClientHelloSessionID: hasEmptySessionID,
+ ExpectClientHelloSessionID: hasSessionID,
},
},
tls13Variant: variant,
diff --git a/tool/client.cc b/tool/client.cc
index e1d9a26..d439860 100644
--- a/tool/client.cc
+++ b/tool/client.cc
@@ -327,14 +327,6 @@
*out = tls13_experiment3;
return true;
}
- if (in == "record-type") {
- *out = tls13_record_type_experiment;
- return true;
- }
- if (in == "no-session-id") {
- *out = tls13_no_session_id_experiment;
- return true;
- }
return false;
}