Add RenewTicketOnResume tests. Didn't have coverage for abbreviated handshakes with NewSessionTicket. Also add some missing resumeSession flags so the tests match the comments. Change-Id: Ie4d76e8764561f3f1f31e1aa9595324affce0db8 Reviewed-on: https://boringssl-review.googlesource.com/1453 Reviewed-by: Adam Langley <agl@google.com>
diff --git a/ssl/test/runner/common.go b/ssl/test/runner/common.go index 6c1dfcd..8859db8 100644 --- a/ssl/test/runner/common.go +++ b/ssl/test/runner/common.go
@@ -406,6 +406,10 @@ // ClientKeyExchange with the specified version rather than the // client_version when performing the RSA key exchange. RsaClientKeyExchangeVersion uint16 + + // RenewTicketOnResume causes the server to renew the session ticket and + // send a NewSessionTicket message during an abbreviated handshake. + RenewTicketOnResume bool } func (c *Config) serverInit() {
diff --git a/ssl/test/runner/handshake_server.go b/ssl/test/runner/handshake_server.go index 68ba734..3b8ad6a 100644 --- a/ssl/test/runner/handshake_server.go +++ b/ssl/test/runner/handshake_server.go
@@ -57,6 +57,11 @@ if err := hs.establishKeys(); err != nil { return err } + if c.config.Bugs.RenewTicketOnResume { + if err := hs.sendSessionTicket(); err != nil { + return err + } + } if err := hs.sendFinished(); err != nil { return err } @@ -276,6 +281,7 @@ // We echo the client's session ID in the ServerHello to let it know // that we're doing a resumption. hs.hello.sessionId = hs.clientHello.sessionId + hs.hello.ticketSupported = c.config.Bugs.RenewTicketOnResume hs.finishedHash = newFinishedHash(c.vers, hs.suite) hs.finishedHash.Write(hs.clientHello.marshal())
diff --git a/ssl/test/runner/runner.go b/ssl/test/runner/runner.go index 36276be..d8e13fb 100644 --- a/ssl/test/runner/runner.go +++ b/ssl/test/runner/runner.go
@@ -886,7 +886,19 @@ MaxHandshakeRecordLength: maxHandshakeRecordLength, }, }, - flags: flags, + flags: flags, + resumeSession: true, + }) + testCases = append(testCases, testCase{ + name: "Basic-Client-RenewTicket" + suffix, + config: Config{ + Bugs: ProtocolBugs{ + MaxHandshakeRecordLength: maxHandshakeRecordLength, + RenewTicketOnResume: true, + }, + }, + flags: flags, + resumeSession: true, }) testCases = append(testCases, testCase{ testType: serverTest, @@ -896,7 +908,8 @@ MaxHandshakeRecordLength: maxHandshakeRecordLength, }, }, - flags: flags, + flags: flags, + resumeSession: true, }) // No session ticket support; server doesn't send NewSessionTicket.