@@ -9,6 +9,7 @@ package configless
99import (
1010 "crypto/tls"
1111 "crypto/x509"
12+ "fmt"
1213 "os"
1314 "regexp"
1415 "strings"
@@ -49,11 +50,11 @@ var (
4950 clientConfig = msp.ClientConfig {
5051 Organization : "org1" ,
5152 Logging : api.LoggingType {Level : "info" },
52- CryptoConfig : msp.CCType {Path : "${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}" },
53+ CryptoConfig : msp.CCType {Path : pathvar . Subst ( "${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}" ) },
5354 CredentialStore : msp.CredentialStoreType {Path : "/tmp/msp" },
5455 TLSCerts : endpoint.MutualTLSConfig {Client : endpoint.TLSKeyPair {
55- Key : endpoint. TLSConfig { Path : pathvar . Subst ("${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/test/fixtures/config/mutual_tls/client_sdk_go-key.pem" )} ,
56- Cert : endpoint. TLSConfig { Path : pathvar . Subst ("${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/test/fixtures/config/mutual_tls/client_sdk_go.pem" )} }},
56+ Key : newTLSConfig ("${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/test/fixtures/config/mutual_tls/client_sdk_go-key.pem" ),
57+ Cert : newTLSConfig ("${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/test/fixtures/config/mutual_tls/client_sdk_go.pem" )}},
5758 }
5859
5960 channelsConfig = map [string ]fab.ChannelNetworkConfig {
@@ -140,9 +141,7 @@ var (
140141 "fail-fast" : false ,
141142 "allow-insecure" : false ,
142143 },
143- TLSCACerts : endpoint.TLSConfig {
144- Path : "${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem" ,
145- },
144+ TLSCACerts : newTLSConfig ("${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem" ),
146145 },
147146 }
148147
@@ -158,9 +157,7 @@ var (
158157 "fail-fast" : false ,
159158 "allow-insecure" : false ,
160159 },
161- TLSCACerts : endpoint.TLSConfig {
162- Path : "${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem" ,
163- },
160+ TLSCACerts : newTLSConfig ("${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem" ),
164161 },
165162 "peer0.org2.example.com" : {
166163 URL : "peer0.org2.example.com:8051" ,
@@ -173,24 +170,18 @@ var (
173170 "fail-fast" : false ,
174171 "allow-insecure" : false ,
175172 },
176- TLSCACerts : endpoint.TLSConfig {
177- Path : "${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem" ,
178- },
173+ TLSCACerts : newTLSConfig ("${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/${CRYPTOCONFIG_FIXTURES_PATH}/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem" ),
179174 },
180175 }
181176
182177 caConfig = map [string ]msp.CAConfig {
183178 "ca.org1.example.com" : {
184179 URL : "https://ca.org1.example.com:7054" ,
185180 TLSCACerts : endpoint.MutualTLSConfig {
186- Path : "${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/test/fixtures/fabricca/tls/certs/ca_root.pem" ,
181+ Path : pathvar . Subst ( "${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/test/fixtures/fabricca/tls/certs/ca_root.pem" ) ,
187182 Client : endpoint.TLSKeyPair {
188- Key : endpoint.TLSConfig {
189- Path : "${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/test/fixtures/fabricca/tls/certs/client/client_fabric_client-key.pem" ,
190- },
191- Cert : endpoint.TLSConfig {
192- Path : "${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/test/fixtures/fabricca/tls/certs/client/client_fabric_client.pem" ,
193- },
183+ Key : newTLSConfig ("${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/test/fixtures/fabricca/tls/certs/client/client_fabric_client-key.pem" ),
184+ Cert : newTLSConfig ("${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/test/fixtures/fabricca/tls/certs/client/client_fabric_client.pem" ),
194185 },
195186 },
196187 Registrar : msp.EnrollCredentials {
@@ -202,14 +193,10 @@ var (
202193 "ca.org2.example.com" : {
203194 URL : "https://ca.org2.example.com:8054" ,
204195 TLSCACerts : endpoint.MutualTLSConfig {
205- Path : "${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/test/fixtures/fabricca/tls/certs/ca_root.pem" ,
196+ Path : pathvar . Subst ( "${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/test/fixtures/fabricca/tls/certs/ca_root.pem" ) ,
206197 Client : endpoint.TLSKeyPair {
207- Key : endpoint.TLSConfig {
208- Path : "${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/test/fixtures/fabricca/tls/certs/client/client_fabric_client-key.pem" ,
209- },
210- Cert : endpoint.TLSConfig {
211- Path : "${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/test/fixtures/fabricca/tls/certs/client/client_fabric_client.pem" ,
212- },
198+ Key : newTLSConfig ("${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/test/fixtures/fabricca/tls/certs/client/client_fabric_client-key.pem" ),
199+ Cert : newTLSConfig ("${GOPATH}/src/github.com/hyperledger/fabric-sdk-go/test/fixtures/fabricca/tls/certs/client/client_fabric_client.pem" ),
213200 },
214201 },
215202 Registrar : msp.EnrollCredentials {
@@ -389,13 +376,7 @@ func (m *exampleOrderersConfig) OrderersConfig() ([]fab.OrdererConfig, bool) {
389376
390377 for _ , orderer := range orderersConfig {
391378
392- if orderer .TLSCACerts .Path != "" {
393- orderer .TLSCACerts .Path = pathvar .Subst (orderer .TLSCACerts .Path )
394- } else if len (orderer .TLSCACerts .Pem ) == 0 && ! m .isSystemCertPool {
395- return nil , false
396- }
397- err := orderer .TLSCACerts .LoadBytes ()
398- if err != nil {
379+ if orderer .TLSCACerts .Path == "" && len (orderer .TLSCACerts .Pem ) == 0 && ! m .isSystemCertPool {
399380 return nil , false
400381 }
401382 orderers = append (orderers , orderer )
@@ -419,13 +400,6 @@ func (m *exampleOrdererConfig) OrdererConfig(ordererNameOrURL string) (*fab.Orde
419400 return nil , false
420401 }
421402
422- if orderer .TLSCACerts .Path != "" {
423- orderer .TLSCACerts .Path = pathvar .Subst (orderer .TLSCACerts .Path )
424- }
425- err := orderer .TLSCACerts .LoadBytes ()
426- if err != nil {
427- return nil , false
428- }
429403 return & orderer , true
430404}
431405
@@ -477,14 +451,6 @@ func (m *examplePeersConfig) PeersConfig(org string) ([]fab.PeerConfig, bool) {
477451 //p = *matchingPeerConfig
478452 return nil , false
479453 }
480- if p .TLSCACerts .Path != "" {
481- p .TLSCACerts .Path = pathvar .Subst (p .TLSCACerts .Path )
482- }
483- err := p .TLSCACerts .LoadBytes ()
484- if err != nil {
485- return nil , false
486- }
487-
488454 peers = append (peers , p )
489455 }
490456 return peers , true
@@ -508,15 +474,6 @@ func (m *examplePeerConfig) PeerConfig(nameOrURL string) (*fab.PeerConfig, bool)
508474 if ok {
509475 return & pcfg , true
510476 }
511- if pcfg .TLSCACerts .Path != "" {
512- pcfg .TLSCACerts .Path = pathvar .Subst (pcfg .TLSCACerts .Path )
513- }
514- err := pcfg .TLSCACerts .LoadBytes ()
515- if err != nil {
516- return nil , false
517- }
518- // EntityMatchers are not used in this implementation
519- // see default implementation (pkg/fab/endpointconfig.go) to see how they're used
520477
521478 return nil , false
522479}
@@ -543,15 +500,6 @@ func (m *exampleNetworkPeers) NetworkPeers() ([]fab.NetworkPeer, bool) {
543500 return nil , false
544501 }
545502
546- if p .TLSCACerts .Path != "" {
547- p .TLSCACerts .Path = pathvar .Subst (p .TLSCACerts .Path )
548- }
549-
550- err := p .TLSCACerts .LoadBytes ()
551- if err != nil {
552- return nil , false
553- }
554-
555503 mspID , ok := PeerMSPID (name )
556504 if ! ok {
557505 return nil , false
@@ -563,6 +511,7 @@ func (m *exampleNetworkPeers) NetworkPeers() ([]fab.NetworkPeer, bool) {
563511
564512 return netPeers , true
565513}
514+
566515func (m * exampleNetworkPeers ) verifyPeerConfig (p fab.PeerConfig , peerName string , tlsEnabled bool ) error {
567516 if p .URL == "" {
568517 return errors .Errorf ("URL does not exist or empty for peer %s" , peerName )
@@ -630,15 +579,6 @@ func (m *exampleChannelPeers) ChannelPeers(channelName string) ([]fab.ChannelPee
630579 return nil , false
631580 }
632581
633- if p .TLSCACerts .Path != "" {
634- p .TLSCACerts .Path = pathvar .Subst (p .TLSCACerts .Path )
635- }
636-
637- err := p .TLSCACerts .LoadBytes ()
638- if err != nil {
639- return nil , false
640- }
641-
642582 mspID , ok := PeerMSPID (peerName )
643583 if ! ok {
644584 return nil , false
@@ -684,10 +624,6 @@ func (m *exampleChannelOrderers) ChannelOrderers(channelName string) ([]fab.Orde
684624 if ! ok || orderer == nil {
685625 return nil , false
686626 }
687- err := orderer .TLSCACerts .LoadBytes ()
688- if err != nil {
689- return nil , false
690- }
691627 orderers = append (orderers , * orderer )
692628 }
693629
@@ -723,19 +659,12 @@ func (m *exampleEventServiceType) EventServiceType() fab.EventServiceType {
723659}
724660
725661type exampleTLSClientCerts struct {
726- RWLock * sync.RWMutex
662+ RWLock sync.RWMutex
727663}
728664
729665// TLSClientCerts overrides EndpointConfig's TLSClientCerts function which will return the list of configured client certs
730666func (m * exampleTLSClientCerts ) TLSClientCerts () ([]tls.Certificate , error ) {
731- if m .RWLock == nil {
732- m .RWLock = & sync.RWMutex {}
733- }
734667 var clientCerts tls.Certificate
735- err := clientConfig .TLSCerts .Client .Cert .LoadBytes ()
736- if err != nil {
737- return nil , err
738- }
739668 cb := clientConfig .TLSCerts .Client .Cert .Bytes ()
740669
741670 if len (cb ) == 0 {
@@ -764,14 +693,10 @@ func (m *exampleTLSClientCerts) TLSClientCerts() ([]tls.Certificate, error) {
764693}
765694func (m * exampleTLSClientCerts ) loadPrivateKeyFromConfig (clientConfig * msp.ClientConfig , clientCerts tls.Certificate , cb []byte ) ([]tls.Certificate , error ) {
766695
767- err := clientConfig .TLSCerts .Client .Key .LoadBytes ()
768- if err != nil {
769- return nil , err
770- }
771696 kb := clientConfig .TLSCerts .Client .Key .Bytes ()
772697
773698 // load the key/cert pair from []byte
774- clientCerts , err = tls .X509KeyPair (cb , kb )
699+ clientCerts , err : = tls .X509KeyPair (cb , kb )
775700 if err != nil {
776701 return nil , errors .Errorf ("Error loading cert/key pair as TLS client credentials: %v" , err )
777702 }
@@ -782,5 +707,13 @@ func (m *exampleTLSClientCerts) loadPrivateKeyFromConfig(clientConfig *msp.Clien
782707type exampleCryptoConfigPath struct {}
783708
784709func (m * exampleCryptoConfigPath ) CryptoConfigPath () string {
785- return pathvar .Subst (clientConfig .CryptoConfig .Path )
710+ return clientConfig .CryptoConfig .Path
711+ }
712+
713+ func newTLSConfig (path string ) endpoint.TLSConfig {
714+ config := endpoint.TLSConfig {Path : pathvar .Subst (path )}
715+ if err := config .LoadBytes (); err != nil {
716+ panic (fmt .Sprintf ("error loading bytes: %s" , err ))
717+ }
718+ return config
786719}
0 commit comments