8/3/08

Week 10

This week i have studied the gmime and intoduced this lib into my projects at last, which is used to parse the MimeMultipartSigned message and get the PGP/GPG Key. And then import the keys into the local chain, i used the Seahorse DisplayNotification() DBus API at org.gnome.seahorse.KeyService to notify the key imported. there is a snapshot in my blog:)

The next week i will try to introduce the gnome-kering into my project(maybe far away from my original application's goal ? -- integration of the Seahorse), and use it to manage the certificates, mainly about the UI design.

Cheers!

7/28/08

Week 9 progress update

There was a bad luck with me last week. my OpenSuSE Linux broke down when i changed a CPU. so i updated the system to a higher version(OpenSuSE 11.0), which works well till now, but the bad news is my private GnuPG key was lost, 'cause i didnot backup my data in the root directory(it is a bad habit using the roor user).
After some configuration(such as installing Pidgin,Stardict; highlighting GTK+ syntax in Vim, .etc), the work evironment is ok now, the nightmare has gone.

Howerver, there are some good news, such as most of my codes is in my SVN repos, so the lost was very little; and i find a bug in my codes with the new environment and it is fixed now. Besides i reconstruct my UIs according to the feedback from my soc blog. please see the following snapshots:

i add another configuration dialog for GPG Key selection, although there is few people using more than one GPG Key, we also provides the choice for that case. One can select and apply the GPG Key can sign and encrypt in the GtkTreeView. i borrow the icon file(GTK_STOCK_APPLY ;)) from GTK+ to indicate which key was applied now if exists.

According to Coly Li, a guy from Novell, one usually puts all of his/her email address to a GPG Key, which is also the reason i replaces the combobox with the GtkTreeView(borrow from the Seahorse).
The displays item(name, comments, email)can fold and unfold.

which is activated by clicking the configure button in a newly-added tab page in Account Editor.

So, i would like to manage the certificates as the GPG Keys(adding a button and a dialog).
Please fill free to give me some feedback.:)

Happy Hacking!

7/21/08

week 8

i have no update this week, because i am confusing with my implementaion of the certificates part.
I intended to implement it using gnome-keyring, howerver, it seems that its far away from the topic of my GSoC application:)
i have no idea about the integration of Seahorse and gnome-keyring.

We have a meetup at Google office in Beijing last monday, and some guys give me a lot of useful suggestions. So i thought a lot about that ideas, the UI of GPG Key selection part may be chenged accordingly.

Hope next week there will be some good news.

7/13/08

week 7

this week i did some research about the gnome-keyring's API and wrote some test codes.

Project Progress:
-------------
1.diving into the manuals and APIs of gnome-keyring, especially
the section of "Gnome Keyring Certificates and Encryption Keys"
2.contact with my mentor and discuss the implementation of the GPG Key-selection, but have no reply:(

Next week plan
---------------
1.do some programming about the certificates management, i would try to implement a draft.
2.research the UI of smime, and begin to thinking about the UI.

Happy Hacking!

7/6/08

weekly report 6

i dive into the gnome-keyring this week, since the maintainer of Seahorse said that the support of
X.509 certificates is in progress. So i decided to use gnome-keyring and Seahorse(?) to manage the certificates
of Evolution.

Project Progress:
-------------
1. keep on going with the development of GPG Key selection
(i want to patch the evo rather than an EPlugin, so i can extend the EAccount struct to store some fields i need)
2. diving into the manuals and APIs of gnome-keyring, especially
the section of "Gnome Keyring Certificates and Encryption Keys"

Next Week Plan
-------------
1. i will do something about importing the GPG Key in the Message automatically.
2. discuss with mentor and design the certificates management of Evolution, using gnome-keyring

Happy Hacking!

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 :)

5/21/08

The first post

Hello there,
This is my another blog for GSoC2008, my project is Make Evolution use Seahorse widgets for encryption and key selection.
i think its a cool thing coding for GNOME, i will update my project status here and welcome your comments.