6/29/08

Week 5

this week i did some research about the EPlugin and the source of camel. i had intended to find some codes to extract the GPG Key infomation, but i failed. And then i write to the Evolution-hackers an email to find if there is any good way to deal with it (to fetch the GPG Key ID from CamelMimeMessage). Some guy(maybe the maintainer of
the GMime) suggests me to think about the gmime, which is good. But i don't want to introduce any other libs to my project.

Now i use a very dirty way and can get the GPG key ID(8 hex digit, which should be display_id or short_keyid in Seahorse). However, i found the DiscoverKeys() needs the raw keyids. i emailed Adam then, and he said that the MatchKeys() should be extended, but he has little time to look at it.

Do you have any good pointer?

The next week, i want to dive into the management of certificates and think about the patch of Security tab in evo 's account editor.

6/20/08

The GPG Key selection done!

This week i have completed the GPG key selection in Evolution, using the Seahorse cryptui and its DBus APIs. And I have added a new GPG key frame to the Security tab in account editor. Of course, it is implemented through EPlugin! Following is the snapshot:

snapshot1:adding a new GPG Key frame using EPlugin, replacing the Entry with a ComboBox.
snapshot2: you can select your GPG key from the combobox now:)

Besides, if you are brave enough, you can try it now:
1.svn co svn://www.cipsc.org.cn/seahorse-key seahorse-key
2.mv seahorse-key /path/to/trunk/evolution/plugins/seahorse-key
3.patch the configure.in (using configure.in.diff in seahorse-key) and ./autogen.sh --prefix=/usr && make && make install
4.enjoy it!


Requirements:
a.Seahorse installed.(http://live.gnome.org/Seahorse)
b.Evolution trunk from svn repos( http://svn.gnome.org/svn/evolution/trunk)
c.GNU Autotools

However there are some questions:
1. How to restore the key been selected when restart the Evolution?
Apparently , this info should be stored within the account, but the EAccount structure provides no fields for this. Now i store it in a GHashTable (key is the account->address), this is very ugly.
Worse more, the hashtable will be destroyed and initialized again when the Evolution application restarts, should i write the hashtable to a file? and reload it when the Evolution restarts?
neither is a good way, IMO.

2.How to hide the original GPG Key frame through the EPlugin?
please give me some good pointers if you know that, .

Happy Hacking!

6/14/08

recent updates

hi,
i have tested the seahorse's DBus APIs and written some codes.
i want to change the key input to the key selection in Evolution. eg:
the PGP/GPG key input entry in the evolution account editor, which is needed to input manually(show in the cycle):
So, i intend to change it to a combo box, such as:and the private key list in the combo box:
The next step. i would like to read the source of evolution trunk about the key input, and integrate my combo box to the evolution.

PS: some days earlier, i met a guy from gnome_cn (Yang Hong), who works near to my school. He gave me some good advice. He said that the gpg key encryption/decryption is used more common than certificates, so he suggested me to complete the gpg key selection part first and do something to import the sender's public key automatically. eg:

Thanks Yang hong, and
Happy Hacking!

6/8/08

Weekly report 2

hi,
This week i did no/few coding at all, but i have done some research and thought a lot about my project.

The project is implementing a E-Plugin for Evolution to manage the certificates and sign/encryption of message, using Seahorse.
My mentor give me some pointers and intrductions, which is clear and useful. The main step of this project is:
a.Implementation of camel-certdb.h in evolution-data-server's trunk/camel.(but my codes will not planted here)
b.Drawing the UI of certificate management, using the implementation of camel-certdb.h.
c.Test

Mentor also introduces to me a Spanish developer writes the support for libcst in
Tinymail's camel-lite. Camel-lite is a version of Camel that focuses on mobile uses for Tinymail.
And the libcst is similar to Seahorse.

Camel-lite and its libcst implementation:
https://svn.tinymail.org/svn/tinymail/trunk/libtinymail-camel/camel-lite/camel/camel-certdb-cst.c
https://svn.tinymail.org/svn/tinymail/trunk/libtinymail-camel/camel-lite/camel/camel-certdb.c
https://svn.tinymail.org/svn/tinymail/trunk/libtinymail-camel/camel-lite/camel/camel-certdb.h

Camel upstream and its default own implementation:
http://svn.gnome.org/svn/evolution-data-server/trunk/camel/camel-certdb.c
http://svn.gnome.org/svn/evolution-data-server/trunk/camel/camel-certdb.h

Project Progress
-----
Following is my work progress:
1.Some update preparations. ie, svn update to the latest version of Evolution, evolution-data-server, seahorse, configuration. and mess things else. Then i have a new development environment.
2.read the libcst version of manage certificate in Tinymail, as mentioned above.
3.study the Seahorse DBus APIs and write some small code to test and verify.
4.generate a new PGP key pairs(pub key is published on subkeys.pgp.net, UID with my gmail address) and apply for a free certificate from comodo.net, for the future tests.

Next Week Plan
-----
So my next week's plan is to write a camel-certdb-seahorse.c that implements camel-certdb.h, and some other codes necessary.

i am now thingking about my code repository, usually i maintain a subversion repository on one of my lab's server.

Happy Hacking :)

6/2/08

The week progress of my project

This week i did no/few coding at all, but i have done some research and thought a lot about my project.

The project is implementing a E-Plugin for Evolution to manage the certificates and sign/encryption of message, using Seahorse.
My mentor give me some pointers and intrductions, which is clear and useful. The main step of this project is:
a.Implementation of camel-certdb.h in evolution-data-server's trunk/camel.(but my codes will not planted here)
b.Drawing the UI of certificate management, using the implementation of camel-certdb.h.
c.Test

Mentor also introduces to me a Spanish developer writes the support for libcst in
Tinymail's camel-lite. Camel-lite is a version of Camel that focuses on mobile uses for Tinymail.
And the libcst is similar to Seahorse.

Camel-lite and its libcst implementation:
https://svn.tinymail.org/svn/tinymail/trunk/libtinymail-camel/camel-lite/camel/camel-certdb-cst.c
https://svn.tinymail.org/svn/tinymail/trunk/libtinymail-camel/camel-lite/camel/camel-certdb.c
https://svn.tinymail.org/svn/tinymail/trunk/libtinymail-camel/camel-lite/camel/camel-certdb.h

Camel upstream and its default own implementation:
http://svn.gnome.org/svn/evolution-data-server/trunk/camel/camel-certdb.c
http://svn.gnome.org/svn/evolution-data-server/trunk/camel/camel-certdb.h

Project Progress
-----
Following is my work progress:
1.Some update preparations. ie, svn update to the latest version of Evolution, evolution-data-server, seahorse, configuration. and mess things else. Then i have a new development environment.
2.read the libcst version of manage certificate in Tinymail, as mentioned above.
3.study the Seahorse DBus APIs and write some small code to test and verify.
4.generate a new PGP key pairs(pub key is published on subkeys.pgp.net, UID with my gmail address) and apply for a free certificate from comodo.net, for the future tests.

Next Week Plan
-----
So my next week's plan is to write a camel-certdb-seahorse.c that implements camel-certdb.h, and some other codes necessary.

i am now thingking about my code repository, usually i maintain a subversion repository on one of my lab's server.

Happy Hacking :)