As promised, here is the Gaim protocol plugin of the SILC protocol. I
have been working on this now about exactly two weeks and for the most
part I could implement everything I wanted. I had to leave out some
features due to interface limitations in Gaim.
Enclosed to this email are two files. The gaim.diff is the diff for the
Gaim related changes I had to make for the SILC. It includes changes to
the configure.ac to detect the SILC Toolkit, and the chat menu patch which
I have sent earlier already. In order to test the SILC that patch needs
to be applied first. The second file, and I'm not sure if it is delivered
to the list because it's tar.gz, is the actual SILC protocol plugin. It
is also available, as is the gaim.diff, from
http://silcnet.org/priikone/silcgaim.tar.gz. It is not a diff, but
includes the 'silc' directory that would be included in the src/protocols/
After applying the patch and untarring the actual code, it should
configure, compile and work without serious problems. However, the SILC
Toolkit (latest version 0.9.12 or newer) must be installed first. There
is a README file in src/protocols/silc/ which describes the SILC Toolkit
installation process and also how to compile the SILC protocol plugin in
Now, some talk about what this implementation includes. It includes
almost all features that SILC protocol can provide. However, some were
left out for now, but will be delivered later. For example, channel's
invite and ban list management was left out due to limitations in Gaim
interfaces. Also, I didn't have time to do, after all, any multimedia
features, like sending pictures or music. Also, the verification of
digitally signed messages is absent for now.
But other than that, all the other stuff is there. It supports private
messages (IMs), private messages with key exchange (IMs where the key to
protect is negotiated using SILC Key Exchange Protocol), and private
messages with static key (IMs where the key is a pre-shared password).
It supports SILC channels, also permanent channels, all channel modes, all
channel user modes, topic setting, inviting (excluded invite list). It
supports channel authentication by passphrases and/or digital signatures
(public keys). It supports channel private keys (private groups inside a
channel) with pre-shared password. It also supports showing channel
information and listing current channels in the network (roomlist).
It also supports buddy list with real-time user status notifications. As
nicknames in SILC protocol are not unique the user's public key is
associated to the buddy. Notifications from server about buddy's status
is delivered in real time and displayed in the buddy list. This includes
notifications like signon, signoff, mode changes, nickname changes, etc.
It is also possible to view user details, and user's public key details.
It also supports user online attributes, which can be used to deliver more
information about user. Information such as business card (VCard),
current mood, current status text, geolocation, device info, etc. This
information is displayed in the tooltip of a buddy. Naturally, it is also
possible to reject other seeing all this information in the account
It also supports detaching from the SILC network. This is a feature where
the connection is closed to the server but the user remains as valid user
in the network. User can then later, at any time at any server, resume
the session back and be like he was never gone. Messages, however, sent
to you while you are detached are lost. It also supports secure file
transfers. It is possible to send and receive files peer to peer. The
protocol used to do the file transfer is SFTP and the SFTP packets are
secured with SILC protocol.
And... something else too I'm sure... There are some screenshots:
The plugin is also 100% compatible with the SILC Client, the reference
client implementation. It uses the directory and filenames (~/.silc) from
that client for maximum compatibility when switching from SILC Client to
Gaim. When running the SILC Gaim plugin for the very first time, and no
previous ~/.silc directory exist it creates it and generates automatically
a new key pair for user.
Naturally it is my hope and SILC Project's hope that SILC would make its
way into the official Gaim distribution. The SILC protocol plugin code is
100% GPL and the SILC Toolkit that it requires to work is also 100% GPL,
and does not require any other third party library to work. It is our
intention to keep the code of the SILC protocol plugin up to date, and I'm
sure that even more developers will appear once they start using it. I am
naturally ready to work on any changes in the current code if you see it
important to make changes before the code could be incorporated to Gaim.
I intend to set up a webpage on the http://silcnet.org/ during next week
or so about the SILC Gaim plugin, and link is naturally provided to the
Gaim project site as well. The purpose of the page is to promote the
knowledge of a great GUI client which has or may eventually have SILC
And that's about it for now.
Pekka Riikonen priikone at silcnet.org
Secure Internet Live Conferencing (SILC) http://silcnet.org/