2011-10-13 18:59:13 +01:00
|
|
|
// Copyright 2011 The Go Authors. All rights reserved.
|
|
|
|
// Use of this source code is governed by a BSD-style
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
package tls
|
|
|
|
|
|
|
|
import (
|
2012-03-07 18:12:35 +00:00
|
|
|
"crypto/x509"
|
|
|
|
"runtime"
|
2011-10-13 18:59:13 +01:00
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
var tlsServers = []string{
|
2012-03-07 18:12:35 +00:00
|
|
|
"google.com",
|
|
|
|
"github.com",
|
|
|
|
"twitter.com",
|
2011-10-13 18:59:13 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
func TestOSCertBundles(t *testing.T) {
|
|
|
|
if testing.Short() {
|
|
|
|
t.Logf("skipping certificate tests in short mode")
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, addr := range tlsServers {
|
2012-03-07 18:12:35 +00:00
|
|
|
conn, err := Dial("tcp", addr+":443", &Config{ServerName: addr})
|
2011-10-13 18:59:13 +01:00
|
|
|
if err != nil {
|
|
|
|
t.Errorf("unable to verify %v: %v", addr, err)
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
err = conn.Close()
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2012-03-07 18:12:35 +00:00
|
|
|
|
|
|
|
func TestCertHostnameVerifyWindows(t *testing.T) {
|
|
|
|
if runtime.GOOS != "windows" {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if testing.Short() {
|
|
|
|
t.Logf("skipping certificate tests in short mode")
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, addr := range tlsServers {
|
|
|
|
cfg := &Config{ServerName: "example.com"}
|
|
|
|
conn, err := Dial("tcp", addr+":443", cfg)
|
|
|
|
if err == nil {
|
|
|
|
conn.Close()
|
2012-03-12 03:04:45 +00:00
|
|
|
t.Errorf("should fail to verify for example.com: %v", addr)
|
2012-03-07 18:12:35 +00:00
|
|
|
continue
|
|
|
|
}
|
|
|
|
_, ok := err.(x509.HostnameError)
|
|
|
|
if !ok {
|
|
|
|
t.Errorf("error type mismatch, got: %v", err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|