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.