func ClientInsecureSkipVerify() ClientParam {
	return clientParam(func(cfg *tls.Config) error {
		cfg.InsecureSkipVerify = true
		return nil
	})
}
ClientInsecureSkipVerify sets the InsecureSkipVerify field of tls Config to true. The default value for this field
is false. Usage of this option is discouraged and should only be used in limited off-roading cases where the client
has no reasonable way of trusting the server.
package tlsconfig
import (
	"crypto/tls"
	"fmt"
)
type TLSCertProvider func() (tls.Certificate, error)
func NewClientConfig(params ...ClientParam) (*tls.Config, error) {
	configurers := make([]configurer, len(params))
	for i, p := range params {
		configurers[i] = configurer(p.configureClient)
	}
	return configureTLSConfig(configurers...)
}
type ClientParam interface {
	configureClient(*tls.Config) error
}
type clientParam func(*tls.Config) error
func (p clientParam) configureClient(cfg *tls.Config) error {
	return p(cfg)
}
func ClientKeyPairFiles(certFile, keyFile string) ClientParam {
	return clientParam(certificatesParam(TLSCertFromFiles(certFile, keyFile)))
}
func ClientKeyPair(certProvider TLSCertProvider) ClientParam {
	return clientParam(getClientCertificateParam(certProvider))
}
func ClientRootCAFiles(files ...string) ClientParam {
	return ClientRootCAs(CertPoolFromCAFiles(files...))
}
func ClientRootCAs(certPoolProvider CertPoolProvider) ClientParam {
	return clientParam(func(cfg *tls.Config) error {
		if certPoolProvider == nil {
			return fmt.Errorf("certPoolProvider provided to ClientRootCAs was nil")
		}
		certPool, err := certPoolProvider()
		if err != nil {
			return fmt.Errorf("failed to create certificate pool: %v", err)
		}
		cfg.RootCAs = certPool
		return nil
	})
}
func ClientCipherSuites(cipherSuites ...uint16) ClientParam {
	return clientParam(cipherSuitesParam(cipherSuites...))
}