// signOpenchainMessage modifies the passed in OpenchainMessage by setting the Signature based upon the Payload. func (p *PeerImpl) signOpenchainMessageMutating(msg *pb.OpenchainMessage) (*pb.OpenchainMessage, error) { if viper.GetBool("security.enabled") { sig, err := p.secHelper.Sign(msg.Payload) if err != nil { return nil, fmt.Errorf("Error signing Openchain Message: %s", err) } // Set the signature in the message msg.Signature = sig } return msg, nil }
func (i *Noops) broadcastConsensusMsg(msg *pb.OpenchainMessage) error { t := &pb.Transaction{} if err := proto.Unmarshal(msg.Payload, t); err != nil { return fmt.Errorf("Error unmarshalling payload of received OpenchainMessage:%s.", msg.Type) } // Change the msg type to consensus and broadcast to the network so that // other validators may execute the transaction msg.Type = pb.OpenchainMessage_CONSENSUS logger.Debug("Broadcasting %s", msg.Type) txs := &pb.TransactionBlock{Transactions: []*pb.Transaction{t}} payload, err := proto.Marshal(txs) if err != nil { return err } msg.Payload = payload if errs := i.cpi.Broadcast(msg); nil != errs { return fmt.Errorf("Failed to broadcast with errors: %v", errs) } return nil }