Recursive Nitpicker

Norman Feske norman.feske at ...1...
Tue Jun 28 14:07:49 CEST 2016


Hello Michael,

On 25.06.2016 19:33, Michael Ullrich wrote:
> I'm currently trying to modularize a Qt-based ChatClient. The basic idea
> is to isolate the parts of some guy-components from each other. I want
> to use Nitpicker for this. In generally the Client itself should run in
> a trusted nitpicker session. Now I want to start another
> nitpicker-sessions inside the quote-client. Meaning by that, I want for
> example a trusted input-field or a trusted label, isolated from the
> remaining qt-app. So isolate several graphical components from each
> other. Is it in generally a good idea, to use nitpicker in that way? Has
> someone tried something similar, or is there an reference implementation
> for that?

there are indeed two implementations of this idea:

1. There is a special Qt widget that allows you to embed any nitpicker
   client into a Qt GUI. Both programs have a dedicated nitpicker
   session. I.e. input entered into the "outer" program is not visible
   to the "inner" program. This approach is sensible for sandboxing
   untrusted parts of the application, e.g. a video codec, or the
   part that is exposed to the network. The basic concept is described
   in Section 4.7.1. "Sandboxing" in the manual [1]. You can find the
   implementation of this widget at [2]. The example as described in
   the book is located at [3]. For trying it out, please make sure to
   use the current master branch (it contains a recent fix).

2. The first variant is nice for sandboxing the "inner" part but it
   assumes that the "outer" part is trusted. In some situations, this
   is not the case. E.g., it is actually unreasonable for a browser
   plugin to trust an overly complex web browser. With Genode's loader
   service, it is possible to execute the "inner" part independent from
   the "outer" part. This idea is described in Section 4.7.4. "Ceding
   the parenthood" in the book. The corresponding Qt5 widget is located
   at [4]. The described plugin mechanism is implemented in our port
   of the Arora web browser (ports/run/arora.run).

Please be aware that those examples are not in a very good shape because
we don't use them day to day. If you encounter any problems, don't
hesitate to post them here. :-)

[1] http://genode.org/documentation/genode-foundations-16-05.pdf
[2] libports/include/qt5/qnitpickerviewwidget/
[3] libports/src/app/qt5/qt_avplay/
[4] libports/include/qt5/qpluginwidget/

Cheers
Norman

-- 
Dr.-Ing. Norman Feske
Genode Labs

http://www.genode-labs.com · http://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth




More information about the users mailing list