code: func (c *Comm) requestContext(ctx context.Context, msg proto.Message) (*requestContext, error) {
  	channel := c.ChanExt.TargetChannel(msg)
  	if channel == "" {
  		return nil, errors.Errorf("badly formatted message, cannot extract channel")
  	}
  
  	c.Lock.RLock()
  	mapping, exists := c.Chan2Members[channel]
  	c.Lock.RUnlock()
  
  	if !exists {
  		return nil, errors.Errorf("channel %s doesn't exist", channel)
  	}
  
  	cert := comm.ExtractRawCertificateFromContext(ctx)
  	if len(cert) == 0 {
  		return nil, errors.Errorf("no TLS certificate sent")
  	}
  
  	stub := mapping.LookupByClientCert(cert)
  	if stub == nil {
  		return nil, errors.Errorf("certificate extracted from TLS connection isn't authorized")
  	}
  	return &requestContext{
  		channel: channel,
  		sender:  stub.ID,
  	}, nil
  }
docs: // classifyRequest identifies the sender and channel of the request and returns
  // it wrapped in a requestContext