summaryrefslogtreecommitdiff
path: root/gcr/gcr-gnupg-records.c
diff options
context:
space:
mode:
authorStef Walter <stefw@collabora.co.uk>2011-09-23 12:43:25 +0200
committerStef Walter <stefw@collabora.co.uk>2011-09-27 10:01:58 +0200
commit8a6e43e16c8fbe9416643f1b906ca7038083822a (patch)
treedc299912d1aa518c9fc05f8e14c4ed9cd704b837 /gcr/gcr-gnupg-records.c
parent5241d4bfb92f7fb054c433f2dcb1f7cacb544f6c (diff)
downloadgcr-8a6e43e16c8fbe9416643f1b906ca7038083822a.tar.gz
gcr: Show warnings about keys that have not been verified
* And emblem icons that have not been verified.
Diffstat (limited to 'gcr/gcr-gnupg-records.c')
-rw-r--r--gcr/gcr-gnupg-records.c31
1 files changed, 27 insertions, 4 deletions
diff --git a/gcr/gcr-gnupg-records.c b/gcr/gcr-gnupg-records.c
index 1389350..e634b1f 100644
--- a/gcr/gcr-gnupg-records.c
+++ b/gcr/gcr-gnupg-records.c
@@ -193,13 +193,32 @@ _gcr_gnupg_records_get_fingerprint (GPtrArray *records)
#define IMAGE_JPEG_SIG "\x10\x00\x01\x01"
#define IMAGE_JPEG_SIG_LEN 4
+static void
+add_emblem_to_icon (GIcon **icon,
+ const gchar *emblem_name)
+{
+ GIcon *emblem_icon;
+ GIcon *result;
+ GEmblem *emblem;
+
+ emblem_icon = g_themed_icon_new (emblem_name);
+ emblem = g_emblem_new_with_origin (emblem_icon, G_EMBLEM_ORIGIN_LIVEMETADATA);
+ result = g_emblemed_icon_new (*icon, emblem);
+ g_object_unref (*icon);
+ *icon = result;
+ g_object_unref (emblem);
+ g_object_unref (emblem_icon);
+}
+
GIcon *
_gcr_gnupg_records_get_icon (GPtrArray *records)
{
GcrRecord *record;
+ gchar validity;
guchar *data;
gsize n_data;
guint type;
+ GIcon *icon;
guint i;
for (i = 0; i < records->len; i++) {
@@ -211,8 +230,6 @@ _gcr_gnupg_records_get_icon (GPtrArray *records)
if (type != TYPE_IMAGE)
continue;
- /* TODO: Validity? */
-
data = _gcr_record_get_base64 (record, GCR_RECORD_XA1_DATA, &n_data);
g_return_val_if_fail (data != NULL, NULL);
@@ -229,10 +246,16 @@ _gcr_gnupg_records_get_icon (GPtrArray *records)
continue;
}
- /* We have a valid header */
- return G_ICON (_gcr_memory_icon_new_full ("image/jpeg", data,
+ icon = G_ICON (_gcr_memory_icon_new_full ("image/jpeg", data,
n_data, IMAGE_HEADER_LEN,
g_free));
+
+ validity = _gcr_record_get_char (record, GCR_RECORD_XA1_TRUST);
+ if (validity != 0 && validity != 'm' && validity != 'f' && validity != 'u')
+ add_emblem_to_icon (&icon, "dialog-question");
+
+ /* We have a valid header */
+ return icon;
}
if (_gcr_records_find (records, GCR_RECORD_SCHEMA_SEC))