func (g *gossipServiceImpl) validateIdentityMsg(msg *proto.GossipMessage) error { if msg.GetPeerIdentity() == nil { return fmt.Errorf("Identity empty") } idMsg := msg.GetPeerIdentity() pkiID := idMsg.PkiID cert := idMsg.Cert sig := idMsg.Sig if bytes.Equal(g.idMapper.GetPKIidOfCert(api.PeerIdentityType(cert)), common.PKIidType(pkiID)) { return fmt.Errorf("Calculated pkiID doesn't match identity") } idMsg.Sig = nil b, err := prot.Marshal(idMsg) if err != nil { return fmt.Errorf("Failed marshalling: %v", err) } err = g.mcs.Verify(api.PeerIdentityType(cert), sig, b) if err != nil { return fmt.Errorf("Failed verifying message: %v", err) } idMsg.Sig = sig return nil }