aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdam Langley <agl@golang.org>2015-11-09 15:16:12 -0800
committerAdam Langley <agl@golang.org>2015-11-09 23:16:51 +0000
commitb46df69541fd0661491245ffd13285d829778fd8 (patch)
tree288ae9ac640811c72a3d8614c910ab208ad4fa07 /src
parenta4dcc692011bf1ceca9b1a363fd83f3e59e399ee (diff)
downloadgo-b46df69541fd0661491245ffd13285d829778fd8.tar.xz
Revert "crypto/tls: don't send IP literals as SNI values."
This reverts commit a4dcc692011bf1ceca9b1a363fd83f3e59e399ee. Change-Id: Ib55fd349a604d6b5220dac20327501e1ce46b962 Reviewed-on: https://go-review.googlesource.com/16770 Reviewed-by: Adam Langley <agl@golang.org>
Diffstat (limited to 'src')
-rw-r--r--src/crypto/tls/common.go3
-rw-r--r--src/crypto/tls/handshake_client.go9
-rw-r--r--src/crypto/tls/handshake_client_test.go27
3 files changed, 2 insertions, 37 deletions
diff --git a/src/crypto/tls/common.go b/src/crypto/tls/common.go
index c68ebfe188..d47dc6182f 100644
--- a/src/crypto/tls/common.go
+++ b/src/crypto/tls/common.go
@@ -286,8 +286,7 @@ type Config struct {
// ServerName is used to verify the hostname on the returned
// certificates unless InsecureSkipVerify is given. It is also included
- // in the client's handshake to support virtual hosting unless it is
- // an IP address.
+ // in the client's handshake to support virtual hosting.
ServerName string
// ClientAuth determines the server's policy for
diff --git a/src/crypto/tls/handshake_client.go b/src/crypto/tls/handshake_client.go
index 462acfd1a1..0b591d7309 100644
--- a/src/crypto/tls/handshake_client.go
+++ b/src/crypto/tls/handshake_client.go
@@ -49,20 +49,13 @@ func (c *Conn) clientHandshake() error {
return errors.New("tls: NextProtos values too large")
}
- sni := c.config.ServerName
- // IP address literals are not permitted as SNI values. See
- // https://tools.ietf.org/html/rfc6066#section-3.
- if net.ParseIP(sni) != nil {
- sni = ""
- }
-
hello := &clientHelloMsg{
vers: c.config.maxVersion(),
compressionMethods: []uint8{compressionNone},
random: make([]byte, 32),
ocspStapling: true,
scts: true,
- serverName: sni,
+ serverName: c.config.ServerName,
supportedCurves: c.config.curvePreferences(),
supportedPoints: []uint8{pointFormatUncompressed},
nextProtoNeg: len(c.config.NextProtos) > 0,
diff --git a/src/crypto/tls/handshake_client_test.go b/src/crypto/tls/handshake_client_test.go
index b275da15d0..664fe8de6a 100644
--- a/src/crypto/tls/handshake_client_test.go
+++ b/src/crypto/tls/handshake_client_test.go
@@ -600,30 +600,3 @@ func TestHandshakClientSCTs(t *testing.T) {
}
runClientTestTLS12(t, test)
}
-
-func TestNoIPAddressesInSNI(t *testing.T) {
- for _, ipLiteral := range []string{"1.2.3.4", "::1"} {
- c, s := net.Pipe()
-
- go func() {
- client := Client(c, &Config{ServerName: ipLiteral})
- client.Handshake()
- }()
-
- var header [5]byte
- if _, err := io.ReadFull(s, header[:]); err != nil {
- t.Fatal(err)
- }
- recordLen := int(header[3])<<8 | int(header[4])
-
- record := make([]byte, recordLen)
- if _, err := io.ReadFull(s, record[:]); err != nil {
- t.Fatal(err)
- }
- s.Close()
-
- if bytes.Index(record, []byte(ipLiteral)) != -1 {
- t.Errorf("IP literal %q found in ClientHello: %x", ipLiteral, record)
- }
- }
-}