Skip to content

Commit a4e80cd

Browse files
author
Jason Yellick
committed
[FAB-2695] (PA) mv msp_principal.proto protos/msp
This is intended for (PA) post-alpha. https://jira.hyperledger.org/browse/FAB-2695 Before the proto compilation was fixed to handle importing protos across directories, the msp_principal.proto was put into protos/common/. It does not make sense here, as it is only MSP related, and it belongs in protos/msp/. Note, that is an API change only, no ABI is modified, so this should not impact existing clients until the regenerate the protobufs. Change-Id: I72f52354d76e25237ad4831e8e25d6c9772196f6 Signed-off-by: Jason Yellick <[email protected]>
1 parent 07320ea commit a4e80cd

21 files changed

+198
-194
lines changed

common/cauthdsl/cauthdsl.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,14 @@ import (
2121

2222
"github.com/hyperledger/fabric/msp"
2323
cb "github.com/hyperledger/fabric/protos/common"
24+
mb "github.com/hyperledger/fabric/protos/msp"
2425
"github.com/op/go-logging"
2526
)
2627

2728
var cauthdslLogger = logging.MustGetLogger("cauthdsl")
2829

2930
// compile recursively builds a go evaluatable function corresponding to the policy specified
30-
func compile(policy *cb.SignaturePolicy, identities []*cb.MSPPrincipal, deserializer msp.IdentityDeserializer) (func([]*cb.SignedData, []bool) bool, error) {
31+
func compile(policy *cb.SignaturePolicy, identities []*mb.MSPPrincipal, deserializer msp.IdentityDeserializer) (func([]*cb.SignedData, []bool) bool, error) {
3132
switch t := policy.Type.(type) {
3233
case *cb.SignaturePolicy_NOutOf_:
3334
policies := make([]func([]*cb.SignedData, []bool) bool, len(t.NOutOf.Policies))

common/cauthdsl/cauthdsl_builder.go

+11-10
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package cauthdsl
1818

1919
import (
2020
cb "github.com/hyperledger/fabric/protos/common"
21+
"github.com/hyperledger/fabric/protos/msp"
2122

2223
"github.com/golang/protobuf/proto"
2324
"github.com/hyperledger/fabric/protos/utils"
@@ -53,9 +54,9 @@ func init() {
5354

5455
// Envelope builds an envelope message embedding a SignaturePolicy
5556
func Envelope(policy *cb.SignaturePolicy, identities [][]byte) *cb.SignaturePolicyEnvelope {
56-
ids := make([]*cb.MSPPrincipal, len(identities))
57+
ids := make([]*msp.MSPPrincipal, len(identities))
5758
for i, _ := range ids {
58-
ids[i] = &cb.MSPPrincipal{PrincipalClassification: cb.MSPPrincipal_IDENTITY, Principal: identities[i]}
59+
ids[i] = &msp.MSPPrincipal{PrincipalClassification: msp.MSPPrincipal_IDENTITY, Principal: identities[i]}
5960
}
6061

6162
return &cb.SignaturePolicyEnvelope{
@@ -78,15 +79,15 @@ func SignedBy(index int32) *cb.SignaturePolicy {
7879
// requiring 1 signature from any member of the specified MSP
7980
func SignedByMspMember(mspId string) *cb.SignaturePolicyEnvelope {
8081
// specify the principal: it's a member of the msp we just found
81-
principal := &cb.MSPPrincipal{
82-
PrincipalClassification: cb.MSPPrincipal_ROLE,
83-
Principal: utils.MarshalOrPanic(&cb.MSPRole{Role: cb.MSPRole_MEMBER, MspIdentifier: mspId})}
82+
principal := &msp.MSPPrincipal{
83+
PrincipalClassification: msp.MSPPrincipal_ROLE,
84+
Principal: utils.MarshalOrPanic(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: mspId})}
8485

8586
// create the policy: it requires exactly 1 signature from the first (and only) principal
8687
p := &cb.SignaturePolicyEnvelope{
8788
Version: 0,
8889
Policy: NOutOf(1, []*cb.SignaturePolicy{SignedBy(0)}),
89-
Identities: []*cb.MSPPrincipal{principal},
90+
Identities: []*msp.MSPPrincipal{principal},
9091
}
9192

9293
return p
@@ -96,15 +97,15 @@ func SignedByMspMember(mspId string) *cb.SignaturePolicyEnvelope {
9697
// requiring 1 signature from any admin of the specified MSP
9798
func SignedByMspAdmin(mspId string) *cb.SignaturePolicyEnvelope {
9899
// specify the principal: it's a member of the msp we just found
99-
principal := &cb.MSPPrincipal{
100-
PrincipalClassification: cb.MSPPrincipal_ROLE,
101-
Principal: utils.MarshalOrPanic(&cb.MSPRole{Role: cb.MSPRole_ADMIN, MspIdentifier: mspId})}
100+
principal := &msp.MSPPrincipal{
101+
PrincipalClassification: msp.MSPPrincipal_ROLE,
102+
Principal: utils.MarshalOrPanic(&msp.MSPRole{Role: msp.MSPRole_ADMIN, MspIdentifier: mspId})}
102103

103104
// create the policy: it requires exactly 1 signature from the first (and only) principal
104105
p := &cb.SignaturePolicyEnvelope{
105106
Version: 0,
106107
Policy: NOutOf(1, []*cb.SignaturePolicy{SignedBy(0)}),
107-
Identities: []*cb.MSPPrincipal{principal},
108+
Identities: []*msp.MSPPrincipal{principal},
108109
}
109110

110111
return p

common/cauthdsl/cauthdsl_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525

2626
"github.com/golang/protobuf/proto"
2727
cb "github.com/hyperledger/fabric/protos/common"
28+
mb "github.com/hyperledger/fabric/protos/msp"
2829
)
2930

3031
var invalidSignature = []byte("badsigned")
@@ -33,7 +34,7 @@ type mockIdentity struct {
3334
idBytes []byte
3435
}
3536

36-
func (id *mockIdentity) SatisfiesPrincipal(p *cb.MSPPrincipal) error {
37+
func (id *mockIdentity) SatisfiesPrincipal(p *mb.MSPPrincipal) error {
3738
if bytes.Compare(id.idBytes, p.Principal) == 0 {
3839
return nil
3940
} else {

common/cauthdsl/policyparser.go

+9-8
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424

2525
"github.com/Knetic/govaluate"
2626
"github.com/hyperledger/fabric/protos/common"
27+
"github.com/hyperledger/fabric/protos/msp"
2728
"github.com/hyperledger/fabric/protos/utils"
2829
)
2930

@@ -138,17 +139,17 @@ func secondPass(args ...interface{}) (interface{}, error) {
138139
}
139140

140141
/* get the right role */
141-
var r common.MSPRole_MSPRoleType
142+
var r msp.MSPRole_MSPRoleType
142143
if subm[0][3] == "member" {
143-
r = common.MSPRole_MEMBER
144+
r = msp.MSPRole_MEMBER
144145
} else {
145-
r = common.MSPRole_ADMIN
146+
r = msp.MSPRole_ADMIN
146147
}
147148

148149
/* build the principal we've been told */
149-
p := &common.MSPPrincipal{
150-
PrincipalClassification: common.MSPPrincipal_ROLE,
151-
Principal: utils.MarshalOrPanic(&common.MSPRole{MspIdentifier: subm[0][1], Role: r})}
150+
p := &msp.MSPPrincipal{
151+
PrincipalClassification: msp.MSPPrincipal_ROLE,
152+
Principal: utils.MarshalOrPanic(&msp.MSPRole{MspIdentifier: subm[0][1], Role: r})}
152153
ctx.principals = append(ctx.principals, p)
153154

154155
/* create a SignaturePolicy that requires a signature from
@@ -177,11 +178,11 @@ func secondPass(args ...interface{}) (interface{}, error) {
177178

178179
type context struct {
179180
IDNum int
180-
principals []*common.MSPPrincipal
181+
principals []*msp.MSPPrincipal
181182
}
182183

183184
func newContext() *context {
184-
return &context{IDNum: 0, principals: make([]*common.MSPPrincipal, 0)}
185+
return &context{IDNum: 0, principals: make([]*msp.MSPPrincipal, 0)}
185186
}
186187

187188
// FromString takes a string representation of the policy,

common/cauthdsl/policyparser_test.go

+38-37
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"testing"
2222

2323
"github.com/hyperledger/fabric/protos/common"
24+
"github.com/hyperledger/fabric/protos/msp"
2425
"github.com/hyperledger/fabric/protos/utils"
2526
"github.com/stretchr/testify/assert"
2627
)
@@ -29,15 +30,15 @@ func TestAnd(t *testing.T) {
2930
p1, err := FromString("AND('A.member', 'B.member')")
3031
assert.NoError(t, err)
3132

32-
principals := make([]*common.MSPPrincipal, 0)
33+
principals := make([]*msp.MSPPrincipal, 0)
3334

34-
principals = append(principals, &common.MSPPrincipal{
35-
PrincipalClassification: common.MSPPrincipal_ROLE,
36-
Principal: utils.MarshalOrPanic(&common.MSPRole{Role: common.MSPRole_MEMBER, MspIdentifier: "A"})})
35+
principals = append(principals, &msp.MSPPrincipal{
36+
PrincipalClassification: msp.MSPPrincipal_ROLE,
37+
Principal: utils.MarshalOrPanic(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: "A"})})
3738

38-
principals = append(principals, &common.MSPPrincipal{
39-
PrincipalClassification: common.MSPPrincipal_ROLE,
40-
Principal: utils.MarshalOrPanic(&common.MSPRole{Role: common.MSPRole_MEMBER, MspIdentifier: "B"})})
39+
principals = append(principals, &msp.MSPPrincipal{
40+
PrincipalClassification: msp.MSPPrincipal_ROLE,
41+
Principal: utils.MarshalOrPanic(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: "B"})})
4142

4243
p2 := &common.SignaturePolicyEnvelope{
4344
Version: 0,
@@ -52,15 +53,15 @@ func TestOr(t *testing.T) {
5253
p1, err := FromString("OR('A.member', 'B.member')")
5354
assert.NoError(t, err)
5455

55-
principals := make([]*common.MSPPrincipal, 0)
56+
principals := make([]*msp.MSPPrincipal, 0)
5657

57-
principals = append(principals, &common.MSPPrincipal{
58-
PrincipalClassification: common.MSPPrincipal_ROLE,
59-
Principal: utils.MarshalOrPanic(&common.MSPRole{Role: common.MSPRole_MEMBER, MspIdentifier: "A"})})
58+
principals = append(principals, &msp.MSPPrincipal{
59+
PrincipalClassification: msp.MSPPrincipal_ROLE,
60+
Principal: utils.MarshalOrPanic(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: "A"})})
6061

61-
principals = append(principals, &common.MSPPrincipal{
62-
PrincipalClassification: common.MSPPrincipal_ROLE,
63-
Principal: utils.MarshalOrPanic(&common.MSPRole{Role: common.MSPRole_MEMBER, MspIdentifier: "B"})})
62+
principals = append(principals, &msp.MSPPrincipal{
63+
PrincipalClassification: msp.MSPPrincipal_ROLE,
64+
Principal: utils.MarshalOrPanic(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: "B"})})
6465

6566
p2 := &common.SignaturePolicyEnvelope{
6667
Version: 0,
@@ -75,19 +76,19 @@ func TestComplex1(t *testing.T) {
7576
p1, err := FromString("OR('A.member', AND('B.member', 'C.member'))")
7677
assert.NoError(t, err)
7778

78-
principals := make([]*common.MSPPrincipal, 0)
79+
principals := make([]*msp.MSPPrincipal, 0)
7980

80-
principals = append(principals, &common.MSPPrincipal{
81-
PrincipalClassification: common.MSPPrincipal_ROLE,
82-
Principal: utils.MarshalOrPanic(&common.MSPRole{Role: common.MSPRole_MEMBER, MspIdentifier: "B"})})
81+
principals = append(principals, &msp.MSPPrincipal{
82+
PrincipalClassification: msp.MSPPrincipal_ROLE,
83+
Principal: utils.MarshalOrPanic(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: "B"})})
8384

84-
principals = append(principals, &common.MSPPrincipal{
85-
PrincipalClassification: common.MSPPrincipal_ROLE,
86-
Principal: utils.MarshalOrPanic(&common.MSPRole{Role: common.MSPRole_MEMBER, MspIdentifier: "C"})})
85+
principals = append(principals, &msp.MSPPrincipal{
86+
PrincipalClassification: msp.MSPPrincipal_ROLE,
87+
Principal: utils.MarshalOrPanic(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: "C"})})
8788

88-
principals = append(principals, &common.MSPPrincipal{
89-
PrincipalClassification: common.MSPPrincipal_ROLE,
90-
Principal: utils.MarshalOrPanic(&common.MSPRole{Role: common.MSPRole_MEMBER, MspIdentifier: "A"})})
89+
principals = append(principals, &msp.MSPPrincipal{
90+
PrincipalClassification: msp.MSPPrincipal_ROLE,
91+
Principal: utils.MarshalOrPanic(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: "A"})})
9192

9293
p2 := &common.SignaturePolicyEnvelope{
9394
Version: 0,
@@ -102,23 +103,23 @@ func TestComplex2(t *testing.T) {
102103
p1, err := FromString("OR(AND('A.member', 'B.member'), OR('C.admin', 'D.member'))")
103104
assert.NoError(t, err)
104105

105-
principals := make([]*common.MSPPrincipal, 0)
106+
principals := make([]*msp.MSPPrincipal, 0)
106107

107-
principals = append(principals, &common.MSPPrincipal{
108-
PrincipalClassification: common.MSPPrincipal_ROLE,
109-
Principal: utils.MarshalOrPanic(&common.MSPRole{Role: common.MSPRole_MEMBER, MspIdentifier: "A"})})
108+
principals = append(principals, &msp.MSPPrincipal{
109+
PrincipalClassification: msp.MSPPrincipal_ROLE,
110+
Principal: utils.MarshalOrPanic(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: "A"})})
110111

111-
principals = append(principals, &common.MSPPrincipal{
112-
PrincipalClassification: common.MSPPrincipal_ROLE,
113-
Principal: utils.MarshalOrPanic(&common.MSPRole{Role: common.MSPRole_MEMBER, MspIdentifier: "B"})})
112+
principals = append(principals, &msp.MSPPrincipal{
113+
PrincipalClassification: msp.MSPPrincipal_ROLE,
114+
Principal: utils.MarshalOrPanic(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: "B"})})
114115

115-
principals = append(principals, &common.MSPPrincipal{
116-
PrincipalClassification: common.MSPPrincipal_ROLE,
117-
Principal: utils.MarshalOrPanic(&common.MSPRole{Role: common.MSPRole_ADMIN, MspIdentifier: "C"})})
116+
principals = append(principals, &msp.MSPPrincipal{
117+
PrincipalClassification: msp.MSPPrincipal_ROLE,
118+
Principal: utils.MarshalOrPanic(&msp.MSPRole{Role: msp.MSPRole_ADMIN, MspIdentifier: "C"})})
118119

119-
principals = append(principals, &common.MSPPrincipal{
120-
PrincipalClassification: common.MSPPrincipal_ROLE,
121-
Principal: utils.MarshalOrPanic(&common.MSPRole{Role: common.MSPRole_MEMBER, MspIdentifier: "D"})})
120+
principals = append(principals, &msp.MSPPrincipal{
121+
PrincipalClassification: msp.MSPPrincipal_ROLE,
122+
Principal: utils.MarshalOrPanic(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: "D"})})
122123

123124
p2 := &common.SignaturePolicyEnvelope{
124125
Version: 0,

core/policy/mocks.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"github.com/hyperledger/fabric/common/policies"
2727
"github.com/hyperledger/fabric/msp"
2828
"github.com/hyperledger/fabric/protos/common"
29+
mspproto "github.com/hyperledger/fabric/protos/msp"
2930
)
3031

3132
type mockChannelPolicyManagerGetter struct {
@@ -91,7 +92,7 @@ type mockIdentity struct {
9192
msg []byte
9293
}
9394

94-
func (id *mockIdentity) SatisfiesPrincipal(p *common.MSPPrincipal) error {
95+
func (id *mockIdentity) SatisfiesPrincipal(p *mspproto.MSPPrincipal) error {
9596
if !bytes.Equal(id.identity, p.Principal) {
9697
return fmt.Errorf("Different identities [% x]!=[% x]", id.identity, p.Principal)
9798
}
@@ -141,6 +142,6 @@ type mockMSPPrincipalGetter struct {
141142
Principal []byte
142143
}
143144

144-
func (m *mockMSPPrincipalGetter) Get(role string) (*common.MSPPrincipal, error) {
145-
return &common.MSPPrincipal{Principal: m.Principal}, nil
145+
func (m *mockMSPPrincipalGetter) Get(role string) (*mspproto.MSPPrincipal, error) {
146+
return &mspproto.MSPPrincipal{Principal: m.Principal}, nil
146147
}

core/scc/lccc/lccc.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"github.com/hyperledger/fabric/core/common/sysccprovider"
3030
"github.com/hyperledger/fabric/core/peer"
3131
"github.com/hyperledger/fabric/protos/common"
32+
mspprotos "github.com/hyperledger/fabric/protos/msp"
3233
pb "github.com/hyperledger/fabric/protos/peer"
3334
"github.com/hyperledger/fabric/protos/utils"
3435
"github.com/op/go-logging"
@@ -481,12 +482,12 @@ func (lccc *LifeCycleSysCC) getDefaultEndorsementPolicy(chain string) []byte {
481482
// per application MSP defined on this chain
482483
ids := peer.GetMSPIDs(chain)
483484
sort.Strings(ids)
484-
principals := make([]*common.MSPPrincipal, len(ids))
485+
principals := make([]*mspprotos.MSPPrincipal, len(ids))
485486
sigspolicy := make([]*common.SignaturePolicy, len(ids))
486487
for i, id := range ids {
487-
principals[i] = &common.MSPPrincipal{
488-
PrincipalClassification: common.MSPPrincipal_ROLE,
489-
Principal: utils.MarshalOrPanic(&common.MSPRole{Role: common.MSPRole_MEMBER, MspIdentifier: id})}
488+
principals[i] = &mspprotos.MSPPrincipal{
489+
PrincipalClassification: mspprotos.MSPPrincipal_ROLE,
490+
Principal: utils.MarshalOrPanic(&mspprotos.MSPRole{Role: mspprotos.MSPRole_MEMBER, MspIdentifier: id})}
490491
sigspolicy[i] = cauthdsl.SignedBy(int32(i))
491492
}
492493

msp/identities.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import (
2727
"github.com/golang/protobuf/proto"
2828
"github.com/hyperledger/fabric/bccsp"
2929
"github.com/hyperledger/fabric/bccsp/signer"
30-
"github.com/hyperledger/fabric/protos/common"
3130
"github.com/hyperledger/fabric/protos/msp"
3231
"github.com/op/go-logging"
3332
)
@@ -52,7 +51,7 @@ func newIdentity(id *IdentityIdentifier, cert *x509.Certificate, pk bccsp.Key, m
5251
}
5352

5453
// SatisfiesPrincipal returns null if this instance matches the supplied principal or an error otherwise
55-
func (id *identity) SatisfiesPrincipal(principal *common.MSPPrincipal) error {
54+
func (id *identity) SatisfiesPrincipal(principal *msp.MSPPrincipal) error {
5655
return id.msp.SatisfiesPrincipal(id, principal)
5756
}
5857

msp/mgmt/principal.go

+9-9
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ import (
2020
"fmt"
2121

2222
"github.com/golang/protobuf/proto"
23-
"github.com/hyperledger/fabric/protos/common"
23+
"github.com/hyperledger/fabric/protos/msp"
2424
)
2525

2626
type MSPPrincipalGetter interface {
2727
// Get returns an MSP principal for the given role
28-
Get(role string) (*common.MSPPrincipal, error)
28+
Get(role string) (*msp.MSPPrincipal, error)
2929
}
3030

3131
func NewLocalMSPPrincipalGetter() MSPPrincipalGetter {
@@ -34,7 +34,7 @@ func NewLocalMSPPrincipalGetter() MSPPrincipalGetter {
3434

3535
type localMSPPrincipalGetter struct{}
3636

37-
func (m *localMSPPrincipalGetter) Get(role string) (*common.MSPPrincipal, error) {
37+
func (m *localMSPPrincipalGetter) Get(role string) (*msp.MSPPrincipal, error) {
3838
mspid, err := GetLocalMSP().GetIdentifier()
3939
if err != nil {
4040
return nil, fmt.Errorf("Could not extract local msp identifier [%s]", err)
@@ -43,22 +43,22 @@ func (m *localMSPPrincipalGetter) Get(role string) (*common.MSPPrincipal, error)
4343
// TODO: put the constants in some more appropriate place
4444
switch role {
4545
case "admin":
46-
principalBytes, err := proto.Marshal(&common.MSPRole{Role: common.MSPRole_ADMIN, MspIdentifier: mspid})
46+
principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_ADMIN, MspIdentifier: mspid})
4747
if err != nil {
4848
return nil, err
4949
}
5050

51-
return &common.MSPPrincipal{
52-
PrincipalClassification: common.MSPPrincipal_ROLE,
51+
return &msp.MSPPrincipal{
52+
PrincipalClassification: msp.MSPPrincipal_ROLE,
5353
Principal: principalBytes}, nil
5454
case "member":
55-
principalBytes, err := proto.Marshal(&common.MSPRole{Role: common.MSPRole_MEMBER, MspIdentifier: mspid})
55+
principalBytes, err := proto.Marshal(&msp.MSPRole{Role: msp.MSPRole_MEMBER, MspIdentifier: mspid})
5656
if err != nil {
5757
return nil, err
5858
}
5959

60-
return &common.MSPPrincipal{
61-
PrincipalClassification: common.MSPPrincipal_ROLE,
60+
return &msp.MSPPrincipal{
61+
PrincipalClassification: msp.MSPPrincipal_ROLE,
6262
Principal: principalBytes}, nil
6363
default:
6464
return nil, fmt.Errorf("MSP Principal role [%s] not recognized.", role)

0 commit comments

Comments
 (0)