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!