code: func (h *cryptoSetup) HandleMessage(data []byte, encLevel protocol.EncryptionLevel) bool /* stream finished */ {
  	msgType := messageType(data[0])
  	h.logger.Debugf("Received %s message (%d bytes, encryption level: %s)", msgType, len(data), encLevel)
  	if err := h.checkEncryptionLevel(msgType, encLevel); err != nil {
  		h.messageErrChan <- err
  		return false
  	}
  	h.messageChan <- data
  	switch h.perspective {
  	case protocol.PerspectiveClient:
  		return h.handleMessageForClient(msgType)
  	case protocol.PerspectiveServer:
  		return h.handleMessageForServer(msgType)
  	default:
  		panic("")
  	}
  }
docs: // handleMessage handles a TLS handshake message.
  // It is called by the crypto streams when a new message is available.
  // It returns if it is done with messages on the same encryption level.