diff options
author | Stef Walter <stefw@collabora.co.uk> | 2011-09-23 12:43:25 +0200 |
---|---|---|
committer | Stef Walter <stefw@collabora.co.uk> | 2011-09-27 10:01:58 +0200 |
commit | 8a6e43e16c8fbe9416643f1b906ca7038083822a (patch) | |
tree | dc299912d1aa518c9fc05f8e14c4ed9cd704b837 /gcr/gcr-gnupg-records.c | |
parent | 5241d4bfb92f7fb054c433f2dcb1f7cacb544f6c (diff) | |
download | gcr-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.c | 31 |
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)) |