Implement exporters for TLS 1.3 in Go.
Tested against the C code.
Change-Id: I62639e1e46cd4f57625be5d4ff7f6902b318c278
Reviewed-on: https://boringssl-review.googlesource.com/8768
Reviewed-by: Steven Valdez <svaldez@google.com>
Reviewed-by: David Benjamin <davidben@google.com>
diff --git a/ssl/test/runner/conn.go b/ssl/test/runner/conn.go
index 7628c0f..f10a495 100644
--- a/ssl/test/runner/conn.go
+++ b/ssl/test/runner/conn.go
@@ -55,7 +55,7 @@
peerSignatureAlgorithm signatureAlgorithm
clientRandom, serverRandom [32]byte
- masterSecret [48]byte
+ exporterSecret []byte
clientProtocol string
clientProtocolFallback bool
@@ -1527,6 +1527,12 @@
return nil, errors.New("tls: handshake has not yet been performed")
}
+ if enableTLS13Handshake && c.vers >= VersionTLS13 {
+ // TODO(davidben): What should we do with useContext? See
+ // https://github.com/tlswg/tls13-spec/issues/546
+ return hkdfExpandLabel(c.cipherSuite.hash(), c.exporterSecret, label, context, length), nil
+ }
+
seedLen := len(c.clientRandom) + len(c.serverRandom)
if useContext {
seedLen += 2 + len(context)
@@ -1539,7 +1545,7 @@
seed = append(seed, context...)
}
result := make([]byte, length)
- prfForVersion(c.vers, c.cipherSuite)(result, c.masterSecret[:], label, seed)
+ prfForVersion(c.vers, c.cipherSuite)(result, c.exporterSecret, label, seed)
return result, nil
}