code: func (tr *transport) initialize() error {
  	var cert, key, ca string
  	if tr.cert != nil {
  		cert = *tr.cert
  	}
  	if tr.key != nil {
  		key = *tr.key
  	}
  	if tr.ca != nil {
  		ca = *tr.ca
  	}
  
  	if cert != "" && key != "" {
  		tlsCert, err := tls.LoadX509KeyPair(cert, key)
  		if err != nil {
  			return fmt.Errorf("could not load certificate/key pair specified by -tls_cert and -tls_key: %v", err)
  		}
  		tr.certs = []tls.Certificate{tlsCert}
  	} else if cert == "" && key != "" {
  		return fmt.Errorf("-tls_key is specified, so -tls_cert must also be specified")
  	} else if cert != "" && key == "" {
  		return fmt.Errorf("-tls_cert is specified, so -tls_key must also be specified")
  	}
  
  	if ca != "" {
  		caCertPool := x509.NewCertPool()
  		caCert, err := ioutil.ReadFile(ca)
  		if err != nil {
  			return fmt.Errorf("could not load CA specified by -tls_ca: %v", err)
  		}
  		caCertPool.AppendCertsFromPEM(caCert)
  		tr.caCertPool = caCertPool
  	}
  
  	return nil
  }
docs: // initialize uses the cert, key, and ca to initialize the certs
  // to use these when making requests.