Help with creating a plugin (my master thesis)

Quentin Glidic sardemff7+pidgin at
Mon Feb 3 06:56:44 EST 2014

On 03/02/2014 02:29, Agnieszka Pachuta wrote:
> Hi :)


> My name is Agnieszka. I study Computer Science at University of
> Warsaw. As my master thesis, I'm going to create Pidgin plugin which
> implements a cryptographic protocol described in the following paper:
> (In short, I want to execute the
> protocol before the start of conversation in order to establish a
> secure communication key.) I've dug into libpurple code, but I still
> have some problems. I would really appreciate your help with some of
> them or just giving me some hints..
> 1. Is there any way to find out if a conversation partner has loaded
> my plugin? If the other person haven't loaded the plugin, he sees
> every message my plugin sent to him. I tried to use
> purple_conv_im_send_with_flags but the messages are still being
> displayed (maybe I don't know how to use these flags..) I know that
> I can cancel the message by returning TRUE in receiving_im_msg
> callback, but it will work only if the other person has loaded my
> plugin.

It would require protocol specific support, and not all protocols can do
that. XMPP probably can with an extension.
I think a common practice is to send an handshake message with a human
readable part asking the user to install the plugin. If the handshake is
unsuccessful, the plugin can inform the sender user that the
conversation will not be secure.
You should look at the Pidgin-OTR plugin, they do something really
similar IIUC.

> 2. The protocol require users to solve captcha puzzles. To show the
> captcha image and get an answer from a user, I use
> purple_request_fields. However, when the pop-up shows, user is able
> to ignore it and start to communicate without solving a captcha. Is
> there any way to block the possibility of communication until he
> solves the captcha? I would like to wait for his answer somehow..
> One of solution to this problem is to display captcha image directly
> in the communication window. Is it possible?

I think you can use purple_conv_im_write() with markup and flags to
display an image and just drop any outgoing message if it is not the
captcha, directly in the conversation window.

> 3. I would like to create my own libraries and linked them to my main
> plugin file. However, the example Makefile is really huge and I don't
> know how to do that. I'm stuck with this problem..

In your case, I recommend to use a separate project with its own build
system. Here is a little plugin of mine which uses and provides a
library. It uses the GNU Autotools (you will need the autoconf,
automake and libtool packages installed on your system). The relevant
files are and They should be small enough to
be easy for you to understand even with basic Autotools knowledge.

Here is a quick guide on Autotools:

Feel free to ask anything you might need, or to send over your files for 
a review if you want.

> I'm sorry for a lot of text. I'll appreciate any clue :)

This is exactly what this mailing list is here for. :-)



Quentin “Sardem FF7” Glidic

More information about the Devel mailing list