Template Version: @(#)sac_nextcase %I% %G% SMI
This information is Copyright 2008 Sun Microsystems
1. Introduction
1.1. Project/Component Working Name:
gtk-vnc for OpenSolaris
1.2. Name of Document Author/Supplier:
Author: Halton Huo
1.3 Date of This Document:
12 November, 2008
4. Technical Description
1. Introduction
1.1. Project/Component Working Name:
gtk-vnc 0.x
1.2. Name of Document Author/Supplier:
Halton Huo
1.3. Date of This Document:
11/11/08
1.3.1. Date this project was conceived:
03/01/07
1.4. Name of Major Document Customer(s)/Consumer(s):
1.4.1. The PAC or CPT you expect to review your project:
Solaris PAC
1.4.2. The ARC(s) you expect to review your project:
LSARC
1.4.3. The Director/VP who is "Sponsoring" this project:
robert.odea at sun.com
1.4.4. The name of your business unit:
OPG / OpenSource.
1.5. Email Aliases:
1.5.1. Responsible Manager:
harry.lu at sun.com
1.5.2. Responsible Engineer:
halton.huo at sun.com
1.5.3. Marketing Manager:
glynn.foster at sun.com
1.5.4. Interest List:
desktop-discuss at opensolaris.org
4. Technical Description:
4.1. Details:
gtk-vnc is a VNC viewer widget for GTK. It is built using coroutines
allowing it to be completely asynchronous while remaining single
threaded. It provides a core C library, and bindings for Python
(PyGTK). It also provides a web browser plugin featuring a Gtk VNC
widget which can be embedded in a web page.
It can be used with virt-manager(1) and vinagre(1).
4.2. Bug/RFE Number(s):
6760020
4.3. In Scope:
See above.
4.4. Out of Scope:
See above.
4.5. Interfaces:
Exported Interface
Interface Classification Comments
----------------------------- -------------- ----------------------
SUNWgtk-vnc Uncommitted Package name
SUNWgtk-vnc-devel Uncommitted Package name
SUNWgtk-vnc-python24 Volatile Package name
SUNWgtk-vnc-python25 Volatile Package name
/usr/lib/libgtk-vnc-1.0.so.0 Volatile gtk-vnc library
/usr/lib/firefox/plugins/gtk-vnc-plugin.so
Volatile plugin for web browser
/usr/lib/python2.4/vendor-packages/gtkvnc.so
Volatile python binding for 2.4
/usr/lib/python2.5/vendor-packages/gtkvnc.so
Volatile python binding for 2.5
/usr/include/gtk-vnc-1.0 Volatile devel headers directory
/usr/lib/pkgconfig/gtk-vnc-1.0.pc Uncommitted devel .pc file
Imported Interface
Interface Classification ARC case Comment
-------- --------------- ---------- ----------------
/usr/lib/libgnutls.so.26 Uncommitted LSARC/2008/341 C TLS library
/usr/lib/libz.so.1 Committed PSARC/2006/537 libz library
/usr/lib/firefox/plugins Committed LSARC/2008/158 system-wide Firefox
plugin directory
/usr/lib/python2.4/vendor-packages
Uncommitted PSARC/2008/543 directory for
Python 2.4 modules
shipped by Sun
/usr/lib/python2.5/vendor-packages
Uncommitted PSARC/2008/543 directory for
Python 2.5 modules
shipped by Sun
/usr/bin/virt-manager Volatile LSARC/2007/175 depend on gtk-vnc
GNOME Libraries Committed LSARC/2005/734
4.6. Doc Impact:
None.
4.7. Admin/Config Impact:
None.
4.8. HA Impact:
None.
4.9. I18N/L10N Impact:
The JDS team and the G11N are working together to evaluate and
provide I18N/L10N support.
4.10. Packaging & Delivery:
Adds four new packages:
Package Cluster Size Comment
---------------- ------------ ------ ----------
SUNWgtk-vnc SUNW(gnapps) 616K base package for libraries
SUNWgtk-vnc-devel SUNW(gndev) 21K development package for
header and .pc files
SUNWgtk-vnc-python24 SUNW(gnapps) 126K Python 2.4 binding
SUNWgtk-vnc-python25 SUNW(gnapps) 130K Python 2.5 binding
4.11. Security Impact:
gtk-vnc implements its own 3DES algorithm, and makes use of GnuTLS
for other usages of encryption. They are used for authentication
between VNC server and client. The server side decides the
authentication method.
If server does not have GnuTLS support, it uses 3DES to authenticate
the client. The steps are:
1) Server sends a random 16 byte challenge
2) Client encrypts the challenge with DES using the user supplied
password as a key and send back to server
3) If the response matches the expected result, the client is
authenticated. Otherwise, the server closes the connection.
If server does have GnuTLS support, then gtk-vnc uses GnuTLS
anonymous or X.509 certificate authentication as a way to
authenticate a client. Then, gtk-vnc uses the steps described
above to finish.
At connection time, the VNC server uses libz(3) function deflate to
compress data. The VNC client uses libz(3) function inflate to
decompress data.
4.12. Dependencies:
gtk-vnc uses GnuTLS to preform authentication between VNC server
and client. Also gtk-vnc depends on zlib(3).
gtk-vnc's web browser plugin depends on firefox(1).
gtk-vnc's python binding needs python(1).
gtk-vnc is Vinagre's dependency.
When virt-manager(1) is modified to use gtk-vnc, it is
virt-manager's dependency.
5. Reference Documents:
[1] gtk-vnc homepage:
http://gtk-vnc.sourceforge.net/
[2] Related ARC Cases:
LSARC/2008/341: GnuTLS
PSARC/2006/537: Solaris libz (zlib) upgrade to 1.2.3
LSARC/2008/158: Firefox 3 for Solaris Nevada
PSARC/2008/543: Python 2.5 for Solaris
LSARC/2007/175: Virtual Machine Manager
LSARC/2005/734: GNOME For Nevada
6. Resources and Schedule
6.4. Steering Committee requested information
6.4.1. Consolidation C-team Name:
Desktop
6.5. ARC review type: FastTrack
6.6. ARC Exposure: open