code: func (id *identity) Verify(msg []byte, sig []byte) error {
  	// mspIdentityLogger.Infof("Verifying signature")
  
  	// Compute Hash
  	hashOpt, err := id.getHashOpt(id.msp.cryptoConfig.SignatureHashFamily)
  	if err != nil {
  		return errors.WithMessage(err, "failed getting hash function options")
  	}
  
  	digest, err := id.msp.bccsp.Hash(msg, hashOpt)
  	if err != nil {
  		return errors.WithMessage(err, "failed computing digest")
  	}
  
  	if mspIdentityLogger.IsEnabledFor(zapcore.DebugLevel) {
  		mspIdentityLogger.Debugf("Verify: digest = %s", hex.Dump(digest))
  		mspIdentityLogger.Debugf("Verify: sig = %s", hex.Dump(sig))
  	}
  
  	valid, err := id.msp.bccsp.Verify(id.pk, sig, digest, nil)
  	if err != nil {
  		return errors.WithMessage(err, "could not determine the validity of the signature")
  	} else if !valid {
  		return errors.New("The signature is invalid")
  	}
  
  	return nil
  }
docs: // Verify checks against a signature and a message
  // to determine whether this identity produced the
  // signature; it returns nil if so or an error otherwise