crypto/tls: report TLS version in ConnectionState.
Fixes #7231. LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/68250043
This commit is contained in:
parent
514cfc8a40
commit
24720a0864
@ -155,6 +155,7 @@ var supportedClientCertSignatureAlgorithms = []signatureAndHash{
|
|||||||
|
|
||||||
// ConnectionState records basic TLS details about the connection.
|
// ConnectionState records basic TLS details about the connection.
|
||||||
type ConnectionState struct {
|
type ConnectionState struct {
|
||||||
|
Version uint16 // TLS version used by the connection (e.g. VersionTLS12)
|
||||||
HandshakeComplete bool // TLS handshake is complete
|
HandshakeComplete bool // TLS handshake is complete
|
||||||
DidResume bool // connection resumes a previous TLS connection
|
DidResume bool // connection resumes a previous TLS connection
|
||||||
CipherSuite uint16 // cipher suite in use (TLS_RSA_WITH_RC4_128_SHA, ...)
|
CipherSuite uint16 // cipher suite in use (TLS_RSA_WITH_RC4_128_SHA, ...)
|
||||||
|
1
conn.go
1
conn.go
@ -969,6 +969,7 @@ func (c *Conn) ConnectionState() ConnectionState {
|
|||||||
var state ConnectionState
|
var state ConnectionState
|
||||||
state.HandshakeComplete = c.handshakeComplete
|
state.HandshakeComplete = c.handshakeComplete
|
||||||
if c.handshakeComplete {
|
if c.handshakeComplete {
|
||||||
|
state.Version = c.vers
|
||||||
state.NegotiatedProtocol = c.clientProtocol
|
state.NegotiatedProtocol = c.clientProtocol
|
||||||
state.DidResume = c.didResume
|
state.DidResume = c.didResume
|
||||||
state.NegotiatedProtocolIsMutual = !c.clientProtocolFallback
|
state.NegotiatedProtocolIsMutual = !c.clientProtocolFallback
|
||||||
|
@ -195,6 +195,23 @@ func testHandshake(clientConfig, serverConfig *Config) (state ConnectionState, e
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestVersion(t *testing.T) {
|
||||||
|
serverConfig := &Config{
|
||||||
|
Certificates: testConfig.Certificates,
|
||||||
|
MaxVersion: VersionTLS11,
|
||||||
|
}
|
||||||
|
clientConfig := &Config{
|
||||||
|
InsecureSkipVerify: true,
|
||||||
|
}
|
||||||
|
state, err := testHandshake(clientConfig, serverConfig)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("handshake failed: %s", err)
|
||||||
|
}
|
||||||
|
if state.Version != VersionTLS11 {
|
||||||
|
t.Fatalf("Incorrect version %x, should be %x", state.Version, VersionTLS11)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestCipherSuitePreference(t *testing.T) {
|
func TestCipherSuitePreference(t *testing.T) {
|
||||||
serverConfig := &Config{
|
serverConfig := &Config{
|
||||||
CipherSuites: []uint16{TLS_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA},
|
CipherSuites: []uint16{TLS_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_RC4_128_SHA},
|
||||||
|
Loading…
Reference in New Issue
Block a user