Skip to content

Commit a4adb11

Browse files
author
Srinivasan Muralidharan
committed
FAB-2665 - delivery client should sign msgs to orderer
https://jira.hyperledger.org/browse/FAB-2665 CLI and peer were not signing delivery client. This is needed for stricter orderer changes coming in. Change-Id: I3b09a688f5c6592cd8f15424b06bd21b85e4f313 Signed-off-by: Srinivasan Muralidharan <[email protected]>
1 parent 3000b25 commit a4adb11

File tree

2 files changed

+44
-45
lines changed

2 files changed

+44
-45
lines changed

core/deliverservice/blocksprovider/blocksprovider.go

+29-30
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
gossipcommon "github.com/hyperledger/fabric/gossip/common"
2525
"github.com/hyperledger/fabric/gossip/discovery"
2626

27+
"github.com/hyperledger/fabric/common/localmsp"
2728
"github.com/hyperledger/fabric/protos/common"
2829
gossip_proto "github.com/hyperledger/fabric/protos/gossip"
2930
"github.com/hyperledger/fabric/protos/orderer"
@@ -175,39 +176,37 @@ func (b *blocksProviderImpl) RequestBlocks(ledgerInfoProvider LedgerInfo) error
175176
}
176177

177178
func (b *blocksProviderImpl) seekOldest() error {
178-
return b.client.Send(&common.Envelope{
179-
Payload: utils.MarshalOrPanic(&common.Payload{
180-
Header: &common.Header{
181-
ChannelHeader: utils.MarshalOrPanic(&common.ChannelHeader{
182-
ChannelId: b.chainID,
183-
}),
184-
SignatureHeader: utils.MarshalOrPanic(&common.SignatureHeader{}),
185-
},
186-
Data: utils.MarshalOrPanic(&orderer.SeekInfo{
187-
Start: &orderer.SeekPosition{Type: &orderer.SeekPosition_Oldest{Oldest: &orderer.SeekOldest{}}},
188-
Stop: &orderer.SeekPosition{Type: &orderer.SeekPosition_Specified{Specified: &orderer.SeekSpecified{Number: math.MaxUint64}}},
189-
Behavior: orderer.SeekInfo_BLOCK_UNTIL_READY,
190-
}),
191-
}),
192-
})
179+
seekInfo := &orderer.SeekInfo{
180+
Start: &orderer.SeekPosition{Type: &orderer.SeekPosition_Oldest{Oldest: &orderer.SeekOldest{}}},
181+
Stop: &orderer.SeekPosition{Type: &orderer.SeekPosition_Specified{Specified: &orderer.SeekSpecified{Number: math.MaxUint64}}},
182+
Behavior: orderer.SeekInfo_BLOCK_UNTIL_READY,
183+
}
184+
185+
//TODO- epoch and msgVersion may need to be obtained for nowfollowing usage in orderer/configupdate/configupdate.go
186+
msgVersion := int32(0)
187+
epoch := uint64(0)
188+
env, err := utils.CreateSignedEnvelope(common.HeaderType_CONFIG_UPDATE, b.chainID, localmsp.NewSigner(), seekInfo, msgVersion, epoch)
189+
if err != nil {
190+
return err
191+
}
192+
return b.client.Send(env)
193193
}
194194

195195
func (b *blocksProviderImpl) seekLatestFromCommitter(height uint64) error {
196-
return b.client.Send(&common.Envelope{
197-
Payload: utils.MarshalOrPanic(&common.Payload{
198-
Header: &common.Header{
199-
ChannelHeader: utils.MarshalOrPanic(&common.ChannelHeader{
200-
ChannelId: b.chainID,
201-
}),
202-
SignatureHeader: utils.MarshalOrPanic(&common.SignatureHeader{}),
203-
},
204-
Data: utils.MarshalOrPanic(&orderer.SeekInfo{
205-
Start: &orderer.SeekPosition{Type: &orderer.SeekPosition_Specified{Specified: &orderer.SeekSpecified{Number: height}}},
206-
Stop: &orderer.SeekPosition{Type: &orderer.SeekPosition_Specified{Specified: &orderer.SeekSpecified{Number: math.MaxUint64}}},
207-
Behavior: orderer.SeekInfo_BLOCK_UNTIL_READY,
208-
}),
209-
}),
210-
})
196+
seekInfo := &orderer.SeekInfo{
197+
Start: &orderer.SeekPosition{Type: &orderer.SeekPosition_Specified{Specified: &orderer.SeekSpecified{Number: height}}},
198+
Stop: &orderer.SeekPosition{Type: &orderer.SeekPosition_Specified{Specified: &orderer.SeekSpecified{Number: math.MaxUint64}}},
199+
Behavior: orderer.SeekInfo_BLOCK_UNTIL_READY,
200+
}
201+
202+
//TODO- epoch and msgVersion may need to be obtained for nowfollowing usage in orderer/configupdate/configupdate.go
203+
msgVersion := int32(0)
204+
epoch := uint64(0)
205+
env, err := utils.CreateSignedEnvelope(common.HeaderType_CONFIG_UPDATE, b.chainID, localmsp.NewSigner(), seekInfo, msgVersion, epoch)
206+
if err != nil {
207+
return err
208+
}
209+
return b.client.Send(env)
211210
}
212211

213212
func createGossipMsg(chainID string, payload *gossip_proto.Payload) *gossip_proto.GossipMessage {

peer/channel/deliverclient.go

+15-15
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"fmt"
2121
"math"
2222

23+
"github.com/hyperledger/fabric/common/localmsp"
2324
"github.com/hyperledger/fabric/protos/common"
2425
ab "github.com/hyperledger/fabric/protos/orderer"
2526
"github.com/hyperledger/fabric/protos/utils"
@@ -39,22 +40,21 @@ func newDeliverClient(client ab.AtomicBroadcast_DeliverClient, chainID string) *
3940
}
4041

4142
func seekHelper(chainID string, start *ab.SeekPosition) *common.Envelope {
42-
return &common.Envelope{
43-
Payload: utils.MarshalOrPanic(&common.Payload{
44-
Header: &common.Header{
45-
ChannelHeader: utils.MarshalOrPanic(&common.ChannelHeader{
46-
ChannelId: chainID,
47-
}),
48-
SignatureHeader: utils.MarshalOrPanic(&common.SignatureHeader{}),
49-
},
50-
51-
Data: utils.MarshalOrPanic(&ab.SeekInfo{
52-
Start: &ab.SeekPosition{Type: &ab.SeekPosition_Oldest{Oldest: &ab.SeekOldest{}}},
53-
Stop: &ab.SeekPosition{Type: &ab.SeekPosition_Specified{Specified: &ab.SeekSpecified{Number: math.MaxUint64}}},
54-
Behavior: ab.SeekInfo_BLOCK_UNTIL_READY,
55-
}),
56-
}),
43+
seekInfo := &ab.SeekInfo{
44+
Start: &ab.SeekPosition{Type: &ab.SeekPosition_Oldest{Oldest: &ab.SeekOldest{}}},
45+
Stop: &ab.SeekPosition{Type: &ab.SeekPosition_Specified{Specified: &ab.SeekSpecified{Number: math.MaxUint64}}},
46+
Behavior: ab.SeekInfo_BLOCK_UNTIL_READY,
5747
}
48+
49+
//TODO- epoch and msgVersion may need to be obtained for nowfollowing usage in orderer/configupdate/configupdate.go
50+
msgVersion := int32(0)
51+
epoch := uint64(0)
52+
env, err := utils.CreateSignedEnvelope(common.HeaderType_CONFIG_UPDATE, chainID, localmsp.NewSigner(), seekInfo, msgVersion, epoch)
53+
if err != nil {
54+
fmt.Printf("Error signing envelope %s\n", err)
55+
return nil
56+
}
57+
return env
5858
}
5959

6060
func (r *deliverClient) seekOldest() error {

0 commit comments

Comments
 (0)