code: func parseHandshakeResponseHeader(ctx context.Context, packet *handshakeResponse41, data []byte) (parsedBytes int, err error) {
  	// Ensure there are enough data to read:
  	// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::SSLRequest
  	if len(data) < 4+4+1+23 {
  		logutil.Logger(ctx).Error("got malformed handshake response", zap.ByteString("packetData", data))
  		return 0, mysql.ErrMalformPacket
  	}
  
  	offset := 0
  	// capability
  	capability := binary.LittleEndian.Uint32(data[:4])
  	packet.Capability = capability
  	offset += 4
  	// skip max packet size
  	offset += 4
  	// charset, skip, if you want to use another charset, use set names
  	packet.Collation = data[offset]
  	offset++
  	// skip reserved 23[00]
  	offset += 23
  
  	return offset, nil
  }
docs: // parseHandshakeResponseHeader parses the common header of SSLRequest and HandshakeResponse41.