25 lines
464 B
Go
25 lines
464 B
Go
|
package vmess
|
||
|
|
||
|
import (
|
||
|
"crypto/tls"
|
||
|
"net"
|
||
|
)
|
||
|
|
||
|
type TLSConfig struct {
|
||
|
Host string
|
||
|
SkipCertVerify bool
|
||
|
SessionCache tls.ClientSessionCache
|
||
|
}
|
||
|
|
||
|
func StreamTLSConn(conn net.Conn, cfg *TLSConfig) (net.Conn, error) {
|
||
|
tlsConfig := &tls.Config{
|
||
|
ServerName: cfg.Host,
|
||
|
InsecureSkipVerify: cfg.SkipCertVerify,
|
||
|
ClientSessionCache: cfg.SessionCache,
|
||
|
}
|
||
|
|
||
|
tlsConn := tls.Client(conn, tlsConfig)
|
||
|
err := tlsConn.Handshake()
|
||
|
return tlsConn, err
|
||
|
}
|