@@ -26,8 +26,23 @@ import (
26
26
"github.com/hyperledger/fabric/msp"
27
27
"github.com/hyperledger/fabric/msp/cache"
28
28
"github.com/pkg/errors"
29
+ "github.com/spf13/viper"
29
30
)
30
31
32
+ // LoadLocalMspWithType loads the local MSP with the specified type from the specified directory
33
+ func LoadLocalMspWithType (dir string , bccspConfig * factory.FactoryOpts , mspID , mspType string ) error {
34
+ if mspID == "" {
35
+ return errors .New ("the local MSP must have an ID" )
36
+ }
37
+
38
+ conf , err := msp .GetLocalMspConfigWithType (dir , bccspConfig , mspID , mspType )
39
+ if err != nil {
40
+ return err
41
+ }
42
+
43
+ return GetLocalMSP ().Setup (conf )
44
+ }
45
+
31
46
// LoadLocalMsp loads the local MSP from the specified directory
32
47
func LoadLocalMsp (dir string , bccspConfig * factory.FactoryOpts , mspID string ) error {
33
48
if mspID == "" {
@@ -115,6 +130,23 @@ func GetLocalMSP() msp.MSP {
115
130
var lclMsp msp.MSP
116
131
var created bool = false
117
132
{
133
+ // determine the type of MSP (by default, we'll use bccspMSP)
134
+ mspType := viper .GetString ("peer.localMspType" )
135
+ if mspType == "" {
136
+ mspType = msp .ProviderTypeToString (msp .FABRIC )
137
+ }
138
+
139
+ // based on the MSP type, generate the new opts
140
+ var newOpts msp.NewOpts
141
+ switch mspType {
142
+ case msp .ProviderTypeToString (msp .FABRIC ):
143
+ newOpts = & msp.BCCSPNewOpts {NewBaseOpts : msp.NewBaseOpts {Version : msp .MSPv1_0 }}
144
+ case msp .ProviderTypeToString (msp .IDEMIX ):
145
+ newOpts = & msp.IdemixNewOpts {msp.NewBaseOpts {Version : msp .MSPv1_1 }}
146
+ default :
147
+ panic ("msp type " + mspType + " unknown" )
148
+ }
149
+
118
150
m .Lock ()
119
151
defer m .Unlock ()
120
152
@@ -123,14 +155,21 @@ func GetLocalMSP() msp.MSP {
123
155
var err error
124
156
created = true
125
157
126
- mspInst , err := msp .New (& msp. BCCSPNewOpts { NewBaseOpts : msp. NewBaseOpts { Version : msp . MSPv1_0 }} )
158
+ mspInst , err := msp .New (newOpts )
127
159
if err != nil {
128
160
mspLogger .Fatalf ("Failed to initialize local MSP, received err %+v" , err )
129
161
}
130
162
131
- lclMsp , err = cache .New (mspInst )
132
- if err != nil {
133
- mspLogger .Fatalf ("Failed to initialize local MSP, received err %+v" , err )
163
+ switch mspType {
164
+ case msp .ProviderTypeToString (msp .FABRIC ):
165
+ lclMsp , err = cache .New (mspInst )
166
+ if err != nil {
167
+ mspLogger .Fatalf ("Failed to initialize local MSP, received err %+v" , err )
168
+ }
169
+ case msp .ProviderTypeToString (msp .IDEMIX ):
170
+ lclMsp = mspInst
171
+ default :
172
+ panic ("msp type " + mspType + " unknown" )
134
173
}
135
174
localMsp = lclMsp
136
175
}
0 commit comments