Skip to content

Commit

Permalink
Merge "[FAB-4467] Allow nil signer for creating envelope"
Browse files Browse the repository at this point in the history
  • Loading branch information
kchristidis authored and Gerrit Code Review committed Jun 9, 2017
2 parents c230992 + c8e0dbb commit 8589b83
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 6 deletions.
20 changes: 14 additions & 6 deletions protos/utils/txutils.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,14 @@ func GetEnvelopeFromBlock(data []byte) (*common.Envelope, error) {
func CreateSignedEnvelope(txType common.HeaderType, channelID string, signer crypto.LocalSigner, dataMsg proto.Message, msgVersion int32, epoch uint64) (*common.Envelope, error) {
payloadChannelHeader := MakeChannelHeader(txType, msgVersion, channelID, epoch)

payloadSignatureHeader, err := signer.NewSignatureHeader()
if err != nil {
return nil, err
var err error
payloadSignatureHeader := &common.SignatureHeader{}

if signer != nil {
payloadSignatureHeader, err = signer.NewSignatureHeader()
if err != nil {
return nil, err
}
}

data, err := proto.Marshal(dataMsg)
Expand All @@ -92,9 +97,12 @@ func CreateSignedEnvelope(txType common.HeaderType, channelID string, signer cry
Data: data,
})

sig, err := signer.Sign(paylBytes)
if err != nil {
return nil, err
var sig []byte
if signer != nil {
sig, err = signer.Sign(paylBytes)
if err != nil {
return nil, err
}
}

return &common.Envelope{Payload: paylBytes, Signature: sig}, nil
Expand Down
19 changes: 19 additions & 0 deletions protos/utils/txutils_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,25 @@ func TestCreateSignedEnvelope(t *testing.T) {
assert.Error(t, err, "Expected sign error")
}

func TestCreateSignedEnvelopeNilSigner(t *testing.T) {
var env *cb.Envelope
channelID := "mychannelID"
msg := &cb.ConfigEnvelope{}

env, err := utils.CreateSignedEnvelope(cb.HeaderType_CONFIG, channelID,
nil, msg, int32(1), uint64(1))
assert.NoError(t, err, "Unexpected error creating signed envelope")
assert.NotNil(t, env, "Envelope should not be nil")
assert.Empty(t, env.Signature, "Signature should have been empty")
payload := &cb.Payload{}
err = proto.Unmarshal(env.Payload, payload)
assert.NoError(t, err, "Failed to unmarshal payload")
data := &cb.ConfigEnvelope{}
err = proto.Unmarshal(payload.Data, data)
assert.NoError(t, err, "Expected payload data to be a config envelope")
assert.Equal(t, msg, data, "Payload data does not match expected value")
}

func TestGetSignedProposal(t *testing.T) {
var signedProp *pb.SignedProposal
var err error
Expand Down

0 comments on commit 8589b83

Please sign in to comment.