63 lines
1.5 KiB
Go
63 lines
1.5 KiB
Go
/*
|
|
Copyright IBM Corp All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package nwo
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"crypto/x509"
|
|
"io/ioutil"
|
|
"net/http"
|
|
"path/filepath"
|
|
"time"
|
|
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
func OrdererOperationalClients(n *Network, o *Orderer) (authClient, unauthClient *http.Client) {
|
|
return operationalClients(n, n.OrdererLocalTLSDir(o))
|
|
}
|
|
|
|
func PeerOperationalClients(n *Network, p *Peer) (authClient, unauthClient *http.Client) {
|
|
return operationalClients(n, n.PeerLocalTLSDir(p))
|
|
}
|
|
|
|
func operationalClients(n *Network, tlsDir string) (authClient, unauthClient *http.Client) {
|
|
fingerprint := "http::" + tlsDir
|
|
if d := n.throttleDuration(fingerprint); d > 0 {
|
|
time.Sleep(d)
|
|
}
|
|
|
|
clientCert, err := tls.LoadX509KeyPair(
|
|
filepath.Join(tlsDir, "server.crt"),
|
|
filepath.Join(tlsDir, "server.key"),
|
|
)
|
|
Expect(err).NotTo(HaveOccurred())
|
|
|
|
clientCertPool := x509.NewCertPool()
|
|
caCert, err := ioutil.ReadFile(filepath.Join(tlsDir, "ca.crt"))
|
|
Expect(err).NotTo(HaveOccurred())
|
|
clientCertPool.AppendCertsFromPEM(caCert)
|
|
|
|
authenticatedClient := &http.Client{
|
|
Transport: &http.Transport{
|
|
MaxIdleConnsPerHost: -1,
|
|
TLSClientConfig: &tls.Config{
|
|
Certificates: []tls.Certificate{clientCert},
|
|
RootCAs: clientCertPool,
|
|
},
|
|
},
|
|
}
|
|
unauthenticatedClient := &http.Client{
|
|
Transport: &http.Transport{
|
|
MaxIdleConnsPerHost: -1,
|
|
TLSClientConfig: &tls.Config{RootCAs: clientCertPool},
|
|
},
|
|
}
|
|
|
|
return authenticatedClient, unauthenticatedClient
|
|
}
|