Fix TLS 1.3 fuzzer mode in Go.

Runner needs to implement fuzzer mode as well so we can record
transcripts from it. A bunch of tests were failing:

- C and Go disagreed on what fuzzer mode did to TLS 1.3 padding. So we
  fuzz more code, align Go with C. Fuzzer mode TLS 1.3 still pads but
  just skips the final AEAD.

- The deterministic RNG should be applied per test, not per exchange. It
  turns out, if your RNG is deterministic, one tends to pick the same
  session ID over and over which confuses clients. (Resumption is
  signaled by echoing the session ID.)

Now the only failing tests are the ones one would expect to fail.

BUG=79

Change-Id: Ica23881a6e726adae71e6767730519214ebcd62a
Reviewed-on: https://boringssl-review.googlesource.com/11126
Reviewed-by: Adam Langley <agl@google.com>
Commit-Queue: Adam Langley <agl@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
diff --git a/ssl/test/runner/runner.go b/ssl/test/runner/runner.go
index 9ae72ef..0523042 100644
--- a/ssl/test/runner/runner.go
+++ b/ssl/test/runner/runner.go
@@ -442,9 +442,6 @@
 	if *fuzzer {
 		config.Bugs.NullAllCiphers = true
 	}
-	if *deterministic {
-		config.Rand = &deterministicRand{}
-	}
 
 	conn = &timeoutConn{conn, *idleTimeout}
 
@@ -903,6 +900,10 @@
 
 	config := test.config
 
+	if *deterministic {
+		config.Rand = &deterministicRand{}
+	}
+
 	conn, err := acceptOrWait(listener, waitChan)
 	if err == nil {
 		err = doExchange(test, &config, conn, false /* not a resumption */)