runner: Make echIsInner a boolean.

Having the nil vs. non-nil []byte for the sake of a couple tests with
invalid payloads is tedious. Use separate fields instead.

Bug: 275
Change-Id: I557d914d60ce94d68796c05162ff3dd2ab7684db
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/47965
Reviewed-by: Adam Langley <agl@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/ssl/test/runner/handshake_client.go b/ssl/test/runner/handshake_client.go
index 792ef9f..fba7355 100644
--- a/ssl/test/runner/handshake_client.go
+++ b/ssl/test/runner/handshake_client.go
@@ -817,10 +817,8 @@
 	}
 
 	if (isInner && !c.config.Bugs.OmitECHIsInner) || c.config.Bugs.AlwaysSendECHIsInner {
-		hello.echIsInner = []byte{}
-		if len(c.config.Bugs.SendInvalidECHIsInner) != 0 {
-			hello.echIsInner = c.config.Bugs.SendInvalidECHIsInner
-		}
+		hello.echIsInner = true
+		hello.invalidECHIsInner = c.config.Bugs.SendInvalidECHIsInner
 	}
 
 	if innerHello != nil {
@@ -1090,7 +1088,7 @@
 	} else {
 		// When not offering ECH, we may still expect a confirmation signal to
 		// test the backend server behavior.
-		if hs.hello.echIsInner != nil {
+		if hs.hello.echIsInner {
 			if !echConfirmed {
 				return errors.New("tls: server did not send ECH confirmation when requested")
 			}
@@ -1514,7 +1512,7 @@
 	}
 
 	if isInner && c.config.Bugs.OmitSecondECHIsInner {
-		hello.echIsInner = nil
+		hello.echIsInner = false
 	}
 
 	hello.hasEarlyData = c.config.Bugs.SendEarlyDataOnSecondClientHello
diff --git a/ssl/test/runner/handshake_messages.go b/ssl/test/runner/handshake_messages.go
index a4e8136..9f283ea 100644
--- a/ssl/test/runner/handshake_messages.go
+++ b/ssl/test/runner/handshake_messages.go
@@ -324,7 +324,8 @@
 	nextProtoNeg              bool
 	serverName                string
 	clientECH                 *clientECH
-	echIsInner                []byte
+	echIsInner                bool
+	invalidECHIsInner         []byte
 	ocspStapling              bool
 	supportedCurves           []CurveID
 	supportedPoints           []uint8
@@ -459,10 +460,12 @@
 			body: body.finish(),
 		})
 	}
-	if m.echIsInner != nil {
+	if m.echIsInner {
 		extensions = append(extensions, extension{
-			id:   extensionECHIsInner,
-			body: m.echIsInner,
+			id: extensionECHIsInner,
+			// If unset, invalidECHIsInner is empty, which is the correct
+			// serialization.
+			body: m.invalidECHIsInner,
 		})
 	}
 	if m.outerExtensions != nil && typ == clientHelloEncodedInner {