code: func (s *MSPMessageCryptoService) VerifyByChannel(chainID common.ChainID, peerIdentity api.PeerIdentityType, signature, message []byte) error {
  	// Validate arguments
  	if len(peerIdentity) == 0 {
  		return errors.New("Invalid Peer Identity. It must be different from nil.")
  	}
  
  	// Get the policy manager for channel chainID
  	cpm, flag := s.channelPolicyManagerGetter.Manager(string(chainID))
  	if cpm == nil {
  		return fmt.Errorf("Could not acquire policy manager for channel %s", string(chainID))
  	}
  	mcsLogger.Debugf("Got policy manager for channel [%s] with flag [%t]", string(chainID), flag)
  
  	// Get channel reader policy
  	policy, flag := cpm.GetPolicy(policies.ChannelApplicationReaders)
  	mcsLogger.Debugf("Got reader policy for channel [%s] with flag [%t]", string(chainID), flag)
  
  	return policy.Evaluate(
  		[]*pcommon.SignedData{{
  			Data:      message,
  			Identity:  []byte(peerIdentity),
  			Signature: signature,
  		}},
  	)
  }
docs: // VerifyByChannel checks that signature is a valid signature of message
  // under a peer's verification key, but also in the context of a specific channel.
  // If the verification succeeded, Verify returns nil meaning no error occurred.
  // If peerIdentity is nil, then the verification fails.