2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2003 Hiroyuki Yamamoto & the Sylpheed-Claws team
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
26 static GSList *systems = NULL;
28 void privacy_register_system(PrivacySystem *system)
30 systems = g_slist_append(systems, system);
33 void privacy_unregister_system(PrivacySystem *system)
35 systems = g_slist_remove(systems, system);
38 void privacy_free_privacydata(PrivacyData *privacydata)
40 g_return_if_fail(privacydata != NULL);
42 privacydata->system->free_privacydata(privacydata);
45 gboolean privacy_mimeinfo_is_signed(MimeInfo *mimeinfo)
48 g_return_val_if_fail(mimeinfo != NULL, FALSE);
50 if (mimeinfo->privacy != NULL) {
51 PrivacySystem *system = mimeinfo->privacy->system;
53 if (system->is_signed != NULL)
54 return system->is_signed(mimeinfo);
59 for(cur = systems; cur != NULL; cur = g_slist_next(cur)) {
60 PrivacySystem *system = (PrivacySystem *) cur->data;
62 if(system->is_signed != NULL && system->is_signed(mimeinfo))
69 gint privacy_mimeinfo_check_signature(MimeInfo *mimeinfo)
71 PrivacySystem *system;
73 g_return_val_if_fail(mimeinfo != NULL, -1);
75 if (mimeinfo->privacy == NULL)
76 privacy_mimeinfo_is_signed(mimeinfo);
78 if (mimeinfo->privacy == NULL)
81 system = mimeinfo->privacy->system;
82 if (system->check_signature == NULL)
85 return system->check_signature(mimeinfo);
88 SignatureStatus privacy_mimeinfo_get_sig_status(MimeInfo *mimeinfo)
90 PrivacySystem *system;
92 g_return_val_if_fail(mimeinfo != NULL, -1);
94 if (mimeinfo->privacy == NULL)
95 privacy_mimeinfo_is_signed(mimeinfo);
97 if (mimeinfo->privacy == NULL)
98 return SIGNATURE_UNCHECKED;
100 system = mimeinfo->privacy->system;
101 if (system->get_sig_status == NULL)
102 return SIGNATURE_UNCHECKED;
104 return system->get_sig_status(mimeinfo);
107 gchar *privacy_mimeinfo_sig_info_short(MimeInfo *mimeinfo)
109 PrivacySystem *system;
111 g_return_val_if_fail(mimeinfo != NULL, NULL);
113 if (mimeinfo->privacy == NULL)
114 privacy_mimeinfo_is_signed(mimeinfo);
116 if (mimeinfo->privacy == NULL)
117 return g_strdup(_("No signature found"));
119 system = mimeinfo->privacy->system;
120 if (system->get_sig_info_short == NULL)
121 return g_strdup(_("No information available"));
123 return system->get_sig_info_short(mimeinfo);
126 gchar *privacy_mimeinfo_sig_info_full(MimeInfo *mimeinfo)
128 PrivacySystem *system;
130 g_return_val_if_fail(mimeinfo != NULL, NULL);
132 if (mimeinfo->privacy == NULL)
133 privacy_mimeinfo_is_signed(mimeinfo);
135 if (mimeinfo->privacy == NULL)
136 return g_strdup(_("No signature found"));
138 system = mimeinfo->privacy->system;
139 if (system->get_sig_info_full == NULL)
140 return g_strdup(_("No information available"));
142 return system->get_sig_info_full(mimeinfo);
145 gboolean privacy_mimeinfo_is_encrypted(MimeInfo *mimeinfo)
147 g_return_val_if_fail(mimeinfo != NULL, FALSE);