Skip to content

Commit 3bcd969

Browse files
author
Volodymyr Paprotski
committed
Configtx tool to use Verifying MSP
LocalMSP expects to use a private key, BCCSP was complaining that it cannot find the key Change-Id: I6e99afb9f480f4a9fa963daa0cdbb11f2a60228f Signed-off-by: Volodymyr Paprotski <[email protected]>
1 parent 709d87b commit 3bcd969

File tree

3 files changed

+30
-14
lines changed

3 files changed

+30
-14
lines changed

common/configtx/tool/configtxgen/main.go

+2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"flag"
2121
"io/ioutil"
2222

23+
"github.com/hyperledger/fabric/bccsp/factory"
2324
"github.com/hyperledger/fabric/common/configtx"
2425
genesisconfig "github.com/hyperledger/fabric/common/configtx/tool/localconfig"
2526
"github.com/hyperledger/fabric/common/configtx/tool/provisional"
@@ -43,6 +44,7 @@ func main() {
4344
logging.SetLevel(logging.INFO, "")
4445

4546
logger.Info("Loading configuration")
47+
factory.InitFactories(nil)
4648
config := genesisconfig.Load(profile)
4749
pgen := provisional.New(config)
4850

common/configtx/tool/provisional/provisional.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ func New(conf *genesisconfig.Profile) Generator {
118118
}
119119

120120
for _, org := range conf.Orderer.Organizations {
121-
mspConfig, err := msp.GetLocalMspConfig(org.MSPDir, org.BCCSP, org.ID)
121+
mspConfig, err := msp.GetVerifyingMspConfig(org.MSPDir, org.BCCSP, org.ID)
122122
if err != nil {
123123
logger.Panicf("Error loading MSP configuration for org %s: %s", org.Name, err)
124124
}
@@ -148,7 +148,7 @@ func New(conf *genesisconfig.Profile) Generator {
148148
policies.TemplateImplicitMetaMajorityPolicy([]string{configtxapplication.GroupKey}, configvaluesmsp.AdminsPolicyKey),
149149
}
150150
for _, org := range conf.Application.Organizations {
151-
mspConfig, err := msp.GetLocalMspConfig(org.MSPDir, org.BCCSP, org.ID)
151+
mspConfig, err := msp.GetVerifyingMspConfig(org.MSPDir, org.BCCSP, org.ID)
152152
if err != nil {
153153
logger.Panicf("Error loading MSP configuration for org %s: %s", org.Name, err)
154154
}

msp/configbuilder.go

+26-12
Original file line numberDiff line numberDiff line change
@@ -108,19 +108,41 @@ func SetupBCCSPKeystoreConfig(bccspConfig *factory.FactoryOpts, keystoreDir stri
108108
}
109109

110110
func GetLocalMspConfig(dir string, bccspConfig *factory.FactoryOpts, ID string) (*msp.MSPConfig, error) {
111-
cacertDir := filepath.Join(dir, cacerts)
112111
signcertDir := filepath.Join(dir, signcerts)
113-
admincertDir := filepath.Join(dir, admincerts)
114112
keystoreDir := filepath.Join(dir, keystore)
115-
intermediatecertsDir := filepath.Join(dir, intermediatecerts)
116-
117113
SetupBCCSPKeystoreConfig(bccspConfig, keystoreDir)
118114

119115
err := factory.InitFactories(bccspConfig)
120116
if err != nil {
121117
return nil, fmt.Errorf("Could not initialize BCCSP Factories [%s]", err)
122118
}
123119

120+
signcert, err := getPemMaterialFromDir(signcertDir)
121+
if err != nil || len(signcert) == 0 {
122+
return nil, fmt.Errorf("Could not load a valid signer certificate from directory %s, err %s", signcertDir, err)
123+
}
124+
125+
/* FIXME: for now we're making the following assumptions
126+
1) there is exactly one signing cert
127+
2) BCCSP's KeyStore has the the private key that matches SKI of
128+
signing cert
129+
*/
130+
131+
sigid := &msp.SigningIdentityInfo{PublicSigner: signcert[0], PrivateSigner: nil}
132+
133+
return getMspConfig(dir, bccspConfig, ID, sigid)
134+
}
135+
136+
func GetVerifyingMspConfig(dir string, bccspConfig *factory.FactoryOpts, ID string) (*msp.MSPConfig, error) {
137+
return getMspConfig(dir, bccspConfig, ID, nil)
138+
}
139+
140+
func getMspConfig(dir string, bccspConfig *factory.FactoryOpts, ID string, sigid *msp.SigningIdentityInfo) (*msp.MSPConfig, error) {
141+
cacertDir := filepath.Join(dir, cacerts)
142+
signcertDir := filepath.Join(dir, signcerts)
143+
admincertDir := filepath.Join(dir, admincerts)
144+
intermediatecertsDir := filepath.Join(dir, intermediatecerts)
145+
124146
cacerts, err := getPemMaterialFromDir(cacertDir)
125147
if err != nil || len(cacerts) == 0 {
126148
return nil, fmt.Errorf("Could not load a valid ca certificate from directory %s, err %s", cacertDir, err)
@@ -139,14 +161,6 @@ func GetLocalMspConfig(dir string, bccspConfig *factory.FactoryOpts, ID string)
139161
intermediatecert, _ := getPemMaterialFromDir(intermediatecertsDir)
140162
// intermediate certs are not mandatory
141163

142-
/* FIXME: for now we're making the following assumptions
143-
1) there is exactly one signing cert
144-
2) BCCSP's KeyStore has the the private key that matches SKI of
145-
signing cert
146-
*/
147-
148-
sigid := &msp.SigningIdentityInfo{PublicSigner: signcert[0], PrivateSigner: nil}
149-
150164
fmspconf := &msp.FabricMSPConfig{
151165
Admins: admincert,
152166
RootCerts: cacerts,

0 commit comments

Comments
 (0)