@@ -20,6 +20,7 @@ limitations under the License.
2020package fabricclient
2121
2222import (
23+ "crypto/x509"
2324 "fmt"
2425 "io"
2526 "strings"
@@ -48,19 +49,41 @@ type orderer struct {
4849
4950// CreateNewOrderer Returns a Orderer instance
5051func CreateNewOrderer (url string , certificate string , serverHostOverride string ) (Orderer , error ) {
51- var opts []grpc.DialOption
52- opts = append (opts , grpc .WithTimeout (time .Second * 3 ))
5352 if config .IsTLSEnabled () {
5453 tlsCaCertPool , err := config .GetTLSCACertPool (certificate )
5554 if err != nil {
5655 return nil , err
5756 }
58- creds := credentials .NewClientTLSFromCert (tlsCaCertPool , serverHostOverride )
59- opts = append (opts , grpc .WithTransportCredentials (creds ))
60- } else {
61- opts = append (opts , grpc .WithInsecure ())
57+ return createNewOrdererWithCertPool (url , tlsCaCertPool , serverHostOverride ), nil
58+ }
59+ return createNewOrdererWithoutTLS (url ), nil
60+ }
61+
62+ // CreateNewOrdererWithRootCAs Returns a new Orderer instance using the passed in orderer root CAs
63+ func CreateNewOrdererWithRootCAs (url string , ordererRootCAs [][]byte , serverHostOverride string ) (Orderer , error ) {
64+ if config .IsTLSEnabled () {
65+ tlsCaCertPool , err := config .GetTLSCACertPoolFromRoots (ordererRootCAs )
66+ if err != nil {
67+ return nil , err
68+ }
69+ return createNewOrdererWithCertPool (url , tlsCaCertPool , serverHostOverride ), nil
6270 }
63- return & orderer {url : url , grpcDialOption : opts }, nil
71+ return createNewOrdererWithoutTLS (url ), nil
72+ }
73+
74+ func createNewOrdererWithoutTLS (url string ) Orderer {
75+ var opts []grpc.DialOption
76+ opts = append (opts , grpc .WithTimeout (time .Second * 3 ))
77+ opts = append (opts , grpc .WithInsecure ())
78+ return & orderer {url : url , grpcDialOption : opts }
79+ }
80+
81+ func createNewOrdererWithCertPool (url string , tlsCaCertPool * x509.CertPool , serverHostOverride string ) Orderer {
82+ var opts []grpc.DialOption
83+ opts = append (opts , grpc .WithTimeout (time .Second * 3 ))
84+ creds := credentials .NewClientTLSFromCert (tlsCaCertPool , serverHostOverride )
85+ opts = append (opts , grpc .WithTransportCredentials (creds ))
86+ return & orderer {url : url , grpcDialOption : opts }
6487}
6588
6689// GetURL Get the Orderer url. Required property for the instance objects.
0 commit comments