Documentation
¶
Overview ¶
package tlsdialer contains a customized version of crypto/tls.Dial that allows control over whether or not to send the ServerName extension in the client handshake.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Dial ¶
Like crypto/tls.Dial, but with the ability to control whether or not to send the ServerName extension in client handshakes through the sendServerName flag.
Note - if sendServerName is false, the VerifiedChains field on the connection's ConnectionState will never get populated. Use DialForTimings to get back a data structure that includes the verified chains.
Types ¶
type ConnWithTimings ¶
type ConnWithTimings struct {
// Conn: the conn resulting from dialing
Conn *tls.Conn
// UConn: the utls conn resulting from dialing
UConn *tls.UConn
// ResolutionTime: the amount of time it took to resolve the address
ResolutionTime time.Duration
// ConnectTime: the amount of time that it took to connect the socket
ConnectTime time.Duration
// HandshakeTime: the amount of time that it took to complete the TLS
// handshake
HandshakeTime time.Duration
// ResolvedAddr: the address to which our dns lookup resolved
ResolvedAddr *net.TCPAddr
// VerifiedChains: like tls.ConnectionState.VerifiedChains
VerifiedChains [][]*x509.Certificate
}
A tls.Conn along with timings for key steps in establishing that Conn
func DialForTimings ¶
func DialForTimings(dial func(net string, addr string, timeout time.Duration) (net.Conn, error), timeout time.Duration, network, addr string, sendServerName bool, config *tls.Config) (*ConnWithTimings, error)
Like DialWithDialer but returns a data structure including timings and the verified chains.
type Dialer ¶
type Dialer struct {
DoDial func(net string, addr string, timeout time.Duration) (net.Conn, error)
Timeout time.Duration
Network string
SendServerName bool
// Force validation of a specific name other than the SNI name or dialed hostname
ForceValidateName string
// Must be provided if ClientHelloID is set to tls.HelloCustom. This field is ignored if
// ClientHelloID is not set to tls.HelloCustom.
ClientHelloSpec *tls.ClientHelloSpec
ClientHelloID tls.ClientHelloID
ClientSessionState *tls.ClientSessionState
Config *tls.Config
}
Dialer is a configurable dialer that dials using tls
func (*Dialer) DialForTimings ¶
func (d *Dialer) DialForTimings(network, addr string) (*ConnWithTimings, error)
DialForTimings dials the given network and address and returns a ConnWithTimings.

