Skip to content

Commit 736622a

Browse files
committed
[FAB-15951] Adding BCCSP in ConsenterCertificate
- Inserting BCCCSP crypto provider into ConsenterCertificate structure for orderer/etcdraft. - Rename BCCSP with CryptoProvider in both Chain and replicationInitiator. Change-Id: Ic1ccb4f45b462fdee46b66cc4daf612131580237 Signed-off-by: Chongxin Luo <Chongxin.Luo@ibm.com>
1 parent 2af26fe commit 736622a

File tree

9 files changed

+49
-23
lines changed

9 files changed

+49
-23
lines changed

orderer/common/server/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ func createReplicator(
338338
conf: conf,
339339
lf: ledgerFactory,
340340
signer: signer,
341-
bccsp: bccsp,
341+
cryptoProvider: bccsp,
342342
}
343343
}
344344

orderer/common/server/main_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ func TestInitializeMultiChainManager(t *testing.T) {
364364
bootBlock := encoder.New(genesisconfig.Load(genesisconfig.SampleDevModeSoloProfile)).GenesisBlockForChannel("system")
365365
initializeMultichannelRegistrar(
366366
bootBlock,
367-
&replicationInitiator{bccsp: cryptoProvider},
367+
&replicationInitiator{cryptoProvider: cryptoProvider},
368368
&cluster.PredicateDialer{},
369369
comm.ServerConfig{},
370370
nil,
@@ -444,7 +444,7 @@ func TestUpdateTrustedRoots(t *testing.T) {
444444

445445
initializeMultichannelRegistrar(
446446
bootBlock,
447-
&replicationInitiator{bccsp: cryptoProvider},
447+
&replicationInitiator{cryptoProvider: cryptoProvider},
448448
&cluster.PredicateDialer{},
449449
comm.ServerConfig{},
450450
nil,
@@ -495,7 +495,7 @@ func TestUpdateTrustedRoots(t *testing.T) {
495495
}
496496
initializeMultichannelRegistrar(
497497
bootBlock,
498-
&replicationInitiator{bccsp: cryptoProvider},
498+
&replicationInitiator{cryptoProvider: cryptoProvider},
499499
predDialer,
500500
comm.ServerConfig{},
501501
nil,
@@ -754,7 +754,7 @@ func TestInitializeEtcdraftConsenter(t *testing.T) {
754754
&localconfig.TopLevel{},
755755
rlf,
756756
&cluster.PredicateDialer{},
757-
genesisBlock, &replicationInitiator{bccsp: cryptoProvider},
757+
genesisBlock, &replicationInitiator{cryptoProvider: cryptoProvider},
758758
comm.ServerConfig{
759759
SecOpts: comm.SecureOptions{
760760
Certificate: crt.Cert,

orderer/common/server/onboarding.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ type replicationInitiator struct {
3939
conf *localconfig.TopLevel
4040
lf cluster.LedgerFactory
4141
signer identity.SignerSerializer
42-
bccsp bccsp.BCCSP
42+
cryptoProvider bccsp.BCCSP
4343
}
4444

4545
func (ri *replicationInitiator) replicateIfNeeded(bootstrapBlock *common.Block) {
@@ -51,13 +51,17 @@ func (ri *replicationInitiator) replicateIfNeeded(bootstrapBlock *common.Block)
5151
}
5252

5353
func (ri *replicationInitiator) createReplicator(bootstrapBlock *common.Block, filter func(string) bool) *cluster.Replicator {
54-
consenterCert := etcdraft.ConsenterCertificate(ri.secOpts.Certificate)
54+
consenterCert := &etcdraft.ConsenterCertificate{
55+
ConsenterCertificate: ri.secOpts.Certificate,
56+
CryptoProvider: ri.cryptoProvider,
57+
}
58+
5559
systemChannelName, err := protoutil.GetChainIDFromBlock(bootstrapBlock)
5660
if err != nil {
5761
ri.logger.Panicf("Failed extracting system channel name from bootstrap block: %v", err)
5862
}
5963
pullerConfig := cluster.PullerConfigFromTopLevelConfig(systemChannelName, ri.conf, ri.secOpts.Key, ri.secOpts.Certificate, ri.signer)
60-
puller, err := cluster.BlockPullerFromConfigBlock(pullerConfig, bootstrapBlock, ri.verifierRetriever, ri.bccsp)
64+
puller, err := cluster.BlockPullerFromConfigBlock(pullerConfig, bootstrapBlock, ri.verifierRetriever, ri.cryptoProvider)
6165
if err != nil {
6266
ri.logger.Panicf("Failed creating puller config from bootstrap block: %v", err)
6367
}

orderer/common/server/onboarding_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ func TestOnboardingChannelUnavailable(t *testing.T) {
273273
logger: flogging.MustGetLogger("testOnboarding"),
274274
conf: config,
275275
secOpts: secConfig,
276-
bccsp: cryptoProvider,
276+
cryptoProvider: cryptoProvider,
277277
}
278278

279279
type event struct {
@@ -694,9 +694,9 @@ func TestReplicate(t *testing.T) {
694694
logger: flogging.MustGetLogger("testReplicateIfNeeded"),
695695
signer: testCase.signer,
696696

697-
conf: testCase.conf,
698-
secOpts: testCase.secOpts,
699-
bccsp: cryptoProvider,
697+
conf: testCase.conf,
698+
secOpts: testCase.secOpts,
699+
cryptoProvider: cryptoProvider,
700700
}
701701

702702
if testCase.panicValue != "" {

orderer/consensus/etcdraft/chain.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"github.com/hyperledger/fabric-protos-go/orderer"
2121
"github.com/hyperledger/fabric-protos-go/orderer/etcdraft"
2222
"github.com/hyperledger/fabric/bccsp"
23+
"github.com/hyperledger/fabric/bccsp/factory"
2324
"github.com/hyperledger/fabric/common/flogging"
2425
"github.com/hyperledger/fabric/orderer/common/cluster"
2526
"github.com/hyperledger/fabric/orderer/consensus"
@@ -194,7 +195,7 @@ type Chain struct {
194195
periodicChecker *PeriodicCheck
195196

196197
// BCCSP instane
197-
BCCSP bccsp.BCCSP
198+
CryptoProvider bccsp.BCCSP
198199
}
199200

200201
// NewChain constructs a chain object.
@@ -274,8 +275,9 @@ func NewChain(
274275
NormalProposalsReceived: opts.Metrics.NormalProposalsReceived.With("channel", support.ChannelID()),
275276
ConfigProposalsReceived: opts.Metrics.ConfigProposalsReceived.With("channel", support.ChannelID()),
276277
},
277-
logger: lg,
278-
opts: opts,
278+
logger: lg,
279+
opts: opts,
280+
CryptoProvider: factory.GetDefault(),
279281
}
280282

281283
// Sets initial values for metrics
@@ -1318,8 +1320,13 @@ func (c *Chain) suspectEviction() bool {
13181320
}
13191321

13201322
func (c *Chain) newEvictionSuspector() *evictionSuspector {
1323+
consenterCertificate := &ConsenterCertificate{
1324+
ConsenterCertificate: c.opts.Cert,
1325+
CryptoProvider: c.CryptoProvider,
1326+
}
1327+
13211328
return &evictionSuspector{
1322-
amIInChannel: ConsenterCertificate(c.opts.Cert).IsConsenterOfChannel,
1329+
amIInChannel: consenterCertificate.IsConsenterOfChannel,
13231330
evictionSuspicionThreshold: c.opts.EvictionSuspicion,
13241331
writeBlock: c.support.Append,
13251332
createPuller: c.createPuller,

orderer/consensus/etcdraft/consenter_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ var _ = Describe("Consenter", func() {
113113

114114
When("the consenter is asked for a chain", func() {
115115
cryptoProvider, _ := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore())
116-
chainInstance := &etcdraft.Chain{}
116+
chainInstance := &etcdraft.Chain{CryptoProvider: cryptoProvider}
117117
cs := &multichannel.ChainSupport{
118118
Chain: chainInstance,
119119
BCCSP: cryptoProvider,

orderer/consensus/etcdraft/util.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import (
1919
"github.com/hyperledger/fabric-protos-go/common"
2020
"github.com/hyperledger/fabric-protos-go/orderer"
2121
"github.com/hyperledger/fabric-protos-go/orderer/etcdraft"
22-
"github.com/hyperledger/fabric/bccsp/factory"
22+
"github.com/hyperledger/fabric/bccsp"
2323
"github.com/hyperledger/fabric/common/channelconfig"
2424
"github.com/hyperledger/fabric/common/configtx"
2525
"github.com/hyperledger/fabric/common/flogging"
@@ -266,7 +266,12 @@ func validateCert(pemData []byte, certRole string) error {
266266
}
267267

268268
// ConsenterCertificate denotes a TLS certificate of a consenter
269-
type ConsenterCertificate []byte
269+
type ConsenterCertificate struct {
270+
ConsenterCertificate []byte
271+
CryptoProvider bccsp.BCCSP
272+
}
273+
274+
// type ConsenterCertificate []byte
270275

271276
// IsConsenterOfChannel returns whether the caller is a consenter of a channel
272277
// by inspecting the given configuration block.
@@ -279,7 +284,7 @@ func (conCert ConsenterCertificate) IsConsenterOfChannel(configBlock *common.Blo
279284
if err != nil {
280285
return err
281286
}
282-
bundle, err := channelconfig.NewBundleFromEnvelope(envelopeConfig, factory.GetDefault())
287+
bundle, err := channelconfig.NewBundleFromEnvelope(envelopeConfig, conCert.CryptoProvider)
283288
if err != nil {
284289
return err
285290
}
@@ -293,7 +298,7 @@ func (conCert ConsenterCertificate) IsConsenterOfChannel(configBlock *common.Blo
293298
}
294299

295300
for _, consenter := range m.Consenters {
296-
if bytes.Equal(conCert, consenter.ServerTlsCert) || bytes.Equal(conCert, consenter.ClientTlsCert) {
301+
if bytes.Equal(conCert.ConsenterCertificate, consenter.ServerTlsCert) || bytes.Equal(conCert.ConsenterCertificate, consenter.ClientTlsCert) {
297302
return nil
298303
}
299304
}

orderer/consensus/etcdraft/util_test.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"github.com/golang/protobuf/proto"
1919
"github.com/hyperledger/fabric-protos-go/common"
2020
etcdraftproto "github.com/hyperledger/fabric-protos-go/orderer/etcdraft"
21+
"github.com/hyperledger/fabric/bccsp/sw"
2122
"github.com/hyperledger/fabric/common/crypto/tlsgen"
2223
"github.com/hyperledger/fabric/common/flogging"
2324
"github.com/hyperledger/fabric/orderer/common/cluster"
@@ -95,7 +96,14 @@ func TestIsConsenterOfChannel(t *testing.T) {
9596
},
9697
} {
9798
t.Run(testCase.name, func(t *testing.T) {
98-
err := ConsenterCertificate(testCase.certificate).IsConsenterOfChannel(testCase.configBlock)
99+
cryptoProvider, err := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore())
100+
assert.NoError(t, err)
101+
102+
consenterCertificate := &ConsenterCertificate{
103+
ConsenterCertificate: testCase.certificate,
104+
CryptoProvider: cryptoProvider,
105+
}
106+
err = consenterCertificate.IsConsenterOfChannel(testCase.configBlock)
99107
if testCase.expectedError != "" {
100108
assert.EqualError(t, err, testCase.expectedError)
101109
} else {

orderer/consensus/etcdraft/validator_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ package etcdraft_test
99
import (
1010
"github.com/golang/protobuf/proto"
1111
etcdraftproto "github.com/hyperledger/fabric-protos-go/orderer/etcdraft"
12+
"github.com/hyperledger/fabric/bccsp/sw"
1213
"github.com/hyperledger/fabric/common/crypto/tlsgen"
1314
"github.com/hyperledger/fabric/orderer/consensus/etcdraft"
1415
. "github.com/onsi/ginkgo"
@@ -21,7 +22,8 @@ var _ = Describe("Metadata Validation", func() {
2122
)
2223

2324
BeforeEach(func() {
24-
chain = &etcdraft.Chain{}
25+
cryptoProvider, _ := sw.NewDefaultSecurityLevelWithKeystore(sw.NewDummyKeyStore())
26+
chain = &etcdraft.Chain{CryptoProvider: cryptoProvider}
2527
chain.ActiveNodes.Store([]uint64{})
2628
})
2729

0 commit comments

Comments
 (0)