Enable QUIC for some perMessageTest runner tests Change-Id: I7b944a5456e04a2fb1b0248a020d288065064043 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/40304 Commit-Queue: David Benjamin <davidben@google.com> Reviewed-by: David Benjamin <davidben@google.com>
diff --git a/ssl/test/runner/fuzzer_mode.json b/ssl/test/runner/fuzzer_mode.json index 940415d..384b1db 100644 --- a/ssl/test/runner/fuzzer_mode.json +++ b/ssl/test/runner/fuzzer_mode.json
@@ -11,10 +11,10 @@ "BadRSAClientKeyExchange*": "Fuzzer mode does not notice a bad premaster secret.", - "TrailingMessageData-TLS13-ServerHello": "Fuzzer mode will not read the peer's alert as a MAC error", + "TrailingMessageData-TLS13-ServerHello-*": "Fuzzer mode will not read the peer's alert as a MAC error", "UnexpectedUnencryptedExtension-Client-TLS13": "Fuzzer mode will not read the peer's alert as a MAC error", "UnknownUnencryptedExtension-Client-TLS13": "Fuzzer mode will not read the peer's alert as a MAC error", - "WrongMessageType-TLS13-ServerHello": "Fuzzer mode will not read the peer's alert as a MAC error", + "WrongMessageType-TLS13-ServerHello-*": "Fuzzer mode will not read the peer's alert as a MAC error", "BadECDSA-*": "Fuzzer mode always accepts a signature.", "*-InvalidSignature-*": "Fuzzer mode always accepts a signature.",
diff --git a/ssl/test/runner/runner.go b/ssl/test/runner/runner.go index eda922d..1f3030b 100644 --- a/ssl/test/runner/runner.go +++ b/ssl/test/runner/runner.go
@@ -469,6 +469,18 @@ quic ) +func (p protocol) String() string { + switch p { + case tls: + return "TLS" + case dtls: + return "DTLS" + case quic: + return "QUIC" + } + return "unknown protocol" +} + const ( alpn = 1 npn = 2 @@ -3357,19 +3369,10 @@ const psk = "12345" const pskIdentity = "luggage combo" - var prefix string - if protocol == dtls { - if !ver.hasDTLS { - return - } - prefix = "D" + if !ver.supportsProtocol(protocol) { + return } - if protocol == quic { - if !ver.hasQUIC { - return - } - prefix = "QUIC-" - } + prefix := protocol.String() + "-" var cert Certificate var certFile string @@ -5839,12 +5842,7 @@ for _, test := range tests { test.protocol = config.protocol - if config.protocol == dtls { - test.name += "-DTLS" - } - if config.protocol == quic { - test.name += "-QUIC" - } + test.name += "-" + config.protocol.String() if config.async { test.name += "-Async" test.flags = append(test.flags, "-async") @@ -5957,12 +5955,7 @@ } suffix := shimVers.name + "-" + runnerVers.name - if protocol == dtls { - suffix += "-DTLS" - } - if protocol == quic { - suffix += "-QUIC" - } + suffix += "-" + protocol.String() // Determine the expected initial record-layer versions. clientVers := shimVers.version @@ -6035,21 +6028,11 @@ // Test the version extension at all versions. for _, vers := range tlsVersions { - protocols := []protocol{tls} - if vers.hasDTLS { - protocols = append(protocols, dtls) - } - if vers.hasQUIC { - protocols = append(protocols, quic) - } - for _, protocol := range protocols { - suffix := vers.name - if protocol == dtls { - suffix += "-DTLS" + for _, protocol := range []protocol{tls, dtls, quic} { + if !vers.supportsProtocol(protocol) { + continue } - if protocol == quic { - suffix += "-QUIC" - } + suffix := vers.name + "-" + protocol.String() testCases = append(testCases, testCase{ protocol: protocol, @@ -6401,12 +6384,7 @@ for _, runnerVers := range allVersions(protocol) { suffix := shimVers.name + "-" + runnerVers.name - if protocol == dtls { - suffix += "-DTLS" - } - if protocol == quic { - suffix += "-QUIC" - } + suffix += "-" + protocol.String() var expectedVersion uint16 var shouldFail bool @@ -7871,12 +7849,7 @@ } for _, protocol := range protocols { suffix := "-" + sessionVers.name + "-" + resumeVers.name - if protocol == dtls { - suffix += "-DTLS" - } - if protocol == quic { - suffix += "-QUIC" - } + suffix += "-" + protocol.String() if sessionVers.version == resumeVers.version { testCases = append(testCases, testCase{ @@ -11963,14 +11936,9 @@ // WrongMessageType to fully test a per-message bug. func makePerMessageTests() []perMessageTest { var ret []perMessageTest - // TODO(nharper): Consider supporting QUIC? + // The following tests are limited to TLS 1.2, so QUIC is not tested. for _, protocol := range []protocol{tls, dtls} { - var suffix string - if protocol == dtls { - suffix = "-DTLS" - } else if protocol == quic { - suffix = "-QUIC" - } + suffix := "-" + protocol.String() ret = append(ret, perMessageTest{ messageType: typeClientHello, @@ -12175,134 +12143,137 @@ } - ret = append(ret, perMessageTest{ - messageType: typeClientHello, - test: testCase{ - testType: serverTest, - name: "TLS13-ClientHello", - config: Config{ - MaxVersion: VersionTLS13, - }, - }, - }) - - ret = append(ret, perMessageTest{ - messageType: typeServerHello, - test: testCase{ - name: "TLS13-ServerHello", - config: Config{ - MaxVersion: VersionTLS13, - }, - }, - }) - - ret = append(ret, perMessageTest{ - messageType: typeEncryptedExtensions, - test: testCase{ - name: "TLS13-EncryptedExtensions", - config: Config{ - MaxVersion: VersionTLS13, - }, - }, - }) - - ret = append(ret, perMessageTest{ - messageType: typeCertificateRequest, - test: testCase{ - name: "TLS13-CertificateRequest", - config: Config{ - MaxVersion: VersionTLS13, - ClientAuth: RequireAnyClientCert, - }, - }, - }) - - ret = append(ret, perMessageTest{ - messageType: typeCertificate, - test: testCase{ - name: "TLS13-ServerCertificate", - config: Config{ - MaxVersion: VersionTLS13, - }, - }, - }) - - ret = append(ret, perMessageTest{ - messageType: typeCertificateVerify, - test: testCase{ - name: "TLS13-ServerCertificateVerify", - config: Config{ - MaxVersion: VersionTLS13, - }, - }, - }) - - ret = append(ret, perMessageTest{ - messageType: typeFinished, - test: testCase{ - name: "TLS13-ServerFinished", - config: Config{ - MaxVersion: VersionTLS13, - }, - }, - }) - - ret = append(ret, perMessageTest{ - messageType: typeCertificate, - test: testCase{ - testType: serverTest, - name: "TLS13-ClientCertificate", - config: Config{ - Certificates: []Certificate{rsaCertificate}, - MaxVersion: VersionTLS13, - }, - flags: []string{"-require-any-client-certificate"}, - }, - }) - - ret = append(ret, perMessageTest{ - messageType: typeCertificateVerify, - test: testCase{ - testType: serverTest, - name: "TLS13-ClientCertificateVerify", - config: Config{ - Certificates: []Certificate{rsaCertificate}, - MaxVersion: VersionTLS13, - }, - flags: []string{"-require-any-client-certificate"}, - }, - }) - - ret = append(ret, perMessageTest{ - messageType: typeFinished, - test: testCase{ - testType: serverTest, - name: "TLS13-ClientFinished", - config: Config{ - MaxVersion: VersionTLS13, - }, - }, - }) - - ret = append(ret, perMessageTest{ - messageType: typeEndOfEarlyData, - test: testCase{ - testType: serverTest, - name: "TLS13-EndOfEarlyData", - config: Config{ - MaxVersion: VersionTLS13, - }, - resumeConfig: &Config{ - MaxVersion: VersionTLS13, - Bugs: ProtocolBugs{ - SendEarlyData: [][]byte{{1, 2, 3, 4}}, - ExpectEarlyDataAccepted: true, + for _, protocol := range []protocol{tls, quic} { + suffix := "-" + protocol.String() + ret = append(ret, perMessageTest{ + messageType: typeClientHello, + test: testCase{ + testType: serverTest, + name: "TLS13-ClientHello" + suffix, + config: Config{ + MaxVersion: VersionTLS13, }, }, - resumeSession: true, - flags: []string{"-enable-early-data"}, - }, - }) + }) + + ret = append(ret, perMessageTest{ + messageType: typeServerHello, + test: testCase{ + name: "TLS13-ServerHello" + suffix, + config: Config{ + MaxVersion: VersionTLS13, + }, + }, + }) + + ret = append(ret, perMessageTest{ + messageType: typeEncryptedExtensions, + test: testCase{ + name: "TLS13-EncryptedExtensions" + suffix, + config: Config{ + MaxVersion: VersionTLS13, + }, + }, + }) + + ret = append(ret, perMessageTest{ + messageType: typeCertificateRequest, + test: testCase{ + name: "TLS13-CertificateRequest" + suffix, + config: Config{ + MaxVersion: VersionTLS13, + ClientAuth: RequireAnyClientCert, + }, + }, + }) + + ret = append(ret, perMessageTest{ + messageType: typeCertificate, + test: testCase{ + name: "TLS13-ServerCertificate" + suffix, + config: Config{ + MaxVersion: VersionTLS13, + }, + }, + }) + + ret = append(ret, perMessageTest{ + messageType: typeCertificateVerify, + test: testCase{ + name: "TLS13-ServerCertificateVerify" + suffix, + config: Config{ + MaxVersion: VersionTLS13, + }, + }, + }) + + ret = append(ret, perMessageTest{ + messageType: typeFinished, + test: testCase{ + name: "TLS13-ServerFinished" + suffix, + config: Config{ + MaxVersion: VersionTLS13, + }, + }, + }) + + ret = append(ret, perMessageTest{ + messageType: typeCertificate, + test: testCase{ + testType: serverTest, + name: "TLS13-ClientCertificate" + suffix, + config: Config{ + Certificates: []Certificate{rsaCertificate}, + MaxVersion: VersionTLS13, + }, + flags: []string{"-require-any-client-certificate"}, + }, + }) + + ret = append(ret, perMessageTest{ + messageType: typeCertificateVerify, + test: testCase{ + testType: serverTest, + name: "TLS13-ClientCertificateVerify" + suffix, + config: Config{ + Certificates: []Certificate{rsaCertificate}, + MaxVersion: VersionTLS13, + }, + flags: []string{"-require-any-client-certificate"}, + }, + }) + + ret = append(ret, perMessageTest{ + messageType: typeFinished, + test: testCase{ + testType: serverTest, + name: "TLS13-ClientFinished" + suffix, + config: Config{ + MaxVersion: VersionTLS13, + }, + }, + }) + + ret = append(ret, perMessageTest{ + messageType: typeEndOfEarlyData, + test: testCase{ + testType: serverTest, + name: "TLS13-EndOfEarlyData" + suffix, + config: Config{ + MaxVersion: VersionTLS13, + }, + resumeConfig: &Config{ + MaxVersion: VersionTLS13, + Bugs: ProtocolBugs{ + SendEarlyData: [][]byte{{1, 2, 3, 4}}, + ExpectEarlyDataAccepted: true, + }, + }, + resumeSession: true, + flags: []string{"-enable-early-data"}, + }, + }) + } return ret }