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.